Error catalogue
Generated from packages/errors’s ERROR_CATALOGUE — the single source of truth every API error is constructed from. Every SPEC-003 error envelope’s doc_url resolves to one of these pages.
| Code | HTTP status | Type | Meaning |
|---|---|---|---|
authentication_required |
401 | authentication | This request requires authentication. Include an Authorization: Bearer railflo_sk_... header. |
invalid_api_key |
401 | authentication | The API key provided is not valid. |
api_key_revoked |
401 | authentication | This API key has been revoked. |
insufficient_scope |
403 | permission | This API key does not have the scope required for this request. |
resource_not_found |
404 | not_found | The requested resource could not be found. |
invalid_request |
400 | invalid_request | The request could not be validated. |
idempotency_key_reused |
409 | conflict | This Idempotency-Key was already used with a different request body. |
idempotency_conflict |
409 | conflict | A request with this Idempotency-Key is already being processed. Retry shortly. |
rate_limited |
429 | rate_limit | Too many requests. Retry after the time indicated by the Retry-After header. |
unsupported_resource_type |
422 | invalid_request | This FHIR resource type is not supported at P0. See the docs for the supported-type list. |
validation_failed |
422 | invalid_request | The resource failed FHIR validation. |
resource_version_conflict |
409 | conflict | This resource was modified since the version you specified. Refetch the resource and retry with its current version_id. |
identifier_type_forbidden |
422 | invalid_request | PPSN cannot be stored as a patient identifier (legal restriction). Use IHI or MRN. |
invalid_identifier_format |
422 | invalid_request | This identifier value is not valid for the given identifier type. |
possible_duplicate |
409 | conflict | A patient with the same family name, given name and date of birth already exists. Pass force=true to create anyway. |
baseline_immutable |
403 | permission | This consent kind is seed-managed (statutory_mandate, statutory_prohibition, emergency_override, jurisdiction_default) and cannot be created or modified via the API. Use org_policy or patient_directive. |
consent_already_superseded |
409 | conflict | This consent record has already been superseded by a later version. |
supersede_reason_required |
422 | invalid_request | Superseding a consent record requires a non-empty reason. |
emergency_attestation_not_found |
404 | not_found | No emergency attestation was found with that id for this tenant. |
exchange_in_terminal_state |
409 | conflict | This exchange is in a terminal state (rejected, failed, cancelled or acknowledged) and cannot be cancelled. |
illegal_transition |
409 | conflict | This action is not legal from the exchange’s current state. |
cancel_reason_required |
422 | invalid_request | Cancelling an exchange requires a non-empty “reason”. |
quarantine_not_found |
404 | not_found | No quarantined routing job was found with that id for this tenant. |
unsupported_media_type |
415 | invalid_request | This file format is not supported. Accepted formats: PDF, DOCX, RTF, TIFF, PNG, JPEG — sniffed by content, not filename. |
payload_too_large |
413 | invalid_request | This upload exceeds the maximum accepted size (6 MB for JSON+base64, 25 MB for multipart). |
review_locked |
409 | conflict | Another reviewer holds a lease on this document. It will free automatically when their lease expires. |
review_role_required |
403 | permission | Accepting this document type requires a CLINICIAN or OWNER role. Escalate it to a clinician instead. |
review_unsupported_fields |
409 | conflict | This document still has unsupported extracted fields. Reject each unsupported field before accepting. |
review_patient_link_required |
422 | invalid_request | Confirm or assign the patient link before accepting this document into the clinical record. |
review_already_finalised |
409 | conflict | This document has already been accepted or rejected. |
webhook_url_rejected |
422 | invalid_request | This webhook URL was rejected: it must be https and must not resolve to a private, link-local, or metadata IP range. |
webhook_endpoint_not_found |
404 | not_found | No webhook endpoint was found with that id for this tenant. |
webhook_delivery_not_found |
404 | not_found | No webhook delivery was found with that id for this tenant. |
device_enrolment_code_invalid |
400 | invalid_request | This enrolment code is invalid, expired, or has already been used. Generate a new one from Console → Settings → Bridge. |
device_not_found |
404 | not_found | No device was found with that id for this tenant. |
sandbox_disabled |
404 | not_found | This endpoint only exists on a sandbox deployment (DEPLOYMENT_MODE=sandbox). |
unknown_scenario |
400 | invalid_request | Unknown sandbox scenario name. |
api_error |
500 | api_error | An unexpected error occurred. If this persists, contact support with the request id. |