# List model endpoints

> List every eligible provider endpoint that serves one model, with its prices, limits and capabilities.

`GET https://api.numes.ai/api/v1/models/{author}/{slug}/endpoints`

Source: https://0.0.0.0:3000/docs/api-reference/models/list-model-endpoints
Authorization: Bearer inference key

Each endpoint's `tag` is the selector for `provider.order`, `provider.only` and `provider.ignore`. Prices are exact per-unit rates in your key's currency. An unknown model, or one you can't access, returns `404`. Guide: [Provider routing](/docs/routing/provider-routing).

The list comes from the same published catalogue as [List models](/docs/api-reference/models/list-models); the `X-Catalogue-*` headers report when it was published and whether it's stale. If no recent catalogue is available, the response is `503 catalogue_unavailable`.

```request
{
  "method": "GET",
  "path": "/models/openai/gpt-6-luna/endpoints"
}
```

```json title="Response 200"
{
  "data": {
    "id": "openai/gpt-6-luna",
    "name": "Example Model",
    "created": 1790000000,
    "description": "A compact general-purpose model.",
    "architecture": {
      "modality": "text->text",
      "input_modalities": ["text"],
      "output_modalities": ["text"],
      "tokenizer": "GPT"
    },
    "endpoints": [
      {
        "name": "Example Provider: Primary",
        "provider_name": "Example Provider",
        "tag": "example-provider/primary",
        "context_length": 131072,
        "max_prompt_tokens": 131072,
        "max_completion_tokens": 16384,
        "billing_currency": "USD",
          "pricing": {
          "prompt": "0.0000001",
          "completion": "0.0000004",
          "request": "0",
          "image": "0",
          "audio": "0"
        },
        "supported_parameters": ["max_tokens", "temperature", "tools", "tool_choice"],
        "input_modalities": ["text"],
        "output_modalities": ["text"],
        "quantization": "fp8"
      }
    ]
  }
}
```

## Headers

- `X-Request-Id` (string; Length 1–128): Correlation ID, not an idempotency key. Inference request IDs recorded with a generation are unique per account. A traffic-admitted request reusing a recorded ID returns 400 invalid_request. Traffic admission rejection takes precedence over this conflict, including for reused IDs; it performs no generation lookup and writes no generation, result or attempt. Rate-limit rejection returns 429 rate_limited with Retry-After; an inference limiter outage retains 500 server.

## Path parameters

- `author` (string; required; Pattern ^[a-z0-9][a-z0-9._-]*$)
- `slug` (string; required; Pattern ^[A-Za-z0-9][A-Za-z0-9._:-]*$)

## Response 200 (application/json)

- `data` (object; required)
  - `id` (string; required)
  - `name` (string; required)
  - `created` (integer<int64>; required)
  - `description` (string; required; Length ≤ 32,768)
  - `architecture` (object; required)
    - `modality` (string; required)
    - `input_modalities` (array<enum<string>>; required; one of text, image, file, audio)
    - `output_modalities` (array<enum<string>>; required; one of text, image, audio, embeddings)
    - `tokenizer` (string; required)
    - `instruct_type` (string | null)
  - `endpoints` (array<object>; required)
    - `tag` (string)
    - `max_completion_tokens` (integer | null; Range ≥ 1)
    - `max_prompt_tokens` (integer; Range ≥ 1)
    - `reasoning` (object)
      - `default_effort` (string | null)
      - `default_enabled` (boolean)
      - `mandatory` (boolean)
      - `supports_max_tokens` (boolean)
      - `supported_efforts` (array<enum<string>>; one of none, minimal, low, medium, high, xhigh, max)
    - `billing_currency` (enum<string>; one of USD, BTC)
    - `usage_meter` (string)
    - `name` (string; required)
    - `provider_name` (string; required)
    - `context_length` (integer; required)
    - `pricing` (object; required): Exact per-unit prices in the inference key's immutable billing currency. For BTC keys, values are Bitcoin base units (1 is one satoshi), token prices have up to thirty decimal places, and clients may display them with BIP177 notation such as ₿123/M.

      - `pricing_basis` (enum<string>; one of fixed, usd_indexed)
      - `reference` (object)
        - `id` (string<uuid>; required)
        - `policy` (string; required)
        - `usd_per_btc` (string; required)
        - `observed_at` (string<date-time>; required)
        - `expires_at` (string<date-time>; required)
      - `usd_rates` (map<string, string>): USD anchor rates for the same displayed price categories; present only for USD-indexed Bitcoin schedules.
      - `input_cache_read` (string; Pattern ^[0-9]+(\.[0-9]+)?$)
      - `input_cache_write` (string; Pattern ^[0-9]+(\.[0-9]+)?$)
      - `prompt` (string; required; Pattern ^-?[0-9]+(\.[0-9]+)?$)
      - `completion` (string; required; Pattern ^-?[0-9]+(\.[0-9]+)?$)
      - `request` (string; required; Pattern ^-?[0-9]+(\.[0-9]+)?$)
      - `image` (string; required; Pattern ^-?[0-9]+(\.[0-9]+)?$)
      - `audio` (string; required; Pattern ^-?[0-9]+(\.[0-9]+)?$)
    - `supported_parameters` (array<string>; required)
    - `input_modalities` (array<enum<string>>; one of text, image, file, audio)
    - `output_modalities` (array<enum<string>>; one of text, image, audio, embeddings)
    - `maximum_output_length` (integer | null; Range ≥ 1)
    - `embeddings` (boolean; default false)
    - `supported_hosted_tools` (array<enum<string>>; one of openrouter.web_search@1, openrouter.web_fetch@1, openrouter.datetime@1, openrouter.image_generation@1, openrouter.apply_patch@1, openrouter.fusion@1, openrouter.advisor@1, openrouter.subagent@1, openai.web_search@1, openai.file_search@1, openai.code_interpreter@1, openai.image_generation@1, openai.shell@1, openai.mcp@1, openai.connectors@1, openai.tool_search@1, openai.skills@1, anthropic.web_search@1, anthropic.web_fetch@1, anthropic.code_execution@1, anthropic.advisor@1, anthropic.tool_search@1, anthropic.mcp@1, google.search@1, google.maps@1, google.url_context@1, google.file_search@1, google.code_execution@1)
    - `quantization` (string | null)
    - `uptime_last_30m` (number | null)

## Response 404 (application/json)

- `error` (object; required)
  - `code` (integer; required)
  - `message` (string; required)
  - `metadata` (object)
- `openrouter_metadata` (object)

## Response default (application/json)

- `error` (object; required)
  - `code` (integer; required)
  - `message` (string; required)
  - `metadata` (object)
- `openrouter_metadata` (object)
