MiniMax File Management
This API is the shared file upload and management interface for MiniMax voice (voice cloning), video (MiniMax-H3, etc.), and multimodal understanding capabilities. After uploading material, you can obtain a
file_idand reference it asmm_file://{file_id}in subsequent requests.
Upload File
Endpoint
http
POST /v1/files/uploadRequest Headers
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Content-Type | string | Yes | multipart/form-data | Data exchange format |
Authorization | string | Yes | - | Authentication info, format is Bearer <API_KEY> |
Request Body (multipart/form-data)
| Parameter | Type | Required | Description |
|---|---|---|---|
purpose | string | Yes | File usage purpose. See the table below for enumerated values and supported formats |
file | binary | Yes | File content |
purpose enumerated values:
| Value | Description | Supported Formats | Other Restrictions |
|---|---|---|---|
voice_clone | Original file for instant voice cloning | mp3, m4a, wav | Duration ≥10 seconds and ≤5 minutes, ≤20 MB |
prompt_audio | Prompt audio for voice cloning | mp3, m4a, wav | Duration <8 seconds, ≤20 MB |
t2a_async_input | Input for asynchronous long-text speech synthesis | text, zip | - |
video_understanding | Video multimodal understanding, referenced as mm_file://{file_id} in conversation requests | MP4, AVI, MOV, MKV | Retained for up to 7 days |
video_generation_input | Input material for video generation (first-frame image / reference image / reference video / reference audio), referenced as mm_file://{file_id} in the url field of the generation request's content | See the table below | Valid for 7 days (after expiry, generation returns file expired and requires re-upload); specifications are validated upon upload, and invalid ones return 400 without being retained; heic/heif dimensions are parsed server-side without client transcoding |
video_generation_input format and size limits:
| Type | Extensions | Single File Limit |
|---|---|---|
| Image | jpg / jpeg / png / webp / heic / heif | 30 MB |
| Reference video | mp4 / mov | 50 MB |
| Reference audio | wav / mp3 | 15 MB |
Request Example
bash
curl --request POST \
--url https://neolink.com/api/minimax/v1/files/upload \
--header 'Authorization: Bearer <API_KEY>' \
--header 'Content-Type: multipart/form-data' \
--form 'purpose=voice_clone' \
--form 'file=@/path/to/audio.mp3'Successful Response (HTTP 200)
json
{
"file": {
"file_id": 123456789,
"bytes": 5896337,
"created_at": 1700469398,
"filename": "audio.mp3",
"purpose": "voice_clone"
},
"base_resp": {
"status_code": 0,
"status_msg": "success"
}
}| Field | Type | Description |
|---|---|---|
file.file_id | int64 | Unique file identifier |
file.bytes | int64 | File size, in bytes |
file.created_at | int64 | File creation time, Unix timestamp (seconds) |
file.filename | string | File name |
file.purpose | string | File usage purpose |
base_resp.status_code | int | Status code; see the error codes for specific definitions |
base_resp.status_msg | string | Status details |
Retrieve File
Endpoint
http
GET /v1/files/retrieveRequest Headers
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Authorization | string | Yes | - | Authentication info, format is Bearer <API_KEY> |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | int64 | Yes | Unique file identifier |
Request Example
bash
curl --request GET \
--url 'https://neolink.com/api/minimax/v1/files/retrieve?file_id=123456789' \
--header 'Authorization: Bearer <API_KEY>'Successful Response (HTTP 200)
json
{
"file": {
"file_id": 123456789,
"bytes": 5896337,
"created_at": 1700469398,
"filename": "output.mp4",
"purpose": "video_generation",
"download_url": "https://download-url.example.com/file.mp4"
},
"base_resp": {
"status_code": 0,
"status_msg": "success"
}
}| Field | Type | Description |
|---|---|---|
file.file_id | int64 | Unique file identifier |
file.bytes | int64 | File size, in bytes |
file.created_at | int64 | File creation time, Unix timestamp (seconds) |
file.filename | string | File name |
file.purpose | string | File usage purpose |
file.download_url | string | File download link |
base_resp.status_code | int | Status code; see the error codes for specific definitions |
base_resp.status_msg | string | Status details |
List Files
Endpoint
http
GET /v1/files/listRequest Headers
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Authorization | string | Yes | - | Authentication info, format is Bearer <API_KEY> |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
purpose | enum<string> | Yes | The category of files to list. Enumerated values: voice_clone, prompt_audio, t2a_async_input, video_generation_input |
Request Example
bash
curl --request GET \
--url 'https://neolink.com/api/minimax/v1/files/list?purpose=t2a_async_input' \
--header 'Authorization: Bearer <API_KEY>'Successful Response (HTTP 200)
json
{
"files": [
{
"file_id": 123456789,
"bytes": 5896337,
"created_at": 1699964873,
"filename": "297990555456011.tar",
"purpose": "t2a_async_input"
},
{
"file_id": 123456790,
"bytes": 5896337,
"created_at": 1700469398,
"filename": "297990555456911.tar",
"purpose": "t2a_async_input"
}
],
"base_resp": {
"status_code": 0,
"status_msg": "success"
}
}| Field | Type | Description |
|---|---|---|
files | object[] | File list |
files[].file_id | int64 | Unique file identifier |
files[].bytes | int64 | File size, in bytes |
files[].created_at | int64 | File creation time, Unix timestamp (seconds) |
files[].filename | string | File name |
files[].purpose | string | File usage purpose |
base_resp.status_code | int | Status code; see the error codes for specific definitions |
base_resp.status_msg | string | Status details |
Download File
Endpoint
http
GET /v1/files/retrieve_contentRequest Headers
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Authorization | string | Yes | - | Authentication info, format is Bearer <API_KEY> |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | int64 | Yes | The ID of the file to download |
Request Example
bash
curl --request GET \
--url 'https://neolink.com/api/minimax/v1/files/retrieve_content?file_id=123456789' \
--header 'Authorization: Bearer <API_KEY>' \
--output downloaded_file.mp3Successful Response (HTTP 200)
Returns the binary content of the file. Content-Type depends on the original file type.
Delete File
Endpoint
http
POST /v1/files/deleteRequest Headers
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Content-Type | string | Yes | application/json | Data exchange format |
Authorization | string | Yes | - | Authentication info, format is Bearer <API_KEY> |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
file_id | int64 | Yes | Unique file identifier |
purpose | string | Yes | File usage purpose. Enumerated values: voice_clone, prompt_audio, t2a_async, t2a_async_input, video_generation |
Request Example
bash
curl --request POST \
--url https://neolink.com/api/minimax/v1/files/delete \
--header 'Authorization: Bearer <API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"file_id": 123456789,
"purpose": "voice_clone"
}'Successful Response (HTTP 200)
json
{
"file_id": 123456789,
"base_resp": {
"status_code": 0,
"status_msg": "success"
}
}| Field | Type | Description |
|---|---|---|
file_id | int64 | The deleted file ID |
base_resp.status_code | int | Status code; see the error codes for specific definitions |
base_resp.status_msg | string | Status details |
