error_type field. These errors cover timeouts, runner crashes, scheduling failures, and connection problems that occur before or during request processing.
Request errors use a different response format than model validation errors. Model errors return a detail array of typed error objects. Request errors return a flat object with detail as a human-readable string and error_type as a machine-readable category. The same value is also available in the X-Fal-Error-Type response header for programmatic access without parsing the body.
Response Structure
X-Fal-Error-Type response header contains the same value as error_type.
Error Type Reference
Concurrency Limit Errors
The synchronous API returns429 when you reach your account’s concurrent request limit or a per-endpoint limit. This response does not have an error_type field. It has a type field and a data object:
data.limit field is the limit that applies. The data.notify field is true for the account limit and false for a per-endpoint limit. The response also has the headers X-Fal-Needs-Retry: 1 and X-Fal-Needs-Retry-Type: concurrent_requests_limit. Retry the request after one of your requests completes.
The queue API does not return this error. The queue keeps the request until capacity is available.
Handling Request Errors
For retry logic: Useerror_type to decide whether to retry. Runner and timeout errors (e.g., runner_connection_timeout, startup_timeout) are typically transient and worth retrying. Client errors (client_disconnected, bad_request) should not be retried. See Retries and Error Handling for how the platform handles retries automatically.
For monitoring: The error_type is also available in queue status responses for failed requests, making it useful for tracking failure patterns in your analytics dashboard.