/v1/modelscurl https://api.aigridapp.com/v1/models \
-H "Authorization: Bearer $AIGRID_API_KEY"What it returns#
{
"object": "list",
"data": [
{
"id": "openai/gpt-oss-20b",
"object": "model",
"created": 1754870400,
"name": "GPT OSS 20B",
"description": "…",
"owned_by": "AI Grid",
"modality": "text->text",
"context_length": 128000,
"max_output_tokens": 8192,
"architecture": { "modality": "text->text", "input_modalities": ["text"], "output_modalities": ["text"] },
"top_provider": { "context_length": 128000, "max_completion_tokens": 8192, "is_moderated": false },
"supported_parameters": ["max_tokens", "temperature", "top_p", "stop", "seed", "tools", "tool_choice", "response_format", "stream"],
"pricing": {
"unit": "tokens",
"prompt": "0.00000005",
"completion": "0.00000025",
"input_usd_per_1m": 0.05,
"output_usd_per_1m": 0.25
}
}
]
}Each entry carries id, object, created, name, description, owned_by,
modality, context_length, max_output_tokens, architecture,
top_provider, supported_parameters and pricing.
Pricing has two shapes, distinguished by unit:
tokens—promptandcompletionas USD per token, plus the friendlierinput_usd_per_1m/output_usd_per_1m.request—requestas USD per successful call, plususd_per_request.
Wholesale (provider-side) rates are never included.
It is scoped to your project#
This is the important difference from a catalogue listing. /v1/models derives
the project from the key and returns only what that key can call right now:
- published products assigned to the key's project (chat products only — media products keep their own interface), narrowed by the key's access policy;
- the project's own sandbox products that are active, have an activated revision, and whose contract is one text input and one text output.
It is never the organization-wide or global catalogue, and an empty data list
is a valid answer — it means the project has nothing callable assigned yet, not
that the API is broken. The remedy is an assignment by an administrator, not a
retry. See Catalogue and assignments.
Sandbox entries are marked so you can tell them apart:
{
"id": "sbx-…",
"owned_by": "<project name>",
"pricing": { "unit": "execution", "prompt": "0", "completion": "0", "request": "0" },
"aigrid": { "kind": "sandbox", "revision": 3, "invoke": "/v1/sandbox/sbx-…/invoke" }
}A sandbox is priced per execution: its governed dependency calls are charged to the project as they happen. See Sandbox products.
Model ids#
Use the id verbatim as the model field in
chat completions. Ids are stable.
The Grid reports the model, never the provider key or origin behind it — that is deliberate, so providers can change without your integration changing.
Next#
- Chat completions — calling one
- Catalogue and assignments — getting more assigned