Adobe · Arazzo Workflow

Adobe Auto-tag a PDF For Accessibility

Version 1.0.0

Upload a PDF, auto-tag it for accessibility, poll the job, and fetch the tagged result.

1 workflow 3 source APIs 1 provider
View Spec View on GitHub Fortune 1000AnalyticsCreative CloudDigital Asset ManagementDocument ServicesE-CommerceE-SignaturesExperience CloudGenerative AIMarketingPDFWork ManagementArazzoWorkflows

Provider

adobe

Workflows

auto-tag-pdf
Add accessibility tags to an uploaded PDF with AI.
Requests an upload slot for the source PDF, submits an autoTagPDF job that tags the document for accessibility, polls job status until tagging finishes, and retrieves the download URI for the tagged PDF.
4 steps inputs: accessToken, generateReport, jobID, shiftHeadings outputs: downloadUri, outputAssetID, sourceAssetID
1
requestUpload
Request a pre-signed upload URI and asset ID for the source PDF, which is then PUT to the returned uploadUri out of band.
2
submitAutoTag
Submit an asynchronous autoTagPDF job that adds accessibility tags to the uploaded PDF. Returns 201 with an in-progress job status.
3
pollStatus
Poll the autoTagPDF job until it is no longer in progress, looping back while the status remains "in progress".
4
getOutput
Resolve a pre-signed download URI for the tagged output PDF.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Adobe Auto-tag a PDF For Accessibility
  summary: Upload a PDF, auto-tag it for accessibility, poll the job, and fetch the tagged result.
  description: >-
    Drives the Adobe PDF Services asynchronous accessibility auto-tag pipeline
    that adds WCAG 2.0 / PDF/UA accessibility tags to a PDF using Adobe Sensei.
    The workflow registers the source PDF by requesting a pre-signed upload URI
    and asset ID, submits an autoTagPDF job with report and heading options,
    polls the job until it reports done, and resolves a download URI for the
    tagged output. Each step spells out its request inline. The polling job
    identifier is supplied as a workflow input because the submit response
    exposes only an opaque Location header.
  version: 1.0.0
sourceDescriptions:
- name: accessibilityAutoTagApi
  url: ../openapi/adobe-accessibility-auto-tag-api-openapi.yml
  type: openapi
- name: assetsApi
  url: ../openapi/adobe-assets-api-openapi.yml
  type: openapi
- name: jobsApi
  url: ../openapi/adobe-jobs-api-openapi.yml
  type: openapi
workflows:
- workflowId: auto-tag-pdf
  summary: Add accessibility tags to an uploaded PDF with AI.
  description: >-
    Requests an upload slot for the source PDF, submits an autoTagPDF job that
    tags the document for accessibility, polls job status until tagging
    finishes, and retrieves the download URI for the tagged PDF.
  inputs:
    type: object
    required:
    - accessToken
    - jobID
    properties:
      accessToken:
        type: string
        description: OAuth 2.0 bearer access token from Adobe IMS.
      generateReport:
        type: boolean
        description: Whether to generate an accessibility tagging report.
        default: true
      shiftHeadings:
        type: boolean
        description: Whether to shift heading levels to start at H1.
        default: false
      jobID:
        type: string
        description: The job identifier taken from the autoTagPDF response Location header, used to poll status.
  steps:
  - stepId: requestUpload
    description: >-
      Request a pre-signed upload URI and asset ID for the source PDF, which is
      then PUT to the returned uploadUri out of band.
    operationId: asset.uploadpresignedurl
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.accessToken"
    requestBody:
      contentType: application/json
      payload:
        mediaType: application/pdf
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      assetID: $response.body#/assetID
      uploadUri: $response.body#/uploadUri
  - stepId: submitAutoTag
    description: >-
      Submit an asynchronous autoTagPDF job that adds accessibility tags to the
      uploaded PDF. Returns 201 with an in-progress job status.
    operationId: autoTagPDF
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.accessToken"
    requestBody:
      contentType: application/json
      payload:
        assetID: $steps.requestUpload.outputs.assetID
        generateReport: $inputs.generateReport
        shiftHeadings: $inputs.shiftHeadings
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      status: $response.body#/status
  - stepId: pollStatus
    description: >-
      Poll the autoTagPDF job until it is no longer in progress, looping back
      while the status remains "in progress".
    operationId: getJobStatus
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.accessToken"
    - name: operationType
      in: path
      value: accessibilitychecker
    - name: jobID
      in: path
      value: $inputs.jobID
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body#/status
      outputAssetID: $response.body#/asset/assetID
    onSuccess:
    - name: stillRunning
      type: goto
      stepId: pollStatus
      criteria:
      - context: $response.body
        condition: $.status == "in progress"
        type: jsonpath
    - name: finished
      type: goto
      stepId: getOutput
      criteria:
      - context: $response.body
        condition: $.status == "done"
        type: jsonpath
  - stepId: getOutput
    description: >-
      Resolve a pre-signed download URI for the tagged output PDF.
    operationId: getAsset
    parameters:
    - name: Authorization
      in: header
      value: "Bearer $inputs.accessToken"
    - name: assetID
      in: path
      value: $steps.pollStatus.outputs.outputAssetID
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      downloadUri: $response.body#/downloadUri
  outputs:
    sourceAssetID: $steps.requestUpload.outputs.assetID
    outputAssetID: $steps.pollStatus.outputs.outputAssetID
    downloadUri: $steps.getOutput.outputs.downloadUri

Work with this as data

Every workflow 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 arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • 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 workflow
curl "https://apis.io/api/v1/arazzo/adobe-auto-tag-pdf-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?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.