Adobe Suite Photoshop APIs API

Photoshop APIs for image processing operations

Operations 6

POST /v1/auto-crop Auto crop #
POST /v2/create-artboard Create an artboard #
POST /v2/create-composite Create or edit a composite #
POST /v2/edit Edit an image with various adjustments #
POST /v2/execute-actions Execute Photoshop actions, scripts, and transformations #
POST /v2/generate-manifest Generate a manifest for given input image #

Documentation

📖
Documentation
https://developer.adobe.com/photoshop/api/docs/
📖
Authentication
https://developer.adobe.com/developer-console/docs/guides/authentication/
📖
Documentation
https://developer.adobe.com/lightroom/api/docs/
📖
Documentation
https://developer.adobe.com/illustrator/api/docs/
📖
Documentation
https://developer.adobe.com/indesign/docs/
📖
Documentation
https://developer.adobe.com/document-services/docs/overview/pdf-services-api/
📖
Documentation
https://developer.adobe.com/document-services/docs/overview/pdf-extract-api/
📖
GettingStarted
https://developer.adobe.com/document-services/docs/overview/pdf-extract-api/gettingstarted/
📖
Documentation
https://developer.adobe.com/document-services/docs/overview/pdf-accessibility-auto-tag-api/
📖
Documentation
https://developer.adobe.com/analytics-apis/docs/
📖
APIReference
https://developer.adobe.com/analytics-apis/docs/2.0/
📖
Documentation
https://developer.adobe.com/firefly-services/docs/
📖
APIReference
https://developer.adobe.com/firefly-services/docs/api/
📖
Documentation
https://developer.adobe.com/audio-video-firefly-services/
📖
GettingStarted
https://developer.adobe.com/audio-video-firefly-services/getting-started/
📖
Documentation
https://developer.adobe.com/creative-cloud-libraries/docs/
📖
APIReference
https://developer.adobe.com/creative-cloud-libraries/docs/api/
📖
Documentation
https://developer.adobe.com/express/embed-sdk/docs/guides/
📖
APIReference
https://developer.adobe.com/express/embed-sdk/docs/v4/
📖
GettingStarted
https://developer.adobe.com/express/embed-sdk/docs/guides/quickstart/
📖
Documentation
https://developer.adobe.com/experience-platform-apis/
📖
GettingStarted
https://experienceleague.adobe.com/en/docs/experience-platform/landing/platform-apis/api-guide
📖
Documentation
https://developer.adobe.com/marketo-apis/
📖
Authentication
https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/authentication
📖
Documentation
https://developer.adobe.com/commerce/docs/
📖
GettingStarted
https://developer.adobe.com/commerce/webapi/get-started/
📖
Documentation
https://developer.adobe.com/experience-cloud/cloud-manager/
📖
Documentation
https://developer.adobe.com/journey-optimizer-apis/
📖
Documentation
https://developer.adobe.com/workfront-apis/
📖
Documentation
https://developer.adobe.com/firefly-services/docs/substance3d/
📖
Documentation
https://developer.adobe.com/data-collection-apis/
📖
Documentation
https://developer.adobe.com/adobe-status/
📖
Documentation
https://developer.adobe.com/vip-marketplace/

Specifications

Other Resources

🔗
Pricing
https://developer.adobe.com/document-services/pricing/
🔗
SDKs
https://developer.adobe.com/document-services/docs/overview/pdf-services-api/sdks/
🔗
ReleaseNotes
https://developer.adobe.com/document-services/docs/overview/pdf-services-api/releasenotes
🔗
Guides
https://developer.adobe.com/analytics-apis/docs/2.0/guides/
🔗
Guides
https://developer.adobe.com/firefly-services/docs/guides/
🔗
Usage Notes
https://developer.adobe.com/audio-video-firefly-services/getting_started/usage/
🔗
Overview
https://developer.adobe.com/creative-cloud-libraries/docs/overview/
🔗
Integration Guide
https://developer.adobe.com/creative-cloud-libraries/docs/integrate/
🔗
API Fundamentals
https://experienceleague.adobe.com/en/docs/experience-platform/landing/platform-apis/api-fundamentals
🔗
Developer Guide
https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/home
🔗
REST API
https://experienceleague.adobe.com/en/docs/marketo-developer/marketo/rest/rest-api
🔗
REST API
https://developer.adobe.com/commerce/webapi/rest/
🔗
GraphQL API
https://developer.adobe.com/commerce/webapi/graphql-api/
🔗
REST API Reference
https://developer.adobe.com/commerce/webapi/reference/rest/paas/
🔗
GraphQL
https://raw.githubusercontent.com/api-evangelist/adobe-suite/refs/heads/main/graphql/adobe-suite-graphql.md
🔗
Webhooks
https://developer.adobe.com/experience-cloud/cloud-manager/guides/getting-started/create-event-integration/
🔗
StatusPage
https://status.adobe.com/

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/adobe-suite-photoshop-apis-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

adobe-suite-photoshop-apis-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Photoshop v2 API Server for Adobe Firefly Services.
  license:
    name: Adobe Creative API License
    url: https://www.adobe.com/content/dam/cc/en/legal/terms/enterprise/pdfs/PSLT-AdobeCreativeAPI-WW-2024v2.pdf
  title: Photoshop v2 API endpoints Photoshop APIs API
  version: '2.0'
servers:
- url: https://photoshop-api.adobe.io
  description: Prod server.
security:
- Authorization: []
  X-Api-Key: []
tags:
- description: Photoshop APIs for image processing operations
  name: Photoshop APIs
paths:
  /v1/auto-crop:
    post:
      description: Generates smart crops, subject bounding boxes, and detects objects for an input image. The request is processed asynchronously. Poll GET /v2/status/{jobId} with the returned jobId for completion.
      operationId: autoCrop
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AutoCropRequest'
        required: true
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobAcceptedResponse'
          description: Job accepted for processing
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request - Invalid request payload
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Unauthorized - Invalid or missing access token
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Forbidden - User not authorized or quota exhausted
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Not found - Requested resource was not found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Validation error - Invalid input data
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Too many requests - Rate limit exceeded. When present, Retry-After header (seconds) indicates delay before retrying.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
      servers:
      - description: Production server.
        url: https://image.adobe.io
      summary: Auto crop
      tags:
      - Photoshop APIs
  /v2/create-artboard:
    post:
      operationId: createArtboard
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateArtboardRequest'
        required: true
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobAcceptedResponse'
          description: Job accepted for processing
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request - Invalid request payload
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Unauthorized - Invalid or missing access token
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Forbidden - User not authorized or quota exhausted
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Validation error - Invalid input data
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Too many requests - Rate limit exceeded. When present, Retry-After header (seconds) indicates delay before retrying.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
      summary: Create an artboard
      tags:
      - Photoshop APIs
  /v2/create-composite:
    post:
      operationId: createComposite
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCompositeRequest'
        required: true
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobAcceptedResponse'
          description: Job accepted for processing
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request - Invalid request payload
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Unauthorized - Invalid or missing access token
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Forbidden - User not authorized or quota exhausted
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Validation error - Invalid input data
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Too many requests - Rate limit exceeded. When present, Retry-After header (seconds) indicates delay before retrying.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
      summary: Create or edit a composite
      tags:
      - Photoshop APIs
  /v2/edit:
    post:
      operationId: edit
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EditRequest'
        required: true
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobAcceptedResponse'
          description: Job accepted for processing
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request - Invalid request payload
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Unauthorized - Invalid or missing access token
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Forbidden - User not authorized or quota exhausted
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Validation error - Invalid input data
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Too many requests - Rate limit exceeded. When present, Retry-After header (seconds) indicates delay before retrying.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
      summary: Edit an image with various adjustments
      tags:
      - Photoshop APIs
  /v2/execute-actions:
    post:
      operationId: executeActions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActionsRequest'
        required: true
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobAcceptedResponse'
          description: Job accepted for processing
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request - Invalid request payload
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Unauthorized - Invalid or missing access token
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Forbidden - User not authorized or quota exhausted
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Validation error - Invalid input data
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Too many requests - Rate limit exceeded. When present, Retry-After header (seconds) indicates delay before retrying.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
      summary: Execute Photoshop actions, scripts, and transformations
      tags:
      - Photoshop APIs
  /v2/generate-manifest:
    post:
      operationId: generateManifest
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateManifestRequest'
        required: true
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobAcceptedResponse'
          description: Job accepted for processing
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad request - Invalid request payload
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Unauthorized - Invalid or missing access token
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Forbidden - User not authorized or quota exhausted
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Validation error - Invalid input data
        '429':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Too many requests - Rate limit exceeded. When present, Retry-After header (seconds) indicates delay before retrying.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal server error
      summary: Generate a manifest for given input image
      tags:
      - Photoshop APIs
components:
  schemas:
    FontRgb:
      required:
      - blue
      - green
      - red
      type: object
      description: RGB color values for fonts with 16-bit depth (red, green, blue components).
      allOf:
      - $ref: '#/components/schemas/FontColor'
      - type: object
        properties:
          blue:
            maximum: 32768
            minimum: 0
            type: integer
            description: Blue component value (0-32768). 16-bit unsigned. Defaults to 0 when omitted.
            format: int32
            default: 0
          green:
            maximum: 32768
            minimum: 0
            type: integer
            description: Green component value (0-32768). 16-bit unsigned. Defaults to 0 when omitted.
            format: int32
            default: 0
          red:
            maximum: 32768
            minimum: 0
            type: integer
            description: Red component value (0-32768). 16-bit unsigned. Defaults to 0 when omitted.
            format: int32
            default: 0
    ExportOptions:
      required:
      - mediaType
      type: object
      properties:
        mediaType:
          type: string
          description: Supported media types for output
          enum:
          - image/jpeg
          - image/png
          - image/tiff
          - image/vnd.adobe.photoshop
          - document/vnd.adobe.cpsd+dcxucf
          - document/vnd.adobe.cpsd+dcx
          - application/json
      description: Export options for the image.
      discriminator:
        propertyName: mediaType
    AdditionalFont:
      type: object
      properties:
        source:
          $ref: '#/components/schemas/PortableFileResourceInput'
      description: Array of custom fonts needed in this document. Optional.
    GenerateManifestRequest:
      required:
      - image
      - outputs
      type: object
      properties:
        exportOptions:
          oneOf:
          - $ref: '#/components/schemas/JpegExportOptions'
          - $ref: '#/components/schemas/PngExportOptions'
        extractSmartObjectData:
          type: boolean
          description: Optional. Extract embedded smart objects and include presigned URLs in the manifest. Only applies to embedded (non-linked) smart objects. Default is false.
          example: false
          default: false
        image:
          $ref: '#/components/schemas/Image'
        includeLayerThumbnails:
          type: boolean
          description: Optional. Indicates whether to generate renditions. Default is false.
          example: false
          default: false
        includeXmp:
          type: boolean
          description: Optional. Include the XMP metadata in the response.
          example: false
          default: false
        maximumThumbnailDepth:
          minimum: 0
          type: integer
          description: Optional. Depth for layer renditions. If provided, must be greater than or equal to 0. 0 signifies no limit.
          format: int32
        outputs:
          maxItems: 25
          minItems: 1
          type: array
          description: List of output destinations for the manifest. Required. Maximum of 25 outputs allowed.
          items:
            oneOf:
            - $ref: '#/components/schemas/ManifestJsonOutput'
        trimToTransparency:
          type: boolean
          description: Optional. Trim the layer to remove the transparent pixels.
          example: false
          default: false
    AddAdjustmentLayer:
      required:
      - adjustments
      - operation
      type: object
      description: Adjustment layer for applying image adjustments like brightness, contrast, hue/saturation, etc.
      allOf:
      - $ref: '#/components/schemas/OperationBase'
      - type: object
        properties:
          adjustments:
            oneOf:
            - $ref: '#/components/schemas/BrightnessContrastAdjustments'
            - $ref: '#/components/schemas/ColorBalanceAdjustments'
            - $ref: '#/components/schemas/ExposureAdjustments'
            - $ref: '#/components/schemas/HueSaturationAdjustments'
          blendOptions:
            $ref: '#/components/schemas/BlendOptions'
          isClipped:
            type: boolean
            description: Whether the layer is clipped. Defaults to false when adding layers.
          isVisible:
            type: boolean
            description: Whether the layer is visible. Defaults to true when adding layers. Optional for edits.
          pixelMask:
            $ref: '#/components/schemas/PixelMask'
          protection:
            type: array
            description: Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.
            items:
              type: string
              description: Protection flag for layer. Used in protection array.
              enum:
              - none
              - all
              - transparency
              - composite
              - position
              - artboard_autonest
          transform:
            $ref: '#/components/schemas/Transform'
          transformMode:
            type: string
            description: 'Transform mode applied to the layer. Defaults to ''none'' when adding layers. Optional for edits. Modes: ''none'' — applies no scaling. ''fit'' — scales the layer uniformly to fit within the canvas bounds while preserving aspect ratio. ''fill'' — scales the layer uniformly to fill the canvas bounds while preserving aspect ratio, cropping overflow if the layer''s aspect ratio differs from the canvas. ''custom'' — applies the exact width and height from the Transform without preserving aspect ratio. Important for text layers: Any mode other than ''none'' (or any non-identity scale on the Transform) causes the type engine to render glyphs and leading multiplied by the layer''s scale factors. fontSize and lineHeight in CharacterStyle are stored unscaled. The rendered output becomes: fontSize x horizontalScale and lineHeight x verticalScale. To produce text at exact pixel sizes, use transformMode ''none'' and avoid scaling Transforms on text layers.'
            enum:
            - fit
            - fill
            - custom
            - none
          type:
            type: string
            description: Layer type enum
            enum:
            - layer
            - solid_color_layer
            - text_layer
            - smart_object_layer
            - adjustment_layer
            - group_layer
            - background_layer
    ResourceInput:
      type: object
      description: 'Source for the UXP script. Can be external file reference or inline script content. UXP scripts can use the placeholder `__UXP_OUTPUT_PATH__` which will be replaced at runtime with the directory path for script output files. Example usage: `const outputPath = ''__UXP_OUTPUT_PATH__''; const outputFile = path.join(outputPath, ''uxpOutput.json'');`'
    CreativeCloudFileIdResourceInput:
      required:
      - creativeCloudFileId
      type: object
      description: Creative Cloud file ID resource input. References a resource via Creative Cloud file ID (URN).
      allOf:
      - $ref: '#/components/schemas/ResourceInput'
      - type: object
        properties:
          creativeCloudFileId:
            pattern: ^urn:aaid:.*
            type: string
            description: The file ID of the asset in Creative Cloud. Required. Must start with 'urn:aaid' (case-insensitive).
    Crop:
      required:
      - bounds
      type: object
      properties:
        bounds:
          $ref: '#/components/schemas/Bounds'
        hide:
          type: boolean
          description: When true, hides pixels outside the crop bounds (non-destructive). When false, permanently deletes pixels outside the crop bounds (destructive). Defaults to false.
      description: Options for cropping a document, specifying the bounds to crop to.
    BaseAdjustment:
      required:
      - type
      type: object
      properties:
        type:
          type: string
          description: 'Adjustment type. Allowed values: hue_saturation, brightness_contrast, exposure, color_balance'
          enum:
          - hue_saturation
          - brightness_contrast
          - exposure
          - color_balance
      description: Adjustment settings to apply. Must specify exactly one adjustment type (brightness_contrast, hue_saturation, exposure, or color_balance).
      discriminator:
        propertyName: type
    LrJpegOutput:
      required:
      - destination
      - mediaType
      type: object
      allOf:
      - $ref: '#/components/schemas/LightroomOutput'
      - type: object
        properties:
          quality:
            type: string
            description: JPEG quality levels
            enum:
            - very_poor
            - poor
            - low
            - medium
            - high
            - maximum
            - photoshop_max
    JpegOutput:
      required:
      - destination
      - mediaType
      type: object
      allOf:
      - $ref: '#/components/schemas/PhotoshopOutput'
      - type: object
        properties:
          quality:
            type: string
            description: JPEG quality levels
            enum:
            - very_poor
            - poor
            - low
            - medium
            - high
            - maximum
            - photoshop_max
    CharacterStyle:
      type: object
      properties:
        autoLeading:
          type: boolean
          description: When true, line height is calculated automatically based on the font size. When false, custom lineHeight is applied. Optional.
          default: false
        capsOption:
          type: string
          description: Text capitalization option
          enum:
          - normal_caps
          - small_caps
          - all_caps
          - all_small_caps
        font:
          $ref: '#/components/schemas/Font'
        fontAlpha:
          maximum: 1
          minimum: 0
          type: number
          description: Font alpha/transparency value. Optional. Default is 1.0.
          format: double
        fontColor:
          oneOf:
          - $ref: '#/components/schemas/FontCmyk'
          - $ref: '#/components/schemas/FontGray'
          - $ref: '#/components/schemas/FontLab'
          - $ref: '#/components/schemas/FontRgb'
        fontSize:
          type: number
          description: Font size in pixels. Optional. Default is 30.
          format: double
        letterSpacing:
          type: number
          description: Letter spacing in pixels. Optional. Default is 0.
          format: double
        lineHeight:
          type: number
          description: 'Line height (leading) in pixels. Optional. This value represents the unscaled leading stored on the character style. If the text layer carries a non-identity transform, for example because the bounding box was resized in Photoshop, the rendered leading becomes lineHeight x the layer''s vertical scale factor. To get exact rendered pixel leading, ensure the layer has no residual scaling (transformMode: none with no scaling Transform applied), or pre-divide the desired rendered leading by the layer''s current vertical scale. The same scaling behavior applies to fontSize.'
          format: double
          default: 36
        syntheticBold:
          type: boolean
          description: Whether to apply synthetic bold. Optional. Default is false.
        syntheticItalic:
          type: boolean
          description: Whether to apply synthetic italic. Optional. Default is false.
        underline:
          type: boolean
          description: Whether to apply underline. Optional. Default is false.
      description: Character-level styling properties for text.
    CreateArtboardRequest:
      required:
      - images
      - outputs
      type: object
      properties:
        artboardSpacing:
          type: integer
          description: Horizontal spacing in pixels between each artboard. Defaults to 50. Optional.
          format: int32
        images:
          maxItems: 25
          minItems: 1
          type: array
          description: List of input images for the artboard. Each image must have a source with an external file reference (URL, Creative Cloud file ID, or Creative Cloud path). Required.
          items:
            $ref: '#/components/schemas/ArtboardImageInput'
        outputs:
          maxItems: 25
          minItems: 1
          type: array
          description: List of output asset details. Each output specifies destination and output options. Maximum of 25 outputs allowed.
          items:
            oneOf:
            - $ref: '#/components/schemas/JpegOutput'
            - $ref: '#/components/schemas/JsonOutput'
            - $ref: '#/components/schemas/PngOutput'
            - $ref: '#/components/schemas/PsdOutput'
            - $ref: '#/components/schemas/PsdcOutput'
            - $ref: '#/components/schemas/TiffOutput'
    ErrorResponse:
      type: object
      properties:
        error_code:
          type: string
          description: The error code for this specific validation error
        errors:
          type: array
          description: List of detailed validation errors when multiple errors occur. This field is optional and only populated when there are multiple validation errors.
          items:
            $ref: '#/components/schemas/ValidationError'
        message:
          type: string
          description: Human-readable string describing this specific validation error
      description: 'Error response containing error code, message, and optional list of validation errors.


        Error Code Reference:

        | Error Code                    | Message                             |

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

        |                               |                                     |

        | 401013                        | Oauth token is not valid            |

        | validation_error              | Validation failed                   |

        | unsupported_method            | Method not allowed                  |

        | invalid_content_type          | Unsupported media type              |

        | unknown_job_id                | Job not found                       |

        | unauthorized_forbidden        | The quota for the calling user has exhausted OR

        |                               | The Service is experiencing high traffic. please retry after a brief wait OR

        |                               | The user is not entitled to call this service OR

        |                               | The user is currently blocked by the admin OR

        |                               | The user is having an invalid subscription OR

        |                               | The user is blocked due to a violation OR

        |                               | The user is having an invalid scope |

        | unauthorized_legal_reasons    | The user is unauthorised due to geo ip blocking failure OR

        |                               | The user is unauthorised due to user profile region failure from floodgate |

        | unauthorized_rate_limited     | The user is unauthorised due to rate limit. When present, Retry-After header (seconds) indicates delay before retrying. |

        | runtime_error                 | There was a problem while attempting to perform the operation. Please try again. |

        | invalid_json                  | The request payload is having invalid JSON (fallback) |

        '
    JpegExportOptions:
      required:
      - mediaType
      type: object
      description: Jpeg Export options for the image.
      allOf:
      - $ref: '#/components/schemas/ExportOptions'
      - type: object
        properties:
          quality:
            type: string
            description: JPEG quality levels
            enum:
            - very_poor
            - poor
            - low
            - medium
            - high
            - maximum
            - photoshop_max
    EditSolidColorLayer:
      required:
      - operation
      type: object
      description: Fill layer for editing solid color layer.
      allOf:
      - $ref: '#/components/schemas/OperationBase'
      - type: object
        properties:
          blendOptions:
            $ref: '#/components/schemas/BlendOptions'
          fill:
            $ref: '#/components/schemas/Fill'
          isClipped:
            type: boolean
            description: Whether the layer is clipped. Optional for edits.
          isVisible:
            type: boolean
            description: Whether the layer is visible. Defaults to true when adding layers. Optional for edits.
          pixelMask:
            $ref: '#/components/schemas/EditPixelMask'
          protection:
            type: array
            description: Protection flags for the layer (e.g. none, all, transparency, composite, position, artboard_autonest). Defaults to 'none' when adding layers. Optional for edits; omit, null, or empty array [] mean 'don't change'. When 'none' or 'all' is used, the array must contain only that element.
            items:
              type: string
              description: Protection flag for layer. Used in protection array.
              enum:
              - none
              - all
              - transparency
              - composite
              - position
              - artboard_autonest
          transform:
            $ref: '#/components/schemas/Transform'
          transformMode:
            type: string
            description: 'Transform mode applied to the layer. Defaults to ''none'' when adding layers. Optional for edits. Modes: ''none'' — applies no scaling. ''fit'' — scales the layer uniformly to fit within the canvas bounds while preserving aspect ratio. ''fill'' — scales the layer uniformly to fill the canvas bounds while preserving aspect ratio, cropping overflow if the layer''s aspect ratio differs from the canvas. ''custom'' — applies the exact width and height from the Transform without preserving aspect ratio. Important for text layers: Any mode other than ''none'' (or any non-identity scale on the Transform) causes the type engine to render glyphs and leading multiplied by the layer''s scale factors. fontSize and lineHeight in CharacterStyle are stored unscaled. The rendered output becomes: fontSize x horizontalScale and lineHeight x verticalScale. To produce text at exact pixel sizes, use transformMode ''none'' and avoid scaling Transforms on text layers.'
            enum:
            - fit
            - fill
            - custom
            - none
          type:
            type: string
            description: Layer type enum
            enum:
            - layer
            - solid_color_layer
            - text_layer
            - smart_object_layer
            - adjustment_layer
            - group_layer
            - background_layer
    PortableFileResourceInput:
      type: object
      description: External file reference. Must be a URL, Creative Cloud path, or Creative Cloud file ID. Lightroom resources are not supported.
      oneOf:
      - $ref: '#/components/schemas/UrlResourceInput'
      - $ref: '#/components/schemas/CreativeCloudResourceInput'
      - $ref: '#/components/schemas/CreativeCloudFileIdResourceInput'
    PatternResource:
      required:
      - source
      type: object
      properties:
        source:
          $ref: '#/components/schemas/PortableFileResourceInput'
      description: External pattern file reference. Requires source (URL, Creative Cloud path, or Creative Cloud file ID). Inline content is not supported.
    JsonOutput:
      required:
      - destination
      - mediaType
      type: object
      description: JSON output configuration
      allOf:
      - $ref: '#/components/schemas/PhotoshopOutput'
    ImageSource:
      required:
      - source
      type: object
      properties:
        source:
          $ref: '#/components/schemas/FileResourceInput'
      description: The image input for the actions operation. Required.
    Operation:
      required:
      - type
      type: object
      properties:
        type:
          type: string
          description: Operation type enum
          enum:
          - add
          - edit
         

# --- truncated at 32 KB (135 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/adobe-suite/refs/heads/main/openapi/adobe-suite-photoshop-apis-api-openapi.yml