Sixio models
The sixio group opens the 6io image and video models: Seedance, Kling, Grok Imagine, WAN, LTX-2, HappyHorse, MiniMax, PixVerse, Nano Banana, GPT Image, Flux, Qwen Image, Seedream and others. These are the same generations as on the 6io site: the same parameter checks and the same price.
A model name is sixio/<name>, for example sixio/flux-3/klein-text-to-image. Generation runs as tasks: you submit a task, poll the status and collect the result. The addresses start with https://api.6io.io/native/sixio, the authorization is the same: Authorization: Bearer sixio_sk_....
Every model has its own page: the input fields, the values the model sets itself, files, an example and what the price depends on. These pages are meant for AI agents; the list is at https://api.6io.io/md/en/sixio-models.md. The live catalog with prices is GET /native/sixio/models.
A full example
import time
import requests
API = "https://api.6io.io/native/sixio"
H = {"Authorization": "Bearer sixio_sk_..."}
# 1. submit the task
task = requests.post(f"{API}/tasks", headers=H, json={
"model": "sixio/flux-3/klein-text-to-image",
"input": {"prompt": "a red circle on a white background", "aspectRatio": "1:1", "resolution": "1K"},
}).json()
# 2. wait for the end
while True:
state = requests.get(task["status_url"], headers=H).json()
if state["status"] in ("succeeded", "failed"):
break
time.sleep(3)
# 3. collect the files
if state["status"] == "succeeded":
print(state["result"]["urls"])
else:
print(state["error"]["message"])If the input does not fit (422 invalid_input with a reason) or there is not enough money (402 insufficient_funds), the task is not created: an error comes instead of status_url, and nothing is charged. The error codes are in Errors and limits.
The catalog
curl "https://api.6io.io/native/sixio/models" -H "Authorization: Bearer sixio_sk_..."For every model the answer has:
id, the name for a request (sixio/...), andkind,imageorvideo;example_input, an example of theinputfield where there is one;price, the model's price in advance, in credits:unitis what the price is set for (per image,per second,per video),fromandtoare the lowest and the highest price in that unit,optionsis the price by variant (resolution, length, sound).
price is for reference. The price charged is the 6io price for your exact input (length, resolution, sound, number of images) with the group markup. The input fields of each model, their types and an example call are visible in the console: open the model on the Models tab.
The input fields
input holds the generation parameters in the form 6io accepts for this model. Field names are camelCase: aspectRatio, imageUrls, referenceImageUrls, audio and so on. Files are passed as public http(s) links.
- Some fields are set by the model itself and cannot be overridden. For example, for
sixio/bytedance/seedance-2-fastthequalitytier is alwaysfast, and forsixio/nano-banana-prothemodelfield is that model. - To edit a picture with Flux 3 Klein or Qwen Image 2.1, send the same model (
sixio/flux-3/klein-text-to-image,sixio/qwen2-1/text-to-image) with the source pictures insourceImageUrls. - Extending and upscaling a clip (
sixio/grok-imagine/extend,sixio/grok-imagine/upscale,sixio/pixverse-v6/extend) take the source in theoriginalVideoIdfield. It holds theidof your earlier finished sixio task, a string likereq_…(a number will not do). A foreign or wrong ID answers422 invalid_input. - The length of video and audio for the price is measured by the server. Fields where a client could name it itself are not accepted:
inputVideoSecondsof Seedance and MiniMax H3 anddurationHintof Kling Avatar give400 unsupported_parameter. For Kling Motion thevideoDurationfield is required; give any number from 3 to 30: it is ignored.
Wrong values are refused at once with 422 invalid_input and a reason. No money is reserved then.
Files by link
Images, audio and video are passed as public http(s) links. Where the file itself sets the price (the length of a video or audio), we do not trust the link: we download the file, check it and work with a copy from then on. These are the fields:
referenceVideoUrlsof Seedance 2, Seedance 2.5 and MiniMax H3;videoUrlofsixio/happyhorse/video-edit;imageUrlandvideoUrlofsixio/kling-2.6/motion-control;imageUrlandaudioUrlofsixio/kling/ai-avatar-standardandsixio/kling/ai-avatar-pro.
An example for Kling Motion:
{
"model": "sixio/kling-2.6/motion-control",
"input": {
"prompt": "The character dances",
"imageUrl": "https://example.com/character.png",
"videoUrl": "https://example.com/motion.mp4",
"orientation": "video",
"mode": "720p",
"videoDuration": 5
}
}The rules:
- The link must lead to a public address and return the file with a 200 answer without a login. Your own server, cloud storage or a link from the result of an earlier sixio task will do. Addresses in private networks are not accepted.
- Size: an image up to 10 MB, a video up to 100 MB, audio up to 50 MB. Video is MP4, MOV or WebM, an image is JPG, PNG or WebP. If the link has no extension, the format is taken from the content or the
Content-Typeheader. - The field takes no more links than the model accepts: up to 3 video references for Seedance 2 and MiniMax H3, up to 10 for Seedance 2.5. For MiniMax H3 their total length is up to 15 seconds, longer is
422 invalid_input. - A link to a file that already lies on a 6io server (for example, uploaded on the site) is passed as it is, without a copy. Only a file of your own account is accepted.
- The copy stays with us for 15 minutes at most and is deleted as soon as the task ends (done or failed). You do not get a link to the copy. On a retry send the original link.
- The file is downloaded before the money is reserved. If the link did not open, the file did not fit or is too big, the
422 invalid_inputanswer names the field and the reason, and no money is reserved. - An account can hold a limited number of copies at the same time (12 files and 300 MB by default). Above that the answer is
429 rate_limit_exceeded: retry when the running tasks end.
Submitting a task
curl -X POST "https://api.6io.io/native/sixio/tasks" \
-H "Authorization: Bearer sixio_sk_..." \
-H "Content-Type: application/json" \
-d '{"model": "sixio/flux-3/klein-text-to-image", "input": {"prompt": "a red circle on a white background", "aspectRatio": "1:1", "resolution": "1K"}}'Three fields are allowed in the body: model, input and an optional webhook_url, the address where we report the end of the task so that you need not poll the status (webhooks). Other fields are not accepted. The answer:
{
"id": "req_8fK2xQ1mZpVwT9sJdL4nAg",
"object": "task",
"model": "sixio/flux-3/klein-text-to-image",
"status": "queued",
"status_url": "https://api.6io.io/native/sixio/tasks/req_8fK2xQ1mZpVwT9sJdL4nAg"
}The id is ours, the task belongs to your account, and nobody else's can be opened. The Idempotency-Key header works as in chat: a retry with the same key does not create a second task (see Retries and failures).
Status and result
GET status_url shows the state of the task at the moment of the request. The status field:
status |
Meaning |
|---|---|
queued |
the task is accepted and waits to start |
running |
the task is in progress |
succeeded |
done, result.urls holds the links to the files (all of them if there are several images) |
failed |
the task was not done, the reason is in error.message |
unknown |
the state could not be read, the money is being checked: ask again later |
The answer also has created_at, finished_at and billing (the state of the money and the charged amount in credits).
File links lead to our server and are valid for a limited time, 14 days by default. Download what you need to keep longer: we do not store results.
Money
- The price of a task is the 6io price for your input with the group markup. It is reserved on submit. If the available funds are lower, the answer is
402 insufficient_funds. - A finished task charges exactly the reserve.
- If the task was not done (
fail), the reserve is returned in full. - If the input is refused (
422 invalid_input) or the service is temporarily unavailable (503 service_unavailable), the task is not created and no money is spent.
The number of tasks at the same time is limited. Images and video have their own limit, separate from the chat limit. Details are in Errors and limits.
Safety filters
Where the model allows it, the provider's own content filters are off, as on the 6io site. The content of a request and its consequences stay your responsibility (see the terms of use).