Aller au contenu

ByteDance Seedream

Modèles Seedream en vente : seedream-5.0-pro et seedream-5.0-lite. Ils sont servis par des canaux Volcengine (Doubao) et appelés via les mêmes points de terminaison images compatibles OpenAI que ceux décrits dans Format d’image OpenAI ; cette page couvre ce que l’adaptateur Volcengine modifie.

Les modèles Seedream ont image-generation dans supported_endpoint_types — voir Modèles pour lire ce champ.

POST /v1/images/generations
POST /v1/images/edits

/v1/images/generations prend un corps JSON. La modification image à image utilise /v1/images/edits avec l’image source passée comme chaîne dans image ; RouteAPI transmet les deux vers le point de terminaison de génération d’images amont (Volcengine n’expose pas de point de terminaison de modification basé sur formulaire via ce canal).

ChampTypeRequisDescription
modelstringOuiseedream-5.0-pro ou seedream-5.0-lite
promptstringOuiDescription textuelle ou instruction de modification
sizestringNonTaille ou palier de sortie. Normalisé avant d’atteindre Volcengine (voir Normalisation des tailles)
imagestringNonImage source pour l’image à image, sous forme d’URL http(s) ou de chaîne data:image/...;base64,.... À envoyer dans un corps JSON
watermarkbooleanNonFaut-il appliquer un filigrane à la sortie ; un false explicite est transmis
sequential_image_generationstringNon"auto" active la génération multi-images ; "disabled" la désactive
sequential_image_generation_optionsobjectNonOptions de génération séquentielle ; {"max_images": <entier>} fixe le nombre
layer_decompositionbooleanNonDécoupe le résultat en calques. Activé, cela change aussi la façon dont la requête est facturée (voir Facturation)
backgroundstringNonGestion du fond, par exemple "transparent" ou "opaque"
toolsarrayNonOutils amont tels que [{"type": "web_search"}]
optimize_prompt_optionsobjectNonOptimisation du prompt, par exemple {"mode": "standard"} ou {"mode": "fast"}

Ces champs font partie de la structure de requête d’image de la passerelle et sont transmis à Volcengine. Les champs facultatifs omis sont retirés du corps amont plutôt qu’envoyés à null. Les autres champs JSON inconnus sont abandonnés — activez le passthrough du corps de requête sur le canal si vous avez besoin d’un champ que la passerelle ne modélise pas.

Le traitement de size dépend du modèle :

ModèleTraitement de size
seedream-5.0-proLes tailles natives sont conservées telles quelles : 1K, 1.5K, des valeurs en pixels comme 1024x1024, et d’autres valeurs
seedream-5.0-liteLes tailles en pixels sont réécrites vers un palier 2K / 3K / 4K

Pour les modèles réécrits, le grand côté décide du palier : il est divisé par 1024 puis arrondi à l’entier le plus proche (les .5 arrondissent au supérieur), puis borné entre 2K et 4K. Les paliers envoyés directement, comme 2K ou 3k, sont seulement bornés, et les valeurs non reconnues comme auto sont transmises pour que Volcengine les valide. Exemples pour seedream-5.0-lite :

size demandéEnvoyé en amont
1024x10242K
2048x20482K
1536x15362K
1440x25603K
3840x21604K
1K2K
5K4K
autoauto
Fenêtre de terminal
curl https://api.routeapi.ai/v1/images/generations \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5.0-pro",
"prompt": "A misty mountain lake at sunrise, cinematic",
"size": "2K"
}'
Fenêtre de terminal
curl https://api.routeapi.ai/v1/images/generations \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5.0-lite",
"prompt": "A series of four postcards from the same coastal town, consistent style",
"sequential_image_generation": "auto",
"sequential_image_generation_options": { "max_images": 4 }
}'

Lorsque sequential_image_generation vaut "auto" sans max_images, l’estimation de coût initiale prévoit 15 images si le modèle a une tarification des sorties supplémentaires.

Envoyez l’image source comme chaîne dans le corps JSON. La passerelle transmet la valeur image à Volcengine sans modification — une URL http(s) ou une chaîne data:image/...;base64,.... La normalisation des tailles ci-dessus s’applique aussi à la requête de modification.

Fenêtre de terminal
curl https://api.routeapi.ai/v1/images/edits \
-H "Authorization: Bearer $ROUTEAPI_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-5.0-pro",
"prompt": "Replace the background with a sunset beach, keep the subject unchanged",
"image": "https://example.com/photo.png",
"size": "2K"
}'

layer_decomposition: true demande à l’amont de découper le résultat en calques séparés ; background: "transparent" demande un fond transparent. Les deux sont transmis inchangés.

L’objet images de l’amont vous est transmis tel quel. Les champs que vous pouvez analyser sont :

{
"data": [
{
"url": "https://example.com/generated.png",
"size": "2048x2048"
}
],
"usage": {
"input_images": 1,
"generated_images": 1,
"output_tokens": 4096,
"total_tokens": 4096
}
}
  • Lisez les images dans data[].url. Chaque entrée peut indiquer la size livrée, qui peut différer du palier demandé.
  • usage.input_images et usage.generated_images servent au règlement lorsque le modèle est facturé à l’image ; output_tokens alimente le règlement au token.

Les modèles Seedream sont facturés à l’image lorsque le modèle est configuré ainsi. Si la page de détail du modèle affiche des paliers de taille, le palier est choisi à partir du nombre de pixels du size envoyé, avant la sélection du canal. Voir Tarification des modèles et la page de détail du modèle pour le prix applicable.

Deux points propres à Seedream :

  • L’adaptateur réécrit size pour seedream-5.0-lite, donc l’image livrée peut tomber dans un palier différent de celui facturé. Pour éviter cette incohérence, les modèles facturés par palier de taille sont rejetés avec 400 lorsqu’ils sont routés vers un canal Volcengine — le mode passthrough est exempté car l’adaptateur ne réécrit alors pas le corps.
  • layer_decomposition: true bascule la requête vers la configuration tarifaire de décomposition en calques, lorsque le modèle en a une. Les images de référence au-delà de la franchise et les sorties séquentielles sont aussi facturées ; la page de détail du modèle indique les valeurs applicables.
StatutSignificationCause typique
400Requête invalidemodel manquant, n supérieur à 128, × utilisé comme séparateur de taille dans un corps JSON, ou modèle facturé par palier de taille routé vers Volcengine
401Échec d’authentificationClé API manquante, invalide, expirée ou épuisée
403Solde ou quota épuiséinsufficient_user_quota ou pre_consume_token_quota_failed
429Limitation de débitRéduisez la concurrence
500Erreur de conversion ou interneLa requête n’a pas pu être convertie, ou l’amont n’a renvoyé aucune image

Les erreurs amont comme un size non pris en charge ou un prompt rejeté reviennent avec le statut et le message de l’amont, suivis de l’ID de requête RouteAPI.