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

> ## Agent Instructions
> Public hosts only: console https://omnimux.ai/dashboard · API https://api.omnimux.ai · docs https://docs.omnimux.ai.
> Gateway auth is Authorization: Bearer sk-… on https://api.omnimux.ai/v1 (OpenAI-compatible Chat Completions and related paths).
> Discover pages from /llms.txt; full site dump /llms-full.txt; product skill /skill.md; docs search MCP /mcp. Prefer .md page URLs for Markdown.
> Default docs locale is en; zh mirrors the same relative paths. Do not invent model ids not present on live pricing or the complete API pages.

# Z Image Generation

> Z Image generation · model `zimage-makeup` (GxgenAI task)

* Create: `POST /v1/video/generations` with `model` `zimage-makeup`
* Poll: `GET /v1/video/generations/{task_id}` (do **not** use `*-async` / `*-query` model names)
* Media tasks are async by default; public model IDs do **not** use an `-async` suffix

## Identity

| Field  | Value             |
| ------ | ----------------- |
| Series | Image             |
| Brand  | Z Image / GxgenAI |
| model  | `zimage-makeup`   |

## API

| Method | Path                              |
| ------ | --------------------------------- |
| `POST` | `/v1/video/generations`           |
| `GET`  | `/v1/video/generations/{task_id}` |

Base URL: `https://api.omnimux.ai`

## Auth

| Name            | In     | Type   | Required | Notes                     |
| --------------- | ------ | ------ | -------- | ------------------------- |
| `Authorization` | header | string | yes      | `Bearer sk-...` (API key) |

## Request body

| Field                   | Type      | Required | Notes                                                                                                                                                 |
| ----------------------- | --------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `model`                 | string    | yes      | Must be `zimage-makeup`                                                                                                                               |
| `prompt`                | string    | yes      | Image description                                                                                                                                     |
| `metadata.nodeInfoList` | array     | no       | Custom nodes when needed; prompt-only works for defaults                                                                                              |
| `images`                | string\[] | no       | **Not used by this surface.** Reference images are not taken from a top-level field: the App route only accepts nodes inside `metadata.nodeInfoList`. |

### Reference image limits

No model spec exists for this model yet, so its reference-image capability and limits are **unverified**: no image count, accepted formats or per-file size ceiling is stated here.

## Response

### 200 (create)

| Field            | Type   | Notes                         |
| ---------------- | ------ | ----------------------------- |
| `id` / `task_id` | string | Task id                       |
| `status`         | string | e.g. `queued` / `in_progress` |

Poll until complete, then download result URLs promptly (upstream links may expire).

<Panel>
  <RequestExample>
    ```bash cURL theme={null}
    curl --request POST \
      --url https://api.omnimux.ai/v1/video/generations \
      --header 'Authorization: Bearer <token>' \
      --header 'Content-Type: application/json' \
      --data '{
      "model": "zimage-makeup",
      "prompt": "a classical portrait photo, realistic makeup look"
    }'
    ```
  </RequestExample>

  <ResponseExample>
    ```json 200 theme={null}
    {
      "id": "task_xxx",
      "status": "in_progress",
      "model": "zimage-makeup"
    }
    ```

    ```json 402 theme={null}
    {
      "error": {
        "message": "insufficient quota",
        "type": "new_api_error"
      }
    }
    ```
  </ResponseExample>
</Panel>
