OwnLLM Docs
API

GET /v1/models

List the models the calling API key is allowed to use, with their capabilities.

GET /v1/models
Authorization: Bearer sk-ownllm-...

Lists the models the calling key is allowed to call. The list is the intersection of:

  • Models installed on the paired GPU machine, and
  • The key's scopes.

Response

{
  "object": "list",
  "data": [
    {
      "id": "llama-3.3-70b",
      "object": "model",
      "created": 1714500000,
      "owned_by": "ownllm",
      "capabilities": {
        "completion": true,
        "vision": false,
        "embedding": false,
        "tools": true,
        "thinking": false
      },
      "context_window": 131072,
      "size_mb": 40000,
      "runtime_profile": "auto"
    },
    {
      "id": "qwen3.5:35b-a3b-coding-nvfp4",
      "object": "model",
      "created": 1714500200,
      "owned_by": "ownllm",
      "capabilities": {
        "completion": true,
        "vision": false,
        "embedding": false,
        "tools": true,
        "thinking": true
      },
      "context_window": 131072,
      "size_mb": 18000,
      "runtime_profile": "apple-mlx",
      "apple_mlx": true
    }
  ]
}

Fields beyond OpenAI

OwnLLM extends the OpenAI shape with a few non-breaking fields:

  • capabilities — what the model supports. Maps directly to the Ollama /api/show flags. A model without tools: true returns model_does_not_support_tools if the request includes tools.
  • context_window — token budget per request.
  • size_mb — disk size, useful for clients that want to display it.
  • runtime_profileauto (any host) or apple-mlx (Apple Silicon only).
  • apple_mlxtrue if the model is running through MLX acceleration on the agent. Lets clients show a small "MLX" badge.

These extra fields are additive: clients that only know the OpenAI shape ignore them.

Errors

StatusCodeMeaning
401key_invalidThe key doesn't exist or has been revoked.
401key_expiredThe key's TTL has elapsed.
503agent_offlineThe paired GPU machine isn't reachable; we can't enumerate.

Common patterns

Match a model to a use case. Filter by capability:

const res = await fetch(`${baseUrl}/v1/models`, {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await res.json();
const toolModels = data.filter(m => m.capabilities.tools);

Show the "MLX" badge. Read apple_mlx directly:

{model.apple_mlx && <Badge>MLX</Badge>}

On this page