Models and prices
GET /v1/models/list returns the models available to your API key and their effective prices. GET /v1/models keeps the standard model-list format without prices.
Request and authentication
Use the same API key as for generation in Authorization: Bearer YOUR_API_KEY. No query parameters or request body are required. This example saves the response to models.json.
curl --fail-with-body -sS 'https://apixly.ai/v1/models/list' \
-H "Authorization: Bearer YOUR_API_KEY" \
-o models.jsonRead the response
The data array contains models; id is the exact API model identifier. currency is USD and pricing_scope is api_key. The optional jq command extracts the main text-token prices from the saved response.
jq '.data[] | {
id,
status: .pricing.status,
input_usd_per_million: .pricing.in_cost_per_million,
output_usd_per_million: .pricing.out_cost_per_million,
cache_read_usd_per_million: .pricing.cache_read_cost_per_million,
pricing_options
}' models.jsonPrice fields
All amounts already include your applicable user/group rate_multiplier; do not multiply them again. null means unknown or inapplicable, never free. context: null means no verified context limit is available.
| Field | USD billing unit |
|---|---|
| in_cost_per_million | 1 million uncached input tokens |
| out_cost_per_million | 1 million text output tokens |
| cache_read_cost_per_million | 1 million cache-read tokens |
| cache_write_cost_per_million | 1 million cache-write tokens |
| cache_write_1h_cost_per_million | 1 million one-hour cache-write tokens, when supported |
| image_output_cost_per_million | 1 million image output tokens |
| cost_per_million | 1 million provider video tokens in the applicable SKU |
| cost_per_image | image |
| cost_per_request | request |
| cost_per_second | billable video second |
Tariffs and routing
pricing is the first supporting group in your key’s binding order. pricing_options contains every supporting group’s price; lower priority values are preferred, starting at 0. Switching groups can change the applicable price.
Top-level token prices describe the short-context standard tier. Check pricing.tiers, service_tiers and rules for long context, priority/flex, image resolution or video SKUs. Token intervals use min_tokens < context <= max_tokens; max_tokens: null has no upper bound. Apply only supported request modes.
pricing.status describes price resolution: available, unavailable or depends_on_upstream_model. The last value means no fixed price can be promised before the upstream billing model is known.
Cached availability per pricing group
data[].pricing_options[].success_rate.percent belongs to that exact model and option’s group_id, group_name, priority and pricing. It is not a model-level combined rate; do not average options or substitute a whole-group rate.
The same cached 24 complete UTC hours cover all recorded final customer outcomes for this model × group, not this API key’s personal traffic or live health. Active cancellation and final 4xx are excluded; final 503 remains failed. Missing success_rate, percent: null, stale: true or no eligible samples mean unknown, not 100%.
GET /v1/models/list still uses the inference API key and performs its existing eligibility, catalog and pricing queries. Only attaching cached statistics adds no SQL. Effective USD prices and user/group multipliers are unchanged. /api/v1/channels/available instead uses anonymous access or a console login JWT; these credentials are not interchangeable.
jq '.data[] | .id as $model | .pricing_options[]? | {
model: $model,
group_id, group_name, priority, pricing,
success_rate_percent: .success_rate.percent,
success_rate_stale: .success_rate.stale,
success_rate_window_end: .success_rate.window_end
}' models.jsonErrors and freshness
401: missing or invalid key. 403: expired key, insufficient balance, invalid subscription or access-policy restriction. 429: exhausted key quota, subscription usage limit or rate limit. 503: catalog or pricing could not be loaded. This lookup does not generate content, but currently still checks balance, quota and subscription limits.
This is a current configuration/eligibility snapshot, not a guarantee of a later generation. Respect Cache-Control: private, no-store; do not share cached responses between keys.
GET /v1/models/list has directory-only rate protection. Fetch on demand; keep routine refreshes at least 60s apart. Default sustained token bucket refill rates are 6/min per API key and 30/min per user, with small bursts allowed; these are not hard caps for a fixed or sliding minute window. On 429, respect Retry-After and back off. This protection is independent of generation RPM, quota and billing. Honor private, no-store; never share cached responses across API keys.