Source: https://ailoot.ai/models/en/minimax-hailuo-2-3/
Canonical: https://ailoot.ai/models/en/minimax-hailuo-2-3/
Language: en

# MiniMax-Hailuo-2.3

[Markdown](https://ailoot.ai/models/en/minimax-hailuo-2-3/index.md) · [JSON](https://ailoot.ai/models/en/minimax-hailuo-2-3/facts.json)

## [MiniMax-Hailuo-2.3](https://ailoot.ai/models/en/minimax-hailuo-2-3/)

MiniMax Hailuo 2.3 creates videos from text or a starting image, with controls for motion and camera direction. Choose six seconds at 768P or 1080P, or ten seconds at 768P, for character performances, stylized scenes and product shots that can be reviewed and edited.

- [**Ailoot · Video** `POST /v1/videos/generations` `MiniMax-Hailuo-2.3`](https://ailoot.ai/models/en/minimax-hailuo-2-3/#method-0)
- [**Ailoot Ultra · Video** `POST /v1/videos` `MiniMax-Hailuo-2.3`](https://ailoot.ai/models/en/minimax-hailuo-2-3/#method-1)

About the model

This description covers the model’s capabilities. Available in Ailoot inputs, outputs and options are listed for the selected method below.

MiniMax Hailuo 2.3 is a video-generation model with text-to-video and image-to-video modes. It builds on Hailuo 02 with a focus on physical action, visual style, character micro-expressions and response to motion instructions. Supply a written scene to create a shot from scratch, or use a starting image to establish the opening view and describe the movement that follows.

Physical performance is one of the edition’s main areas of improvement. Hailuo 2.3 aims to make body movements more fluid and controlled, including scenes with a moving camera. Plan the important action before adding decorative detail. A character lifting an object, turning towards another person or moving through a room gives the shot a visible event to evaluate. Decide which movement carries the story, then keep the surrounding instructions consistent with it.

Stylization is another focus. The model supports work in anime and illustration as well as styles such as ink-wash painting and game CG. Describe the visual treatment you want, and keep the appearance coherent with the scene. If a starting image already establishes a drawing style, use the text to guide the animation rather than introducing a competing description of the character’s design. Review the whole clip for whether that treatment remains readable during movement.

The model also focuses on facial performance and subtle expression changes. Prepare a character shot around the reaction that matters: noticing an object, becoming curious or responding with a small smile. A close view can make that change easier to assess, while a large sequence of gestures may distract from it. Check the face before, during and after the reaction rather than judging only a representative still frame.

Object motion is useful for product-centred scenes. An original brief might show a small ceramic vase turning in warm side light while the camera gradually approaches it. Identify which properties must remain recognisable, such as the silhouette, rim and surface finish. Review those details through the movement, because a convincing atmosphere alone does not establish a faithful product view.

For text-to-video, the required description can contain up to 2,000 characters. State the subject, action, setting and visual style in a coherent order. Image-to-video requires a starting-frame image, with an optional description of up to 2,000 characters. The image fixes the opening composition, so prepare the subject and framing before requesting motion. Leave visible space where an arm, object or character needs to move.

The starting image accepts JPG, JPEG, PNG or WebP, must be smaller than 20 MB, needs a short edge greater than 300 pixels and must have an aspect ratio between 2:5 and 5:2. It can be supplied as a public image URL or a Base64 data URL. Choose a clear opening picture rather than relying on the animation to repair an obscured face or an already cropped action.

Hailuo 2.3 generates at 24 frames per second. A six-second shot can use 768P or 1080P; a ten-second shot uses 768P. The defaults are six seconds and 768P. Choose the length for the action you want to see: a brief reaction may fit a short shot, while a slower movement needs more room. Read the completed result’s actual width and height when placing the clip in an edit, since a resolution label alone is not the full framing decision.

Camera direction can use bracketed commands. The available controls cover trucking, panning, pushing, pedestal movement, tilting, zooming, shaking, tracking and a static shot. A command such as \[Push in\] directs the approach; commands grouped inside one bracket act together, while commands placed in order describe a sequence. MiniMax recommends at most three simultaneous commands. Keep the camera movement compatible with the subject’s action so the main event remains easy to follow.

Automatic prompt optimisation is enabled by default and can be disabled for closer control over the supplied wording. Optional fast preprocessing reduces the optimisation time when that optimisation is enabled; it is a separate setting from choosing the Hailuo 2.3 Fast model. Standard Hailuo 2.3 supports both creation modes, while Fast is the distinct image-to-video edition. Choose the edition based on whether the project begins with text alone or an existing frame.

The generation workflow returns an asynchronous task identifier, then reports preparation, queueing, processing, success or failure. On success, the result supplies a file identifier and the actual video dimensions, and the completed video is retrieved for download. Save the clip while its download address is valid. The maker’s current video-download reference gives the returned download URL a one-hour lifetime. For an edited sequence, retain each shot with its prompt and starting image so that the chosen creative direction remains traceable during revision.

Review action, physical continuity, facial or product details, visual style and camera behaviour in the saved clip. Watch the whole shot, then inspect its beginning and end where it will join other material. If the request contains too many competing movements, simplify the main action; if the opening design is unclear, improve the starting image. Select a shot that communicates the intended event, then add narration, titles and transitions in the editing workflow.

**Ailoot · Video** `POST /v1/videos/generations` `MiniMax-Hailuo-2.3`

[`MiniMax-Hailuo-2.3`](https://ailoot.ai/models/en/#m=MiniMax-Hailuo-2.3&route=Core&caller=MiniMax-Hailuo-2.3&fmt=videos)

MiniMax /`MiniMax-Hailuo-2.3`

### Overview

MiniMax Hailuo 2.3 creates videos from text or a starting image, with controls for motion and camera direction. Choose six seconds at 768P or 1080P, or ten seconds at 768P, for character performances, stylized scenes and product shots that can be reviewed and edited.

Accepted inputs

Text · Images

Results

Video

### Available in Ailoot · inputs & methods

**Ailoot · Video** `POST /v1/videos/generations`

Input types

`text`, `image`

Output types

`video`

Output format

mp4

| Field | Type | Requirement | Values & limits | Default |
| --- | --- | --- | --- | --- |
| Field`model` | Type`string` | RequirementRequired | Values & limits MiniMax-Hailuo-2.3 | Default— |
| Field`prompt` | Type`string` | RequirementRequired | Values & limits Minimum length: 1 Maximum length: 2,000 Unit: Unicode characters | Default— |
| Field`duration` | Type`integer` | RequirementOptional | Values & limits 6, 10 Conditions: 10secondsrequires768P Unit: seconds | Default6 |
| Field`resolution` | Type`string` | RequirementOptional | Values & limits 768P, 1080P Conditions: 1080Prequires6seconds | Default768P |
| Field`first_frame_image` | Type`https_url\|data_image_url` | RequirementOptional | Values & limits Maximum decoded bytes: 20,971,520 MIME types: image/jpeg, image/png, image/webp Minimum dimension (exclusive): 300 Aspect ratio range: 2:5, 5:2 | Default— |
| Field`prompt_optimizer` | Type`boolean` | RequirementOptional | Values & limits | Default— |
| Field`fast_pretreatment` | Type`boolean` | RequirementOptional | Values & limits | Default— |

Input material combinations

**Image to video** · Required: prompt, first\_frame\_image

**Text to video** · Required: prompt

Method parameters and lifecycle

| Parameter | Contract |
| --- | --- |
| Parameter`material_types` | Contracttext, image |
| Parameter`required` | Contractnull |
| Parameter`optional_controls` | Contractnull |

Lifecycle: `submit_once_poll_original`

`GET /v1/videos/{request_id}`

`GET /v1/videos/generations/{request_id}`

`GET /v1/videos/{request_id}/content`

`GET /v1/videos/generations/{request_id}/content`

Method shapes and IDs are exact; supplier capability is separate from admission.

### Pricing

#### Ailoot method rates

Output

$0.28 *per 6 s video at 768p*

Ailoot reserves an estimated amount before a request. After the result, it settles the final charge from measured usage. Streaming settlement uses the final usage record. [How reservation and settlement work →](https://ailoot.ai/docs/en/billing/reserve/)

#### Reference tariff details

Model-level reference schedules do not change method selection, quotes or charges. Active charges use the selected Ailoot method rates.

MiniMax-Hailuo-2.3

#### Prices by configuration

| Configuration | Billing conditions | Charge |
| --- | --- | --- |
| ConfigurationMiniMax-Hailuo-2.3 · Default configuration | Billing conditionsDefault configuration | Charge Input · Input **$0.00** per call Output · Output **$0.60** per call |

MiniMax-Hailuo-2.3

#### Prices by configuration

| Configuration | Billing conditions | Charge |
| --- | --- | --- |
| ConfigurationMiniMax-Hailuo-2.3 · Default configuration | Billing conditionsDefault configuration | Charge Input · Input **$0.00** per call Output · Output **$1.20** per call |

### Example requests

#### Ailoot · Video

Video example

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl https://api.ailoot.ai/v1/videos/generations \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "MiniMax-Hailuo-2.3", "prompt": "A person walks slowly through a quiet garden as the camera tracks from the side.", "duration": 6, "resolution": "768P"}'
```

### Receive and save results

#### Ailoot · Video

mp4

- `GET /v1/videos/{request_id}`
- `GET /v1/videos/generations/{request_id}`
- `GET /v1/videos/{request_id}/content`
- `GET /v1/videos/generations/{request_id}/content`

##### Check job status

GET status

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_VIDEO_ID
video_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ["AILOOT_VIDEO_ID"], safe=""))') || exit 1
curl "https://api.ailoot.ai/v1/videos/generations/$video_id" \
  -H "Authorization: Bearer $AILOOT_API_KEY"
```

Other content reads

GET content

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_VIDEO_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_VIDEO_ID
video_id=$(python3 -c 'import os, urllib.parse; print(urllib.parse.quote(os.environ["AILOOT_VIDEO_ID"], safe=""))') || exit 1
curl "https://api.ailoot.ai/v1/videos/generations/$video_id/content" \
  -H "Authorization: Bearer $AILOOT_API_KEY" \
  --output video.mp4
```

##### Keep all completed results

Save every completed video or returned file; retrieve every actual returned asset URL.

Preserve every returned data item/output index. content\_url is first only; fetch every actual content path/asset. GETcontentwithoutindex isnotalloutputs.

##### If the original response needs checking

Read existing original job; never resubmit unknown send.

Response fields

| Field | Type |
| --- | --- |
| Field`id` | Typestring |
| Field`object` | Typestring |
| Field`model` | Typestring |
| Field`status` | Typestring |
| Field`content_url` | Typesigned URL |
| Field`data[]` | Typesigned URL |
| Field`usage` | Typeobject |
| Field`result_pending_check` | Typeboolean |

Errors and next steps

| Response | Condition | Next step |
| --- | --- | --- |
| Response400 · `invalid_request_error` | ConditionInvalid required fields, material representation or parameter value | Next stepCorrect the indicated fields before a new creation request. |
| Response409 · `video_not_ready` | ConditionOriginal result content is not yet available | Next stepPoll the original returned ID and respect Retry-After. |
| Response`server_error` | ConditionThe returned response says the operation or result requires a check | Next stepKeep the original returned operation/task ID, request headers and response; continue supported reads of that original operation. Do not resubmit the creation request. |

### Aliases

#### Model aliases

<strong>Ailoot</strong> [`MiniMax-Hailuo-2.3`](https://ailoot.ai/models/en/#m=MiniMax-Hailuo-2.3&route=Core&caller=MiniMax-Hailuo-2.3&fmt=videos)
**Ailoot Ultra** [`MiniMax-Hailuo-2.3`](https://ailoot.ai/models/en/#m=MiniMax-Hailuo-2.3&route=Ultra&caller=MiniMax-Hailuo-2.3&fmt=videos)

#### Method path aliases

`/v1/videos/generations`, `/videos`, `/videos/generations`

#### Related caller IDs

[`MiniMax-Hailuo-2.3`](https://ailoot.ai/models/en/#m=MiniMax-Hailuo-2.3&route=Core&caller=MiniMax-Hailuo-2.3&fmt=videos), [`MiniMax-Hailuo-2.3`](https://ailoot.ai/models/en/#m=MiniMax-Hailuo-2.3&route=Ultra&caller=MiniMax-Hailuo-2.3&fmt=videos)

**Ailoot Ultra · Video** `POST /v1/videos` `MiniMax-Hailuo-2.3`

[`MiniMax-Hailuo-2.3`](https://ailoot.ai/models/en/#m=MiniMax-Hailuo-2.3&route=Ultra&caller=MiniMax-Hailuo-2.3&fmt=videos)

MiniMax /`MiniMax-Hailuo-2.3`

### Overview

MiniMax Hailuo 2.3 creates videos from text or a starting image, with controls for motion and camera direction. Choose six seconds at 768P or 1080P, or ten seconds at 768P, for character performances, stylized scenes and product shots that can be reviewed and edited.

Accepted inputs

Text

Results

Video

### Available in Ailoot · inputs & methods

**Ailoot Ultra · Video** `POST /v1/videos`

Input types

`text`

Output types

`video`

Output format

mp4

Output count

Up to 1 output

| Field | Type | Requirement | Values & limits | Default |
| --- | --- | --- | --- | --- |
| Field`model` | Type`string` | RequirementRequired | Values & limits MiniMax-Hailuo-2.3 | Default— |
| Field`prompt` | Type`string` | RequirementRequired | Values & limits Minimum length: 1 Maximum length: 2,000 Conditions: For 768P: at most 2000 Unicode code points. For 1080P: fewer than 200 Unicode code points (maximum 199). The prompt must contain non-whitespace text. Unit: Unicode characters | Default— |
| Field`duration` | Type`integer` | RequirementRequired | Values & limits 6 Unit: seconds | Default— |
| Field`resolution` | Type`string` | RequirementRequired | Values & limits 768P, 1080P | Default— |

Input material combinations

**Text to video** · Required: prompt

Method parameters and lifecycle

| Parameter | Contract |
| --- | --- |
| Parameter`content_type` | Contractapplication/json |
| Parameter`required` | Contractmodel, prompt, duration, resolution |
| Parameter`other_options` | Contractfalse |
| Parameter`duration` | Contract6 |
| Parameter`resolution` | Contract768P, 1080P |
| Parameter`prompt_max_characters` | Contract2000 |
| Parameter`material_types` | Contracttext |
| Parameter`prompt_max_characters_by_resolution` | Contract{"768P":2000,"1080P":199} |

Method aliases: `/v1/videos/generations`, `/videos`, `/videos/generations`

Lifecycle: `submit_once_poll_original`

`GET /v1/videos/{request_id}`

`GET /v1/videos/generations/{request_id}`

`GET /v1/videos/{request_id}/content`

`GET /v1/videos/generations/{request_id}/content`

Create once and save returned ID.

Poll original status; retain every completed asset and duration.

### Pricing

Tariff references do not add request options. Supported parameters are listed for the selected method.

Fast mode

Not specified When fast mode is selected

Flex mode

Not specified When flex mode is selected

Maximum reasoning effort

Not specified When maximum reasoning effort uses the default adjustment

#### Ailoot rates

#### Prices by configuration

Match each charge to the conditions shown. Use one rate for each set of alternative configurations.

| Configuration | Rate schedule | Nominal clip duration, seconds | Resolution | Billing unit | Charge |
| --- | --- | --- | --- | --- | --- |
| ConfigurationBase token rates | Rate scheduleBase rate | Nominal clip duration, seconds— | Resolution— | Billing unit— | Charge Input · Input tokens **—** / 1K tokens Output · Output tokens **—** / 1K tokens Input · Cache read **—** / 1K tokens Input · Cache write **—** / 1K tokens Input · Cache write, 1 hour **—** / 1K tokens |
| ConfigurationUltra | Rate schedule— | Nominal clip duration, seconds6 | Resolution1080P | Billing unitper nominal 6s output clip | Charge Output · nominal 6s output clip **$1.2** per nominal 6s output clip |
| ConfigurationUltra | Rate schedule— | Nominal clip duration, seconds6 | Resolution768P | Billing unitper nominal 6s output clip | Charge Output · nominal 6s output clip **$0.6** per nominal 6s output clip |

Ailoot reserves an estimated amount before a request. After the result, it settles the final charge from measured usage. Streaming settlement uses the final usage record. [How reservation and settlement work →](https://ailoot.ai/docs/en/billing/reserve/)

#### Reference tariff details

Model-level reference schedules do not change method selection, quotes or charges. Active charges use the selected Ailoot method rates.

MiniMax-Hailuo-2.3

#### Prices by configuration

| Configuration | Billing conditions | Charge |
| --- | --- | --- |
| ConfigurationMiniMax-Hailuo-2.3 · Default configuration | Billing conditionsDefault configuration | Charge Input · Input **$0.00** per call Output · Output **$0.60** per call |

MiniMax-Hailuo-2.3

#### Prices by configuration

| Configuration | Billing conditions | Charge |
| --- | --- | --- |
| ConfigurationMiniMax-Hailuo-2.3 · Default configuration | Billing conditionsDefault configuration | Charge Input · Input **$0.00** per call Output · Output **$1.20** per call |

### Example requests

#### Ailoot Ultra · Video

curlcurl · 1080P / 6 seconds

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "MiniMax-Hailuo-2.3", "prompt": "A cat in a spacesuit walking on the Moon", "duration": 6, "resolution": "768P"}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
```

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "MiniMax-Hailuo-2.3", "prompt": "A cat in a spacesuit walking on the Moon", "duration": 6, "resolution": "1080P"}')

Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
```

### Receive and save results

#### Ailoot Ultra · Video

mp4

- `GET /v1/videos/{request_id}`
- `GET /v1/videos/generations/{request_id}`
- `GET /v1/videos/{request_id}/content`
- `GET /v1/videos/generations/{request_id}/content`

##### Check job status

GET status

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/$operation_id" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o status.json
python3 - <<'PY_STATUS'
import json
from pathlib import Path
r=json.loads(Path("status.json").read_text())
print(json.dumps(r))
if r.get("status")=="completed":
    for x in r.get("data",[]):print(x)
PY_STATUS
```

##### Save all completed assets

GET all completed assets

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_STATUS_FILE:?Set the actual completed status JSON file}"
export AILOOT_STATUS_FILE
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
from urllib.parse import urlsplit,urljoin
f=Path(os.environ["AILOOT_STATUS_FILE"])
if not f.is_file():raise SystemExit("Choose the actual completed status file")
r=json.loads(f.read_text())
if r.get("status")!="completed" or not isinstance(r.get("data"),list) or not r["data"]:raise SystemExit("Wait for a completed status with asset paths")
urls=[]
for x in r["data"]:
    if not isinstance(x,str) or "\n" in x or "\r" in x:raise SystemExit("Invalid asset path")
    u=urljoin("https://api.ailoot.ai",x)
    z=urlsplit(u)
    if z.scheme!="https" or z.netloc!="api.ailoot.ai" or z.username or z.password:raise SystemExit("Use the actual Ailoot asset paths from status")
    urls.append(u)
Path("asset-urls.txt").write_text("\n".join(urls)+"\n")
PY_REQUEST
index=0
while IFS= read -r asset_url; do
  curl --fail-with-body --silent --show-error "$asset_url" \
    -H "Authorization: Bearer $AILOOT_API_KEY" -o "video-${index}.mp4"
  index=$((index + 1))
done < asset-urls.txt
```

Other content reads

GET content

```bash
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_OPERATION_ID:?Set the actual Ailoot operation ID returned by creation}"
export AILOOT_OPERATION_ID
operation_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_OPERATION_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/videos/$operation_id/content" \
  -H "Authorization: Bearer $AILOOT_API_KEY" -o video.mp4
```

##### Keep all completed results

Save every completed video or returned file; retrieve every actual returned asset URL.

Completed data\[\] contains all owned signed content URLs. Fetch each returned URL, or use the content endpoint with index set to an actual output index. A failed original job may return charge\_pending\_check; check that original job rather than creating it again.

##### If the original response needs checking

Read existing original job; never resubmit unknown send.

Maximum outputs: 1.

Response fields

| Field | Type |
| --- | --- |
| Field`id` | Typestring |
| Field`object` | Typestring |
| Field`model` | Typestring |
| Field`status` | Typestring |
| Field`data[]` | Typesigned content URL |
| Field`charge_pending_check` | Typeboolean |
| Field`error.code` | Typestring |
| Field`error.message` | Typestring |
| Field`requested_nominal_duration_seconds` | Typeinteger |
| Field`measured_duration_seconds` | Typenumber |
| Field`width` | Typeinteger |
| Field`height` | Typeinteger |

Errors and next steps

| Response | Condition | Next step |
| --- | --- | --- |
| Response400 · `invalid_request_error` | ConditionInvalid required fields, material representation or parameter value | Next stepCorrect the indicated fields before a new creation request. |
| Response409 · `video_not_ready` | ConditionOriginal result content is not yet available | Next stepPoll the original returned ID and respect Retry-After. |
| Response`server_error` | ConditionThe returned response says the operation or result requires a check | Next stepKeep the original returned operation/task ID, request headers and response; continue supported reads of that original operation. Do not resubmit the creation request. |

### Aliases

#### Model aliases

<strong>Ailoot</strong> [`MiniMax-Hailuo-2.3`](https://ailoot.ai/models/en/#m=MiniMax-Hailuo-2.3&route=Core&caller=MiniMax-Hailuo-2.3&fmt=videos)
**Ailoot Ultra** [`MiniMax-Hailuo-2.3`](https://ailoot.ai/models/en/#m=MiniMax-Hailuo-2.3&route=Ultra&caller=MiniMax-Hailuo-2.3&fmt=videos)

#### Method path aliases

`/v1/videos/generations`, `/videos`, `/videos/generations`

#### Related caller IDs

[`MiniMax-Hailuo-2.3`](https://ailoot.ai/models/en/#m=MiniMax-Hailuo-2.3&route=Core&caller=MiniMax-Hailuo-2.3&fmt=videos), [`MiniMax-Hailuo-2.3`](https://ailoot.ai/models/en/#m=MiniMax-Hailuo-2.3&route=Ultra&caller=MiniMax-Hailuo-2.3&fmt=videos)

FAQ · MiniMax-Hailuo-2.3

What inputs and results are available?

`POST /v1/videos/generations` · `MiniMax-Hailuo-2.3`: `text`, `image` → `video` `POST /v1/videos` · `MiniMax-Hailuo-2.3`: `text` → `video`

Which fields does the request use?

`POST /v1/videos/generations` · `MiniMax-Hailuo-2.3`: `model`, `prompt`, `duration`, `resolution`, `first_frame_image`, `prompt_optimizer`, `fast_pretreatment` `POST /v1/videos` · `MiniMax-Hailuo-2.3`: `model`, `prompt`, `duration`, `resolution`

What limits apply?

`POST /v1/videos/generations` · `MiniMax-Hailuo-2.3`: `prompt.maximum_length`: `2000` `POST /v1/videos` · `MiniMax-Hailuo-2.3`: `prompt.maximum_length`: `2000`

Connect Ailoot to Claude Code, OpenCode, Hermes or your own app.

## The company and its project portfolio

The company and its project portfolio: millions of customers; monthly sales in the billions.

## Buy tokens at a discount.

Subscription discounts for regular use. Promo codes offer up to 50% off token purchases.

Subscription

Choose a discounted plan for your regular requests.

Promo code: up to 50% off

Enter your code at checkout. The price updates to reflect the current promotion.

Spending in your history

The model, tokens and amount are recorded for each request.

[Choose a subscription](https://ailoot.ai/docs/en/billing/subscriptions/) · [View model prices](https://ailoot.ai/models/en/)

## Connect the API to a product you sell.

Use Ailoot in SaaS, apps and bots under its official service offer and licence agreement. Request a reseller licence for resale.

Commercial application

Add text, image, video and audio generation to paid features in your service.

Reseller licence

Send a description of your project and how you provide access. Request written terms for use and resale.

Documents on the website

The service offer, licence agreement and data processing policy are available before you connect.

[Request a reseller licence](mailto:support@ailoot.ai) · [Service offer and licence agreement](https://ailoot.ai/legal/offer?lang=en)

## Ailoot · The company and its project portfolio





Ailoot combines established operating experience, a large client base, stable service and ongoing KPI control.





The company and its project portfolio: millions of customers; monthly sales in the billions.





Ailoot brings that operating experience to API access for AI features in customer products, agents, applications and automations.
