API

Base URL
https://api.example.com
Bearer Key / x-api-key / x-goog-api-key
GET /v1/models
  • /v1/models

success: truedata

curl "https://api.example.com/v1/models" \
  -H "Authorization: Bearer <YOUR_API_KEY>"

model

Anthropic
claude-haiku-4-5-20251001claude-opus-4-6 claude-opus-4-7claude-opus-4-8claude-sonnet-4-6
OpenAI
gpt-5.4gpt-5.5
OpenAI Compatible
DeepSeek-V4-FlashDeepSeek-V4-Pro glm-4.7glm-5GLM-5.1GLM-5V-Turbo Kimi-K2.6qwen3.6-flashqwen3.6-max-previewqwen3.6-plus
Gemini
gemini-3-flash-previewgemini-3-pro-preview gemini-3.5-flashgemini-3.1-pro-preview
OpenAI Chat
gemini-3.1-flash-image-previewgemini-3-pro-image-preview
OpenAI Chat
gemini-3.1-flash-image-preview-1kgemini-3.1-flash-image-preview-2kgemini-3.1-flash-image-preview-4k gemini-3-pro-image-preview-1kgemini-3-pro-image-preview-2kgemini-3-pro-image-preview-4k
OpenAI Images
gpt-image-2
happyhorse-1.0-t2vhappyhorse-1.0-i2v happyhorse-1.0-r2vhappyhorse-1.0-video-edit
dreamina-seedance-2-0-260128dreamina-seedance-2-0-fast-260128 dreamina-seedance-2-0-mini-260615
Audio Speech
qwen3-tts-flashMiniMax/speech-2.8-turboMiniMax/speech-2.8-hd

Anthropic

POST /v1/messagesx-api-keyanthropic-version

curl "https://api.example.com/v1/messages" \
  -H "x-api-key: <YOUR_API_KEY>
import requests

resp = requests.post(
    "https://api.example.com/v1/messages",
    headers={
        "x-api-key": "<YOUR_API_KEY>

OpenAI

POST /v1/responsesinputmax_output_tokens

from openai import OpenAI

client = OpenAI(
    api_key="<YOUR_API_KEY>",
    base_url="https://api.example.com/v1",
)

OpenAI Compatible

POST /v1/chat/completionsmodel

curl "https://api.example.com/v1/chat/completions" \
  -H "Authorization: Bearer <YOUR_API_KEY>
from openai import OpenAI

client = OpenAI(
    api_key="<YOUR_API_KEY>
DeepSeek-V4-Promax_tokensDeepSeek-V4-FlashGLM-5.1Kimi-K2.6qwen3.6-plusmodel

Gemini

POST /v1beta/models/{model}:generateContentx-goog-api-key

curl "https://api.example.com/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "x-goog-api-key: <YOUR_API_KEY>
import requests

resp = requests.post(
    "https://api.example.com/v1beta/models/gemini-3.5-flash:generateContent",
    headers={
        "x-goog-api-key": "<YOUR_API_KEY>

OpenAI Images

POST /v1/images/generations

POST /v1/images/editsgpt-image-2data[0].b64_json

n1

POST /v1/images/generationsapplication/json
POST /v1/images/editsmultipart/form-dataimageimage[]
POST /v1/images/editsapplication/jsonimages[].image_url
POST /v1/images/editsmultipart/form-dataimage + mask
curl "https://api.example.com/v1/images/generations" \
  -H "Authorization: Bearer <YOUR_API_KEY>
curl "https://api.example.com/v1/images/edits" \
  -H "Authorization: Bearer <YOUR_API_KEY>
curl "https://api.example.com/v1/images/edits" \
  -H "Authorization: Bearer <YOUR_API_KEY>
curl "https://api.example.com/v1/images/edits" \
  -H "Authorization: Bearer <YOUR_API_KEY><BASE64>"}
    ],
    "n": 1,
    "size": "1024x1536",
    "quality": "high",
    "output_format": "png",
    "input_fidelity": "high"
  }'
curl "https://api.example.com/v1/images/edits" \
  -H "Authorization: Bearer <YOUR_API_KEY>
import base64
import requests

resp = requests.post(
    "https://api.example.com/v1/images/generations",
    headers={
        "Authorization": "Bearer <YOUR_API_KEY>
data[0].b64_jsondata:image/png;base64,...response_formatgpt-image-2

prompt
n1
size1024x10241536x10241024x1536autogpt-image-2WIDTHxHEIGHT1:33:1
qualitylowmediumhighauto
output_formatpngjpegwebpjpeg / webpoutput_compression
image / image[]imageimage[]
images{"image_url": "https://..."}
input_fidelityhighlowhigh
mask
  • multipart/form-data
  • image[]images

OpenAI Chat

gemini-3.1-flash-image-previewextra_body.google.image_config.image_size
gemini-3-pro-image-previewextra_body.google.image_config.image_size
curl "https://api.example.com/v1/chat/completions" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-image-preview",
    "messages": [
      {
        "role": "user",
        "content": "Create a minimalist blue circular app icon, 1:1, white background, crisp edges"
      }
    ],
    "extra_body": {
      "google": {
        "image_config": {
          "aspect_ratio": "1:1",
          "image_size": "2K"
        }
      }
    }
  }'
import base64
import re
import requests

resp = requests.post(
    "https://api.example.com/v1/chat/completions",
    headers={
        "Authorization": "Bearer <YOUR_API_KEY>",
        "Content-Type": "application/json",
    },
    json={
        "model": "gemini-3.1-flash-image-preview",
        "messages": [
            {
                "role": "user",
                "content": "Create a minimalist blue circular app icon, 1:1, white background, crisp edges",
            }
        ],
        "extra_body": {
            "google": {
                "image_config": {
                    "aspect_ratio": "1:1",
                    "image_size": "2K",
                }
            }
        },
    },
    timeout=300,
)

resp.raise_for_status()
content = resp.json()["choices"][0]["message"]["content"]
text = "".join(
    item.get("image_url", {}).get("url", "") if item.get("type") == "image_url" else item.get("text", "")
    for item in content
) if isinstance(content, list) else content

match = re.search(r"data:(image/[^;]+);base64,([A-Za-z0-9+/=]+)", text)
if not match:
    raise RuntimeError("No image base64 found in response")

ext = {"image/png": "png", "image/jpeg": "jpg", "image/webp": "webp"}.get(match.group(1), "png")
with open(f"gemini-output.{ext}", "wb") as f:
    f.write(base64.b64decode(match.group(2)))
image_size1K, 2K, 4K

OpenAI Chat

POST /v1/chat/completionsimage_size

usage
gemini-3.1-flash-image-preview-1k1K/v1/chat/completions
gemini-3.1-flash-image-preview-2k2K/v1/chat/completions
gemini-3.1-flash-image-preview-4k4K/v1/chat/completions
gemini-3-pro-image-preview-1k1K/v1/chat/completions
gemini-3-pro-image-preview-2k2K/v1/chat/completions
gemini-3-pro-image-preview-4k4K/v1/chat/completions
curl "https://api.example.com/v1/chat/completions" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-image-preview-1k",
    "messages": [
      {
        "role": "user",
        "content": "Create a minimalist blue circular app icon, 1:1, white background, crisp edges"
      }
    ]
  }'
import base64
import re
import requests

resp = requests.post(
    "https://api.example.com/v1/chat/completions",
    headers={
        "Authorization": "Bearer <YOUR_API_KEY>",
        "Content-Type": "application/json",
    },
    json={
        "model": "gemini-3.1-flash-image-preview-1k",
        "messages": [
            {
                "role": "user",
                "content": "Create a minimalist blue circular app icon, 1:1, white background, crisp edges",
            }
        ],
    },
    timeout=300,
)

resp.raise_for_status()
data = resp.json()
content = data["choices"][0]["message"]["content"]

if isinstance(content, list):
    text = ""
    for item in content:
        if item.get("type") == "image_url":
            text = item["image_url"]["url"]
            break
        if item.get("type") == "text":
            text += item.get("text", "")
else:
    text = content

match = re.search(r"data:(image/[^;]+);base64,([A-Za-z0-9+/=]+)", text)
if not match:
    raise RuntimeError("No image base64 found in response")

ext = {"image/png": "png", "image/jpeg": "jpg", "image/webp": "webp"}.get(match.group(1), "png")
with open(f"gemini-output.{ext}", "wb") as f:
    f.write(base64.b64decode(match.group(2)))
-1k, -2k, -4kgenerationConfig.imageConfig.imageSizeusage.completion_tokens

{
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "data:image/png;base64,<BASE64>"
      }
    }
  ]
}

/v1/videos

id / task_idGET /v1/videos/{task_id}
curl -X POST "https://api.example.com/v1/videos" \
  -H "Authorization: Bearer <YOUR_API_KEY>
<YOUR_API_KEY>
<YOUR_API_KEY>
<YOUR_API_KEY>
curl "https://api.example.com/v1/videos/<task_id>" \
  -H "Authorization: Bearer <YOUR_API_KEY>"

{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "task_id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "model": "happyhorse-1.0-video-edit",
  "status": "queued",
  "created_at": 1779381684
}

metadata.url

{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "task_id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "model": "happyhorse-1.0-video-edit",
  "status": "completed",
  "progress": 100,
  "metadata": {
    "url": "https://example.com/generated-video.mp4"
  },
  "error": null
}
  • queuedin_progresscompletedfailedcancelled

Seedance 2.0 · /api/v3/contents/generations/tasks

/api/v3/contents/generations/tasks/v1/video/generations/{task_id}/v1/videos

dreamina-seedance-2-0-260128 dreamina-seedance-2-0-fast-260128 dreamina-seedance-2-0-mini-260615
  • modelcontentgenerate_audioratiodurationresolutionwatermark
  • contenttextimage_urlimage_url.urlasset://{asset_id}
  • task_id/v1/video/generations/{task_id}
/api/v3/contents/generations/tasks/api/v1/*
curl -X POST "https://api.example.com/api/v3/contents/generations/tasks" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0-260128",
curl -X POST "https://api.example.com/api/v3/contents/generations/tasks" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0-fast-260128",
curl -X POST "https://api.example.com/api/v3/contents/generations/tasks" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dreamina-seedance-2-0-mini-260615",
curl "https://api.example.com/v1/video/generations/<task_id>" \
  -H "Authorization: Bearer <YOUR_API_KEY>"

task_id

{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "task_id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "model": "dreamina-seedance-2-0-260128",
  "status": "queued",
  "created_at": 1779381684
}

metadata.url

{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "task_id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "model": "dreamina-seedance-2-0-260128",
  "status": "completed",
  "progress": 100,
  "metadata": {
    "url": "https://example.com/generated-video.mp4"
  },
  "error": null
}
modelstring
contentarray
content[].typestringtext / image_url
content[].textstring
content[].image_url.urlstringasset://{asset_id}
content[].rolestringreference_image
generate_audiobool
ratiostring16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9
durationint
resolutionstring480p / 720p / 1080p
watermarkbool

Seedance content

typerole
texttext
image_urlimage_url.urlreference_image
  • asset://{asset_id}
  • content

asset://{asset_id}

curl -X POST "https://api.example.com/api/v1/groups" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "demo",
    "description": "demo group"
  }'
curl -X POST "https://api.example.com/api/v1/assets" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "group_id": "group-xxxxxxxx",
    "asset_type": "Image",
    "url": "https://example.com/reference.jpg",
    "name": "reference"
  }'
curl "https://api.example.com/api/v1/assets/<asset_id>" \
  -H "Authorization: Bearer <YOUR_API_KEY>"
curl -X POST "https://api.example.com/api/v1/assets/<asset_id>/recreate" \
  -H "Authorization: Bearer <YOUR_API_KEY>"

{
  "id": "asset-xxxxxxxx",
  "task_id": "task_xxxxxxxxxxxxxxxx",
  "status": "processing",
  "group_id": "group-xxxxxxxx"
}
POST /api/v1/groups
GET /api/v1/groups
GET /api/v1/groups/{id}
PUT /api/v1/groups/{id}
DELETE /api/v1/groups/{id}
POST /api/v1/assets
GET /api/v1/assets
GET /api/v1/assets/{id}
PUT /api/v1/assets/{id}
DELETE /api/v1/assets/{id}
POST /api/v1/assets/{id}/recreate

h5_linkgroup_id

curl -X POST "https://api.example.com/api/v1/avatars/sessions" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "is_qrcode": false
  }'
curl "https://api.example.com/api/v1/avatars/sessions/<byted_token>/status" \
  -H "Authorization: Bearer <YOUR_API_KEY>"
curl "https://api.example.com/api/v1/avatars/sessions/<byted_token>/result" \
  -H "Authorization: Bearer <YOUR_API_KEY>"

{
  "byted_token": "20260618104757A15E890123397EA84E85",
  "status": "completed",
  "group_id": "group-xxxxxxxx"
}

/v1/audio/speech

qwen3-tts-flashMiniMax/speech-2.8-turboMiniMax/speech-2.8-hd

curl "https://api.example.com/v1/audio/speech" \
  -H "Authorization: Bearer <YOUR_API_KEY>
import requests

resp = requests.post(
    "https://api.example.com/v1/audio/speech",
    headers={
        "Authorization": "Bearer <YOUR_API_KEY>
qwen3-tts-flash
Cherry
MiniMax/speech-2.8-turbo
male-qn-qingse
MiniMax/speech-2.8-hd
male-qn-qingse
  • response_formatmp3
  • speed

thinking

  • claude-opus-4-7 / claude-opus-4-8
  • claude-opus-4-6 / claude-sonnet-4-6
  • thinking

ClaudeAnthropic /v1/messages
OpenAI Responses API POST /v1/responses
POST /v1/chat/completions
POST /v1beta/models/{model}:generateContent
OpenAI Chat POST /v1/chat/completionsextra_body.google.image_config.image_size
OpenAI Chat POST /v1/chat/completions-1k / -2k / -4k
/v1/images/generations / /v1/images/edits
/v1/videos / /api/v3/contents/generations/tasks / /v1/video/generations/{task_id}
/api/v1/groups / /api/v1/assets / /api/v1/avatars/sessions
TTS/v1/audio/speech

  1. GET /v1/models
  2. /v1/chat/completions
  3. -1k / -2k / -4kextra_body.google.image_config.image_size
  4. image_size
  5. asset://{asset_id}