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

> ## Agent Instructions
> Authenticate every request with your API key in the `X-API-Key` header or `Authorization: Bearer`. Keys start with `sk-nunchux-`.
> Image generation is synchronous: the image is in the response.
> Video generation is asynchronous: submit the job, poll its task until it reaches a terminal status, then download the output promptly, because output URLs expire.

# Overview

> Third-party models served through your Nunchux key. Each provider keeps its own routes, request shapes and job lifecycle.

# Partner models

Partner models are third-party models that you call with your Nunchux API key. Each provider has its own route family on `api.nunchux.ai`. The request and response shapes follow the provider's own API. Code written against the provider works after you change the base URL and the key.

One key and one credit balance cover every provider. You do not need an account with the provider.

Partner models do not use the Nunchux performance tiers. Each model is priced on its own terms. See the model page.

## Models

| Model | Provider | Modality | Tasks | Request type |
| - | - | - | - | - |
| [Nano Banana 2, Nano Banana 2.1, Nano Banana Pro](/partner-models/nano-banana) | Google | Image | Text-to-image, image-to-image | Synchronous |
| [Veo 3.1, Veo 3.1 Fast, Veo 3.1 Lite](/partner-models/veo) | Google | Video | Text-to-video, image-to-video | Asynchronous |
| [Kling V3, Kling V3 Omni](/partner-models/kling) | Kling AI | Video | Text-to-video, image-to-video, omni video, motion control | Asynchronous |
| [Wan 3.0, Wan 3.0 Prime, Wan 2.7](/partner-models/wan) | Alibaba Cloud | Video | Text-to-video, image-to-video, reference-to-video | Asynchronous |
| [HappyHorse 1.1, HappyHorse 1.0](/partner-models/happyhorse) | Alibaba Cloud | Video | Text-to-video, image-to-video, reference-to-video | Asynchronous |
| [Seedance 2.5](/partner-models/seedance) | ByteDance | Video | Text-to-video, image-to-video | Asynchronous |
| [MiniMax H3](/partner-models/minimax) | MiniMax | Video | Text-to-video, image-to-video, reference-to-video | Asynchronous |
| [Avatar 4 Photo, Avatar 5 Digital](/partner-models/heygen) | HeyGen | Avatar video | Talking avatar from a photo or a HeyGen avatar | Asynchronous |

Each model page lists the model IDs to send.

## Choosing a model

Text-to-video. Veo 3.1, Seedance 2.5 and HappyHorse generate a soundtrack with the picture. Wan 3.0 holds one shot for up to 30 seconds. Kling V3 and MiniMax H3 cover the same task.

Image-to-video. Every video family animates a starting image. Wan 2.7 also takes a driving audio track. Wan 3.0 and Wan 2.7 take an optional end frame.

Reference-to-video. Wan, HappyHorse and MiniMax H3 carry a subject from reference images into new footage. Wan 3.0 takes up to 10 reference images.

Multi-reference and storyboard. Kling V3 Omni composes one clip from reference images, videos and elements, or a multi-shot sequence.

Motion transfer. Kling V3 motion control drives a still character with the motion of a reference video.

Talking avatar. HeyGen turns a photo or a HeyGen avatar into a lip-synced video, driven by audio or by a script in a chosen voice.

Image generation and editing. Nano Banana generates and edits images in one synchronous call.

## Endpoints

Each family has one submit route. The asynchronous families also have one poll route.

| Family | Submit | Poll |
| - | - | - |
| [Nano Banana](/partner-models/nano-banana) | `POST /v1/google/v1beta/interactions` | None. The image is in the response. |
| [Veo](/partner-models/veo) | `POST /v1/google/v1beta/models/{model}:predictLongRunning` | `GET /v1/google/v1beta/operations/{handle}` |
| [Kling](/partner-models/kling) | `POST /v1/klingai/videos/{capability}` | `GET /v1/klingai/videos/{capability}/{task_id}` |
| [Wan](/partner-models/wan), [HappyHorse](/partner-models/happyhorse) | `POST /v1/alibaba/services/aigc/video-generation/video-synthesis` | `GET /v1/alibaba/tasks/{task_id}` |
| [Seedance](/partner-models/seedance) | `POST /v1/bytedance/contents/generations/tasks` | `GET /v1/bytedance/contents/generations/tasks/{task_id}` |
| [MiniMax](/partner-models/minimax) | `POST /v1/minimax/v2/video_generation` | `GET /v1/minimax/v2/query/video_generation/{task_id}` |
| [HeyGen](/partner-models/heygen) | `POST /v1/heygen/v3/videos` | `GET /v1/heygen/v3/videos/{video_id}` |

Kling's `{capability}` is one of `text2video`, `image2video`, `omni-video` and `motion-control`. Poll the same capability that you submitted to.

## How a request works

Nano Banana is synchronous. Send one POST and read the image from the response.

Every video family is asynchronous. A request has three steps.

1. Submit. Send a POST to the submit route with your API key in the `X-API-Key` header. The response contains a task identifier. A 200 status means that the provider accepted the job. It does not mean that the job is complete.
2. Poll. Send a GET to the poll route with the task identifier. Repeat until the status is terminal. Wait a few seconds between polls. Each provider uses its own status field and its own values.
3. Download. When the status is the success value, the poll response contains the URL of the output. Output URLs expire, some within an hour. Download the output as soon as the job succeeds.

| Family | Status field | Success | Failure |
| - | - | - | - |
| Veo | `done` | `true`, with `response` | `true`, with `error` |
| Kling | `task_status` | `succeed` | `failed` |
| Wan, HappyHorse | `output.task_status` | `SUCCEEDED` | `FAILED`, `CANCELED` |
| Seedance | `status` | `succeeded` | `failed`, `cancelled`, `expired` |
| MiniMax | `task.status` | `succeeded` | `failed`, `cancelled` |
| HeyGen | `data.status` | `completed` | `failed` |

Any other value means that the job is still running. Keep polling. Each model page shows a full submit, poll and download example.

## Billing

Each partner model is priced on its own terms, such as resolution, duration or mode. The rates are on the model page and on the [pricing page](https://nunchux.ai/pricing).

Nunchux deducts the credits when it accepts a job. When the job fails, Nunchux refunds the credits. See [Credits & pricing](/credits-pricing).

## Errors and limits

A failed submit returns an HTTP error status. See [Error codes](/errors).

A failed job does not return an HTTP error. The submit returns 200, and the failure appears later as the failure status in the poll response. The poll response also carries a message that explains the failure. Read it before you resubmit.

When the provider cannot read an input that you referenced, such as an image URL that is not publicly reachable, the submit can return 200 with a provider error code in the body. The submit was billed. Correct the input, then submit again.

Every job counts toward the simultaneous-jobs cap of your plan. See [Rate limits](/rate-limits).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.