AI GridDocs
Sign Up

Models

List what your key can actually call — your project's set, not the whole catalogue.

Updated Sep 9, 2026
GET/v1/models
bash
curl https://api.aigridapp.com/v1/models \
  -H "Authorization: Bearer $AIGRID_API_KEY"

What it returns#

json
{
  "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:

  • tokensprompt and completion as USD per token, plus the friendlier input_usd_per_1m / output_usd_per_1m.
  • requestrequest as USD per successful call, plus usd_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:

json
{
  "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#