> ## Documentation Index
> Fetch the complete documentation index at: https://docs.goenhance.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Seedream 5.0 Pro Layers

> Split one image into a base image plus up to 16 independently editable layers. Every layer is a transparent PNG, and each comes back with the coordinates you need to put it back together.

Pass exactly one image in `image_list`. `prompt` is optional — leave it out for an automatic split.

#### Reading the result

Each item in the result carries:

- `z_index` — 0 is the base image; layers ascend from 1
- `bounding_box.absolute` — `[left, top, right, bottom]` in the base image's pixels
- `bounding_box.normalized` — the same box on a 0-1000 scale, for any canvas size
- `name` and `description` — what the layer contains

Sort by `z_index`, then place each layer using its bounding box to restore or recompose the artwork.

#### Pricing

| Tier | Tokens | USD |
|---|---|---|
| 1K, 1.5K or auto | 14.66 | $0.2932 |
| 2K | 15.53 | $0.3106 |

Charged per request, not per image. The model decides how many layers to produce, so a request is billed as one base image plus 16 layers regardless of how many come back. Layers are billed at half the rate of a normal image, which is why a split costs far less than 17 separate generations.

Returns an `img_uuid`; poll GET /api/v1/jobs/detail (or use `custom_callback_url`) to get the generated image.



## OpenAPI

````yaml api-reference/image-api/openapi-seedream-5-pro-layers.json POST /api/v1/images/generations
openapi: 3.1.0
info:
  title: GoEnhance API - Seedream 5.0 Pro
  description: Seedream 5.0 Pro
  version: 1.0.0
servers:
  - url: https://api.goenhance.ai
security: []
paths:
  /api/v1/images/generations:
    post:
      tags:
        - ImageAPI
      summary: Seedream 5.0 Pro Layers
      description: >-
        Split one image into a base image plus up to 16 independently editable
        layers. Every layer is a transparent PNG, and each comes back with the
        coordinates you need to put it back together.


        Pass exactly one image in `image_list`. `prompt` is optional — leave it
        out for an automatic split.


        #### Reading the result


        Each item in the result carries:


        - `z_index` — 0 is the base image; layers ascend from 1

        - `bounding_box.absolute` — `[left, top, right, bottom]` in the base
        image's pixels

        - `bounding_box.normalized` — the same box on a 0-1000 scale, for any
        canvas size

        - `name` and `description` — what the layer contains


        Sort by `z_index`, then place each layer using its bounding box to
        restore or recompose the artwork.


        #### Pricing


        | Tier | Tokens | USD |

        |---|---|---|

        | 1K, 1.5K or auto | 14.66 | $0.2932 |

        | 2K | 15.53 | $0.3106 |


        Charged per request, not per image. The model decides how many layers to
        produce, so a request is billed as one base image plus 16 layers
        regardless of how many come back. Layers are billed at half the rate of
        a normal image, which is why a split costs far less than 17 separate
        generations.


        Returns an `img_uuid`; poll GET /api/v1/jobs/detail (or use
        `custom_callback_url`) to get the generated image.
      parameters:
        - name: Authorization
          in: header
          description: ''
          required: false
          example: '{{Authorization}}'
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                model:
                  type: string
                  enum:
                    - seedream-5-pro-layers
                  description: Model name. Must be `seedream-5-pro-layers`.
                prompt:
                  type: string
                  minLength: 1
                  maxLength: 2000
                  description: >-
                    Optional. Leave it out and the model finds and splits the
                    main elements on its own. Provide it to name the elements to
                    split, in plain language or with `<bbox>` coordinates.
                image_size:
                  type: string
                  enum:
                    - 1K
                    - 1.5K
                    - 2K
                    - auto
                  default: auto
                  description: >-
                    Output tier. `auto` follows the input image's size. Only
                    tier names are accepted here — pixel values such as
                    2048x2048 are rejected.
                image_list:
                  type: array
                  items:
                    type: object
                    properties:
                      url:
                        type: string
                        format: uri
                    required:
                      - url
                  description: The single image to split. Exactly one image is required.
                  minItems: 1
                  maxItems: 1
                output_format:
                  type: string
                  enum:
                    - png
                    - jpeg
                  default: jpeg
                  description: >-
                    Output file format. This only affects the base image — every
                    layer is always a transparent png.
                custom_callback_url:
                  type: string
                  format: uri
                  description: >-
                    Optional. A publicly accessible HTTPS URL. When the task
                    status changes (processing / success / failed), GoEnhance
                    sends a POST request to this URL. The request body is
                    identical to the response of GET /api/v1/jobs/detail. If
                    your server does not respond with HTTP 200, the notification
                    is retried up to 3 times, with a 3-second timeout per
                    attempt.
                  example: https://your-server.com/goenhance/callback
              required:
                - model
                - image_list
            example:
              model: seedream-5-pro
              prompt: A serene Japanese garden at dawn, soft light
              image_size: 2K
              ratio: '16:9'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                  data:
                    type: object
                    properties:
                      img_uuid:
                        type: string
                      cost:
                        type: number
                        description: >-
                          Tokens deducted for this request. This is the amount
                          actually charged, so it already reflects any discount
                          active on your account and can be lower than the
                          listed price. Tokens are deducted when the task is
                          accepted, and refunded automatically if the generation
                          ends in failure.
                        example: 5.82
                    required:
                      - img_uuid
                      - cost
                required:
                  - code
                  - msg
                  - data
              examples:
                '1':
                  summary: Success
                  value:
                    code: 0
                    msg: Success
                    data:
                      img_uuid: c12b656c-747a-44fd-9c80-add79b0c52d5
                      cost: 5.82
                '2':
                  summary: Insufficient tokens
                  value:
                    code: 100
                    msg: tokens is not enough
                quota:
                  summary: API key quota exceeded
                  value:
                    code: 101
                    msg: 'API key quota exceeded: 4990 of 5000 tokens used (monthly)'
          headers: {}
        '401':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                  msg:
                    type: string
                required:
                  - code
                  - msg
          headers: {}
      deprecated: false
      security: []

````