---
title: "Quote Image Generation With Model Adapters"
method: POST
path: "/v1/capabilities/image.generate.v1/quote"
tags: ["public_api", "external", "model-adapters"]
---

# Quote Image Generation With Model Adapters

`POST /v1/capabilities/image.generate.v1/quote`

## Request

- Base URL: `https://api.hydracept.com`
- URL: `https://api.hydracept.com/v1/capabilities/image.generate.v1/quote`
- Auth: HTTP bearer

Use the normal retail estimator, constraining it to adapter-compatible routes.

The extra routingAlternatives field is explanatory only. The nested pricing
quote remains the monetary authority used by ordinary admission.

## Query parameters

- `projectId` string, nullable

## Request body

- RetailEstimateRequest: Quote request using the same canonical envelope as invoke/jobs. Legacy top-level fields (``billingMode``, ``options``, top-level ``model``) are normalized into ``context`` / ``input`` / ``execution`` before validation.
  - `context` CapabilityContext
    - `productId` string
    - `environment` string
    - `projectId` string, nullable
    - `dataClassification` 'Public' | 'Internal' | 'Confidential' | 'PrivateUserContent' | 'Manuscript'
    - `retentionRequirement` 'HashesOnly' | 'Transient' | 'EncryptedShortTerm' | 'ProductManaged' | 'ProductionAsset'
  - `input` object
  - `execution` CapabilityExecutionOptions
    - `executionPreference` string
    - `billingMode` string, nullable
    - `credentialSource` string, nullable
    - `quoteId` string, nullable
    - `estimateId` string, nullable: Inbound alias of quoteId. Prefer quoteId and pricing.quote.
    - `maximumCharge` object, nullable
    - `executionConstraints` ExecutionConstraints
      - `maxCostUsd` number, nullable
      - `providerPin` string, nullable
      - `preferredModel` string, nullable
      - `autoSelect` boolean: Opt in to smart fallback when preferredModel is physically unavailable. Ignored when preferredModel is omitted.
      - `budgetEnforcement` string, nullable: warn (admit over ceiling) or prevent (HTTP 402). Setting maxCostUsd without this is prevent.
      - `maxDurationSeconds` integer, nullable: Provider execution deadline in seconds after the job starts running. Does not include queue wait. timeoutSeconds is accepted as an alias.

## Response `200`

Successful response

- RetailEstimateResponse: Retail quote before execution. ``estimateId`` mirrors ``quoteId`` for compatibility.
  - `status` 'ok' | 'pricing_inputs_required'
  - `missing` string[]
  - `quoteId` string, nullable
  - `estimateId` string, nullable: Alias of quoteId for older clients. Prefer quoteId and pricing.quote.
  - `capabilityKey` string, nullable
  - `pricingVersion` string, nullable
  - `pricingInputFingerprint` string, nullable
  - `pricing` HydraceptReceiptPricing: Canonical pricing on a receipt. Legacy micros fields remain for compatibility.
    - `quote` ReceiptQuote
      - `quoteId` string, nullable
      - `kind` 'fixed' | 'estimate' | 'range'
      - `chargeBasis` Money: Hydracept price before transactional tax. ``amountMicros`` is authority.
        - `amountMicros` integer, required
        - `currency` string, required
        - `amountMinor` integer, required
        - `display` string, required
      - `serviceFee` Money: Hydracept price before transactional tax. ``amountMicros`` is authority.
        - `amountMicros` integer, required
        - `currency` string, required
        - `amountMinor` integer, required
        - `display` string, required
      - `customerTotal` Money: Hydracept price before transactional tax. ``amountMicros`` is authority.
        - `amountMicros` integer, required
        - `currency` string, required
        - `amountMinor` integer, required
        - `display` string, required
      - `maximumCustomerTotal` Money: Hydracept price before transactional tax. ``amountMicros`` is authority.
        - `amountMicros` integer, required
        - `currency` string, required
        - `amountMinor` integer, required
        - `display` string, required
      - `expiresAt` string, date-time, nullable
      - `pricingInputsHash` string, nullable
    - `charge` ReceiptCharge
      - `customerCharge` Money, required: Hydracept price before transactional tax. ``amountMicros`` is authority.
        - `amountMicros` integer, required
        - `currency` string, required
        - `amountMinor` integer, required
        - `display` string, required
      - `customerDebit` Money: Hydracept price before transactional tax. ``amountMicros`` is authority.
        - `amountMicros` integer, required
        - `currency` string, required
        - `amountMinor` integer, required
        - `display` string, required
      - `chargedAt` string, date-time, nullable
    - `providerUsage` ReceiptProviderUsage
      - `reportedCost` Money: Hydracept price before transactional tax. ``amountMicros`` is authority.
        - `amountMicros` integer, required
        - `currency` string, required
        - `amountMinor` integer, required
        - `display` string, required
      - `costBearer` 'hydracept' | 'customer' | 'none' | 'unknown'
    - `providerCost` ReceiptProviderCost: Provider cost evidence. ``amount`` is null when unknown — never ``0``. ``basis``/``status`` explain how the amount was obtained; a usage-priced cost names the pinned ``priceScheduleId`` so a later catalog change cannot silently rewrite historical provider cost.
      - `amount` Money: Hydracept price before transactional tax. ``amountMicros`` is authority.
        - `amountMicros` integer, required
        - `currency` string, required
        - `amountMinor` integer, required
        - `display` string, required
      - `status` string
      - `basis` string
      - `priceScheduleId` string, nullable
    - `policy` ReceiptPricingPolicy
      - `serviceFeeBps` integer
      - `pricingMode` 'byok' | 'managed', required
    - `presentation` PresentationMoney: Optional converted display of a charge. Not part of the financial receipt.
      - `convertedTotal` Money, required: Hydracept price before transactional tax. ``amountMicros`` is authority.
        - `amountMicros` integer, required
        - `currency` string, required
        - `amountMinor` integer, required
        - `display` string, required
      - `fx` ScaledFxRate, required: FX snapshot using scaled integers — never IEEE binary floats.
        - `rateScaled` integer, required
        - `scale` integer
        - `baseCurrency` string, required
        - `quoteCurrency` string, required
        - `source` string, nullable
        - `asOf` string, nullable
    - `mode` 'byok' | 'managed'
    - `estimatedProviderPriceBasisMicros` integer, nullable
    - `observedUsage` object, nullable
    - `hydraceptInferenceFeeMicros` integer
    - `providerReportedCostMicros` integer, nullable
    - `customerCharge` CustomerCharge
      - `upstreamMicros` integer, required
      - `hydraceptFeeMicros` integer, required
      - `customerTotalMicros` integer, required
      - `currency` string
      - `lineItems` PricingLineItem[]
        - `label` string, required
        - `upstreamMicros` integer, required
        - `hydraceptFeeMicros` integer
        - `includedProcessing` boolean
    - `hydracept` HydraceptReceiptHydracept
      - `serviceFeeRateBps` integer
      - `inferenceFeeMicros` integer
    - `executionPlanId` string, nullable
    - `pricingSnapshotIds` string[]
    - `quoteId` string, nullable
    - `estimateId` string, nullable: Inbound/outbound alias of quoteId. Prefer quoteId and pricing.quote.
    - `pricingVersion` string, nullable
    - `pricingInputFingerprint` string, nullable
    - `resolvedRoute` object, nullable
    - `estimatedCharge` object, nullable
    - `maximumAuthorizedCharge` object, nullable
    - `actualCharge` object, nullable
    - `price` Money: Hydracept price before transactional tax. ``amountMicros`` is authority.
      - `amountMicros` integer, required
      - `currency` string, required
      - `amountMinor` integer, required
      - `display` string, required
    - `basisEstimated` object, nullable
    - `basisActual` object, nullable
    - `fundingSource` string, nullable
    - `trialCoveredMicros` integer, nullable
    - `customerDebitedMicros` integer, nullable
    - `actualChargeMicros` integer, nullable
  - `resolved` ResolvedRoute
    - `billingMode` string, required
    - `provider` string, nullable
    - `model` string, nullable
    - `routeKey` string, nullable
    - `vendor` string, nullable
    - `vendorModel` string, nullable
  - `basis` object
  - `expectedCharge` Money: Hydracept price before transactional tax. ``amountMicros`` is authority.
    - `amountMicros` integer, required
    - `currency` string, required
    - `amountMinor` integer, required
    - `display` string, required
  - `maximumAuthorizedCharge` Money: Hydracept price before transactional tax. ``amountMicros`` is authority.
    - `amountMicros` integer, required
    - `currency` string, required
    - `amountMinor` integer, required
    - `display` string, required
  - `expiresAt` string, date-time, nullable
  - `spending` 'none'

## Other responses

- `401`: Structured public error envelope (`code`, `message`, `requestId`, …)
- `402`: Structured public error envelope (`code`, `message`, `requestId`, …)
- `403`: Structured public error envelope (`code`, `message`, `requestId`, …)
- `422`: Validation failure: public envelope plus Pydantic `detail` / `validationErrors`
- `429`: Structured public error envelope (`code`, `message`, `requestId`, …)
- `500`: Structured public error envelope (`code`, `message`, `requestId`, …)
- `502`: Structured public error envelope (`code`, `message`, `requestId`, …)
- `503`: Structured public error envelope (`code`, `message`, `requestId`, …)

---

[API](https://skmtc.dev/hydracept/apis/hydracept-public-api.md) · [All operations](https://skmtc.dev/hydracept/apis/hydracept-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hydracept/apis/hydracept-public-api/revisions/2d41a8069ede?raw)
