Skip to main content
The request passed every preflight rule we know about, but the upstream platform still said no. This is rare — when it happens we treat it as a gap in preflight coverage and either add a rule or sharpen an existing one.

What triggers it

  • A platform rule we don’t yet enforce locally — e.g., a content moderation rejection, an account-state issue (rate-limited at the platform level, suspended), or a constraint introduced after our last update.
  • An async media-validation failure on Meta’s container flow (the file passed our size + mime checks but failed deeper inspection).
  • A platform-specific rejection we haven’t translated into a preflight rule yet.

Response shape

platform_rejected.json
platformResponse carries the raw upstream body, untouched. That’s the most useful signal when this code surfaces — we don’t summarize it away.

How to handle

  1. Inspect platformResponse for the upstream code / subcode.
  2. If it’s a known opaque rejection (e.g., Instagram’s OAuthException 2207052), check the matching preflight rule page and follow the remediation there.
  3. File an issue: every platform_rejected we see in production is a candidate for a new preflight rule. The dashboard’s post log makes these easy to spot.

HTTP status

  • 4xx (the platform’s status, passed through) when the upstream said the call is invalid.
  • 502 Bad Gateway when the upstream returned a 5xx — we map upstream 5xx to our 502 + platform_unavailable instead of platform_rejected. See platform_unavailable for that case.