ChirpieDocs

Error Codes

Reference for all Chirpie API error codes and how to handle them.

Error Response Format

All errors follow this format:

{
  "error": {
    "code": "error_code",
    "message": "Human-readable description of what went wrong"
  }
}

Error Codes

HTTP StatusCodeDescriptionWhat to Do
400bad_requestInvalid request body, missing fields, or validation errorCheck the message for specifics. Fix the request and retry.
401unauthorizedMissing, invalid, expired, or revoked API keyCheck your Authorization header format: Bearer chirpie_sk_...
404not_foundResource doesn't exist or belongs to another userVerify the ID. Posts/accounts are scoped to your user.
429rate_limitedMonthly quota or burst rate limit exceededWait and retry, or upgrade your plan.
500internal_errorUnexpected server errorRetry after a moment. If persistent, contact support.
502upstream_errorPlatform API returned an errorOften temporary. Scheduled posts auto-retry. For immediate posts, retry after a delay.

Common Scenarios

"Invalid API key"

{ "error": { "code": "unauthorized", "message": "Invalid API key" } }

The key doesn't match any active key in our database. It may have been revoked or mistyped.

"API key has been revoked"

{ "error": { "code": "unauthorized", "message": "API key has been revoked" } }

This key was explicitly revoked. Create a new key from the dashboard or API.

"Monthly post limit reached"

{ "error": { "code": "rate_limited", "message": "Monthly post limit reached (50/50 used)..." } }

You've hit your plan's monthly post quota. Upgrade your plan or wait for the next month.

"Account not found or not active"

{ "error": { "code": "not_found", "message": "Account not found or not active" } }

The account_id doesn't exist, belongs to another user, or the credentials have expired. For OAuth-based accounts (X, LinkedIn, Threads, Mastodon, Instagram, Facebook, Reddit, Pinterest, TikTok, YouTube, Google Business Profile, Snapchat), re-authorize from the dashboard. For Bluesky, generate a new app password and reconnect. For Telegram, verify your bot token and chat ID.

X API Errors

{ "error": { "code": "upstream_error", "message": "Failed to post: X API error - Rate limit exceeded" } }

X/Twitter rejected the request. Common causes: rate limits, suspended account, or content policy violation.

Bluesky API Errors

{ "error": { "code": "upstream_error", "message": "Failed to post: Bluesky API error - InvalidToken" } }

Bluesky rejected the request. Common causes: revoked app password, expired session, rate limits, or content policy violation. Generate a new app password and reconnect the account if the error persists.

Bluesky-Specific Validation Errors

{ "error": { "code": "bad_request", "message": "Post exceeds maximum length of 300 characters for Bluesky" } }

Bluesky has a 300-character limit. If your post exceeds this, shorten the text or use a thread.

{ "error": { "code": "bad_request", "message": "Video media is not supported on Bluesky" } }

Bluesky does not support video uploads. Use images only (up to 4 per post).

LinkedIn API Errors

{ "error": { "code": "upstream_error", "message": "Failed to post: LinkedIn API error - Rate limit exceeded" } }

LinkedIn rejected the request. Common causes: rate limits (100 posts/day per member), expired OAuth tokens, or content policy violation. Re-authorize via OAuth from the dashboard if the error persists.

LinkedIn-Specific Validation Errors

{ "error": { "code": "bad_request", "message": "Post exceeds maximum length of 3000 characters for LinkedIn" } }

LinkedIn has a 3,000-character limit. Shorten the text or use a thread (each item posts separately on LinkedIn).

{ "error": { "code": "bad_request", "message": "Video media is not supported on LinkedIn" } }

LinkedIn posts are image-only. Use JPEG, PNG, or GIF (up to 4 per post, max 8MB each).

Threads API Errors

{ "error": { "code": "upstream_error", "message": "Failed to post: Threads API error - Rate limit exceeded" } }

Threads rejected the request. Common causes: rate limits (250 posts/24hr), expired Meta OAuth tokens, or content policy violation. Re-authorize via Meta OAuth from the dashboard if the error persists.

Threads-Specific Validation Errors

{ "error": { "code": "bad_request", "message": "Post exceeds maximum length of 500 characters for Threads" } }

Threads has a 500-character limit. Shorten the text or use a thread.

{ "error": { "code": "bad_request", "message": "Threads supports a maximum of 1 image per post" } }

Threads supports only 1 image per post. Remove extra images from media_urls.

Mastodon API Errors

{ "error": { "code": "upstream_error", "message": "Failed to post: Mastodon API error - Rate limit exceeded" } }

Mastodon rejected the request. Common causes: rate limits (300 posts/3hr default), expired OAuth tokens, or content policy violation. Re-authorize via OAuth from the dashboard if the error persists.

Mastodon-Specific Validation Errors

{ "error": { "code": "bad_request", "message": "Post exceeds maximum length of 500 characters for Mastodon" } }

The Mastodon limit is 500 characters. Shorten the text or use a thread.

Instagram API Errors

{ "error": { "code": "upstream_error", "message": "Failed to post: Instagram API error - Rate limit exceeded" } }

Instagram rejected the request. Common causes: rate limits (50 posts/24hr), expired OAuth tokens, or content policy violation. Re-authorize via Instagram Login from the dashboard if the error persists.

Instagram-Specific Validation Errors

{ "error": { "code": "bad_request", "message": "Post exceeds maximum length of 2200 characters for Instagram" } }

Instagram has a 2,200-character limit for captions. Shorten the text.

{ "error": { "code": "bad_request", "message": "Instagram requires at least one image. Text-only posts are not supported." } }

Instagram does not support text-only posts. You must include at least one image in media_urls.

{ "error": { "code": "bad_request", "message": "Instagram supports a maximum of 10 images per carousel post" } }

Instagram supports up to 10 images per carousel post. Remove extra images from media_urls.

Facebook API Errors

{ "error": { "code": "upstream_error", "message": "Failed to post: Facebook API error - Rate limit exceeded" } }

Facebook rejected the request. Common causes: rate limits (4,800 API calls/24hr per page), content policy violation, or page permissions revoked. Facebook Page tokens do not expire, but if you revoke page permissions or the app is removed, re-authorize via Facebook Login from the dashboard.

Facebook-Specific Validation Errors

{ "error": { "code": "bad_request", "message": "Post exceeds maximum length of 63206 characters for Facebook" } }

Facebook has a 63,206-character limit. Shorten the text.

Telegram API Errors

{ "error": { "code": "upstream_error", "message": "Failed to post: Telegram API error - Bad Request: chat not found" } }

Telegram rejected the request. Common causes: invalid bot token, bot not added to channel/group as admin, invalid chat ID. Verify your bot token and chat ID in the dashboard. Telegram has a 4,096-character limit. No analytics available.

Reddit API Errors (Coming Soon)

Pinterest API Errors (Coming Soon)

TikTok API Errors (Coming Soon)

YouTube API Errors (Coming Soon)

Google Business Profile API Errors (Coming Soon)

Snapchat API Errors (Coming Soon)

On this page