API reference
Generated from the same schemas that shape and validate live responses, so this page cannot drift from what the API actually returns.
Machine readable spec
The OpenAPI 3.1 document is served at /openapi.json. Point your client generator at it directly. Authentication is HTTP bearer; supply your key as Authorization: Bearer epk_live_XXXX.
Version 1.0.0. Base URL https://app.enrollpilot.com/api/v1.
Endpoints
Requires the providers:read scope.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
limit | query | integer | Maximum rows to return. Default 50, maximum 200. |
cursor | query | string | Opaque keyset cursor returned as nextCursor by the previous page. Omit for the first page. |
updated_since | query | string | ISO 8601 timestamp. Returns rows whose updatedAt is greater than or equal to this value. The boundary is inclusive, so overlap your watermark and deduplicate by id. |
active | query | enum(true, false) | Filter by employment status. Omit to return both active and inactive providers. |
Responses
- 200A page of results.
- 400invalid_request: a query parameter failed validation.
- 401invalid_key: the key is missing, malformed, unknown, revoked or expired.
- 402payment_past_due or subscription_inactive: API access is suspended for billing reasons.
- 403insufficient_scope or api_disabled.
- 404not_found: unknown id, or an id belonging to another organization.
- 405method_not_allowed: v1 is read-only and supports GET only.
- 429rate_limited: per-key or per-organization limit exceeded.
- 500internal_error.
- 503api_unavailable or api_temporarily_unavailable.
Requires the providers:read scope. Ids belonging to another organization return 404.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
id | path | string | Resource id. |
Responses
- 200The requested resource.
- 400invalid_request: a query parameter failed validation.
- 401invalid_key: the key is missing, malformed, unknown, revoked or expired.
- 402payment_past_due or subscription_inactive: API access is suspended for billing reasons.
- 403insufficient_scope or api_disabled.
- 404not_found: unknown id, or an id belonging to another organization.
- 405method_not_allowed: v1 is read-only and supports GET only.
- 429rate_limited: per-key or per-organization limit exceeded.
- 500internal_error.
- 503api_unavailable or api_temporarily_unavailable.
Requires the groups:read scope.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
limit | query | integer | Maximum rows to return. Default 50, maximum 200. |
cursor | query | string | Opaque keyset cursor returned as nextCursor by the previous page. Omit for the first page. |
updated_since | query | string | ISO 8601 timestamp. Returns rows whose updatedAt is greater than or equal to this value. The boundary is inclusive, so overlap your watermark and deduplicate by id. |
Responses
- 200A page of results.
- 400invalid_request: a query parameter failed validation.
- 401invalid_key: the key is missing, malformed, unknown, revoked or expired.
- 402payment_past_due or subscription_inactive: API access is suspended for billing reasons.
- 403insufficient_scope or api_disabled.
- 404not_found: unknown id, or an id belonging to another organization.
- 405method_not_allowed: v1 is read-only and supports GET only.
- 429rate_limited: per-key or per-organization limit exceeded.
- 500internal_error.
- 503api_unavailable or api_temporarily_unavailable.
Requires the groups:read scope. Ids belonging to another organization return 404.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
id | path | string | Resource id. |
Responses
- 200The requested resource.
- 400invalid_request: a query parameter failed validation.
- 401invalid_key: the key is missing, malformed, unknown, revoked or expired.
- 402payment_past_due or subscription_inactive: API access is suspended for billing reasons.
- 403insufficient_scope or api_disabled.
- 404not_found: unknown id, or an id belonging to another organization.
- 405method_not_allowed: v1 is read-only and supports GET only.
- 429rate_limited: per-key or per-organization limit exceeded.
- 500internal_error.
- 503api_unavailable or api_temporarily_unavailable.
Requires the enrollments:read scope.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
limit | query | integer | Maximum rows to return. Default 50, maximum 200. |
cursor | query | string | Opaque keyset cursor returned as nextCursor by the previous page. Omit for the first page. |
updated_since | query | string | ISO 8601 timestamp. Returns rows whose updatedAt is greater than or equal to this value. The boundary is inclusive, so overlap your watermark and deduplicate by id. |
status | query | string | Filter by enrollment status. |
payer | query | string | Filter by payer name. |
provider_id | query | string | Filter by provider id. |
Responses
- 200A page of results.
- 400invalid_request: a query parameter failed validation.
- 401invalid_key: the key is missing, malformed, unknown, revoked or expired.
- 402payment_past_due or subscription_inactive: API access is suspended for billing reasons.
- 403insufficient_scope or api_disabled.
- 404not_found: unknown id, or an id belonging to another organization.
- 405method_not_allowed: v1 is read-only and supports GET only.
- 429rate_limited: per-key or per-organization limit exceeded.
- 500internal_error.
- 503api_unavailable or api_temporarily_unavailable.
Requires the enrollments:read scope. Ids belonging to another organization return 404.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
id | path | string | Resource id. |
Responses
- 200The requested resource.
- 400invalid_request: a query parameter failed validation.
- 401invalid_key: the key is missing, malformed, unknown, revoked or expired.
- 402payment_past_due or subscription_inactive: API access is suspended for billing reasons.
- 403insufficient_scope or api_disabled.
- 404not_found: unknown id, or an id belonging to another organization.
- 405method_not_allowed: v1 is read-only and supports GET only.
- 429rate_limited: per-key or per-organization limit exceeded.
- 500internal_error.
- 503api_unavailable or api_temporarily_unavailable.
Requires the enrollments:read scope.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
limit | query | integer | Maximum rows to return. Default 50, maximum 200. |
cursor | query | string | Opaque keyset cursor returned as nextCursor by the previous page. Omit for the first page. |
updated_since | query | string | ISO 8601 timestamp. Returns rows whose updatedAt is greater than or equal to this value. The boundary is inclusive, so overlap your watermark and deduplicate by id. |
status | query | string | Filter by group enrollment status. |
payer | query | string | Filter by payer name. |
group_id | query | string | Filter by provider group id. |
Responses
- 200A page of results.
- 400invalid_request: a query parameter failed validation.
- 401invalid_key: the key is missing, malformed, unknown, revoked or expired.
- 402payment_past_due or subscription_inactive: API access is suspended for billing reasons.
- 403insufficient_scope or api_disabled.
- 404not_found: unknown id, or an id belonging to another organization.
- 405method_not_allowed: v1 is read-only and supports GET only.
- 429rate_limited: per-key or per-organization limit exceeded.
- 500internal_error.
- 503api_unavailable or api_temporarily_unavailable.
Requires the enrollments:read scope. Ids belonging to another organization return 404.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
id | path | string | Resource id. |
Responses
- 200The requested resource.
- 400invalid_request: a query parameter failed validation.
- 401invalid_key: the key is missing, malformed, unknown, revoked or expired.
- 402payment_past_due or subscription_inactive: API access is suspended for billing reasons.
- 403insufficient_scope or api_disabled.
- 404not_found: unknown id, or an id belonging to another organization.
- 405method_not_allowed: v1 is read-only and supports GET only.
- 429rate_limited: per-key or per-organization limit exceeded.
- 500internal_error.
- 503api_unavailable or api_temporarily_unavailable.
Requires the documents:read scope.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
limit | query | integer | Maximum rows to return. Default 50, maximum 200. |
cursor | query | string | Opaque keyset cursor returned as nextCursor by the previous page. Omit for the first page. |
updated_since | query | string | ISO 8601 timestamp. Returns rows whose updatedAt is greater than or equal to this value. The boundary is inclusive, so overlap your watermark and deduplicate by id. |
provider_id | query | string | Filter by provider id. |
group_id | query | string | Filter by provider group id. |
Responses
- 200A page of results.
- 400invalid_request: a query parameter failed validation.
- 401invalid_key: the key is missing, malformed, unknown, revoked or expired.
- 402payment_past_due or subscription_inactive: API access is suspended for billing reasons.
- 403insufficient_scope or api_disabled.
- 404not_found: unknown id, or an id belonging to another organization.
- 405method_not_allowed: v1 is read-only and supports GET only.
- 429rate_limited: per-key or per-organization limit exceeded.
- 500internal_error.
- 503api_unavailable or api_temporarily_unavailable.
Requires the providers:read scope.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
limit | query | integer | Maximum rows to return. Default 50, maximum 200. |
cursor | query | string | Opaque keyset cursor returned as nextCursor by the previous page. Omit for the first page. |
within_days | query | integer | Only return items expiring within this many days. Default 365, maximum 730. |
Responses
- 200A page of results.
- 400invalid_request: a query parameter failed validation.
- 401invalid_key: the key is missing, malformed, unknown, revoked or expired.
- 402payment_past_due or subscription_inactive: API access is suspended for billing reasons.
- 403insufficient_scope or api_disabled.
- 404not_found: unknown id, or an id belonging to another organization.
- 405method_not_allowed: v1 is read-only and supports GET only.
- 429rate_limited: per-key or per-organization limit exceeded.
- 500internal_error.
- 503api_unavailable or api_temporarily_unavailable.
Schemas
Fields marked as not always present are omitted from the payload when the key lacks the scope that unlocks them.
Provider
| Field | Type | Always present |
|---|---|---|
additionalSpecialty1 | string or null | Yes |
additionalSpecialty1TaxonomyCode | string or null | Yes |
additionalSpecialty2 | string or null | Yes |
additionalSpecialty2TaxonomyCode | string or null | Yes |
additionalSpecialty3 | string or null | Yes |
additionalSpecialty3TaxonomyCode | string or null | Yes |
additionalSpecialty4 | string or null | Yes |
additionalSpecialty4TaxonomyCode | string or null | Yes |
additionalSpecialty5 | string or null | Yes |
additionalSpecialty5TaxonomyCode | string or null | Yes |
billingAddress | string or null | Yes |
billingAddressLine2 | string or null | Yes |
billingCity | string or null | Yes |
billingState | string or null | Yes |
billingZip | string or null | Yes |
birthCity | string or null | No |
birthCountry | string or null | No |
caqhId | string or null | Yes |
createdAt | string | Yes |
dateOfBirth | string or null | No |
ethnicity | string or null | No |
ethnicityDetail | string or null | No |
firstName | string or null | Yes |
gender | string or null | No |
groupMemberships | array of object | Yes |
id | string | Yes |
isActive | boolean | Yes |
languages | array of string | Yes |
lastName | string or null | Yes |
medicaidParticipation | string or null | Yes |
medicaidStates | array of string | Yes |
medicareParticipation | string or null | Yes |
medicareStates | array of string | Yes |
middleName | string or null | Yes |
name | string | Yes |
npi | string | Yes |
otherEmails | array of string | Yes |
personalAddress | string or null | Yes |
personalAddressLine2 | string or null | Yes |
personalCity | string or null | Yes |
personalCounty | string or null | Yes |
personalEmail | string or null | Yes |
personalFax | string or null | Yes |
personalPhone | string or null | Yes |
personalState | string or null | Yes |
personalZip | string or null | Yes |
providerIds | array of object | Yes |
secondarySpecialty | string or null | Yes |
secondarySpecialtyTaxonomyCode | string or null | Yes |
specialty | string or null | Yes |
specialtyTaxonomyCode | string or null | Yes |
startDate | string or null | Yes |
suffix | string or null | Yes |
taxonomyCode | string or null | Yes |
telehealthServices | boolean | Yes |
termedDate | string or null | Yes |
type | string or null | Yes |
updatedAt | string | Yes |
ProviderGroup
| Field | Type | Always present |
|---|---|---|
createdAt | string | Yes |
dba | string or null | Yes |
groupIds | array of object | Yes |
id | string | Yes |
locations | array of object | Yes |
name | string | Yes |
npi | string or null | Yes |
tin | string or null | Yes |
updatedAt | string | Yes |
Enrollment
| Field | Type | Always present |
|---|---|---|
assignees | array of string | Yes |
caseNumber | string or null | Yes |
dueDate | string or null | Yes |
effectiveDate | string or null | Yes |
enrollmentType | enum(MEDICARE_FFS, MEDICAID_FFS, PRIVATE_PAYER) or null | Yes |
id | string | Yes |
lobs | array of object | Yes |
missingCount | integer | Yes |
nextFollowUpAt | string or null | Yes |
nextFollowUpType | enum(FOLLOW_UP, TASK, REMINDER, PHONE, EMAIL, FAX, MAIL, WEBSITE) or null | Yes |
npi | string | Yes |
participations | array of object | Yes |
payerName | string | Yes |
providerId | string | Yes |
providerName | string | Yes |
requirements | array of object | Yes |
state | string or null | Yes |
status | enum(NOT_STARTED, DATA_COLLECTION, DRAFT, PENDING_SIGNATURE, SUBMITTED, ACKNOWLEDGED, PRE_SCREENING, PENDED_AI, PSV_IN_PROGRESS, PEER_REVIEW, VERIFIED, COMMITTEE_REVIEW, APPROVED_PENDING_NETWORK, NEGOTIATION, PENDING_EXECUTION, FULLY_EXECUTED, LOADING_ENTRY, LINKED_ASSOCIATED, PENDING_DIRECTORY, PAR, RE_CREDENTIALING, RE_VALIDATION, WITHDRAWN, DENIED, TERMINATED, DE_PARD, SUSPENDED, ARCHIVED, LOCUM_TENENS, RECIPROCITY_TRANSFER) | Yes |
statusReason | string or null | Yes |
updatedAt | string | Yes |
GroupEnrollment
| Field | Type | Always present |
|---|---|---|
assignees | array of string | Yes |
effectiveDate | string or null | Yes |
enrollmentType | string or null | Yes |
groupNpi | string or null | Yes |
id | string | Yes |
lobs | array of object | Yes |
payerName | string | Yes |
providerGroupId | string | Yes |
providerGroupName | string | Yes |
state | string or null | Yes |
status | string | Yes |
statusReason | string or null | Yes |
updatedAt | string | Yes |
Document
| Field | Type | Always present |
|---|---|---|
documentType | string or null | Yes |
expiresOn | string or null | Yes |
fileName | string or null | Yes |
id | string | Yes |
providerGroupId | string or null | Yes |
providerId | string or null | Yes |
status | enum(PENDING, RECEIVED, VERIFIED, REJECTED, EXPIRED) | Yes |
updatedAt | string | Yes |
uploadedAt | string | Yes |
Expirable
| Field | Type | Always present |
|---|---|---|
category | string | Yes |
daysUntilExpiry | integer | Yes |
expiresOn | string | Yes |
label | string | Yes |
sourceId | string | Yes |
sourceType | enum(PROVIDER_ID, DOCUMENT, ENROLLMENT, ADDRESS_MEDICAID, SUPERVISORY_AGREEMENT, GROUP_ID, GROUP_ADDRESS_MEDICAID, GROUP_DOCUMENT) | Yes |
status | enum(EXPIRED, EXPIRING_SOON, UPCOMING) | Yes |
Error
Every failure uses this envelope. Branch on `code`; messages may be reworded.
| Field | Type | Always present |
|---|---|---|
error | object | Yes |
JsonValue
Any JSON value.
string or number or boolean or null or array of JsonValue or object