---
title: "GET /models/{canonicalId}/providers"
method: GET
path: "/models/{canonicalId}/providers"
---

# GET /models/{canonicalId}/providers

`GET /models/{canonicalId}/providers`

## Request

- Base URL: `https://nano-gpt.com/api`
- URL: `https://nano-gpt.com/api/models/{canonicalId}/providers`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`

List available providers and pricing for a model that supports provider selection

## Path parameters

- `canonicalId` string, required

## Response `200`

Provider availability and pricing for the model

- ModelProvidersResponse
  - `canonicalId` string: Canonical model identifier
  - `displayName` string: Human-readable model name
  - `supportsProviderSelection` boolean: Whether the model supports provider selection
  - `defaultPrice` ProviderPricing
    - `inputPer1kTokens` number, required: Price per 1K input tokens in USD
    - `outputPer1kTokens` number, required: Price per 1K output tokens in USD
  - `providers` ModelProviderEntry[]: Available providers for the model
    - `provider` string, required: Provider identifier
    - `pricing` ProviderPricing, required
      - `inputPer1kTokens` number, required: Price per 1K input tokens in USD
      - `outputPer1kTokens` number, required: Price per 1K output tokens in USD
    - `available` boolean, required: Whether the provider is currently available
    - `maxInputTokens` integer: Context window on this provider, in tokens
    - `maxOutputTokens` integer: Largest output budget this provider accepts. Requests whose max_tokens, max_completion_tokens or max_output_tokens is larger skip this provider.
    - `quantization` string: Weight precision served by this provider
    - `tps` number: Recent average output speed, in tokens per second
    - `ttftMs` number: Recent average time to first token, in milliseconds
    - `features` object: What a request can use through this provider. A feature the model does not support is omitted.
      - `toolCalling` boolean
      - `structuredOutput` boolean
      - `imageInput` boolean
      - `promptCaching` boolean
      - `reasoningEfforts` string[]: Accepted reasoning_effort levels
      - `reasoningAlwaysOn` boolean: Thinking cannot be turned off on this provider
    - `uptime` object: Recent success rate of requests on this model through this provider. Client errors, cancellations and requests stopped before contacting the provider do not count as failures.
      - `uptimePct` number: Percentage of attempts that succeeded over the window; omitted when there were too few requests
      - `hourly` number[], required: One value per hour, oldest first: the percentage of attempts that succeeded, or null when the hour had too few requests
      - `windowHours` integer, required: Hours covered by hourly
      - `lastHourStart` string, date-time: Start of the newest hour in hourly
    - `verification` object: NanoGPT's own checks of what this provider serves, for the most-used models that can be pinned to at least three providers; omitted for models NanoGPT does not check.
      - `tokenizer` object, required: At random times NanoGPT sends every provider of the model the same text and compares the prompt token counts they report. A different count means a different tokenizer, usually a different model.
        - `status` 'passed' | 'failed' | 'rechecking' | 'unchecked', required: passed: the latest check matched. failed: two or more checks in a row did not match. rechecking: the latest check did not match and is being repeated. unchecked: no check with a result in the window.
        - `lastCheckedAt` string, date-time: Latest check with a result
        - `checks` integer, required: Checks with a result in the window
        - `matches` integer, required: How many of those checks matched
        - `windowDays` integer, required: Days covered by checks and matches
    - `distillationPolicy` DistillationPolicy: API-only policy metadata indicating whether model or provider-route outputs may be used for model training, fine-tuning, distillation, or similar model-improvement workflows under NanoGPT's recorded model-license and provider-terms rules.
      - `status` 'allowed' | 'disallowed' | 'unknown': Whether distillation is allowed under the current recorded rule set.
      - `label` string: Human-readable policy summary.
      - `basis` 'deepseek-api-terms' | 'permissive-open-weights' | 'provider-output-use-terms' | 'provider-output-use-restriction' | 'closed-provider-restriction' | 'provider-terms-unknown': Rule basis used to derive the policy status.
      - `sourceUrl` string, uri: License or provider terms URL used as the policy source, when recorded.
      - `note` string: Short explanation and caveats for the policy signal.

## Other responses

- `400`: Bad Request - Invalid model ID

## Changes

- **2026-11-03** `cc8b07d75689`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/nano-gpt/apis/nanogpt-api/changes/models/:canonicalId/providers/get.md)

---

[API](https://skmtc.dev/nano-gpt/apis/nanogpt-api.md) - [All operations](https://skmtc.dev/nano-gpt/apis/nanogpt-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nano-gpt/apis/nanogpt-api/revisions/cc8b07d75689?raw)
