vlm.fyi Get the data
API

Use the data

The dataset is free to use under CC BY 4.0. Fetch it at build time or at startup and size your requests to fit.

Endpoints

All endpoints are static files with CORS enabled. The schema is versioned; breaking changes get a new /v2 path.

Shape

Each entry is one model on one provider. Each limit has a status:

Bytes are in bytes; counts are counts. An excerpt:

{
  "id": "fireworks/kimi-k3",
  "provider": {
    "id": "fireworks",
    "name": "Fireworks",
    "via": null
  },
  "model": {
    "id": "moonshotai/kimi-k3",
    "name": "Kimi K3",
    "vendor": "MoonshotAI",
    "api_id": "accounts/fireworks/models/kimi-k3",
    "input_modalities": [
      "text",
      "image",
      "video"
    ]
  },
  "measured_at": "2026-10-31",
  "limits": {
    "images_per_request": {
      "status": "measured",
      "value": 120,
      "fails_at": 121,
      "failure": "image_count",
      "stated": 120,
      "evidence": "Too many images were provided, we currently limit the number of images per conversation to 120"
    },
    "video_file_bytes": {
      "status": "measured",
      "value": 96000000,
      "fails_at": 128000000,
      "failure": "other",
      "evidence": "Video <url> download size exceeded maximum size limit of 100.0 MB"
    }
  },
  "accepts": {
    "image_inline": true,
    "image_url": true,
    "video": "yes",
    "request_fields": {
      "stream_options": true,
      "usage": false,
      "reasoning": false,
      "response_format": true,
      "tools": true
    }
  },
  "behaviour": {
    "strict_tool_message_order": false
  },
  "notes": [
    "Fireworks counts every image in the messages array (\"per conversation\"), not per message."
  ],
  "featured": true
}

Example: fit frames to a provider

const data = await fetch("https://vlm.fyi/v1/capabilities.json").then((r) => r.json());
const entry = data.entries.find((e) => e.id === "fireworks/kimi-k3");
const cap = entry.limits.frames_768x432;
// Leave headroom: limits change, and other messages use context too.
const maxFrames = Math.floor((cap.value ?? 0) * 0.85);