Submit a text-layer edit job and poll until it succeeds or fails.
Submits a text-edit job that replaces the content of a named text layer in a PSD, polls the job status to completion, and returns the edited output URL on success.
Submit the text-edit job referencing the source PSD, the output target, and the new content for the named text layer. The API queues the job and returns a job id.
arazzo: 1.0.1
info:
title: Adobe Photoshop Edit Text Layers
summary: Submit a PSD text-layer edit job, poll until it finishes, and return the edited output URL.
description: >-
Edits the content of a named text layer within a PSD document using the
Adobe Photoshop API, then renders the modified document to an output file.
The workflow submits a text-edit job referencing the source PSD, an output
location, and the new text content for a target layer, polls the job status
endpoint until the job reaches a terminal state, and branches on the result
to return either the edited output URL or the error details. Every step
spells out its request inline so the flow can be read and executed without
opening the underlying OpenAPI description.
version: 1.0.0
sourceDescriptions:
- name: statusApi
url: ../openapi/adobe-creative-suite-status-api-openapi.yml
type: openapi
- name: textApi
url: ../openapi/adobe-creative-suite-text-api-openapi.yml
type: openapi
workflows:
- workflowId: edit-text-layers
summary: Submit a text-layer edit job and poll until it succeeds or fails.
description: >-
Submits a text-edit job that replaces the content of a named text layer in a
PSD, polls the job status to completion, and returns the edited output URL on
success.
inputs:
type: object
required:
- inputHref
- inputStorage
- outputHref
- outputStorage
- outputType
- layerName
- textContent
properties:
inputHref:
type: string
description: URL or path of the source PSD in cloud storage.
inputStorage:
type: string
description: Cloud storage provider of the input (adobe, external, azure, or dropbox).
outputHref:
type: string
description: URL or path where the edited output should be written.
outputStorage:
type: string
description: Cloud storage provider of the output.
outputType:
type: string
description: MIME type of the output file (e.g. image/vnd.adobe.photoshop).
layerName:
type: string
description: Name of the text layer to edit.
textContent:
type: string
description: New text content for the target layer.
steps:
- stepId: submitTextEdit
description: >-
Submit the text-edit job referencing the source PSD, the output target, and
the new content for the named text layer. The API queues the job and
returns a job id.
operationId: editTextLayers
requestBody:
contentType: application/json
payload:
inputs:
- href: $inputs.inputHref
storage: $inputs.inputStorage
outputs:
- href: $inputs.outputHref
storage: $inputs.outputStorage
type: $inputs.outputType
options:
layers:
- name: $inputs.layerName
text:
content: $inputs.textContent
successCriteria:
- condition: $statusCode == 202
outputs:
jobId: $response.body#/jobId
- stepId: pollStatus
description: >-
Poll the job status, repeating while it is pending or running and branching
once it succeeds or fails.
operationId: getJobStatus
parameters:
- name: jobId
in: path
value: $steps.submitTextEdit.outputs.jobId
successCriteria:
- condition: $statusCode == 200
outputs:
status: $response.body#/status
onSuccess:
- name: jobSucceeded
type: goto
stepId: reportSuccess
criteria:
- context: $response.body
condition: $.status == "succeeded"
type: jsonpath
- name: jobFailed
type: goto
stepId: reportFailure
criteria:
- context: $response.body
condition: $.status == "failed"
type: jsonpath
- name: stillRunning
type: retry
stepId: pollStatus
retryAfter: 5
retryLimit: 30
criteria:
- context: $response.body
condition: $.status == "pending" || $.status == "running"
type: jsonpath
- stepId: reportSuccess
description: Surface the edited output URL from the succeeded job.
operationId: getJobStatus
parameters:
- name: jobId
in: path
value: $steps.submitTextEdit.outputs.jobId
successCriteria:
- condition: $statusCode == 200
- context: $response.body
condition: $.status == "succeeded"
type: jsonpath
outputs:
outputUrl: $response.body#/outputs/0/_links/renditions/0/href
outputs: $response.body#/outputs
onSuccess:
- name: done
type: end
- stepId: reportFailure
description: Surface the error details from the failed text-edit job.
operationId: getJobStatus
parameters:
- name: jobId
in: path
value: $steps.submitTextEdit.outputs.jobId
successCriteria:
- condition: $statusCode == 200
outputs:
errors: $response.body#/errors
outputs:
jobId: $steps.submitTextEdit.outputs.jobId
outputUrl: $steps.reportSuccess.outputs.outputUrl
errors: $steps.reportFailure.outputs.errors
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.