Export Layers Migration Guide
Overview
This guide describes how to migrate exporting one or more layers from a document to the V2 /v2/create-composite endpoint: schema changes, enum support for single-layer export, PSD support (single-layer only; multi-layer does not support PSD as of now), default quality and compression, and sample V1/V2 requests.
Key differences (single-layer vs multi-layer export)
- Single-layer export – One layer in
output.layers; export that layer's pixels. Supports JPEG, PNG, TIFF, and PSD. - Multi-layer export – Two or more layers in
output.layers; composite those layers to one raster file. Supports JPEG, PNG, and TIFF only. PSD is not supported for multi-layer export as of now.
Enum support (V2)
Crop mode (cropMode)
Controls the output bounding box for exported content. Supported for single-layer, multi-layer, and document export, with one restriction: layer_bounds is only valid for single-layer export.
layer_boundstrim_to_transparencydocument_boundsdata-variant=info
data-slots=text
layer_bounds with multi-layer or document export returns a validation error. Use trim_to_transparency or document_bounds instead.Media type (mediaType)
For single-layer export, V2 supports: image/jpeg, image/png, image/tiff, image/vnd.adobe.photoshop (PSD). See Output Types Migration for full enum details.
Defaults when exporting layers
- JPEG quality (when omitted):
photoshop_max. Allowed values:very_poor,poor,low,medium,high,maximum,photoshop_max. - PNG compression (when omitted):
default(level 6); you can also setmedium,maximum, etc. See Output Types Migration – PNG.
ICC profile support for layer export
Both single-layer and multi-layer exports support the optional iccProfile field on the output. This enables ICC color space conversion (e.g., sRGB, Adobe RGB, grayscale, or custom profiles) when exporting specific layers.
- Works with supported layer export formats that support ICC: JPEG, TIFF, PSD for single-layer; JPEG, TIFF for multi-layer (PNG does not support ICC profiles)
- Each output in a request can have its own independent
iccProfile - Mixed outputs are supported: some with
iccProfile, some without, in the same request - Supports both standard and custom ICC profiles (see ICC Profile Migration for full schema details)
Example: single-layer export with ICC profile
{
"outputs": [{
"destination": {"url": "https://example.com/out.tif"},
"mediaType": "image/tiff",
"layers": [{"id": 1096}],
"iccProfile": {
"type": "standard",
"name": "sRGB IEC61966-2.1"
}
}]
}
Example: multi-layer export with ICC profile
{
"outputs": [{
"destination": {"url": "https://example.com/out.jpg"},
"mediaType": "image/jpeg",
"layers": [{"id": 1096}, {"id": 996}],
"quality": "high",
"iccProfile": {
"type": "standard",
"name": "Adobe RGB (1998)"
}
}]
}
Sample: single-layer export
V1 (example)
curl -X POST "https://image.adobe.io/pie/psdService/renditionCreate" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "x-api-key: $apiKey" \
-H "Content-Type: application/json" \
-d '{
"inputs": [{"href": "https://my-bucket.s3.amazonaws.com/input.psd", "storage": "external"}],
"outputs": [{
"href": "https://my-bucket.s3.amazonaws.com/out.png",
"storage": "external",
"type": "image/png",
"layers": [{"id": 1096}],
"compression": "medium"
}]
}'
V2 (example)
curl -X POST "https://photoshop-api.adobe.io/v2/create-composite" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "x-api-key: $apiKey" \
-H "Content-Type: application/json" \
-d '{
"image": {"source": {"url": "https://my-bucket.s3.amazonaws.com/input.psd"}},
"outputs": [{
"destination": {"url": "https://my-bucket.s3.amazonaws.com/out.png"},
"mediaType": "image/png",
"layers": [{"id": 1096}],
"cropMode": "trim_to_transparency",
"compression": "medium"
}]
}'
Schema changes (single-layer): inputs[].href → image.source.url; outputs[].href → outputs[].destination.url; outputs[].type → outputs[].mediaType; outputs[].layers remains per output. Optional in V2: cropMode, quality / compression as string enums.
Layer identifier: mutually exclusive. Each entry in
outputs[].layers[]must use eitheridorname— not both. V1 tolerated both fields together as disambiguation hints; V2 rejects the payload with:"Each layer reference must contain exactly one of id or name (not both)."Preferidwhen present; dropname.
V1
outputs[].layers[]withvisiblefield: Some V1renditionCreate/documentOperationspayloads includedoutputs[].layers[]entries with{id, visible: true}to select which layers appear in the composite export. Map these to V2outputs[].layers[]as[{id: N}, ...]— this triggers multi-layer composite export. Do not move them toedits.layers[](that path requirestype+operationand performs layer edits, not export selection).
Sample: multi-layer export
V1 (example)
curl -X POST "https://image.adobe.io/pie/psdService/renditionCreate" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "x-api-key: $apiKey" \
-H "Content-Type: application/json" \
-d '{
"inputs": [{"href": "https://my-bucket.s3.amazonaws.com/input.psd", "storage": "external"}],
"outputs": [{
"href": "https://my-bucket.s3.amazonaws.com/out.jpg",
"storage": "external",
"type": "image/jpeg",
"layers": [{"id": 1096}, {"id": 996}],
"quality": 7
}]
}'
V2 (example)
curl -X POST "https://photoshop-api.adobe.io/v2/create-composite" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "x-api-key: $apiKey" \
-H "Content-Type: application/json" \
-d '{
"image": {"source": {"url": "https://my-bucket.s3.amazonaws.com/input.psd"}},
"outputs": [{
"destination": {"url": "https://my-bucket.s3.amazonaws.com/out.jpg"},
"mediaType": "image/jpeg",
"layers": [{"id": 1096}, {"id": 996}],
"quality": "maximum",
"cropMode": "trim_to_transparency"
}]
}'
Schema changes (multi-layer): Same as above. Note: Multi-layer export does not support PSD as of now; use mediaType: image/jpeg, image/png, or image/tiff only. cropMode supports trim_to_transparency and document_bounds (not layer_bounds). Use string enums for quality (e.g. maximum, photoshop_max) and compression for PNG.
Migration checklist for export layers
- Use
outputs[].destination.url,outputs[].mediaType, andoutputs[].layers(V2 shape). - For multi-layer export, do not request PSD; use JPEG, PNG, or TIFF.
-
cropModetrim_to_transparencyanddocument_boundswork for all export types;layer_boundsis single-layer only. - Use string enums for
quality(JPEG) andcompression(PNG); omit for defaults (photoshop_max/default). -
iccProfileis optional on layer exports — add if you need color space conversion (see ICC Profile Migration).
Related guides
- Output Types Migration – JPEG quality and PNG compression enums, media types, and structural changes for all outputs
- ICC Profile Migration – ICC profile schema, standard/custom profiles, and format support
- Layer Operations Overview – Introduction to layer operations in V2
- Composite Migration – Create-composite endpoint and layer operations
- Migration Overview – Full V1 to V2 migration overview
Last Updated: March 2026