---
title: "Resolve a batch of model names to canonical prices and priceSource"
method: GET
path: "/v1/oracle/resolve"
tags: ["Oracle Public"]
---

# Resolve a batch of model names to canonical prices and priceSource

`GET /v1/oracle/resolve`

## Request

- Base URL: `https://api.compute.finance`
- URL: `https://api.compute.finance/v1/oracle/resolve`
- Auth: none declared

Matches each comma-separated key the way /resolve/:key does, preserving input order. Every key is isolated: anything unresolvable — an unknown model or an unknown vendor — returns priceSource='off-basket' with null prices rather than failing the batch. Batch size capped at 100; URL-length safe in practice.

## Response `200`

- ResolveBatchResponseDto
  - `results` object[], required
    - `inputKey` string, required
    - `resolvedKey` string, required
    - `family` string, nullable, required
    - `provider` object, nullable, required
      - `key` string, required
      - `name` string, required
    - `prices` object, nullable, required
      - `inputUsdPerMillion` number, required
      - `outputUsdPerMillion` number, required
      - `provenance` object, required
        - `input` 'verified' | 'inferred' | 'promotional', required: How far this number has been checked. 'verified' — an operator recorded a vendor source for this number; 'inferred' — derived from a sibling number or a vendor default, with no source recorded; 'promotional' — a discounted list price that bills exactly as shown and is expected to end. Every value bills as shown; the mark says how much to trust it, not what it costs. Marks are set by hand and hold as of the operator's last pass, not as a live check against the vendor: a number that went on promotion and has not been re-marked still reads as it was.
        - `output` 'verified' | 'inferred' | 'promotional', required: How far this number has been checked. 'verified' — an operator recorded a vendor source for this number; 'inferred' — derived from a sibling number or a vendor default, with no source recorded; 'promotional' — a discounted list price that bills exactly as shown and is expected to end. Every value bills as shown; the mark says how much to trust it, not what it costs. Marks are set by hand and hold as of the operator's last pass, not as a live check against the vendor: a number that went on promotion and has not been re-marked still reads as it was.
    - `cache` object, nullable, required
      - `cachedInput` object, nullable, required
        - `usdPerMillion` number, nullable, required
        - `ratioOfInput` number, nullable, required
        - `source` string, required
        - `sourceUrl` string, nullable, required
        - `provenance` 'verified' | 'inferred' | 'promotional', required: How far this number has been checked. 'verified' — an operator recorded a vendor source for this number; 'inferred' — derived from a sibling number or a vendor default, with no source recorded; 'promotional' — a discounted list price that bills exactly as shown and is expected to end. Every value bills as shown; the mark says how much to trust it, not what it costs. Marks are set by hand and hold as of the operator's last pass, not as a live check against the vendor: a number that went on promotion and has not been re-marked still reads as it was.
        - `createdAt` string, nullable, required
      - `cacheWrite5m` object, nullable, required
        - `usdPerMillion` number, nullable, required
        - `ratioOfInput` number, nullable, required
        - `source` string, required
        - `sourceUrl` string, nullable, required
        - `provenance` 'verified' | 'inferred' | 'promotional', required: How far this number has been checked. 'verified' — an operator recorded a vendor source for this number; 'inferred' — derived from a sibling number or a vendor default, with no source recorded; 'promotional' — a discounted list price that bills exactly as shown and is expected to end. Every value bills as shown; the mark says how much to trust it, not what it costs. Marks are set by hand and hold as of the operator's last pass, not as a live check against the vendor: a number that went on promotion and has not been re-marked still reads as it was.
        - `createdAt` string, nullable, required
      - `cacheWrite1h` object, nullable, required
        - `usdPerMillion` number, nullable, required
        - `ratioOfInput` number, nullable, required
        - `source` string, required
        - `sourceUrl` string, nullable, required
        - `provenance` 'verified' | 'inferred' | 'promotional', required: How far this number has been checked. 'verified' — an operator recorded a vendor source for this number; 'inferred' — derived from a sibling number or a vendor default, with no source recorded; 'promotional' — a discounted list price that bills exactly as shown and is expected to end. Every value bills as shown; the mark says how much to trust it, not what it costs. Marks are set by hand and hold as of the operator's last pass, not as a live check against the vendor: a number that went on promotion and has not been re-marked still reads as it was.
        - `createdAt` string, nullable, required
      - `read_multiplier` number, nullable, required
      - `write_multiplier_5m` number, nullable, required
      - `write_multiplier_1h` number, nullable, required
    - `reasoning` object, nullable, required
      - `reasoningOutput` object, nullable, required
        - `usdPerMillion` number, nullable, required
        - `ratioOfInput` number, nullable, required
        - `source` string, required
        - `sourceUrl` string, nullable, required
        - `provenance` 'verified' | 'inferred' | 'promotional', required: How far this number has been checked. 'verified' — an operator recorded a vendor source for this number; 'inferred' — derived from a sibling number or a vendor default, with no source recorded; 'promotional' — a discounted list price that bills exactly as shown and is expected to end. Every value bills as shown; the mark says how much to trust it, not what it costs. Marks are set by hand and hold as of the operator's last pass, not as a live check against the vendor: a number that went on promotion and has not been re-marked still reads as it was.
        - `createdAt` string, nullable, required
    - `inBasket` boolean, required
    - `priceSource` 'oracle-basket' | 'oracle-catalog' | 'off-basket', required

## Other responses

- `422`: `validation_failed` — The request failed validation. A schema failure lists every issue in `error.issues[]`; a single-field failure names that field in `error.param`.
- `429`: `rate_limited` — A rate or concurrency limit this request falls under was reached.
- `503`: `service_unavailable` — A dependency, a setting or the capacity this request needs is unavailable.

---

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