Enrollments
Update an enrollment
PATCH/api/v1/enrollments/{id}
Changes the fields sent and leaves the rest: the status (only along the allowed changes: an open enrollment may move to another open status or to active, paperwork submitted to the payer is never not started again, and an active one may only start over), the dates (null clears one) and the note. Send at least one. Every status change is on the organization's audit trail. Needs an Idempotency-Key header and a key with the submit permission.
Needs a key with submit permission.
Request
Headers
| Name | Type | Required | Description |
|---|---|---|---|
| Idempotency-Key | string | required | Makes the request safe to repeat: a request with the same key and body returns the first answer (the reply has an idempotent-replayed header), and the same key with a different request is refused. 1 to 255 printable characters; a UUID is a good choice.At least 1 character.At most 255 characters.Matches `^[\x21-\x7e]{1,255}$`. |
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | required | An enrollment ID (enr_...). |
Body
| Name | Type | Required | Description |
|---|---|---|---|
| status | string | optional | The new status, along the allowed changes.One of: `not_started`, `awaiting_signature`, `provider_action`, `submitted`, `active`. |
| sent_on | string (date) or null | optional | When the paperwork was sent (YYYY-MM-DD), or null for none. |
| expected_on | string (date) or null | optional | When the payer is expected to finish (YYYY-MM-DD), or null for none. |
| note | string | optional | For your office's own notes about the paperwork. Never patient information.At most 500 characters. |
Response
The enrollment as it is now. Status 200.
| Name | Type | Description |
|---|---|---|
| id | string | An ID that starts with enr_. |
| object | string | Always `enrollment`. |
| provider_id | string | An ID that starts with prv_. |
| provider_name | string | |
| payer_id | string | An ID that starts with pyr_. |
| payer_name | string | |
| type | string | One of: `claims`, `era`, `era_eft`. |
| method | object or null | How the payer enrolls a provider, from the payer directory; null when the payer needs no enrollment for this (it started active). |
| method.code | string | The payer directory's enrollment code when the enrollment was started (S, O, W, F, I or U, with * or L). |
| method.label | string | |
| method.instructions | string | What has to be done, in plain words. |
| status | string | One of: `not_started`, `awaiting_signature`, `provider_action`, `submitted`, `active`. |
| next_step | string | What someone has to do now, in plain words. |
| sent_on | string (date) or null | |
| expected_on | string (date) or null | |
| note | string | |
| mode | string | One of: `test`, `live`. |
| activated_at | string (date-time) or null | When it last became active; null while it is not. |
| created_at | string (date-time) | |
| updated_at | string (date-time) |
Errors
| HTTP status | Code | What it means |
|---|---|---|
| 401 | UNAUTHORIZED | A valid API key is required. Send it as "Authorization: Bearer <key>". |
| 403 | PERMISSION_DENIED | This API key is not allowed to do that. |
| 404 | NOT_FOUND | Not found. |
| 422 | INVALID_REQUEST | The request is not valid. |
| 400 | IDEMPOTENCY_KEY_REQUIRED | POST and PATCH requests need an Idempotency-Key header. |
| 422 | IDEMPOTENCY_KEY_REUSED | That Idempotency-Key was already used with a different request. |
| 409 | IDEMPOTENCY_KEY_IN_USE | A request with that Idempotency-Key is still running. Retry shortly. |
| 413 | PAYLOAD_TOO_LARGE | The request body is larger than 1 MB. |
| 504 | TIMEOUT | The request took too long to finish. It may still have taken effect: look it up before sending it again with a new Idempotency-Key. What it made is found with GET /api/v1/eligibility?request_id=<this request_id>, and the same filter on /api/v1/claims and /api/v1/attachments (a key with read permission). |
| 409 | CONFLICT | The resource is not in a state that allows this, or it changed while the request was handled. Read it, then decide whether to send the request again. |
| 500 | INTERNAL | Something went wrong on our side. Quote the request ID if you contact us. |
Example
Example request
curl -X PATCH "https://sandbox.myclaimhouse.com/api/v1/enrollments/enr_01JM000000E00800000000004M" \
-H "Authorization: Bearer $CLAIMHOUSE_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"status": "submitted",
"sent_on": "2026-09-22",
"expected_on": "2026-10-10",
"note": "Faxed to the payer'\''s provider services."
}'Example response: 200
{
"id": "enr_01JM000000E00800000000004M",
"object": "enrollment",
"provider_id": "prv_01JM000000E008000000000005",
"provider_name": "Dr. Riley Example, DDS",
"payer_id": "pyr_01JM000000E008000000000004",
"payer_name": "Example Dental Plan",
"type": "claims",
"method": {
"code": "W",
"label": "Payer paperwork (fax or email)",
"instructions": "The payer requires its own enrollment paperwork. Claim House supplies a copy, and the provider returns it by fax, email or mail so Claim House can submit it to the payer."
},
"status": "submitted",
"next_step": "Wait for the payer to confirm, then mark it active.",
"sent_on": "2026-09-22",
"expected_on": "2026-10-10",
"note": "Faxed to the payer's provider services.",
"mode": "test",
"activated_at": null,
"created_at": "2026-09-20T15:00:00+00:00",
"updated_at": "2026-09-22T16:10:00+00:00"
}