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-flash",
"prompt": "Un lac paisible reflétant un magnifique coucher de soleil",
"size": "16:9",
"quality": "2K"
}
'import requests
url = "https://api.evolink.ai/v1/images/generations"
payload = {
"model": "doubao-seedream-5.0-flash",
"prompt": "Un lac paisible reflétant un magnifique coucher de soleil",
"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-flash',
prompt: 'Un lac paisible reflétant un magnifique coucher de soleil',
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-flash',
'prompt' => 'Un lac paisible reflétant un magnifique coucher de soleil',
'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-flash\",\n \"prompt\": \"Un lac paisible reflétant un magnifique coucher de soleil\",\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-flash\",\n \"prompt\": \"Un lac paisible reflétant un magnifique coucher de soleil\",\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-flash\",\n \"prompt\": \"Un lac paisible reflétant un magnifique coucher de soleil\",\n \"size\": \"16:9\",\n \"quality\": \"2K\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1757165031,
"id": "task-unified-1757165031-seedream5flash",
"model": "doubao-seedream-5.0-flash",
"object": "image.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"estimated_time": 20
},
"type": "image",
"usage": {
"billing_rule": "per_image",
"credits_reserved": 1.1016,
"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-flash",
"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 Flash Génération d'images
- Seedream 5.0 Flash (doubao-seedream-5.0-flash) prend en charge la génération texte vers image, image vers image, la retouche et d’autres modes. Ses principaux paramètres correspondent à ceux de Seedream 5.0 Pro, avec une génération plus rapide et un prix plus bas
- Facturation par image :
1K,1.5Ket2Ksont au même prix ; les images de référence sont gratuites - 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-flash",
"prompt": "Un lac paisible reflétant un magnifique coucher de soleil",
"size": "16:9",
"quality": "2K"
}
'import requests
url = "https://api.evolink.ai/v1/images/generations"
payload = {
"model": "doubao-seedream-5.0-flash",
"prompt": "Un lac paisible reflétant un magnifique coucher de soleil",
"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-flash',
prompt: 'Un lac paisible reflétant un magnifique coucher de soleil',
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-flash',
'prompt' => 'Un lac paisible reflétant un magnifique coucher de soleil',
'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-flash\",\n \"prompt\": \"Un lac paisible reflétant un magnifique coucher de soleil\",\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-flash\",\n \"prompt\": \"Un lac paisible reflétant un magnifique coucher de soleil\",\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-flash\",\n \"prompt\": \"Un lac paisible reflétant un magnifique coucher de soleil\",\n \"size\": \"16:9\",\n \"quality\": \"2K\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1757165031,
"id": "task-unified-1757165031-seedream5flash",
"model": "doubao-seedream-5.0-flash",
"object": "image.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"estimated_time": 20
},
"type": "image",
"usage": {
"billing_rule": "per_image",
"credits_reserved": 1.1016,
"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-flash",
"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-flash "doubao-seedream-5.0-flash"
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 Flash 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.
"Un lac paisible reflétant un magnifique coucher de soleil"
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 :
- Facturation par image, au même prix pour
1K,1.5Ket2K;1.5Ket2Koffrent une meilleure qualité sans supplément - Le format en pixels de
sizeest également facturé par image, sans tarification par paliers de pixels
1K, 1.5K, 2K "2K"
Stratégie d’optimisation de l’invite, permettant de définir le mode d’optimisation
Options :
standard: mode standard
Remarque : Seedream 5.0 Flash ne prend en charge que standard ; fournir fast renvoie 400. Flash génère déjà les images plus rapidement et ne propose pas de mode rapide distinct.
standard "standard"
Liste des URL d’images de référence pour la génération image vers image et la retouche
Remarques :
- Les images de référence sont gratuites
- Jusqu’à
10images d’entrée par requête - Taille de l’image :
30MBmaximum - Formats pris en charge :
.jpeg,.jpg,.png,.webp,.bmp,.tiff,.gif,.heic,.heif - Rapport largeur/hauteur :
[1/16, 16] - La largeur et la hauteur doivent toutes deux être supérieures à
14px - Nombre total de pixels :
[196, 6000×6000] - Les URL des images doivent être directement accessibles au serveur ou déclencher un téléchargement direct à l’ouverture (elles se terminent généralement par une extension d’image telle que
.pngou.jpg)
10[
"https://example.com/image1.png",
"https://example.com/image2.png"
]
Format de l’image de sortie
Options :
png: format PNGjpeg: format JPEG
Remarque : avec background=transparent, la sortie est toujours en png : si output_format est omis, png est sélectionné automatiquement ; la valeur jpeg est refusée.
png, jpeg "jpeg"
Indique s’il faut ajouter un filigrane à l’image générée
false
Réglage du canal de transparence
Options :
opaque: fond opaque classique (par défaut)transparent: conserver le canal alpha existant de l’image d’entrée
transparentconserve le fond transparent déjà présent dans l’image d’entrée ; il ne supprime pas l’arrière-plan.
Restrictions (uniquement pour transparent) :
- Exactement 1 image d’entrée est requise
- L’entrée doit être un PNG comportant au moins un pixel transparent ; webp, jpeg, les autres formats et les PNG sans pixels transparents sont refusés par le modèle (les tâches échouées sont intégralement remboursées)
- La sortie est toujours en png : si
output_formatest omis, png est sélectionné automatiquement ;output_format=jpegest refusé
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-seedream5flash"
Nom du modèle réellement utilisé
"doubao-seedream-5.0-flash"
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