Skip to the page
Chapters

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

Headers
NameTypeRequiredDescription
Idempotency-KeystringrequiredMakes 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

Body
NameTypeRequiredDescription
provider_idstringrequiredThe provider (prv_...).
payer_idstringrequiredThe payer (a Claim House payer ID, pyr_..., a payer ID or an alias from the payer directory).
typestringrequiredclaims (837D), era (835) or era_eft (835 with EFT).One of: `claims`, `era`, `era_eft`.
sent_onstring (date) or nulloptionalWhen the paperwork was sent (YYYY-MM-DD), or null for none.
expected_onstring (date) or nulloptionalWhen the payer is expected to finish (YYYY-MM-DD), or null for none.
notestringoptionalFor your office's own notes about the paperwork. Never patient information.At most 500 characters.

Response

The enrollment. Status 200.

Response fields
NameTypeDescription
idstringAn ID that starts with enr_.
objectstringAlways `enrollment`.
provider_idstringAn ID that starts with prv_.
provider_namestring
payer_idstringAn ID that starts with pyr_.
payer_namestring
typestringOne of: `claims`, `era`, `era_eft`.
methodobject or nullHow the payer enrolls a provider, from the payer directory; null when the payer needs no enrollment for this (it started active).
method.codestringThe payer directory's enrollment code when the enrollment was started (S, O, W, F, I or U, with * or L).
method.labelstring
method.instructionsstringWhat has to be done, in plain words.
statusstringOne of: `not_started`, `awaiting_signature`, `provider_action`, `submitted`, `active`.
next_stepstringWhat someone has to do now, in plain words.
sent_onstring (date) or null
expected_onstring (date) or null
notestring
modestringOne of: `test`, `live`.
activated_atstring (date-time) or nullWhen it last became active; null while it is not.
created_atstring (date-time)
updated_atstring (date-time)

Errors

Errors
HTTP statusCodeWhat it means
401UNAUTHORIZEDA valid API key is required. Send it as "Authorization: Bearer <key>".
403PERMISSION_DENIEDThis API key is not allowed to do that.
422INVALID_REQUESTThe request is not valid.
400IDEMPOTENCY_KEY_REQUIREDPOST and PATCH requests need an Idempotency-Key header.
422IDEMPOTENCY_KEY_REUSEDThat Idempotency-Key was already used with a different request.
409IDEMPOTENCY_KEY_IN_USEA request with that Idempotency-Key is still running. Retry shortly.
413PAYLOAD_TOO_LARGEThe request body is larger than 1 MB.
504TIMEOUTThe 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).
409CONFLICTThe 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.
500INTERNALSomething went wrong on our side. Quote the request ID if you contact us.

Example

Example request

Shell
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

JSON
{
  "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

JSON
{
  "error": "CONFLICT",
  "message": "This provider already has an enrollment of this type with this payer. Update that one.",
  "errors": [],
  "request_id": "req_01JM000000E008000000000010"
}