Full normalized list, one entry per (provider, model). Each entry has a canonicalId you can use to join across providers.
Array<{
canonicalId: string,
provider: "bedrock" | "vertex" | "openrouter",
providerModelId: string,
displayName: string,
family: string,
publisher?: string,
modality?: string[],
contextWindow?: number,
pricingStatus: "known" | "unknown",
pricingInputPer1M?: number,
pricingOutputPer1M?: number,
pricingCurrency?: "USD",
available: boolean,
region?: string,
firstSeenAt: string,
lastSeenAt: string
}>Same data, pre-grouped by provider. Faster than filtering models.json yourself.
{
bedrock: Model[],
vertex: Model[],
openrouter: Model[]
}Pre-grouped by detected family (claude, gemini, qwen, deepseek, kimi, …). Use the family key "other" for long-tail models that don't match a known family.
{
claude: Model[],
gemini: Model[],
qwen: Model[],
/* … */
}Models added or removed between the previous run and the current one. Empty arrays on first run; populated thereafter.
{
since: string, // ISO timestamp of the prior run
added: Entry[],
removed: Entry[],
newFamilies: string[]
}Collection metadata.
{
lastRun: string, // ISO timestamp
counts: { bedrock, vertex, openrouter, total },
schemaVersion: "1"
}