Enrollments
Start an enrollment
POST/api/v1/enrollments
Starts tracking the enrollment of a provider with a payer for claims, ERAs, or ERAs with EFT. One per provider, payer and type in an organization and mode. For your office's own notes about the paperwork. Never patient information. The method comes from the payer directory's enrollment code for the type when the enrollment is started; a payer that needs no enrollment for it starts active. A claim to a payer that needs claims enrollment, for a provider with no active claims enrollment there, gets the ENROLLMENT_NOT_ACTIVE warning (it never blocks). 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}$`. |
Body
| Name | Type | Required | Description |
|---|---|---|---|
| provider_id | string | required | The provider (prv_...). |
| payer_id | string | required | The payer (a Claim House payer ID, pyr_..., a payer ID or an alias from the payer directory). |
| type | string | required | claims (837D), era (835) or era_eft (835 with EFT).One of: `claims`, `era`, `era_eft`. |
| 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. 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. |
| 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 POST "https://sandbox.myclaimhouse.com/api/v1/enrollments" \
-H "Authorization: Bearer $CLAIMHOUSE_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"provider_id": "prv_01JM000000E008000000000005",
"payer_id": "pyr_01JM000000E008000000000004",
"type": "claims"
}'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": "not_started",
"next_step": "Start the paperwork.",
"sent_on": null,
"expected_on": null,
"note": "",
"mode": "test",
"activated_at": null,
"created_at": "2026-09-20T15:00:00+00:00",
"updated_at": "2026-09-20T15:00:00+00:00"
}The same provider, payer and type again: 409
{
"error": "CONFLICT",
"message": "This provider already has an enrollment of this type with this payer. Update that one.",
"errors": [],
"request_id": "req_01JM000000E008000000000010"
}