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.