generated: '2026-08-14' method: searched source: - https://docs.gethealthie.com/guides/api-concepts/error-handling - https://docs.gethealthie.com/guides/api-concepts/rate-limits - graphql/healthie-schema.graphql docs: https://docs.gethealthie.com/guides/api-concepts/error-handling format: graphql-errors format_note: >- NOT RFC 9457. Healthie is a GraphQL API and returns no application/problem+json. It targets the GraphQL specification section 7.1.2 errors[] array, and states it also strives to follow RFC 9110 HTTP semantics "where applicable" — while explicitly acknowledging in its own docs that some 404 Not Found responses do not conform to the GraphQL spec and are pending remediation. Healthie publishes no consolidated error-code reference page; the catalogue below is assembled from the error-handling and rate-limit guides plus the error shapes declared in the schema. completeness: partial completeness_note: >- Healthie does not publish an enumerated error-code registry. Only one machine-readable extensions.code value (TOO_MANY_REQUESTS) appears anywhere in the public documentation. Everything else surfaces as free-text `message` strings, which a client can only pattern-match on. envelopes: - id: transport-errors shape: 'errors: [{ message: String, extensions: { code: String } }]' applies_to: parse errors, validation of the query document, auth failures, rate/complexity/depth limits, server errors spec: GraphQL specification section 7.1.2 note: The `extensions.code` key is present on some errors and absent on others. - id: field-errors shape: 'messages: [FieldError] # FieldError { field: String, message: String! }' applies_to: business/validation failures on mutations http_status: 200 note: >- THE MOST IMPORTANT ERROR SHAPE IN THIS API, and the easiest to miss. Mutation validation failures do not populate the transport-level errors[] array at all. Every mutation payload carries a `messages: [FieldError]` list next to the mutated object; on failure the object comes back null or unchanged, the HTTP status is 200, and errors[] is empty. A client that branches only on `response.errors` reads a rejected write as a successful one. FieldError is referenced by 425 payload types in the schema — effectively every mutation. verified_in: graphql/healthie-schema.graphql - id: eligibility-check-errors shape: 'ClaimEligibilityCheckErrors { code: String, description: String }' applies_to: insurance eligibility checks note: >- A domain-specific error object carrying a payer/clearinghouse error code and description. The code values are passed through from the eligibility partner and are not enumerated by Healthie. verified_in: graphql/healthie-schema.graphql problems: - id: too-many-requests code: TOO_MANY_REQUESTS envelope: transport-errors title: Rate limit exceeded message: 'Too many requests. Please try again later.' remediation: >- Back off and retry. Healthie publishes no rate-limit response headers and no Retry-After, so the backoff interval cannot be computed from the response — use exponential backoff with jitter. source: https://docs.gethealthie.com/guides/api-concepts/rate-limits - id: complexity-limit-exceeded code: null envelope: transport-errors title: Query complexity limit exceeded message: 'Query has complexity of {n}, which exceeds max complexity of 2000' remediation: >- Reduce the selection set or lower the connection page size. An unpaginated connection is scored with a default page size of 100, so adding an explicit `first:` is usually the fix. retryable: false source: https://docs.gethealthie.com/guides/api-concepts/rate-limits - id: depth-limit-exceeded code: null envelope: transport-errors title: Query depth limit exceeded message: 'Query has depth of {n}, which exceeds max depth of 25' remediation: Flatten the query; fragments and inline fragments count toward depth. retryable: false source: https://docs.gethealthie.com/guides/api-concepts/rate-limits - id: not-found code: null envelope: transport-errors http_status: 404 title: Resource not found remediation: >- Verify the ID and the environment. IDs are NOT portable between sandbox and production. Note Healthie's own caveat that these 404 responses are known to be non-conformant with the GraphQL specification. source: https://docs.gethealthie.com/guides/api-concepts/error-handling - id: mutation-validation-failed code: null envelope: field-errors http_status: 200 title: Mutation validation failed shape: 'messages: [{ field: "", message: "" }]' remediation: >- Always select `messages { field message }` on every mutation and treat a non-empty messages array as a failure, regardless of HTTP status or an empty errors[] array. source: graphql/healthie-schema.graphql domain_reason_codes: - id: claim-md-rejection-messages-info type: ClaimMdRejectionMessagesInfo applies_to: CMS-1500 claim submission via ClaimMD description: Why a ClaimMD rejection-messages field came back empty. values: - {code: CLAIM_MD_REJECTION_MESSAGES_NOT_AVAILABLE} - {code: NO_RECENT_CLAIM_SUBMISSION} - {code: NOT_A_CLAIM_MD_CLAIM} - {code: NO_REJECTION_MESSAGES} verified_in: graphql/healthie-schema.graphql - id: generated-form-answer-group-rejection-reason type: GeneratedFormAnswerGroupRejectionReasonEnum applies_to: AI-generated charting notes (AI Scribe / ambient documentation) description: Reason a clinician rejected an AI-generated form answer group. values: - {code: INACCURATE_INFORMATION, meaning: The proposed note contains factual errors or incorrect details from the encounter.} - {code: MISSING_DETAILS, meaning: The proposed note is missing significant details that were discussed during the encounter.} - {code: DIDNT_FOLLOW_INSTRUCTIONS, meaning: The proposed note did not follow the formatting or content instructions.} - {code: DUPLICATE_OR_OWN_NOTE, meaning: The provider already created their own note for this encounter.} verified_in: graphql/healthie-schema.graphql gaps: - No published error-code reference page. Only one extensions.code value is documented platform-wide. - No RFC 9457 problem+json, no type URIs, no per-error documentation links. - Healthie documents a known non-conformance (404 responses) without a dated remediation commitment. - Validation failures are invisible to a client that inspects only the GraphQL errors[] array. related: - conventions/healthie-conventions.yml - rate-limits/healthie-rate-limits.yml x-evidence: fetched: '2026-08-14' urls: - {url: 'https://docs.gethealthie.com/guides/api-concepts/error-handling', http_status: 200} - {url: 'https://docs.gethealthie.com/guides/api-concepts/rate-limits', http_status: 200} - {url: 'https://staging-api.gethealthie.com/graphql', http_status: 200, note: introspection}