Documentation

Models

GET /v1/models returns the currently available model catalog. No authentication is required.

What the response includes

Identity & access

  • id — Model identifier used in API requests
  • owned_by — Provider name (e.g. openai, anthropic, google)
  • endpoint — Which API endpoint this model works with
  • token_multiplier — How many tokens count against your daily limit per actual token
  • premium — Whether this model requires a paid plan
  • required_plan — Minimum plan tier needed (if premium)

Capability metadata (pulled from the model's upstream catalog so clients can configure limits dynamically)

  • context_window — Maximum input context in tokens (integer | null)
  • max_output_tokens — Maximum tokens the model can generate per response (integer | null)
  • supports_vision, supports_tools / supports_function_calling, supports_reasoning, supports_json_mode, supports_audio_input, supports_image_output, supports_streaming — capability flags (boolean | null)
  • input_modalities, output_modalitiesarray<string> | null (e.g. ["text", "image"])
  • modality — raw upstream modality string (e.g. "text+image->text") or null
  • tokenizer — tokenizer name when known, otherwise null
  • description — short model description from the upstream catalog, or null
  • pricing{ prompt, completion, image, request } per-token price strings (any field may be null), or null overall
  • metadata_source — which upstream provided the metadata: "openrouter", "poe", or null
  • metadata_status"known" when capability metadata was resolved, "unknown" otherwise

> Unknown values are always returned as null (never 0). Treat null as "unknown" rather than as a real limit — for example, do not interpret "max_output_tokens": null as "this model can output 0 tokens".

Code examples

1curl https://api.navy/v1/models

Why it matters

  • Populate model selectors dynamically
  • Hide plan-locked models for the wrong tier
  • Show endpoint compatibility before a request is sent