Quote an image request
Uncharged route-specific pricing and a create-time approval fingerprint.
No current prepared translation is available. The English source is shown without machine translation.
Use an executable company credential for a project-scoped quote. The browser portal may instead use a read-only Images grant; it does not expose the project secret. Company pricing and Usage Limit valuation follow that key context.
POST /v1/images/quote requires the exact Content-Type application/json and Authorization. It is not a generation endpoint and does not require Idempotency-Key.
{
"model": "YOUR_REVIEWED_MODEL",
"operation": "image.generate",
"route_id": "YOUR_ROUTE_PUBLIC_ID",
"request": {"prompt": "A botanical illustration", "n": 1, "options": {}}
}
Use the actual26-character route public ID from GET /v1/images/catalog?model=...&operation=image.generate. For edits, request.images and request.mask are descriptors in the reviewed contract's shape, not uploaded image bytes. The real create endpoint decodes uploaded content independently. Route-specific defaults and exclusions apply; unknown fields or invalid types are rejected.
The response contains route_id, model, operation, contract_revision, contract_sha256, quote and quote_sha256. charged, upload_content_verified and provider_health_verified are false. quote preserves exact decimal strings and separately reports known/unknown monetary and Usage Limit values. An absent usage-based price is not zero. A quote is not admission, a reservation, authorization for a paid job or proof a provider is reachable.
Pass the optional64-hex quote_sha256 as model_gate.quote_sha256 in generation/edit creation to bind approval to model/operation/route/contract/options/count/effective pricing context. A mismatch returns422 image_quote_changed before dispatch. It does not hash prompt or asserted upload metadata; exact browser request bytes are separately sealed by its creation grant. Existing API integrations may omit this field and retain their prior intent format. max_cost_usd keeps its existing exact-known-price requirement.
Malformed requests return400 invalid_image_quote, a wrong content type415 image_quote_json_required, no matching allowed route422 no_matching_image_route, and catalog failure503 image_catalog_unavailable. Scope/auth failures are separate. See Images in Playground and saved operations.
Image request errors
Errors contain a stable error.code, human-readable error.message, error.type and, where applicable, error.param. Keep X-Request-ID from the response for support; never send the API key. Unknown canonical model and alias return 400 model_not_found, not a catalog outage.
| HTTP | Code | Action |
|---|---|---|
| 400 | model_not_found | Check model ID or alias. |
| 400 | unsupported_parameter / unsupported_value / incompatible_parameters | Correct the indicated parameter using that route's contract; allowed values may be provided. |
| 422 | image_route_not_available | Check or remove the explicit route_id. |
| 503 | image_route_unavailable | No reviewed route is currently available; contact support. |
| 503 | image_configuration_unavailable | Route configuration/pricing is unavailable; contact support. |
| 503 | image_catalog_unavailable | The catalog backend failed. |
Restrictions of several routes are not merged into fictitious accepted combinations. Do not automatically repeat a paid POST after a timeout or ambiguous failure. Check operation status and keep the original idempotency key. Detailed internal configuration/credential errors are not returned to clients.