Skip to main content

Errors

All errors share a consistent envelope:

{ "error": { "code": "machine_readable_code", "message": "Human readable message." } }

Use error.code for branching in your integration; message is for humans.

Common codes

HTTPcodeWhen it happens
400invalid_post_idThe post id / URL is not a valid shortcode
401missing_api_keyNo API key supplied
401invalid_api_keyUnknown or revoked key
402insufficient_creditNot enough credits for the request
403account_inactiveThe account is disabled
403endpoint_disabledThe endpoint is disabled for your account
404post_not_foundPost is private, deleted, or does not exist
422validation_errorInvalid/missing query parameters
429upstream_rate_limitedTemporary upstream throttling — retry with backoff
503no_upstream_sessionsData collection temporarily unavailable
500internal_errorUnexpected server error

Retry guidance

  • 429 upstream_rate_limited — retry with exponential backoff (e.g. 1s, 2s, 4s). The API already retries internally across its session pool before surfacing this.
  • 503 no_upstream_sessions — transient capacity issue; retry after a short delay or contact TagX if persistent.
  • 5xx — safe to retry idempotent GET requests with backoff.

Do not retry 4xx (except 429) without changing the request.