Adobe Photoshop Document Operations API
Create, modify, and inspect PSD documents including layer editing, adjustments, and metadata retrieval.
Create, modify, and inspect PSD documents including layer editing, adjustments, and metadata retrieval.
openapi: 3.1.0
info:
title: Adobe Photoshop Actions Document Operations API
description: A cloud-based REST API that provides programmatic access to Photoshop's image editing capabilities without requiring a local installation. Part of Adobe Firefly Services, the API supports PSD document operations including layer editing, Smart Object replacement, text layer editing, rendition creation, and artboard management. It also provides AI-powered features such as background removal, mask creation, product crop, and depth blur. All operations are asynchronous, returning a polling URL to check job status.
version: 2.0.0
contact:
name: Adobe Developer Support
url: https://developer.adobe.com/
license:
name: Proprietary
url: https://www.adobe.com/legal/terms.html
x-logo:
url: https://www.adobe.com/content/dam/cc/icons/photoshop-appicon-256.png
servers:
- url: https://image.adobe.io
description: Adobe Photoshop API Production
security:
- BearerAuth: []
ApiKeyAuth: []
tags:
- name: Document Operations
description: Create, modify, and inspect PSD documents including layer editing, adjustments, and metadata retrieval.
paths:
/pie/psdService/documentManifest:
post:
operationId: getDocumentManifest
summary: Adobe Photoshop Get PSD Document Manifest
description: Retrieves the manifest (metadata) of a PSD document including the complete layer tree with layer types, names, bounds, visibility, text content, and Smart Object information. Optionally generates layer thumbnails.
tags:
- Document Operations
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DocumentManifestRequest'
responses:
'202':
$ref: '#/components/responses/AsyncJobAccepted'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/pie/psdService/documentOperations:
post:
operationId: modifyDocument
summary: Adobe Photoshop Edit a PSD Document
description: Performs layer-level edits on a PSD document. Supports adding, editing, moving, and deleting layers. Can apply adjustments such as brightness and contrast, modify layer bounds and visibility, edit text layers, and replace Smart Object content. Outputs can be saved as PSD, JPEG, PNG, or TIFF.
tags:
- Document Operations
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DocumentOperationsRequest'
responses:
'202':
$ref: '#/components/responses/AsyncJobAccepted'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'409':
$ref: '#/components/responses/Conflict'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/pie/psdService/documentCreate:
post:
operationId: createDocument
summary: Adobe Photoshop Create a New PSD Document
description: Creates a new PSD document with specified dimensions, resolution, color mode, and bit depth. Layers can be added during creation including image layers, text layers, and adjustment layers.
tags:
- Document Operations
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DocumentCreateRequest'
responses:
'202':
$ref: '#/components/responses/AsyncJobAccepted'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/pie/psdService/artboardCreate:
post:
operationId: createArtboard
summary: Adobe Photoshop Create Artboards from PSD Inputs
description: Creates a PSD document containing multiple artboards from one or more input PSD files.
tags:
- Document Operations
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ArtboardCreateRequest'
responses:
'202':
$ref: '#/components/responses/AsyncJobAccepted'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/RateLimited'
'500':
$ref: '#/components/responses/InternalError'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
schemas:
StorageInput:
type: object
required:
- href
- storage
properties:
href:
type: string
description: Pre-signed GET URL or Creative Cloud asset path.
example: https://image.adobe.io/example
storage:
type: string
enum:
- external
- adobe
- azure
- dropbox
description: Storage type for the input file.
example: external
StorageOutput:
type: object
required:
- href
- storage
- type
properties:
href:
type: string
description: Pre-signed PUT URL or Creative Cloud asset path.
example: https://image.adobe.io/example
storage:
type: string
enum:
- external
- adobe
- azure
- dropbox
description: Storage type for the output file.
example: external
type:
type: string
enum:
- image/jpeg
- image/png
- image/tiff
- vnd.adobe.photoshop
description: Output file format.
example: image/jpeg
width:
type: integer
description: Optional output width in pixels for resizing.
example: 1920
overwrite:
type: boolean
description: Whether to overwrite existing files.
default: true
example: true
ErrorResponse:
type: object
properties:
type:
type: string
description: Error type code.
example: image
title:
type: string
description: Human-readable error description.
example: example_value
code:
type: integer
description: HTTP status code.
example: 1920
details:
type: object
properties:
reason:
type: string
name:
type: string
description: Parameter name causing the error.
DocumentOperationsRequest:
type: object
required:
- inputs
- outputs
properties:
inputs:
type: array
items:
$ref: '#/components/schemas/StorageInput'
options:
type: object
properties:
layers:
type: array
items:
$ref: '#/components/schemas/LayerOperation'
outputs:
type: array
items:
$ref: '#/components/schemas/StorageOutput'
TextContent:
type: object
properties:
content:
type: string
description: Text string content.
example: example_value
orientation:
type: string
enum:
- horizontal
- vertical
example: horizontal
characterStyles:
type: array
items:
type: object
properties:
fontPostScriptName:
type: string
size:
type: number
color:
type: object
properties:
red:
type: integer
green:
type: integer
blue:
type: integer
leading:
type: number
tracking:
type: number
syntheticBold:
type: boolean
syntheticItalic:
type: boolean
underline:
type: boolean
strikethrough:
type: boolean
from:
type: integer
description: Character range start index.
to:
type: integer
description: Character range end index.
paragraphStyles:
type: array
items:
type: object
properties:
alignment:
type: string
enum:
- left
- center
- right
- justify
- justifyLeft
- justifyCenter
- justifyRight
DocumentCreateRequest:
type: object
required:
- options
- outputs
properties:
options:
type: object
required:
- document
properties:
document:
type: object
required:
- width
- height
properties:
width:
type: integer
description: Document width in pixels.
height:
type: integer
description: Document height in pixels.
resolution:
type: integer
default: 72
description: Document resolution in PPI.
fill:
type: string
enum:
- white
- transparent
- backgroundColor
default: white
mode:
type: string
enum:
- rgb
- cmyk
- grayscale
default: rgb
depth:
type: integer
enum:
- 8
- 16
- 32
default: 8
description: Bit depth per channel.
layers:
type: array
items:
$ref: '#/components/schemas/LayerOperation'
outputs:
type: array
items:
$ref: '#/components/schemas/StorageOutput'
DocumentManifestRequest:
type: object
required:
- inputs
properties:
inputs:
type: array
items:
$ref: '#/components/schemas/StorageInput'
options:
type: object
properties:
thumbnails:
type: object
properties:
type:
type: string
enum:
- image/png
- image/jpeg
description: Format for layer thumbnails.
ArtboardCreateRequest:
type: object
required:
- options
- outputs
properties:
options:
type: object
required:
- artboards
properties:
artboards:
type: array
items:
type: object
properties:
name:
type: string
description: Artboard name.
width:
type: integer
description: Artboard width in pixels.
height:
type: integer
description: Artboard height in pixels.
layers:
type: array
items:
$ref: '#/components/schemas/LayerOperation'
outputs:
type: array
items:
$ref: '#/components/schemas/StorageOutput'
LayerOperation:
type: object
properties:
id:
type: integer
description: Layer ID.
example: 1920
name:
type: string
description: Layer name.
example: Example Layer
type:
type: string
enum:
- layer
- textLayer
- smartObject
- adjustmentLayer
- layerSection
description: Layer type.
example: layer
visible:
type: boolean
description: Layer visibility.
example: true
locked:
type: boolean
description: Whether the layer is locked.
example: true
bounds:
$ref: '#/components/schemas/LayerBounds/properties/bounds'
add:
type: object
description: Add this layer relative to another.
properties:
insertAbove:
type: object
properties:
id:
type: integer
insertBelow:
type: object
properties:
id:
type: integer
insertInto:
type: object
properties:
id:
type: integer
insertTop:
type: boolean
insertBottom:
type: boolean
edit:
type: object
description: Edit this existing layer.
move:
type: object
description: Move this layer relative to another.
properties:
insertAbove:
type: object
properties:
id:
type: integer
insertBelow:
type: object
properties:
id:
type: integer
delete:
type: object
description: Delete this layer.
input:
$ref: '#/components/schemas/StorageInput'
adjustments:
type: object
properties:
brightnessContrast:
type: object
properties:
brightness:
type: number
contrast:
type: number
text:
$ref: '#/components/schemas/TextContent'
LayerBounds:
properties:
bounds:
type: object
properties:
top:
type: number
left:
type: number
width:
type: number
height:
type: number
responses:
InternalError:
description: Internal server error.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Forbidden:
description: Insufficient permissions.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Unauthorized:
description: Authentication failed or token expired.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
AsyncJobAccepted:
description: Job accepted for asynchronous processing.
content:
application/json:
schema:
type: object
properties:
_links:
type: object
properties:
self:
type: object
properties:
href:
type: string
description: URL to poll for job status.
BadRequest:
description: Invalid request parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
RateLimited:
description: Rate limit exceeded. Retry after the period in the retry-after header.
headers:
retry-after:
schema:
type: integer
description: Seconds to wait before retrying.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Conflict:
description: File overwrite conflict.
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: OAuth Server-to-Server access token obtained from Adobe IMS at https://ims-na1.adobelogin.com/ims/token/v3 using client_credentials grant type.
ApiKeyAuth:
type: apiKey
in: header
name: x-api-key
description: Your Adobe Developer Console Client ID.
externalDocs:
description: Adobe Photoshop API Documentation
url: https://developer.adobe.com/firefly-services/docs/photoshop/