Batch eligibility checks let you run multiple checks asynchronously using a single request.
Now, you can check the progress of those batches with two new API endpoints:
Retrieve Batch Check Status – Shows the overall status of a batch, including counts for completed and in-progress checks.
Retrieve Batch Check Statuses – Shows the status of each individual check in a batch.
Previously, there wasn’t a simple, programmatic way to check how far along a batch was. The Poll Batch Eligibility Checks endpoint lets you poll for results, but it only returns completed checks. To know if a batch was done, you had to write logic to compare the completed checks to the total you submitted for each batch.
The new endpoints handle the tracking for you.
Retrieve Batch Check Status endpoint
Use this endpoint to see the status of a batch you’ve submitted, either through the Batch Eligibility Checks API or a CSV upload in the Stedi portal. Include the batch ID returned by the batch request:
curl https:
-H "Authorization: <api_key>"
curl https:
-H "Authorization: <api_key>"
curl https:
-H "Authorization: <api_key>"
curl https:
-H "Authorization: <api_key>"
curl https:
-H "Authorization: <api_key>"
The response shows an overall status and counts for completed and in-progress checks. You can use both to decide when to start polling for results. For example, you may only poll once the successCount is greater than zero or when status is COMPLETED.
{
"batchType": "ELIGIBILITY",
"status": "IN_PROGRESS",
"totalCount": 10000,
"successCount": 2400,
"errorCount": 15,
"inProgressCount": 7585,
"createdAt": "2025-11-06T14:26:01.821Z",
"updatedAt": "2025-11-06T14:46:13.119Z"
}{
"batchType": "ELIGIBILITY",
"status": "IN_PROGRESS",
"totalCount": 10000,
"successCount": 2400,
"errorCount": 15,
"inProgressCount": 7585,
"createdAt": "2025-11-06T14:26:01.821Z",
"updatedAt": "2025-11-06T14:46:13.119Z"
}{
"batchType": "ELIGIBILITY",
"status": "IN_PROGRESS",
"totalCount": 10000,
"successCount": 2400,
"errorCount": 15,
"inProgressCount": 7585,
"createdAt": "2025-11-06T14:26:01.821Z",
"updatedAt": "2025-11-06T14:46:13.119Z"
}{
"batchType": "ELIGIBILITY",
"status": "IN_PROGRESS",
"totalCount": 10000,
"successCount": 2400,
"errorCount": 15,
"inProgressCount": 7585,
"createdAt": "2025-11-06T14:26:01.821Z",
"updatedAt": "2025-11-06T14:46:13.119Z"
}{
"batchType": "ELIGIBILITY",
"status": "IN_PROGRESS",
"totalCount": 10000,
"successCount": 2400,
"errorCount": 15,
"inProgressCount": 7585,
"createdAt": "2025-11-06T14:26:01.821Z",
"updatedAt": "2025-11-06T14:46:13.119Z"
}For more details, see the Retrieve Batch Check Status API reference.
Retrieve Batch Check Statuses endpoint
This endpoint shows the state of each check within a batch. Use it to see whether specific checks in a batch have finished processing.
curl https:
-H "Authorization: <api_key>"
curl https:
-H "Authorization: <api_key>"
curl https:
-H "Authorization: <api_key>"
curl https:
-H "Authorization: <api_key>"
curl https:
-H "Authorization: <api_key>"
The response includes each patient’s coverage status (eligibilitySearchStatus) and member ID (subscriberMemberId). If you only need to confirm that information, you can skip polling altogether.
{
"items": [
{
"batchId": "<batch-id>",
"state": "COMPLETED",
"requestId": "...",
"additionalInfo": {
"eligibility": {
"eligibilitySearchId": "...",
"eligibilitySearchStatus": "active",
"subscriberFirstName": "John",
"subscriberLastName": "Doe",
"subscriberMemberId": "12345678",
"providerName": "STEDI",
"providerNpi": "1999999984",
"outboundTraceId": "...",
"submitterTransactionIdentifier": "00001",
"payerId": "FRCPB"
}
},
"createdAt": "2025-11-06T14:26:01.931Z",
"updatedAt": "2025-11-06T14:26:13.097Z",
"index": 0
}
],
"nextPageToken": "..."
}
{
"items": [
{
"batchId": "<batch-id>",
"state": "COMPLETED",
"requestId": "...",
"additionalInfo": {
"eligibility": {
"eligibilitySearchId": "...",
"eligibilitySearchStatus": "active",
"subscriberFirstName": "John",
"subscriberLastName": "Doe",
"subscriberMemberId": "12345678",
"providerName": "STEDI",
"providerNpi": "1999999984",
"outboundTraceId": "...",
"submitterTransactionIdentifier": "00001",
"payerId": "FRCPB"
}
},
"createdAt": "2025-11-06T14:26:01.931Z",
"updatedAt": "2025-11-06T14:26:13.097Z",
"index": 0
}
],
"nextPageToken": "..."
}
{
"items": [
{
"batchId": "<batch-id>",
"state": "COMPLETED",
"requestId": "...",
"additionalInfo": {
"eligibility": {
"eligibilitySearchId": "...",
"eligibilitySearchStatus": "active",
"subscriberFirstName": "John",
"subscriberLastName": "Doe",
"subscriberMemberId": "12345678",
"providerName": "STEDI",
"providerNpi": "1999999984",
"outboundTraceId": "...",
"submitterTransactionIdentifier": "00001",
"payerId": "FRCPB"
}
},
"createdAt": "2025-11-06T14:26:01.931Z",
"updatedAt": "2025-11-06T14:26:13.097Z",
"index": 0
}
],
"nextPageToken": "..."
}
{
"items": [
{
"batchId": "<batch-id>",
"state": "COMPLETED",
"requestId": "...",
"additionalInfo": {
"eligibility": {
"eligibilitySearchId": "...",
"eligibilitySearchStatus": "active",
"subscriberFirstName": "John",
"subscriberLastName": "Doe",
"subscriberMemberId": "12345678",
"providerName": "STEDI",
"providerNpi": "1999999984",
"outboundTraceId": "...",
"submitterTransactionIdentifier": "00001",
"payerId": "FRCPB"
}
},
"createdAt": "2025-11-06T14:26:01.931Z",
"updatedAt": "2025-11-06T14:26:13.097Z",
"index": 0
}
],
"nextPageToken": "..."
}
{
"items": [
{
"batchId": "<batch-id>",
"state": "COMPLETED",
"requestId": "...",
"additionalInfo": {
"eligibility": {
"eligibilitySearchId": "...",
"eligibilitySearchStatus": "active",
"subscriberFirstName": "John",
"subscriberLastName": "Doe",
"subscriberMemberId": "12345678",
"providerName": "STEDI",
"providerNpi": "1999999984",
"outboundTraceId": "...",
"submitterTransactionIdentifier": "00001",
"payerId": "FRCPB"
}
},
"createdAt": "2025-11-06T14:26:01.931Z",
"updatedAt": "2025-11-06T14:26:13.097Z",
"index": 0
}
],
"nextPageToken": "..."
}For more details, see the Retrieve Batch Check Statuses API reference.
When to use batch eligibility checks
For most Stedi customers, we recommend using real-time eligibility checks for both one-off checks, like when a patient is at the front desk, and bulk checks, like monthly refreshes. It’s a simple, flexible setup.
But if you're running thousands of time-insensitive checks at once and building custom logic to handle them, look into using batch checks. They handle queuing and retries over longer periods for you.
For details, see When to use batch eligibility checks.
Get started
If you want help implementing batch eligibility checks, schedule a consultation. We’ll help you design a scalable workflow that fits your use case.