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.5-layerize",
"image_urls": [
"https://example.com/poster.png"
],
"quality": "auto",
"output_format": "png",
"n": 30,
"model_params": {
"text_recognition": true
}
}
'{
"created": 1757165031,
"id": "task-unified-1793612934-seedream55layerize",
"model": "doubao-seedream-5.5-layerize",
"object": "image.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"estimated_time": 150
},
"type": "image",
"usage": {
"billing_rule": "per_image",
"credits_reserved": 55.624,
"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.5-layerize",
"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.5
Seedream 5.5 Layer Decomposition
- Seedream 5.5 Layer Decomposition (doubao-seedream-5.5-layerize) separates an image into a base image and independent layers
- Provide
1input image.promptis optional; when omitted, the model automatically identifies and separates the main elements - Use
nto set the maximum output count andmodel_params.text_recognitionto enable text recognition - Processing is asynchronous. Use the returned task ID to query task status
- Generated image links are valid for 24 hours, please save them promptly
Output details
output_formatsets the base image format. Independent layers are always PNG images with an alpha channel- Each image in
result_dataincludesz_index(stacking order:0for the base image, increasing from1for layers) andbackground(opaquefor the base image,transparentfor layers). Layers also includebounding_box(absoluteuses pixel coordinates in the base-image coordinate system;normalizedranges from0to1000),nameanddescription - If any layer fails, the entire task fails with a full refund. Partial results are not returned
Billing
- The base image and each layer are billed individually. The input image is charged separately
- Task creation reserves credits for
1input image and up tonoutput images. On completion, billing is settled against the actual output count and unused credits are returned automatically
POST
/
v1
/
images
/
generations
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.5-layerize",
"image_urls": [
"https://example.com/poster.png"
],
"quality": "auto",
"output_format": "png",
"n": 30,
"model_params": {
"text_recognition": true
}
}
'{
"created": 1757165031,
"id": "task-unified-1793612934-seedream55layerize",
"model": "doubao-seedream-5.5-layerize",
"object": "image.generation.task",
"progress": 0,
"status": "pending",
"task_info": {
"can_cancel": true,
"estimated_time": 150
},
"type": "image",
"usage": {
"billing_rule": "per_image",
"credits_reserved": 55.624,
"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.5-layerize",
"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"
}
}Authorizations
##All APIs require Bearer Token authentication##
Get API Key:
Visit API Key Management Page to get your API Key
Add to request header:
Authorization: Bearer YOUR_API_KEY
Body
application/json
URL of the image to decompose (required)
Note:
- Exactly
1image is required; omitting it or passing2or more returns an error - Supported formats:
.png,.jpeg,.jpg(stricter than plain generation — webp and others are rejected) - Image size: no more than
30MB - Total pixels:
[262144, 6000×6000], i.e. at least512×512(a higher lower bound than plain generation) - Aspect ratio (width/height) range:
[1/16, 16] - The image URL must be directly viewable by the server, or the URL must trigger a direct download when accessed (usually such URLs end with an image file extension, such as
.png,.jpg) - The input image is charged separately
Required array length:
1 elementExample:
["https://example.com/poster.png"]
Which elements to split out (optional)
Three ways to use it:
- Omit it: the model detects every major element in the image and splits them one by one
- Natural language: e.g.
Split out the parrot and the title text— elements are identified semantically and turned into layers - Exact coordinates: use
<bbox>tags to pin down a position, e.g.title text<bbox>179 58 809 197</bbox>; normalized coordinates (0~1000) are recommended
Example:
"Split out the parrot and the title text"
Maximum number of output images, including the base image. Defaults to 30.
Details:
- Allowed range:
2to100. Values outside this range return400with no charge - Decomposition stops at this limit; remaining elements may be merged or omitted. A larger value allows finer separation
- A larger
nreserves more credits. On completion, billing is settled against the actual output count and unused credits are returned automatically
Required range:
2 <= x <= 100Example:
30
Output resolution. Defaults to auto.
Options: auto, 1K, 1.5K, 2K
Notes:
- Only the resolution options above are supported. Passing an aspect ratio (such as
16:9) or pixel dimensions (such as2048x2048) returns an error automakes the output follow the input image: if the original size falls within[921600, 4624220]pixels it is kept as is, below 1K it is output at 1K, above 2K it is output at 2K- Each layer keeps its own aspect ratio from the original image, and the base image keeps the aspect ratio of the input
Available options:
auto, 1K, 1.5K, 2K Example:
"auto"
HTTPS callback address after task completion
Callback Timing:
- Triggered when task is completed, failed, or cancelled
- Sent after billing confirmation is completed
Security Restrictions:
- Only HTTPS protocol is supported
- Callback to internal IP addresses is prohibited (127.0.0.1, 10.x.x.x, 172.16-31.x.x, 192.168.x.x, etc.)
- URL length must not exceed
2048characters
Callback Mechanism:
- Timeout:
10seconds - Maximum
3retries on failure (retries after1second/2seconds/4seconds) - Callback response body format is consistent with the task query API response format
- Callback address returning 2xx status code is considered successful, other status codes will trigger retry
Example:
"https://your-domain.com/webhooks/image-task-completed"
Response
Image generation task created successfully