THROUGHPUTS

Models

GET /v1/models — list every model your key can access.

GET /v1/models returns every model your key can route to. Use it to populate model pickers, validate user input, or sync your catalog cache.

List all models

curl https://api.throughputs.dev/v1/models \
  -H "Authorization: Bearer $THROUGHPUTS_API_KEY"
type Model = {
  id: string;                          // slug, used in `model` field of requests
  name: string;
  provider: {
    id: string;
    name: string;
    slug: string;
  };
  modality: Array<"text" | "image" | "audio" | "embedding" | "code" | "multimodal">;
  capabilities: Array<"streaming" | "function-calling" | "vision" | "json-mode" | "tool-use" | "fine-tuning">;
  contextWindow: number;
  parameters: string | null;           // e.g. "175B"
  pricing: {
    inputPerMillion: number;
    outputPerMillion: number;
    imagePerUnit: number | null;
    unitLabel: string | null;
    free: boolean;
  };
  latencyMs: { p50: number; p95: number } | null;
  throughputTokensPerSecond: number | null;
  qualityScore: number | null;         // 0–10
  popularityRank: number | null;        // 1 = most popular
  status: "active" | "beta" | "deprecated";
};

type ListResponse = {
  object: "list";
  data: Model[];
};

Get a single model

curl https://api.throughputs.dev/v1/models/gpt-4o \
  -H "Authorization: Bearer $THROUGHPUTS_API_KEY"

Returns a single Model object.

Filter on the client

The API doesn't filter — it returns everything. Filter client-side for model pickers:

const response = await fetch("https://api.throughputs.dev/v1/models", {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const { data } = await response.json();

const chatModels = data.filter((m) => m.modality.includes("text"));
const visionModels = data.filter((m) => m.capabilities.includes("vision"));
const cheapModels = data
  .filter((m) => m.pricing.inputPerMillion < 1)
  .sort((a, b) => a.pricing.inputPerMillion - b.pricing.inputPerMillion);

Status lifecycle

  • active — production-ready, default for all routing decisions.
  • beta — preview, may change or be withdrawn. Usable but not for SLA-covered workloads.
  • deprecated — will be removed. Stop using it; the X-Throughputs-Deprecation header on any response served by a deprecated model includes the sunset date.

On this page