curl --request POST \
--url https://api.evolink.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "doubao-seedream-5.0-pro",
"prompt": "A serene lake reflecting the beautiful sunset",
"size": "16:9",
"quality": "2K"
}
'import requests
url = "https://api.evolink.ai/v1/images/generations"
payload = {
"model": "doubao-seedream-5.0-pro",
"prompt": "A serene lake reflecting the beautiful sunset",
"size": "16:9",
"quality": "2K"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'doubao-seedream-5.0-pro',
prompt: 'A serene lake reflecting the beautiful sunset',
size: '16:9',
quality: '2K'
})
};
fetch('https://api.evolink.ai/v1/images/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.evolink.ai/v1/images/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'doubao-seedream-5.0-pro',
'prompt' => 'A serene lake reflecting the beautiful sunset',
'size' => '16:9',
'quality' => '2K'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.evolink.ai/v1/images/generations"
payload := strings.NewReader("{\n \"model\": \"doubao-seedream-5.0-pro\",\n \"prompt\": \"A serene lake reflecting the beautiful sunset\",\n \"size\": \"16:9\",\n \"quality\": \"2K\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.evolink.ai/v1/images/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"doubao-seedream-5.0-pro\",\n \"prompt\": \"A serene lake reflecting the beautiful sunset\",\n \"size\": \"16:9\",\n \"quality\": \"2K\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.evolink.ai/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"doubao-seedream-5.0-pro\",\n \"prompt\": \"A serene lake reflecting the beautiful sunset\",\n \"size\": \"16:9\",\n \"quality\": \"2K\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1757165031,
"id": "task-unified-1757165031-seedream5pro",
"model": "doubao-seedream-5.0-pro",
"object": "image.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"estimated_time": 45
},
"type": "image",
"usage": {
"billing_rule": "per_call",
"credits_reserved": 1.8,
"user_group": "default"
}
}{
"error": {
"code": "invalid_request",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: doubao-seedream-5.0-pro",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}Seedream 5.0 Pro Génération d'images
- Le modèle Seedream 5.0 Pro (doubao-seedream-5.0-pro) prend en charge les modes texte-vers-image, image-vers-image, édition d’image et autres modes de génération
- Mode de traitement asynchrone, utilisez l’ID de tâche retourné pour interroger
- Les liens d’image générés sont valides pendant 24 heures, veuillez les enregistrer rapidement
curl --request POST \
--url https://api.evolink.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"model": "doubao-seedream-5.0-pro",
"prompt": "A serene lake reflecting the beautiful sunset",
"size": "16:9",
"quality": "2K"
}
'import requests
url = "https://api.evolink.ai/v1/images/generations"
payload = {
"model": "doubao-seedream-5.0-pro",
"prompt": "A serene lake reflecting the beautiful sunset",
"size": "16:9",
"quality": "2K"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
model: 'doubao-seedream-5.0-pro',
prompt: 'A serene lake reflecting the beautiful sunset',
size: '16:9',
quality: '2K'
})
};
fetch('https://api.evolink.ai/v1/images/generations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.evolink.ai/v1/images/generations",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'model' => 'doubao-seedream-5.0-pro',
'prompt' => 'A serene lake reflecting the beautiful sunset',
'size' => '16:9',
'quality' => '2K'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.evolink.ai/v1/images/generations"
payload := strings.NewReader("{\n \"model\": \"doubao-seedream-5.0-pro\",\n \"prompt\": \"A serene lake reflecting the beautiful sunset\",\n \"size\": \"16:9\",\n \"quality\": \"2K\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.evolink.ai/v1/images/generations")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"model\": \"doubao-seedream-5.0-pro\",\n \"prompt\": \"A serene lake reflecting the beautiful sunset\",\n \"size\": \"16:9\",\n \"quality\": \"2K\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.evolink.ai/v1/images/generations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"model\": \"doubao-seedream-5.0-pro\",\n \"prompt\": \"A serene lake reflecting the beautiful sunset\",\n \"size\": \"16:9\",\n \"quality\": \"2K\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1757165031,
"id": "task-unified-1757165031-seedream5pro",
"model": "doubao-seedream-5.0-pro",
"object": "image.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"estimated_time": 45
},
"type": "image",
"usage": {
"billing_rule": "per_call",
"credits_reserved": 1.8,
"user_group": "default"
}
}{
"error": {
"code": "invalid_request",
"message": "Invalid request parameters",
"type": "invalid_request_error"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid or expired token",
"type": "authentication_error"
}
}{
"error": {
"code": "insufficient_quota",
"message": "Insufficient quota. Please top up your account.",
"type": "insufficient_quota"
}
}{
"error": {
"code": "model_access_denied",
"message": "Token does not have access to model: doubao-seedream-5.0-pro",
"type": "invalid_request_error"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}{
"error": {
"code": "internal_error",
"message": "Internal server error",
"type": "api_error"
}
}Autorisations
##Toutes les API nécessitent une authentification Bearer Token##
Obtenir une clé API :
Visitez la Page de gestion des clés API pour obtenir votre clé API
Ajouter à l'en-tête de requête :
Authorization: Bearer YOUR_API_KEY
Corps
Nom du modèle de génération d'image
doubao-seedream-5.0-pro "doubao-seedream-5.0-pro"
Invite décrivant l'image que vous souhaitez générer, ou décrivant comment éditer l'image d'entrée
Langues prises en charge : outre le chinois et l'anglais, Seedream 5.0 Pro prend en charge le russe, l'arabe, le philippin, le thaï, le turc, le coréen, le malais, l'espagnol, le portugais, l'indonésien, le français, l'allemand, le vietnamien et le japonais.
Limite de longueur : jusqu'à 4000 tokens (environ 2 600 caractères chinois ou 5 000 mots anglais) ; au-delà, une erreur 400 est renvoyée et rien n'est facturé.
Recommandation : ne pas dépasser 300 caractères chinois ou 600 mots anglais. Une invite plus longue reste dans la limite mais dilue l'information : le modèle risque d'ignorer des détails et d'omettre des éléments de l'image.
"A serene lake reflecting the beautiful sunset"
Taille de l’image générée ; prend en charge deux formats :
Méthode 1 - Format de ratio :
auto,1:1,2:3,3:2,3:4,4:3,4:5,5:4,9:16,16:9,21:9,9:21- Utilisé avec le paramètre
quality, le système génère automatiquement une image avec le ratio et la résolution correspondants, sans spécifier manuellement les pixels
Méthode 2 - Format en pixels :
- Largeur x hauteur, par exemple:
1024x1024,2048x2048 - Plage totale de pixels:
[921600, 4624220] - Plage de rapport d’aspect:
[1/16, 16] - La largeur et la hauteur doivent toutes deux être supérieures à
14px
Lorsque size n’est pas fourni, la valeur par défaut est auto. auto signifie qu'aucun ratio précis n'est imposé : le modèle détermine le cadrage à partir de l'invite et la résolution de sortie suit le niveau défini par quality.
"16:9"
Niveau de résolution, utilisé avec le format de ratio de size ; la valeur par défaut est 1K.
| Ratio | 1K | 1.5K | 2K |
|---|---|---|---|
1:1 | 1024×1024 | 1536×1536 | 2048×2048 |
2:3 | 832×1248 | 1248×1872 | 1664×2496 |
3:2 | 1248×832 | 1872×1248 | 2496×1664 |
3:4 | 864×1152 | 1344×1792 | 1776×2368 |
4:3 | 1152×864 | 1792×1344 | 2368×1776 |
4:5 | 896×1120 | 1344×1680 | 1792×2240 |
5:4 | 1120×896 | 1680×1344 | 2240×1792 |
9:16 | 800×1424 | 1152×2048 | 1584×2816 |
16:9 | 1424×800 | 2048×1152 | 2816×1584 |
21:9 | 1568×672 | 2352×1008 | 3136×1344 |
9:21 | 672×1568 | 1008×2352 | 1344×3136 |
Facturation :
1Ket1.5Ksont au même prix ;1.5Koffre une meilleure qualité et est donc à privilégier- Avec le format en pixels de
size, le niveau dépend du nombre total de pixels réellement produits : jusqu'à2610000, le tarif bas s'applique ; au-delà, le tarif haut
1K, 1.5K, 2K "2K"
Stratégie d'optimisation d'invite, utilisée pour définir le mode d'optimisation d'invite
Options :
standard: Mode standard, sortie de meilleure qualité, temps de traitement plus longfast: Mode rapide, temps de traitement plus court, qualité légèrement inférieure au mode standard
standard, fast "standard"
Liste d'URL d'images de référence pour les fonctionnalités image vers image et édition d'image
Remarque :
- Une seule requête prend en charge la quantité d'images d'entrée :
10images - Taille d'image : pas plus de
30MB - Formats d'image pris en charge :
.jpeg,.jpg,.png,.webp,.bmp,.tiff,.gif,.heic,.heif - Plage de rapport d'aspect (largeur/hauteur) :
[1/16, 16] - Largeur et hauteur (px) > 14
- Total de pixels :
[196, 6000×6000] - Les URL d'images doivent être directement visibles par le serveur, ou l'URL de l'image doit déclencher un téléchargement direct lors de l'accès (généralement ces URL se terminent par des extensions de fichiers image, telles que
.png,.jpg)
10[
"https://example.com/image1.png",
"https://example.com/image2.png"
]
Format de sortie de l'image générée
Remarque : avec background=transparent, la sortie est toujours en png ; transmettre en même temps output_format=jpeg est rejeté.
png, jpeg "jpeg"
Indique s’il faut ajouter un filigrane à l’image générée
false
Commutateur de couche de transparence
Options :
opaque: Fond plein classique (par défaut)transparent: Conserve la couche alpha que possède déjà l'image d'entrée
transparentconserve le fond transparent que possède déjà l'image d'entrée ; il ne s'agit pas d'un détourage ni d'une suppression de fond.
Limitations (uniquement pour transparent) :
- Une seule image d'entrée doit être fournie, et elle doit posséder une couche alpha
- La sortie est toujours en png ; transmettre en même temps
output_format=jpegest rejeté - Les images d'entrée dans des formats sans couche alpha (comme jpeg) sont rejetées par le modèle
opaque, transparent "opaque"
Adresse de rappel HTTPS après l'achèvement de la tâche
Moment du rappel :
- Déclenché lorsque la tâche est terminée, échouée ou annulée
- Envoyé après confirmation de la facturation
Restrictions de sécurité :
- Seul le protocole HTTPS est pris en charge
- Les rappels vers les adresses IP internes sont interdits (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x, etc.)
- La longueur de l'URL ne doit pas dépasser
2048caractères
Mécanisme de rappel :
- Délai d'expiration :
10secondes - Maximum
3tentatives en cas d'échec (tentatives après1seconde/2secondes/4secondes) - Le format du corps de réponse du rappel est cohérent avec le format de réponse de l'API de requête de tâche
- Un code de statut 2xx renvoyé par l'adresse de rappel est considéré comme un succès, les autres codes de statut déclenchent une nouvelle tentative
"https://your-domain.com/webhooks/image-task-completed"
Réponse
Tâche de génération d'image créée avec succès
Horodatage de création de la tâche
1757165031
ID de tâche
"task-unified-1757165031-seedream5pro"
Nom du modèle réellement utilisé
"doubao-seedream-5.0-pro"
Type de tâche spécifique
image.generation.task Pourcentage de progression de la tâche (0-100)
0 <= x <= 1000
Statut de la tâche
pending, processing, completed, failed "pending"
Informations sur la tâche asynchrone
Show child attributes
Show child attributes
Type de sortie de la tâche
text, image, audio, video "image"
Informations d'utilisation et de facturation
Show child attributes
Show child attributes