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 / DeepSeek / GLM / Kimi / Qwen
gpt-5.4gpt-5.5 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
Gemini
gemini-3-pro-image-previewgemini-3.1-flash-image-preview
OpenAI Images
gpt-image-2
happyhorse-1.0-t2vhappyhorse-1.0-i2v happyhorse-1.0-r2vhappyhorse-1.0-video-edit
doubao-seedance-2.0doubao-seedance-2.0-fast dreamina-seedance-2-0-260128dreamina-seedance-2-0-fast-260128
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/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

Gemini

POST /v1beta/models/{model}:generateContent

curl "https://api.example.com/v1beta/models/gemini-3.1-flash-image-preview:generateContent" \
  -H "x-goog-api-key: <YOUR_API_KEY>
candidates[0].content.parts[*].textinlineData.datatext

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "<image_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 · /v1/video/generations

/v1/video/generations/v1/videos

content

  • modelpromptresolutionratiodurationgenerate_audiometadata
  • imagesAsset://...
  • rolemetadata.contentprompt
metadata.durationprompt--dur 15 --rs 720p --rt 16:9 --wm false--dur 15
curl "https://api.example.com/v1/video/generations" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.0dreamina-seedance-2-0-260128
curl "https://api.example.com/v1/video/generations" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.0dreamina-seedance-2-0-260128
curl "https://api.example.com/v1/video/generations" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "doubao-seedance-2.0-fastdreamina-seedance-2-0-fast-260128
curl "https://api.example.com/v1/video/generations/<task_id>" \
  -H "Authorization: Bearer <YOUR_API_KEY>"

task_idqueued

{
  "id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "task_id": "task_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "status": "queued"
}

IN_PROGRESSSUCCESSdata.result_url

{
  "data": {
    "status": "SUCCESS",
    "progress": "100%",
    "result_url": "https://.../task.mp4?sign=..."
  }
}
modelstring
promptstring--dur N
imagesarrayAsset://...
metadataobjectresolutionratiodurationgenerate_audio
metadata.contentarrayrole
metadata.resolutionstring480p / 720p / 1080p720p
metadata.ratiostring16:9 / 9:16 / 1:1 / 4:3 / 3:4 / 21:9 / adaptive
metadata.durationintprompt--dur N
metadata.generate_audiobooltrue
metadata.watermarkbool
metadata.return_last_framebool

Seedance metadata.content

typerole
texttext
image_urlimage_url.urlfirst_frame
image_urlimage_url.urllast_frame
image_urlimage_url.urlreference_image
video_urlvideo_url.urlreference_video
audio_urlaudio_url.urlreference_audio
  • imagesrolemetadata.content
  • metadata.content
  • doubao-seedance-2.0dreamina-seedance-2-0-260128
  • metadata.duration--dur N--dur 15

Asset://...

asset_urls[0]

curl "https://api.example.com/v1/seedance/assets/sync" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "images": ["https://example.com/person-reference.jpg"],
    "asset_type": "Image"
  }'
curl "https://api.example.com/v1/seedance/assets/async" \
  -H "Authorization: Bearer <YOUR_API_KEY>" \
  -H "Content-Type: application/json" \
  -d '{
    "images": ["https://example.com/person-reference.jpg"],
    "asset_type": "Image"
  }'
curl "https://api.example.com/v1/seedance/assets/tasks/<task_id>" \
  -H "Authorization: Bearer <YOUR_API_KEY>"
curl "https://api.example.com/v1/video/generations" \
  -H "Authorization: Bearer <YOUR_API_KEY>

{
  "track_id": "track_xxxxxxxxxxxxxxxx",
  "mode": "sync",
  "code": 200,
  "status": "completed",
  "task_id": "task_xxxxxxxxxxxxxxxx",
  "asset_urls": ["Asset://asset-xxxxxxxxxxxxxxxx"]
}

task_idasset_urls

{
  "track_id": "track_xxxxxxxxxxxxxxxx",
  "mode": "async",
  "code": 202,
  "task_id": "task_xxxxxxxxxxxxxxxx"
}
  • images
  • Asset://...

/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-sonnet-4-6
  • claude-opus-4-7
  • thinking

ClaudeAnthropic /v1/messages
OpenAI /v1/chat/completions
POST /v1beta/models/{model}:generateContent
POST /v1beta/models/{model}:generateContent
/v1/images/generations / /v1/images/edits
/v1/videos / /v1/video/generations
/v1/seedance/assets/sync / /v1/seedance/assets/async / /v1/seedance/assets/tasks/{task_id}
TTS/v1/audio/speech

  1. GET /v1/models
  2. Asset://...