> ## Documentation Index
> Fetch the complete documentation index at: https://docs.percify.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List Percify API models and their inputs

> GET /v1/models lists every Percify API model with its id, output type, credit cost, pricing type and input JSON Schema. No API key is needed.

`GET https://api.percify.io/v3/playground/v1/models` returns every model you can run through the Percify API, with the `id` to send to `/v1/run`, what it outputs, its credit cost and the JSON Schema of its inputs. `GET /v1/models/{id}` returns one model, plus a worked example when one is available. Neither call needs an API key.

On 16 September 2026 the catalog listed 130 models: 72 video, 41 image and 17 audio. The list changes as models are added, so read it from the API rather than hard-coding it.

## List all models

```bash theme={"system"}
curl -s https://api.percify.io/v3/playground/v1/models
```

## Get one model

<ParamField path="id" type="string" required>
  A model id from the list, for example `infinitetalk-fast`.
</ParamField>

```bash theme={"system"}
curl -s https://api.percify.io/v3/playground/v1/models/zonos2
```

An unknown id returns `404` with `Model not found. Available models: …`.

## Model fields

<ResponseField name="id" type="string">
  The value to send as `modelId`.
</ResponseField>

<ResponseField name="name" type="string">
  Display name, for example `Zonos 2`.
</ResponseField>

<ResponseField name="description" type="string">
  What the model does.
</ResponseField>

<ResponseField name="output_type" type="string">
  `image`, `video` or `audio`.
</ResponseField>

<ResponseField name="category" type="string">
  The catalog group the model is listed under.
</ResponseField>

<ResponseField name="credits" type="integer">
  The model's listed credit cost. When `pricing` is `null`, this is the price of every run.
</ResponseField>

<ResponseField name="pricing" type="object | null">
  Present when the price depends on the input. `type` is the billing method and `varies_by` names the inputs that change the price. See the table below.
</ResponseField>

<ResponseField name="cover_image" type="string | null">
  A preview image URL.
</ResponseField>

<ResponseField name="input_schema" type="object">
  JSON Schema for `input`: `required` fields, and for each property its `type`, `enum` options, `default` and a `description`.
</ResponseField>

<ResponseField name="example" type="object">
  Only on `GET /v1/models/{id}`, and only when an example exists: `output.type` and `output.url` of a real result, and sometimes the `input` that made it.
</ResponseField>

<ResponseField name="endpoints" type="object">
  The `run` and `poll` URLs for this model.
</ResponseField>

```json Example (trimmed) theme={"system"}
{
  "success": true,
  "data": {
    "id": "zonos2",
    "name": "Zonos 2",
    "output_type": "audio",
    "category": "audio",
    "credits": 2,
    "pricing": { "type": "per_period", "varies_by": ["_audioDurationSec"] },
    "input_schema": {
      "type": "object",
      "required": ["text", "audio"],
      "properties": {
        "text": { "type": "string", "description": "What the cloned voice should say" },
        "audio": { "type": "string", "format": "uri", "description": "Short.mp3/.wav sample of the voice to clone (public https URL)" },
        "clean_speaker_background": { "type": "boolean", "default": false }
      }
    },
    "endpoints": {
      "run": "POST https://api.percify.io/v3/playground/v1/run",
      "poll": "GET https://api.percify.io/v3/playground/v1/generations/{id}"
    }
  }
}
```

## Pricing types

| `pricing.type`             | How the run is priced                                                                                                                                  |
| -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `null` (no pricing object) | A flat `credits` per run.                                                                                                                              |
| `per_second`               | By the seconds of an input: the audio length (`_audioDurationSec`) for lip-sync, or a `duration` option for video. Some also multiply by `resolution`. |
| `per_period`               | By started periods of a length, such as the length of a voice sample, or scaled by an option such as `quality`.                                        |
| `per_character`            | By the length of the text input.                                                                                                                       |
| `matrix`                   | A price for each combination of two options, such as quality and size.                                                                                 |

`_audioDurationSec` is not an input you send. Percify measures the audio or video file you pass. For any model with a `pricing` object, [`POST /v1/estimate`](/api-reference/generations/estimate) gives the exact price.

## Models for common jobs

| Job                                         | Model ids                                             |
| ------------------------------------------- | ----------------------------------------------------- |
| Talking avatar video from a photo and audio | `infinitetalk-fast`, `infinitetalk`                   |
| Clone a voice and speak a script            | `zonos2`                                              |
| Text to speech with a preset voice          | `speech-02-hd`, `speech-02-turbo`, `chatterbox-turbo` |
| Images from a prompt                        | `gpt-image-2`, `flux-schnell`, `nano-banana-pro`      |

These ids were in the catalog on 16 September 2026. Check `GET /v1/models` for the current list.

## Other machine-readable formats

* OpenAPI 3.1: [api.percify.io/v3/playground/v1/openapi.json](https://api.percify.io/v3/playground/v1/openapi.json) describes `/v1/run` and `/v1/generations/{id}`, with each model's input schema under `components.schemas.Input_<modelId>`.
* Plain text for agents: [api.percify.io/v3/playground/v1/llms.txt](https://api.percify.io/v3/playground/v1/llms.txt) lists each model id, its output type and required inputs.

## Related

<CardGroup cols={2}>
  <Card title="Start a generation" href="/api-reference/generations/run">
    Send a model id and its inputs.
  </Card>

  <Card title="Estimate cost" href="/api-reference/generations/estimate">
    Exact credits for input-priced models.
  </Card>

  <Card title="Talking avatar video" href="/api-reference/avatars/overview">
    Chain an image, a voice and lip-sync.
  </Card>

  <Card title="Voice and speech" href="/api-reference/audio/overview">
    Voice cloning and text to speech models.
  </Card>
</CardGroup>
