Workflows & credits

workflow on POST /v1/projects is a JSON array of stages. arbitr runs them in order. You do not assign vendors or sequence the later stages yourself.

Stages

Stage What it does Requires
AI_TRANSLATION Machine translation and automatic verification Always first
TRANSLATION Human translation after AI AI_TRANSLATION
EDIT Human edit after translation TRANSLATION

AI only:

workflow=["AI_TRANSLATION"]

AI then human translation and edit:

workflow=["AI_TRANSLATION","TRANSLATION","EDIT"]

due_date (YYYY-MM-DD) is optional and informational. It never blocks or parks the project. GET /v1/projects/{id} echoes it on assessment and sets due_date_feasible to null if you sent no date.

Two wallets

Wallet Used for
Intelligence AI stage
Trust Human stages (TRANSLATION, EDIT)

Check the org balance (any valid key, no extra scope):

curl -s https://api.arbitr.ai/v1/credits/balance \
  -H "X-API-Key: abr_live_…"

intelligence_credits / trust_credits are remaining. Values are numbers (trust can be fractional). abr_test_… keys do not consume credits.

While a project runs

Poll GET /v1/projects/{id} (verify:read). assessment is only on this detail call, not on create or list.

  • assessment.credits.intelligence — always present (required, available, sufficient)
  • assessment.credits.trust — present when the workflow has a human stage; otherwise null
  • review — human-stage lifecycle; fields stay empty until a review is requested

If credits run out mid-flight the project parks. An intelligence shortfall sets status to awaiting_payment; a trust shortfall sets review.status instead and leaves status unchanged (see Project lifecycle). Top up in the arbitr UI, then resume (verify:submit):

Hold Call
AI / intelligence POST /v1/projects/{id}/resumptions
Human / trust POST /v1/projects/{id}/review/resumptions

Still short → 402. Not waiting for payment → 409.

Both resume routes return the normal error envelope: 402 payment_required (with required / available / shortfall), or 409 not_awaiting_payment (intelligence resume may also include current_status). See Errors.