# Decompose image

Decomposes an image into constituent layers using provided mask images. Returns URLs to the generated layers.

<Callout icon="📘" theme="info">
  ## Get Started with Image API

To use Jasper's Image endpoints, you'll need an API key. Image API access is available for customers on the Jasper Business plan with an API subscription.

**Already a Business customer?** Generate your API key in <Anchor label="Settings → API Tokens" target="_blank" href="https://app.jasper.ai/settings/dev-tools/tokens">Settings → API Tokens</Anchor>.

**New to Jasper?** [Request API access →](https://developers.jasper.ai/docs/request-image-api-access) </Callout>

<a label="LLM friendly version" href="https://developers.jasper.ai/reference/decompose-1.md">LLM friendly version</a>

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "paths": {
    "/v1/image/decompose": {
      "post": {
        "description": "Decomposes an image into constituent layers using provided mask images. Returns URLs to the generated layers.",
        "operationId": "decompose",
        "parameters": [],
        "requestBody": {
          "required": true,
          "description": "Image file upload and mask files upload\n     Size of an image uploaded must not exceed 30MB and resolution must not exceed 16 mega-pixels\n     Size of each mask uploaded must not exceed 30MB and resolution must not exceed 16 mega-pixels\n     All masks must have the same dimensions as the main image\n     At least one mask is required, maximum of 10 masks allowed\n    ",
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "image_file": {
                    "type": "string",
                    "format": "binary",
                    "description": "The main image to be decomposed"
                  },
                  "mask_files": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "format": "binary"
                    },
                    "description": "Array of mask images (1-10 masks)",
                    "minItems": 1,
                    "maxItems": 10
                  },
                  "background_output_format": {
                    "type": "string",
                    "enum": [
                      "jpg",
                      "png",
                      "webp"
                    ],
                    "description": "Optional output format for the background layer"
                  },
                  "layers_output_format": {
                    "type": "string",
                    "enum": [
                      "png",
                      "webp"
                    ],
                    "description": "Optional output format for the decomposed layers"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "The image was successfully decomposed."
          },
          "400": {
            "description": "Bad request. May be missing required inputs or may have badly formatted inputs or options."
          },
          "500": {
            "description": "Internal server error. Unable to decompose image."
          }
        },
        "security": [
          {
            "X-API-Key": []
          },
          {
            "oauth2": [
              "user"
            ]
          }
        ],
        "summary": "Decompose image",
        "tags": [
          "Images"
        ]
      }
    }
  },
  "info": {
    "title": "Jasper API",
    "description": "Jasper API",
    "version": "1.0",
    "contact": {}
  },
  "servers": [
    {
      "url": "https://api.jasper.ai"
    }
  ],
  "components": {
    "securitySchemes": {
      "X-API-Key": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-Key",
        "description": "Workspace authentication using API key tokens in the X-API-Key header."
      },
      "oauth2": {
        "type": "oauth2",
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://api.jasper.ai/oauth2/authorize",
            "tokenUrl": "https://api.jasper.ai/oauth2/token",
            "refreshUrl": "https://api.jasper.ai/oauth2/token",
            "scopes": {
              "user:read": "Read user information",
              "user": "Read and write user information"
            }
          }
        },
        "description": "User-level authentication using OAuth bearer tokens in the Authorization header."
      }
    }
  },
  "x-readme": {
    "metrics-enabled": false
  }
}
```