Skip to content

Reference

Social platform API error codes decoded

The right response to a failed publish call is different for a rate limit, an expired token, and a rejected upload — and the correct handling differs by platform. One of the most common is the Instagram API error code 100, where the media ID is not available — see the dedicated fix linked below. Sourced from each platform's own error-reference documentation, checked 2026-09-23.

All guides

By The SkedCast Team · Updated · 7 min read

Key takeaways

  • Every platform in this set distinguishes, in some form, between "retry later" (rate limits), "fix the request" (bad input), and "re-authorize" (expired/invalid token) — but the exact codes and thresholds differ substantially.
  • Threads is the outlier in FORMAT: its publishing failures surface as named strings (e.g. FAILED_DOWNLOADING_VIDEO) rather than numeric codes, and it exposes a proactive quota-check endpoint instead of relying purely on reactive 429s.
  • Telegram's 429 response is unusually precise — it includes the exact retry_after seconds to wait in the response body, rather than leaving the caller to guess a backoff.
  • A duplicate/spam-content-specific error code could not be confirmed on TikTok's own official error-handling page despite being claimed by several third-party summaries — treat that specific claim as unverified for TikTok.

Instagram API error code 100: media ID is not available

Instagram's error code 100 (subcode 2207008) is a temporary error that most commonly surfaces as "Media ID is not available" when publishing — the fix is to retry once or twice within roughly 30 seconds to 2 minutes rather than treating it as a permanent failure. See the dedicated fix article linked below for the full walkthrough.

Meta (Facebook, Instagram, Threads)

Facebook: codes 190/102 (token invalid/expired) and subcodes 463/467/458/459 all mean re-authorize; codes 4/17/341 (throttled) mean retry with backoff; codes 3/10 and the 200-299 range (permission denied) mean fix the request; code 506 is a duplicate-post rejection (fix, vary the content). Instagram: code 24/subcode 2207006 (media not found) and -2/2207020 (container expired) both mean regenerate the container and retry; 9007/2207027 (container not ready) means keep polling; 100/2207008 (temporary error) means retry once or twice within 30 seconds to 2 minutes; 9/2207042 (daily limit reached) means wait until the next day. Threads departs from numeric codes entirely — failures surface as named strings like FAILED_DOWNLOADING_VIDEO or INVALID_ASPEC_RATIO, and Threads additionally exposes a proactive quota-check endpoint (threads_publishing_limit) rather than relying purely on reactive rate-limit errors.

TikTok, YouTube, and X

TikTok: access_token_invalid and scope_not_authorized (both 401) mean re-authorize; scope_permission_missed (400) means re-authorize with a broader scope; rate_limit_exceeded (429) means backoff and retry; invalid_params/invalid_file_upload (400) means fix the request. A distinct duplicate/spam-content code is claimed by several third-party summaries but could not be confirmed on TikTok's own official error-handling page — treat that specific claim as unverified.

YouTube: unauthorized/youtubeSignupRequired (401) and insufficientPermissions (403) mean re-authorize; authenticatedUserAccountSuspended (403) is not retryable at all; quotaExceeded (403) and uploadRateLimitExceeded (429) mean backoff; mediaBodyRequired/invalidVideoMetadata (400) mean fix the request; uploadLimitExceeded (400) means wait until the next day. No duplicate-content code is documented.

X: 401 means re-authenticate; 429 means retry with backoff (check the x-rate-limit-reset header); 400 means fix the request. The duplicate-content 403 is well-documented on X's developer forum but not confirmed on X's formal reference page — treat it as fix-the-request (vary the text) sourced to a community thread rather than the official docs, and see the dedicated article on handling it, since it can arrive after the post is already live.

LinkedIn, Pinterest, Bluesky, and Telegram

LinkedIn: 401 (expired) means refresh; 401 (invalid/revoked) means the full re-auth flow; 403 means check scope, not simply retryable; 429 means check for redundant calls or wait if it is an infrastructure-protection throttle; 500/504 mean retry with backoff. A 426 ("Version Header is Deprecated") means update the LinkedIn-Version header. No duplicate-content or invalid-media code is documented.

Pinterest's dedicated error-codes page is dominated by commerce/shopping-specific codes rather than general publishing codes; generic 401/429 semantics (re-auth, retry-with-backoff via an x-ratelimit-reset header) are corroborated but not formally itemized the way other platforms document theirs, and no duplicate/spam-specific code was located.

Bluesky has no centralized numeric error-code page by design — each method's own schema defines its own named errors as {error, message}. Commonly hit: ExpiredToken (call refreshSession), InvalidToken/AuthMissing (re-authenticate), and HTTP 429 (retry with backoff).

Telegram: 429 responses include an exact retry_after value in seconds in the response body — wait exactly that long, then retry; 401 means the token is invalid or revoked and is NOT retryable, requiring a fresh token; 403 means the bot was blocked or removed from that chat — stop sending to that chat_id; 400 means fix the payload.

error codesapi referencedeveloperreliability

FAQ

What does Instagram API error code 100 "media ID is not available" mean?
It’s a temporary Instagram error (subcode 2207008) on the media container, not a permanent failure — retry the publish call once or twice within about 30 seconds to 2 minutes before treating it as broken.
Which platform gives the most precise rate-limit retry guidance?
Telegram — its 429 response body includes an exact retry_after value in seconds, so the correct wait time is stated directly rather than needing to be inferred from a generic backoff strategy.
Which platform uses named error strings instead of numeric codes?
Threads — its publishing failures surface as strings like FAILED_DOWNLOADING_VIDEO or INVALID_ASPEC_RATIO rather than numeric codes, and it also exposes a proactive quota-check endpoint instead of relying only on reactive rate-limit errors.
Is there a confirmed duplicate-content error code on TikTok?
Not on TikTok's own official error-handling page — a duplicate/spam-content code is claimed by several third-party summaries, but this could not be confirmed against TikTok's primary documentation and should be treated as unverified.
What does a 403 mean on X's post-creation endpoint?
Usually a rejected request that should be fixed, except for the specific duplicate-content 403, which can arrive after the post is already live and needs to be reconciled against the account's recent posts rather than treated as a normal failure.
How does Bluesky structure its error responses?
It has no centralized numeric error-code page — each API method's own schema defines its own named errors, returned as an {error, message} pair, rather than a shared error-code catalog across the whole API.
Does a 401 always mean the same thing across every platform?
No — most platforms use 401 for an expired or invalid token needing re-authorization, but some (like TikTok) also use 401 for a missing required scope, which needs a broader re-authorization rather than a simple token refresh.

Ready to broadcast everywhere?

Sign up free — no credit card. You land on the Free plan, and you can start a one-time 7-day Studio trial from your workspace whenever you are ready. Connect your first accounts, import a batch, and watch one post fan out across every platform.