list_models_full
Returns every model in OpenRouter's text, image and video catalogs (about 520 rows) in one call, each with its per-provider endpoints. Round trips: three catalog requests, one bulk provider-endpoint request covering all models, plus one request per image model (about 50) to read image price rows; a call takes roughly 15-25 seconds. Each row has id (same value as model_id used by get_model_endpoints), name, modality (which catalog it came from: text, image or video), catalogs, architecture_modality (text models only), created, context_length (text models; null for image/video), pricing (USD per token, numbers; for image models the token prices of its first provider; empty object for video models), pricing_skus (rows of {dims, unit, price_usd, provider_name}: for video models the catalog's SKU labels with price_usd in USD per unit, cents_* SKUs converted from cents; for image models the provider price rows from the image endpoint route; empty for text models), supported_parameters, input/output modalities, and endpoints (array; each has provider_name, provider_display_name, endpoint_name, variant (standard/batch/free), pricing_usd_per_token incl. discount, discount, pricing_skus from the provider's displayed price rows (unit is the provider's unit label, e.g. M tokens, second, image), quantization, context_length, max_completion_tokens, max_prompt_tokens, supported_parameters, is_free, status). Router models (openrouter/*) and ~alias models have no provider endpoints and return an empty endpoints array; a few image models publish no price rows and return empty pricing_skus. All numbers come from the site's JSON, never from prose. fetched_at is the UTC time of the call, total is the row count, counts is per-catalog, and errors lists every per-model or per-catalog fetch that failed (catalog, model_id, stage, status_code, message) so no model is silently dropped; endpoints is null on a row only when the bulk endpoint request itself failed (recorded in errors). No input parameters.