B2BB2B LLM

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.

HTTPCodeAction
400model_not_foundCheck model ID or alias.
400unsupported_parameter / unsupported_value / incompatible_parametersCorrect the indicated parameter using that route's contract; allowed values may be provided.
422image_route_not_availableCheck or remove the explicit route_id.
503image_route_unavailableNo reviewed route is currently available; contact support.
503image_configuration_unavailableRoute configuration/pricing is unavailable; contact support.
503image_catalog_unavailableThe 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.