Skip to main content
Every Router model is addressed by an ID of the form {provider}/{model}. Use the catalog to find that ID, then call POST /v2/models/{provider}/{model}.

Discover the catalog

List models with the same API key used for generation:
An abbreviated catalog response:
Use id in the invocation path. The billing object contains billing facts, not a price. Read policy-refusal billing before relying on it.

Pagination

  • When has_more is true, pass the returned next_cursor as cursor. Stop when has_more is false, even if an earlier page was shorter than requested.
  • Treat cursors as opaque. URL-encode the value, for example with cURL --get --data-urlencode "cursor=$NEXT_CURSOR"; do not calculate offsets or modify the cursor.
  • limit defaults to 20 and is capped at 100. Values above the cap are clamped; zero and negative values select the default. The response reports the limit actually used.
  • An invalid cursor returns 400 / invalid_input. It does not silently restart the list.
  • A cursor can remain valid across catalog updates, but traversal is not a snapshot: a model added before your current position may not appear in that walk.
503 / service_unavailable is temporary. Retry with backoff; do not treat it as an empty catalog. SDK run methods call the selected model directly.

Read one model

Fetch a catalog entry directly when you know the model ID:
The model detail endpoint avoids walking the entire catalog. Use the API reference for the complete entry fields.

Next

  • Schemas and results: read a model’s input and output schema before calling it.
  • All models: browse the catalog with a working request for each model.