Skip to main content
Piramyd’s model catalog changes as new models are added and updated. Never hardcode a model ID in your application — always call GET /v1/models at runtime to discover what is available, inspect capabilities, and select the right model for your workload. This ensures your integration stays current without any code changes on your end.

GET /v1/models

Returns the full list of models available to your API key, each with complete metadata.
Example response

Response fields

string
required
The model identifier to use as the model parameter in inference requests. This is the canonical ID — use it exactly as returned.
string
Human-readable display name for the model. May differ from id.
string
Always "model" for entries in this list.
string
The organization that trained or owns the model (e.g. "anthropic", "openai").
string
The upstream provider Piramyd routes this model to. May differ from owned_by for multi-provider routing.
string
Model type. Currently "chat" for all inference models. System One models appear separately via GET /v1/systemone/models.
string
required
The subscription tier required to use this model. One of:
  • free — available on all plans including trial
  • pro — requires Solo ($30/mo) or higher
  • premium — requires Growth (50/mo)orScale(50/mo) or Scale (90/mo)
Check GET /v1/tiers for a full overview.
string[]
The API paths this model can be called on. Common values: "/v1/chat/completions", "/v1/responses", "/v1/messages". Only send a model to an endpoint listed here.
string[]
High-level capability tags such as "text", "vision", "tool_use". Mirrors the supports_* boolean fields.
string[]
The input types the model accepts: "text", "image", "audio", "video". Today’s catalog is primarily ["text"] or ["text", "image"].
string[]
The output types the model produces. Currently ["text"] for all chat models.
integer
Maximum number of input tokens the model accepts in a single request. Keep your prompt plus conversation history within this limit. Aliased as context_window — both fields are present and equal.
integer
Alias for context_length. Both fields are returned and always equal.
integer
Maximum tokens the model can generate in a single response. Use this to set a sensible upper bound for your max_tokens parameter. Aliased as max_completion_tokens.
integer
Alias for max_output_tokens, matching the OpenAI newer request parameter naming. Both fields are returned and always equal.
boolean
true if the model supports OpenAI-style function/tool calling. Always check this before sending tools in a request.
boolean
true if the model accepts image inputs via image_url content blocks. Note: this means the model can read images, not generate them.
boolean
true if the model supports extended chain-of-thought reasoning (e.g. thinking tokens).
string
A short human-readable description of the model’s strengths and intended use.
string
Controls whether the model appears in catalog listings. "list" means it appears in GET /v1/models responses.

GET /v1/models/{model_id}

Fetch metadata for a single model by its ID. Useful for validating a model ID your application has stored or received from user input.
Returns the same object shape as a single entry in the data array above. The same normalization rules apply (see below).

Model ID Normalization

Piramyd accepts several ID formats for the same model. All of the following resolve to the same model: Use the canonical id from GET /v1/models in production — normalization is provided for convenience, not as a primary interface.

GET /v1/tiers

Returns an overview of which model tiers are available for your current subscription plan. Use this to understand which tier values (free, pro, premium) you can access before iterating the full model list.

GET /v1/capabilities

Returns an API-level compatibility matrix for your integration. Use this to confirm which features are supported before relying on them in your application.
Example response
Note that moderations is false — the /v1/moderations endpoint is present for SDK compatibility but returns 501 not_implemented and should not be used for safety filtering.

Filtering Models Dynamically

Do not hardcode model IDs in your application. Model IDs, availability, and capabilities change as the catalog evolves. Applications that hardcode IDs will break silently when a model is updated or removed.
Always check supports_tools: true before including a tools array in your request. Sending tool definitions to a model that does not support them will return a 400 error.
The following example discovers all tool-capable models at runtime and selects one dynamically: