Resume after payment
If credits run out mid-flight, the project parks. It does not fail. Top up in the arbitr UI, then resume.
Where the park shows depends on which wallet ran dry. An intelligence hold sets status to awaiting_payment. A trust hold sets review.status to awaiting_payment and leaves status where it was, usually scored — so a client watching only status sees nothing change. See Project lifecycle.
Scope: verify:submit. There is no public “add credits” API.
abr_test_… keys never park. Test-mode projects do not consume credits, so you will not see this path in test mode — see Test mode.
Which route
Poll GET /v1/projects/{id} and look at assessment.credits:
| Hold | Call |
|---|---|
Intelligence / AI stage (credits.intelligence.sufficient is false) |
POST /v1/projects/{id}/resumptions |
Trust / human stage (review.status is awaiting_payment) |
POST /v1/projects/{id}/review/resumptions |
The wrong resume returns 409. credits.trust.sufficient tells you whether credits are the reason the human stage stalled, but it is not the gate — call the review resume whenever review.status is awaiting_payment, and read its response. See Project lifecycle.
Intelligence (AI)
curl -s -X POST https://api.arbitr.ai/v1/projects/3f2a9c1e-4b7d-4c8a-9f10-2d6e5b7c8a91/resumptions \
-H "X-API-Key: abr_live_…"
Still short — 402 payment_required:
{
"error": {
"code": "payment_required",
"message": "Insufficient credits",
"request_id": "…",
"required": 100,
"available": 30,
"shortfall": 70
}
}
Not parked — 409 not_awaiting_payment (may include current_status):
{
"error": {
"code": "not_awaiting_payment",
"message": "Project is not awaiting payment",
"request_id": "…",
"current_status": "translating"
}
}
Trust (human stage)
curl -s -X POST https://api.arbitr.ai/v1/projects/3f2a9c1e-4b7d-4c8a-9f10-2d6e5b7c8a91/review/resumptions \
-H "X-API-Key: abr_live_…"
Still short — 402 payment_required, plus required / available / shortfall on error:
{
"error": {
"code": "payment_required",
"message": "Insufficient trust credits",
"request_id": "…",
"required": 12.0,
"available": 3.0,
"shortfall": 9.0
}
}
Not parked — 409 not_awaiting_payment (no current_status on this path):
{
"error": {
"code": "not_awaiting_payment",
"message": "review_not_awaiting_payment",
"request_id": "…"
}
}
After 200
Poll again. When status is completed, download deliverables.
See Workflows & credits and Errors.