Skip to main content

region_unavailable

HTTP 503 · code: "region_unavailable" · type: https://docs.formfeed.dev/errors/region-unavailable

The render service of the region could not take the request. Formfeed renders in the EU (eu, the default); see Data residency. The answer always carries Retry-After. Nothing was rendered or charged.

Example​

{
"type": "https://docs.formfeed.dev/errors/region-unavailable",
"title": "Region unavailable",
"status": 503,
"detail": "The render region is busy, retry shortly",
"code": "region_unavailable",
"request_id": "req_4b7c1e9a2f3d4c5b8a6e7f9012"
}

Common causes​

  • The render service of the region is busy or restarting (detail: The render region is busy, retry shortly; Retry-After comes from the service, usually 2). The PDF tools, conversions and checks such as validate_data try once more and then answer with this code. A synchronous render does not: it waits up to 30 seconds for a free render slot and then goes to the queue, answering 202 with the header X-Render-Async-Fallback: true (the automatic fallback).
  • A region for which the gateway has no render service configured (detail: Region us is not available, Retry-After: 60). Only eu is in service: leave region out rather than relying on this answer, because a region the gateway does have an address for but that does not render may fail differently.

How to fix it​

  • For a busy region, retry after the seconds in Retry-After, with the same Idempotency-Key. The SDKs do this for you.
  • Send large numbers of documents as async renders or a batch: the queue waits for free slots instead of answering this code.
  • Leave region out, or send "region": "eu".

Retry?​

Yes, after the seconds in Retry-After, with the same Idempotency-Key; answers of 503 are not stored under the key. A region without a render service answers the same way every time.