Documentación
Una única superficie compatible con OpenAI para los modelos Doubao, Seedance y Seedream de ByteDance.
Inicio rápido
Cualquier SDK de OpenAI funciona sin cambios — solo cambian la base URL y el id del modelo. Las claves tienen alcance por proyecto y se pueden rotar sin tiempo de inactividad.
- 1Crea una cuenta y genera una clave en el Panel.
- 2Configura la base URL en https://byteplus.cc/v1.
- 3Usa un id de modelo de ByteDance, como doubao-seed-1-6.
# any OpenAI-compatible client works
pip install openai
export BYTEPLUS_KEY="bp_live_xxxxxxxxxxxxxxxx"Autenticación
Envía la clave como bearer token. Las solicitudes sin clave devuelven 401; las solicitudes por encima de la cuota devuelven 429 con un header retry-after.
curl https://byteplus.cc/v1/chat/completions \
-H "Authorization: Bearer $BYTEPLUS_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"doubao-pro-32k","messages":[{"role":"user","content":"hi"}]}'
# 401 invalid_api_key
# 429 rate_limit_exceeded (see retry-after header)Chat completions
POST /v1/chat/completions acepta el payload estándar de OpenAI: model, messages, temperature, max_tokens, stream y tools.
from openai import OpenAI
client = OpenAI(
base_url="https://byteplus.cc/v1",
api_key=os.environ["BYTEPLUS_KEY"],
)
stream = client.chat.completions.create(
model="doubao-seed-1-6",
messages=[{"role": "user", "content": "Summarise this deck."}],
temperature=0.7,
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")Tareas de video
El video es asíncrono. Crea una tarea y luego sondea su estado o espera al webhook. Los ids de tarea son estables y los resultados siguen siendo recuperables durante 24 horas.
# 1. create the task
curl https://byteplus.cc/v1/video/tasks \
-H "Authorization: Bearer $BYTEPLUS_KEY" \
-d '{
"model": "seedance-1-0-pro",
"prompt": "neon koi in a datacenter, dolly-in",
"resolution": "1080p",
"duration": 5
}'
# => {"id": "task_9f2c", "status": "queued"}
# 2. poll for the artifact
curl https://byteplus.cc/v1/video/tasks/task_9f2c \
-H "Authorization: Bearer $BYTEPLUS_KEY"
# => {"status": "succeeded", "video_url": "https://..."}Generación de imágenes
POST /v1/images/generations genera un lote a partir de un prompt de texto; POST /v1/images/edits aplica una instrucción a una imagen existente.
curl https://byteplus.cc/v1/images/generations \
-H "Authorization: Bearer $BYTEPLUS_KEY" \
-d '{
"model": "seedream-4-0",
"prompt": "isometric mint server garden, 4K",
"size": "4096x4096",
"n": 4
}'Listar modelos
GET /v1/models devuelve todos los ids de modelo con su modalidad, ventana de contexto y precio unitario.
curl https://byteplus.cc/v1/models \
-H "Authorization: Bearer $BYTEPLUS_KEY"
# => {"data": [
# {"id": "doubao-seed-1-6", "modality": "language", "context": 262144},
# {"id": "seedance-1-0-pro", "modality": "video", "max_duration": 10},
# {"id": "seedream-4-0", "modality": "image", "max_size": "4096x4096"}
# ]}Códigos de error
Los errores usan el envelope de OpenAI: un objeto error con type, code, message y param. Reintenta los 429 y los 5xx con retroceso exponencial.
| 401 | invalid_api_key | Verifica el bearer token y que la clave esté activa. |
| 402 | insufficient_balance | Recarga el saldo de la cuenta. |
| 404 | model_not_found | Comprueba el id del modelo con GET /v1/models. |
| 422 | invalid_request | Revisa el param del error y corrige el payload. |
| 429 | rate_limit_exceeded | Aplica retroceso y reintenta, o reserva concurrencia. |
| 503 | capacity_unavailable | Reintenta tras la ventana retry-after; la posición en la cola está en el header. |
Límites de tasa
Los límites se aplican por clave y por modelo, expresados en solicitudes por minuto y tokens por minuto. Los clientes con reserva reciben un pool de concurrencia dedicado.