Skip to main content
No key yet? Browse models and schemas at https://api.tryleap.ai/v1/public/models. It’s the same catalog as GET /v1/models, with no key needed: /v1/public/models/{creator}/{name} returns one model with its input_schema.

List the catalog

The list holds every model and preset at once, with no pagination. Filter it on your side by modality (image, video, audio, 3d or text) or by tasks, such as text-to-image, image-to-video or text-to-speech. Without a key, GET /v1/public/models returns the same list. Some entries carry more fields, which Leap’s own pages use and your code can ignore: added, the day the entry joined the catalog; cover and gallery, reviewed examples of what it makes, as links to pictures and, for video, clips; and guide, a preset’s pitch, its steps and the IDs a result can go to next.

Models and presets

A model’s ID is creator/name, such as google/veo-3.1-fast or elevenlabs/eleven-v3. A new version of a model gets a new name, so the model behind an ID doesn’t change under you. A preset is a ready-made recipe: a model with an expert prompt and a few typed inputs, such as leap/restore-photo@1 or leap/headshot@1. Its type is preset, and its ID ends in a version. A new version of a preset is published alongside the old one, and the bare ID without @N (leap/restore-photo) runs whichever version has latest: true. Pin the version in production; use the bare ID to always get the newest.

Read an input schema

The answer is the catalog entry plus input_schema, a JSON Schema (2020-12) of the input object the model takes. Trimmed, it looks like this:
The live schema has more on each field: a title, length limits such as minLength and maxLength on the prompt, and x-leap-ui hints. What the schema means for your request:
  • Required fields must be there. Fields you leave out take their default.
  • Unknown fields are refused: the schema sets additionalProperties: false, so a typo is a 400 that names the field in param.
  • An enum lists the only values a field takes. Some fields list their choices as oneOf instead, each a const to send and a title to show, such as color on leap/restore-photo@1, shown below.
  • A field that takes a photo, video or sound has the pattern ^file_[0-9A-Za-z]{24}$. Upload the file first and pass its ID.
  • x-leap-ui on a field is a hint for rendering a form, such as a widget or an order. You can ignore it.
Validate against the schema before you send, or hand it to an LLM as a tool’s input schema.

Lifecycle

A model’s status says where it is in its life: A retired model’s entry, GET /v1/models/{creator}/{name}, is that 410 too, so read the replacement from its message, which names it when there is one: {id} was retired on {sunset}. Use {replacement} instead.

Deprecation

While a model is deprecated, its deprecation says what happens next. It’s null for every other status. When you start a generation, get a quote or read a model that’s deprecated, the answer carries the same facts in headers. Log them, and you’ll see a sunset coming. revision is the date of the model’s current schema and price. A generation records the revision it ran on.

Prices

Each entry carries its pricing. Pricing and credits explains how to read it, and how to price any input before you run it.
Last modified on October 4, 2026