Skip to content

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.