curl --request GET \
--url https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/batches/{externalBatchId} \
--header 'Authorization: Bearer <token>'{
"externalBatchId": "BATCH_2026_10_15",
"status": "partially_succeeded",
"bookCompleteness": "not_declared",
"submittedAt": "2026-10-15T02:00:00.000Z",
"completedAt": "2026-10-15T02:00:07.000Z",
"counts": {
"total": 3,
"pending": 0,
"succeeded": 1,
"failed": 1,
"dependencyFailed": 1
},
"records": [
{
"position": 1,
"recordId": "r1",
"kind": "customer",
"externalId": "CUS_123",
"status": "succeeded",
"httpStatus": 201
},
{
"position": 2,
"recordId": "r2",
"kind": "receivable",
"externalId": "REC_123",
"status": "failed",
"httpStatus": 422,
"problem": {
"type": "profile_mismatch"
}
},
{
"position": 3,
"recordId": "r3",
"kind": "payment_observation",
"externalId": "PAY_123",
"status": "dependency_failed",
"blockedBy": "r2"
}
]
}{
"detail": "API key is invalid, inactive, revoked, or for another environment.",
"requestId": "29400000-0000-4000-8000-000000000001",
"status": 401,
"title": "API key is invalid, inactive, revoked, or for another environment.",
"type": "https://docs.paypathiq.com/problems/invalid_api_key"
}{
"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
"requestId": "29400000-0000-4000-8000-000000000001",
"status": 403,
"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
"type": "https://docs.paypathiq.com/problems/client_scope_denied"
}{
"detail": "No batch exists at this authorized resource URL.",
"requestId": "29400000-0000-4000-8000-000000000001",
"status": 404,
"title": "No batch exists at this authorized resource URL.",
"type": "https://docs.paypathiq.com/problems/batch_not_found"
}{
"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
"errors": [
{
"code": "invalid_format",
"detail": "Invalid ISO date",
"pointer": "/dueDate"
}
],
"requestId": "29400000-0000-4000-8000-000000000001",
"status": 422,
"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
"type": "https://docs.paypathiq.com/problems/validation_error"
}{
"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
"requestId": "29400000-0000-4000-8000-000000000001",
"status": 429,
"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
}{
"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
"requestId": "29400000-0000-4000-8000-000000000001",
"status": 503,
"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
"type": "https://docs.paypathiq.com/problems/projection_unavailable"
}Get a batch
Requires the write scope of every kind in the batch. Returns progress and the exact outcome of every record. status queued or running means work is outstanding; poll until it is succeeded, partially_succeeded or failed.
curl --request GET \
--url https://api.sandbox.paypathiq.com/v1/clients/{clientCode}/batches/{externalBatchId} \
--header 'Authorization: Bearer <token>'{
"externalBatchId": "BATCH_2026_10_15",
"status": "partially_succeeded",
"bookCompleteness": "not_declared",
"submittedAt": "2026-10-15T02:00:00.000Z",
"completedAt": "2026-10-15T02:00:07.000Z",
"counts": {
"total": 3,
"pending": 0,
"succeeded": 1,
"failed": 1,
"dependencyFailed": 1
},
"records": [
{
"position": 1,
"recordId": "r1",
"kind": "customer",
"externalId": "CUS_123",
"status": "succeeded",
"httpStatus": 201
},
{
"position": 2,
"recordId": "r2",
"kind": "receivable",
"externalId": "REC_123",
"status": "failed",
"httpStatus": 422,
"problem": {
"type": "profile_mismatch"
}
},
{
"position": 3,
"recordId": "r3",
"kind": "payment_observation",
"externalId": "PAY_123",
"status": "dependency_failed",
"blockedBy": "r2"
}
]
}{
"detail": "API key is invalid, inactive, revoked, or for another environment.",
"requestId": "29400000-0000-4000-8000-000000000001",
"status": 401,
"title": "API key is invalid, inactive, revoked, or for another environment.",
"type": "https://docs.paypathiq.com/problems/invalid_api_key"
}{
"detail": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
"requestId": "29400000-0000-4000-8000-000000000001",
"status": 403,
"title": "The Client code is unknown, the grant lacks the required scope, or the calling address is outside the grant's IP allowlist.",
"type": "https://docs.paypathiq.com/problems/client_scope_denied"
}{
"detail": "No batch exists at this authorized resource URL.",
"requestId": "29400000-0000-4000-8000-000000000001",
"status": 404,
"title": "No batch exists at this authorized resource URL.",
"type": "https://docs.paypathiq.com/problems/batch_not_found"
}{
"detail": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
"errors": [
{
"code": "invalid_format",
"detail": "Invalid ISO date",
"pointer": "/dueDate"
}
],
"requestId": "29400000-0000-4000-8000-000000000001",
"status": 422,
"title": "Route parameters or the representation are invalid. Route parameters are checked before authentication. Field errors carry a code such as invalid_format, unrecognized_keys, custom, sensitive_external_id, or sensitive_source_reference.",
"type": "https://docs.paypathiq.com/problems/validation_error"
}{
"detail": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
"requestId": "29400000-0000-4000-8000-000000000001",
"status": 429,
"title": "Each API key may send 60 requests per minute and run 1 request at a time. In sandbox, the same limits also apply per Client across all of its keys. Every request, including GET, counts.",
"type": "https://docs.paypathiq.com/problems/rate_limit_exceeded"
}{
"detail": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
"requestId": "29400000-0000-4000-8000-000000000001",
"status": 503,
"title": "An unexpected error prevented a safe commit, and nothing was saved. Retry with backoff.",
"type": "https://docs.paypathiq.com/problems/projection_unavailable"
}Authorizations
Integration-owned environment-specific API key. Never paste a production key into documentation tools.
Path Parameters
Stable non-sensitive Client code authorized by the Integration grant.
^[A-Za-z0-9_-]{1,128}$Caller-assigned identifier of this batch submission. Reusing it with an identical body is a safe retry.
^[A-Za-z0-9_-]{1,128}$Response
Current progress and per-record outcomes.
^[A-Za-z0-9_-]{1,128}$queued and running mean work is outstanding; submission never implies acceptance. succeeded: every record succeeded. partially_succeeded: some records did not succeed. failed: no record succeeded.
queued, running, succeeded, partially_succeeded, failed A batch never declares a complete book, and no missing-record processing follows from any batch outcome, however it finishes. Completeness is declared only through a separate verified complete-book declaration.
"not_declared"^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$Show child attributes
Show child attributes
100Show child attributes
Show child attributes
^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$