Bulk Create Credentialing Rows¶
Creates credentialing rows for every combination of the given billing profiles and payers.
Endpoint¶
Request Body¶
| Parameter | Type | Required | Description |
|---|---|---|---|
billing_profile_ids |
array of string | Yes | Billing profiles to create rows for. |
payer_ids |
array of string | Yes | Billing-profile payer row ids to cross with billing_profile_ids. |
scope |
string | Yes | Which rows to create for each billing-profile/payer pair: the GROUP row, one row per provider, or both. One of GROUP, INDIVIDUAL, BOTH. |
provider_ids |
array of string | No | Providers to cross with billing_profile_ids. |
in_network |
boolean | No | Whether the provider is in-network with this payer. |
network_status |
string | No | Whether the relationship is in-network or out-of-network. |
effective_from |
string | No | |
effective_to |
string | No | |
only_missing |
boolean | No | Skip a (billing profile, payer, entity) combination that already has a row, instead of erroring. |
Request¶
curl --location '{base_url}/v2/credentialing/bulk' \
--header 'Authorization: Bearer JWT_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"billing_profile_ids": [
"b7e4c1a2-6f3d-4e9b-9a51-2c8d0f7e3a14"
],
"payer_ids": [
"9f1c8a2e-4b31-4d0a-9c77-2f5ab8e10c44"
],
"scope": "BOTH",
"provider_ids": [
"d27a6b10-9f34-4e82-b5c1-7a03e8946fd2"
],
"in_network": true,
"network_status": "IN_NETWORK",
"effective_from": "2026-01-01",
"effective_to": null,
"only_missing": true
}'
Response¶
Success Response¶
Code: 200 OK
Response Fields¶
| Field | Type | Description |
|---|---|---|
created |
integer | Rows created. |
skipped |
integer | Rows skipped — already existed and only_missing was set, or no matching payer or provider. |
Error Response¶
Code: 400 Bad Request
{
"code": "bad_request",
"message": "Validation failed",
"errors": [
{
"field": "patient_id",
"message": "must be a string"
}
]
}
Every error has the same shape — a machine-readable code, a message, and an errors[] array that's empty when there's nothing field-specific to report. The HTTP status is authoritative.
| Status | code |
Meaning |
|---|---|---|
400 Bad Request |
bad_request |
The request body or parameters failed validation. errors[] names the offending fields. |
401 Unauthorized |
unauthorized |
The access token is missing, malformed or expired. |
403 Forbidden |
forbidden |
The request references a resource outside the token's organisation or clinic scope. |
404 Not Found |
not_found |
No such resource, or it's outside your scope. |
409 Conflict |
conflict |
The record conflicts with existing state — see the endpoint's notes. |
412 Precondition Failed |
precondition_failed |
If-Match is stale. Re-read the resource and retry. |
423 Locked |
locked |
The organisation has a publish in progress. Retry once it finishes. |
428 Precondition Required |
precondition_required |
If-Match is required on this write. |
429 Too Many Requests |
rate_limited |
Rate limit exceeded. Back off and retry. |
500 Internal Server Error |
internal_error |
Unexpected server error. |
502 Bad Gateway |
upstream_error |
Upstream service failed or timed out. |
Notes¶
scopecontrols which rows are created per pair: theGROUProw, one row perprovider_idsentry, orBOTH.only_missingskips a combination that already has a row instead of erroring.