Skip to main content
Errors use standard HTTP status codes with JSON bodies. There is no single global envelope: validation errors return an errors array; most other errors return a single error or message string. This page lists every error and what to do about it.

Errors and recovery actions

Retry rules

A 403 from a media read endpoint may be age_verification_required rather than a scope problem: branch on the error field before treating it as a permissions failure.

Partial failures on batch endpoints

Batch endpoints return 200 even when some items fail. Failed keys carry a PerKeyError with error set to forbidden, not_found or internal, so the batch keeps its partial results. Treat internal as retryable for that key; forbidden and not_found as terminal.

Payment failures

Failed charges are reported on webhooks, not API errors: app.payment.failed and checkout_link.payment.failed carry a decline reason, see Failure reasons for the values and what to do about each. Failed renewals are retried by Fanvue’s own dunning; don’t build your own retry loop on top.

See also