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": "아름다운 석양을 비추는 고요한 호수",
"size": "16:9",
"quality": "2K"
}
'import requests
url = "https://api.evolink.ai/v1/images/generations"
payload = {
"model": "doubao-seedream-5.0-flash",
"prompt": "아름다운 석양을 비추는 고요한 호수",
"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: '아름다운 석양을 비추는 고요한 호수',
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' => '아름다운 석양을 비추는 고요한 호수',
'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\": \"아름다운 석양을 비추는 고요한 호수\",\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\": \"아름다운 석양을 비추는 고요한 호수\",\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\": \"아름다운 석양을 비추는 고요한 호수\",\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 이미지 생성
- Seedream 5.0 Flash (doubao-seedream-5.0-flash)는 텍스트 기반 이미지 생성, 이미지 기반 생성, 이미지 편집 등 다양한 모드를 지원합니다. 주요 파라미터는 Seedream 5.0 Pro와 같으며, 더 빠르고 저렴하게 이미지를 생성합니다
- 이미지 장당 과금합니다.
1K,1.5K,2K의 단가는 같으며 참조 이미지는 무료입니다 - 비동기 처리 모드, 반환된 작업 ID로 조회
- 생성된 이미지 링크는 24시간 동안 유효하며, 즉시 저장해 주세요
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": "아름다운 석양을 비추는 고요한 호수",
"size": "16:9",
"quality": "2K"
}
'import requests
url = "https://api.evolink.ai/v1/images/generations"
payload = {
"model": "doubao-seedream-5.0-flash",
"prompt": "아름다운 석양을 비추는 고요한 호수",
"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: '아름다운 석양을 비추는 고요한 호수',
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' => '아름다운 석양을 비추는 고요한 호수',
'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\": \"아름다운 석양을 비추는 고요한 호수\",\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\": \"아름다운 석양을 비추는 고요한 호수\",\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\": \"아름다운 석양을 비추는 고요한 호수\",\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"
}
}인증
##모든 API는 Bearer Token 인증이 필요합니다##
API Key 받기:
API Key 관리 페이지를 방문하여 API Key를 받으세요
요청 헤더에 추가:
Authorization: Bearer YOUR_API_KEY
본문
이미지 생성 모델 이름
doubao-seedream-5.0-flash "doubao-seedream-5.0-flash"
생성하려는 이미지를 설명하거나 입력 이미지 편집 방법을 설명하는 프롬프트
지원 언어: 중국어와 영어 외에 Seedream 5.0 Flash는 러시아어, 아랍어, 필리핀어, 태국어, 터키어, 한국어, 말레이어, 스페인어, 포르투갈어, 인도네시아어, 프랑스어, 독일어, 베트남어, 일본어도 지원합니다.
길이 제한: 최대 4000 토큰(중국어 약 2,600자, 영어 약 5,000단어)이며, 초과하면 400을 반환하고 과금되지 않습니다.
권장 사항: 중국어 300자, 영어 600단어 이내를 권장합니다. 제한 내라도 너무 길면 정보가 분산되어 모델이 세부 사항을 놓치고 화면 요소가 누락될 수 있습니다.
"아름다운 석양을 비추는 고요한 호수"
생성 이미지 크기이며 두 가지 형식을 지원합니다:
방법 1 - 비율 형식:
auto,1:1,2:3,3:2,3:4,4:3,4:5,5:4,9:16,16:9,21:9,9:21quality매개변수와 함께 사용하면 픽셀을 직접 지정하지 않아도 해당 비율과 해상도의 이미지가 자동으로 생성됩니다
방법 2 - 픽셀 형식:
- 너비 x 높이, 예:
1024x1024,2048x2048 - 총 픽셀 범위:
[921600, 4624220] - 종횡비 범위:
[1/16, 16] - 너비와 높이는 모두
14px보다 커야 합니다
size를 지정하지 않으면 기본값은 auto입니다. auto는 특정 비율을 지정하지 않는다는 뜻으로, 모델이 프롬프트에 따라 구도를 판단하며 출력 해상도는 quality에서 지정한 등급을 따릅니다.
"16:9"
해상도 등급이며 size의 비율 형식과 함께 사용합니다. 기본값은 1K입니다.
| 비율 | 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 |
과금 안내:
- 이미지 장당 과금하며
1K,1.5K,2K의 단가는 같습니다.1.5K와2K는 추가 요금 없이 더 높은 화질을 제공합니다 size를 픽셀 형식으로 지정해도 이미지 장당 과금하며 픽셀 수에 따른 가격 구분은 없습니다
1K, 1.5K, 2K "2K"
프롬프트 최적화 모드를 설정하는 최적화 전략
옵션:
standard: 표준 모드
참고: Seedream 5.0 Flash는 standard만 지원하며, fast를 전달하면 400을 반환합니다. Flash 자체가 더 빠르게 생성하는 버전이므로 별도의 빠른 모드를 제공하지 않습니다.
standard "standard"
이미지 기반 생성 및 이미지 편집에 사용할 참조 이미지 URL 목록
참고:
- 참조 이미지는 무료입니다
- 요청당 입력 이미지는 최대
10장입니다 - 이미지 크기:
30MB이하 - 지원 형식:
.jpeg,.jpg,.png,.webp,.bmp,.tiff,.gif,.heic,.heif - 가로세로 비율(너비/높이):
[1/16, 16] - 너비와 높이는 모두
14px보다 커야 합니다 - 총 픽셀 수:
[196, 6000×6000] - 이미지 URL은 서버에서 직접 접근할 수 있거나 접근 시 바로 다운로드가 시작되어야 합니다(일반적으로 이러한 URL은
.png,.jpg같은 이미지 확장자로 끝납니다)
10[
"https://example.com/image1.png",
"https://example.com/image2.png"
]
출력 이미지 형식
옵션:
png: PNG 형식jpeg: JPEG 형식
참고: background=transparent이면 출력은 항상 png입니다. output_format을 생략하면 자동으로 png가 적용되며, jpeg를 지정하면 거부됩니다.
png, jpeg "jpeg"
생성된 이미지에 워터마크를 추가할지 여부
false
투명 채널 설정
옵션:
opaque: 일반 불투명 배경(기본값)transparent: 입력 이미지의 기존 투명 채널을 유지합니다
transparent는 입력 이미지에 이미 있는 투명 배경을 유지하는 기능이며, 배경을 제거하는 기능이 아닙니다.
제한 사항(transparent에만 적용):
- 입력 이미지는 정확히 1장이어야 합니다
- 입력은 투명 픽셀이 하나 이상 포함된 PNG여야 합니다. webp, jpeg 등 다른 형식이나 투명 픽셀이 없는 PNG는 모델에서 거부됩니다(실패한 작업은 전액 환불됩니다)
- 출력은 항상 png입니다.
output_format을 생략하면 자동으로 png가 적용되며,output_format=jpeg를 지정하면 거부됩니다
opaque, transparent "opaque"
작업 완료 후 HTTPS 콜백 주소
콜백 타이밍:
- 작업이 완료, 실패 또는 취소될 때 트리거됨
- 과금 확인 완료 후 전송
보안 제한:
- HTTPS 프로토콜만 지원
- 내부 IP 주소로의 콜백 금지 (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x 등)
- URL 길이는
2048자를 초과할 수 없음
콜백 메커니즘:
- 타임아웃:
10초 - 실패 시 최대
3회 재시도 (1초/2초/4초 후 재시도) - 콜백 응답 본문 형식은 작업 조회 API 응답 형식과 동일
- 콜백 주소가 2xx 상태 코드를 반환하면 성공으로 간주, 다른 상태 코드는 재시도를 트리거
"https://your-domain.com/webhooks/image-task-completed"
응답
이미지 생성 작업이 성공적으로 생성되었습니다
작업 생성 타임스탬프
1757165031
작업 ID
"task-unified-1757165031-seedream5flash"
실제 사용된 모델 이름
"doubao-seedream-5.0-flash"
특정 작업 유형
image.generation.task 작업 진행률 (0-100)
0 <= x <= 1000
작업 상태
pending, processing, completed, failed "pending"
비동기 작업 정보
Show child attributes
Show child attributes
작업 출력 유형
text, image, audio, video "image"
사용량 및 과금 정보
Show child attributes
Show child attributes