Skip to content

FYInbox docs

Errors and retries

Branch on HTTP status and stable error code, preserve unknown codes, honor Retry-After, and avoid replaying ambiguous non-idempotent mutations.

Public error contract

HTTPCodeMeaning
400invalid_requestJSON, fields, or values are invalid.
401unauthorizedThe bearer key is missing, invalid, or revoked.
404not_foundThe scoped notification or source no longer exists.
409conflictThe requested metadata mutation conflicts with current state.
409quota_exceededThe source cannot store another notification.
413payload_too_largeThe raw HTTP body exceeds the request limit.
429rate_limitedThe shared per-key request window is exhausted.
500internal_errorThe server could not complete the request.

Errors use { error, message? }. Clients should retain unknown non-empty error codes so the service can add a new code without turning a parseable failure into an opaque one.

Retry policy

  1. Validate locally

    Fix 400, 401, 404, 409, and 413 responses before sending the same operation again.

  2. Honor rate limiting

    For 429, wait for Retry-After when the delay fits your total deadline, then retry conservatively.

  3. Treat ambiguity explicitly

    A notification read is safe to retry. A network failure or 5xx may happen after a write commits: retry create only with a stable deduplicationKey, and do not automatically replay metadata mutations.

  4. Keep diagnostics safe

    Record status, stable error code, and X-Request-ID when present, but never log the bearer key or full sensitive payload.