B3IQ endpoints use stable machine-readable error codes so clients can distinguish auth failures, model blockers, route selection failures, billing policy, and private-job issues.

OpenAI-Compatible Envelope

Hosted OpenAI-compatible endpoints return an OpenAI-style error object with a B3IQ detail object.

json
{ "error": { "message": "human readable detail", "type": "invalid_request_error", "param": null, "code": "stable_machine_code", "b3iq": { "status": 400, "title": "B3IQ title", "detail": "human readable detail", "code": "stable_machine_code" } }}

Native Problem Envelope

B3IQ-native endpoints return problem JSON:

json
{ "error": { "status": 400, "title": "B3IQ title", "detail": "human readable detail", "code": "stable_machine_code" }}

Common Codes

CodeMeaning
unauthorizedMissing or invalid bearer, admin, customer, router, or local credential
gateway_api_key_scope_deniedHosted gateway key lacks required scope
no_healthy_candidatesNo route passed liveness, tunnel, runtime, protocol, model, benchmark, and policy gates
router_dispatch_failedSelected route did not return a usable response
insufficient_balanceCustomer balance cannot reserve the quoted job
gateway_spend_cap_exceededCustomer rolling spend cap would be exceeded
model_benchmark_unverifiedProfile benchmark proof is missing
observed_benchmark_missingControl-plane observed benchmark proof is missing for a billable path
protocol_stake_unsatisfiedNode does not satisfy stake policy
invalid_encrypted_requestPrivate-job encrypted request payload is malformed
receipt_hash_mismatchSubmitted receipt hash does not match signed payload
invalid_signatureNode or customer signed payload did not verify

HTTP Status Mapping

HTTP statusOpenAI-compatible type
400, 413, 415invalid_request_error
401, 403authentication_error
402insufficient_quota
404not_found_error
409conflict_error
429rate_limit_error
5xxapi_error

Client Guidance

Do

Branch on code

Use error.code or error.b3iq.code for retry, billing, model readiness, route-readiness, and support workflows.

Avoid

Parse titles

Human-readable titles can change. Stable machine codes are the compatibility contract.

Ask a question... ⌘I