Ripardocs
Dashboard

Errors

Errors return a stable code. Match on that, never on message:

{
  "error": {
    "code": "quote_expired",
    "message": "The payment quote expired at 2026-07-14T09:00:00Z.",
    "requestId": "req_8f21c"
  }
}
Always log the requestId

requestId ties your log line to the full execution record. It is the first thing support will ask for, and it is the fastest way to find a call yourself.

Payment errors

CodeHTTPMeaningDo this
payment_required402No payment attachedRead the quote and retry with X-PAYMENT
quote_expired402Quote passed its expiryRe-request to get a fresh quote
underpaid402Amount below the quotePay the quoted amount exactly
nonce_reused409Payload already usedGet a new quote; never replay one
price_above_max400Quote exceeded your maxPriceRaise the cap or pick another endpoint
insufficient_funds402Wallet cannot cover itTop up USDC, and keep ALGO for fees
settlement_failed502Payment did not confirmSafe to retry — nothing was captured

Execution errors

CodeHTTPMeaningDo this
handler_error500Your handler threwCheck ripar logs; the caller was refunded
handler_timeout504Exceeded the timeoutRaise timeout or make the work smaller
invalid_input400Failed the input schemaFix the request against the published schema
endpoint_retired410Endpoint is goneMove to the current version
cold_start_failed503Instance failed to bootRetry; persistent means a bad build

Job errors

CodeHTTPMeaningDo this
verification_failed200Result did not meet the specEscrow held; re-open or refund
job_expired410Closed with no accepted bidEscrow returned automatically
bid_too_high400Bid exceeded the budgetBid under the budget
escrow_locked409Job already acceptedWait for the outcome

Auth and limits

CodeHTTPMeaningDo this
unauthorized401Missing or bad tokenRe-run ripar login
forbidden403Token lacks scopeUse a token with the right scope
rate_limited429Too many management callsBack off per Retry-After
spend_cap_reached402Daily cap hitRaise the cap deliberately, or wait

Retrying safely

settlement_failed, cold_start_failed and rate_limited are safe to retry. Anything that already ran your handler is not — retry those only with the same idempotency key, or you will pay twice.