Adobe Suite Convert PDF to InDesign API

Convert PDF documents to InDesign (INDD or IDML) format. The output is a ZIP file containing the converted documents and all associated assets.

Operations 2

POST /v3/convert-pdf-to-indesign Convert PDF to InDesign document #
GET /v3/status/{convert-pdf-to-indesign_job_id} Get status - Convert PDF to InDesign API #

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-convert-pdf-to-indesign-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 email required.

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

OpenAPI Specification

adobe-suite-convert-pdf-to-indesign-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: Firefly Service's RESTful InDesign API offers resources to automate tedious, time-consuming design tasks through scalable cloud services, encouraging more personalization at scale, creative automation, and faster content delivery.
  version: ''
  title: Firefly Services - InDesign Convert PDF to InDesign API
  termsOfService: https://www.adobe.com/content/dam/cc/en/legal/terms/enterprise/pdfs/PSLT-AdobeCreativeAPI-WW-2024v2.pdf
  contact:
    email: idservices@adobe.com
servers:
- url: https://indesign.adobe.io
security:
- AccessToken: []
  X-Api-Key: []
tags:
- name: Convert PDF to InDesign
  description: Convert PDF documents to InDesign (INDD or IDML) format. The output is a ZIP file containing the converted documents and all associated assets.
paths:
  /v3/convert-pdf-to-indesign:
    post:
      summary: Convert PDF to InDesign document
      description: Converts PDF documents to editable InDesign (INDD or IDML) format. The output is a ZIP file (default name 'output.zip') containing subfolders (named after each input PDF) with the converted document and associated assets. If `embedLinks` is false, assets are provided in a separate folder within the ZIP. If `embedLinks` is true, all links are embedded in the InDesign file. Returns warnings for missing fonts and links.
      operationId: convertPDFToInDesign
      tags:
      - Convert PDF to InDesign
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConvertToInDesignRequest'
        description: This job request object specifies parameters for converting PDF to InDesign format.
        required: true
      responses:
        '202':
          $ref: '#/components/responses/Accepted'
        '400':
          $ref: '#/components/responses/BadParams'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
  /v3/status/{convert-pdf-to-indesign_job_id}:
    get:
      operationId: getConvertPDFToInDesignJobStatus
      summary: Get status - Convert PDF to InDesign API
      description: Returns the latest status of a job, in this case a PDF to InDesign conversion job. Poll this endpoint to retrieve the job results, warnings, and download URL of the output, in this case an output ZIP file.
      tags:
      - Convert PDF to InDesign
      parameters:
      - name: convert-pdf-to-indesign_job_id
        in: path
        description: The ID of the Convert PDF to InDesign job you want to see the status of. This comes from the response of the Convert PDF to InDesign request.
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Status of a Convert to InDesign job execution.
          content:
            application/json:
              schema:
                type: object
                oneOf:
                - $ref: '#/components/schemas/notstartedEvent'
                - $ref: '#/components/schemas/runningEvent'
                - $ref: '#/components/schemas/succeededEvent'
                - $ref: '#/components/schemas/failedEvent'
                - $ref: '#/components/schemas/partialSuccessEvent'
              examples:
                succeeded:
                  summary: Convert to InDesign Job Succeeded
                  description: Example response when a PDF to InDesign conversion job completes successfully. The output is a ZIP file containing the converted INDD/IDML documents and assets.
                  value:
                    jobId: 413d57e8-1092-4476-8a9f-16eacabd2d6d
                    timestamp: '2025-12-17T06:08:45.267Z'
                    status: succeeded
                    data:
                      outputs:
                      - outputPath: output/test
                        input: test.pdf
                        warnings:
                          missingLinks:
                          - file:/Users/labuser/Downloads/Untitled-1%20Folder1/doc1%20Folder/Links/testAI-3.ai
                          missingFonts:
                          - Abelone Regular
                    outputs:
                    - destination:
                        url: ''
                      source: output.zip
          headers:
            retry-after:
              schema:
                type: integer
              description: The number of seconds until the user should try again.
            Content-Type:
              schema:
                type: string
              description: The type of content returned (e.g., `application/json`).
            Content-Length:
              schema:
                type: integer
              description: The length of the response.
        '400':
          $ref: '#/components/responses/BadParams'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    failedEvent:
      allOf:
      - $ref: '#/components/schemas/BaseEvent'
      - description: The job is in a failed state.
        type: object
        properties:
          status:
            type: string
            description: The current state of the job.
            enum:
            - failed
          errors:
            type: array
            description: A list of errors that caused the job to fail.
            items:
              type: object
              properties:
                error_code:
                  type: string
                  description: The error code for the failure.
                message:
                  type: string
                  description: The error message for the failure
                source:
                  type: string
                  description: The source file of the error, if applicable.
                url:
                  type: string
                  description: A URL related to an asset causing the failure(if any), if applicable.
    ConvertToInDesignRequest:
      allOf:
      - $ref: '#/components/schemas/BaseJobRequestWithOutput'
      - description: Inputs for converting PDF to InDesign document.
        type: object
        required:
        - params
        properties:
          params:
            type: object
            required:
            - targetDocuments
            - outputMediaType
            properties:
              targetDocuments:
                description: Array of PDF documents to convert. Each entry corresponds to the filename of the PDF document to convert. Currently supports one document at a time.
                type: array
                items:
                  type: string
                minItems: 1
                maxItems: 1
              outputMediaType:
                description: The MIME type of the output file.
                type: string
                enum:
                - application/x-indesign
                - application/vnd.adobe.indesign-idml-package
                default: application/x-indesign
              embedLinks:
                description: If true, all links (images and other assets) from the PDF are embedded directly in the resulting INDD/IDML file. If false (default), the INDD/IDML file is created with external links, and all assets are provided in a separate folder within the output ZIP.
                type: boolean
                default: false
              outputFilebaseString:
                description: The name of the output ZIP file. If not specified, defaults to 'output.zip'.
                type: string
                default: output.zip
    OutputAsset:
      description: The URL where the output assets are to be posted after the job is processed.
      type: object
      required:
      - destination
      - source
      properties:
        destination:
          type: object
          required:
          - url
          properties:
            url:
              type: string
              description: The URL of the asset.
            storageType:
              type: string
              description: This is an optional parameter, however IT IS RECOMMENDED to provide this information.
              enum:
              - Azure
              - Dropbox
              - AWS
        source:
          type: string
          description: This provides a path relative of the output where the resource would be generated. It cannot go up using '..' or '/'. Should be a valid file name.
    InputAsset:
      type: object
      description: The URL where the asset will be fetched.
      required:
      - source
      properties:
        source:
          type: object
          required:
          - url
          properties:
            url:
              type: string
              description: The pre-signed URL of the input asset. This is the URL of the asset that will be downloaded and acted upon during the job.
        destination:
          type: string
          description: This provides a path relative to a temporary base directory (working directory) where the resource would be downloaded. This would be used to identify the assets within the parameters. It cannot go up using '..' or '/'. Should be a valid file name.
    Error:
      type: object
      properties:
        message:
          type: string
        error_code:
          type: string
      required:
      - message
      - error_code
    runningEvent:
      allOf:
      - $ref: '#/components/schemas/BaseEvent'
      - description: Job is in running state.
        type: object
        properties:
          status:
            type: string
            description: The current state of the job.
            enum:
            - running
          message:
            type: string
            description: A description of the current running state.
    BaseJobRequestWithOutput:
      allOf:
      - $ref: '#/components/schemas/BaseJobRequest'
      - description: The base job request for any job with the option to specify output URLs.
        type: object
        properties:
          outputs:
            type: array
            items:
              $ref: '#/components/schemas/OutputAsset'
    BaseEvent:
      type: object
      description: The job event response object.
      properties:
        jobId:
          description: The GUID for the job.
          type: string
    partialSuccessEvent:
      allOf:
      - $ref: '#/components/schemas/BaseEvent'
      - description: The job has succeeded with some non-critical errors.
        type: object
        properties:
          status:
            type: string
            description: The current state of the job.
            enum:
            - partial_success
          data:
            type: object
            description: The output response from the current state of the job.
          dataURL:
            type: string
            description: The data returned from the execution of the job. If the data size is between 250 KB and 20 MB, it will be provided as a pre-signed URL. If it is larger than 20 MB, the job will fail.
          outputs:
            type: object
            description: A list of URLs for all the successfully generated assets.
          errors:
            type: array
            description: A list of errors that occurred during a partially successful job.
            items:
              type: object
              properties:
                error_code:
                  type: string
                  description: The error code for the partial failure.
                message:
                  type: string
                  description: The error message for the partial failure
                source:
                  type: string
                  description: The source file of the partial failure error, if applicable.
                url:
                  type: string
                  description: A URL related to an asset causing the partial failure(if any), if applicable.
    succeededEvent:
      allOf:
      - $ref: '#/components/schemas/BaseEvent'
      - description: The job has succeeded.
        type: object
        properties:
          status:
            type: string
            description: The current state of the job.
            enum:
            - succeeded
          data:
            type: object
            description: The output response from the current state of the job.
          dataURL:
            type: string
            description: The data returned from the execution of the job. If the data size is between 250 KB and 20 MB, it will be provided as a pre-signed URL. If it is larger than 20 MB, the job will fail.
          outputs:
            type: object
            description: A list of URLs for all the generated assets.
    notstartedEvent:
      allOf:
      - $ref: '#/components/schemas/BaseEvent'
      - description: The status when a job is in queued state.
        type: object
        properties:
          status:
            type: string
            description: The current state of the job.
            enum:
            - not_started
    BaseJobRequest:
      description: The base job request for any job.
      required:
      - assets
      properties:
        assets:
          type: array
          items:
            $ref: '#/components/schemas/InputAsset'
          description: Information about the assets, which will be used to process the job.
        params:
          type: object
          properties:
            generalSettings:
              description: General settings.
              type: object
              properties:
                fonts:
                  description: Settings related to fonts. It is recommended to include fonts to avoid missing fonts warnings when processing the job.
                  type: object
                  properties:
                    fontsDirectories:
                      description: This lists the font directories for the input InDesign documents. "Document Fonts" in parallel to the document will continue to work even without specifying them.  <br></br> If none are specified, a temporary base directory (working directory) will be considered as a font directory.
                      type: array
                      items:
                        type: string
                        description: This provides a path to a directory relative to a temporary base directory (working directory) where the fonts can be found. It cannot go up using '..' or '/'. Should be a valid path. For specifying a working directory, mention '.'.
                links:
                  description: Settings related to links.
                  type: object
                  properties:
                    replaceLinks:
                      type: array
                      items:
                        type: object
                        required:
                        - targetDocument
                        - mapping
                        properties:
                          targetDocument:
                            description: The document in which the relinking is to be done. Relinking of assets is required to ensure that there are no missing links in the output document.
                            type: string
                          mapping:
                            type: array
                            items:
                              type: object
                              required:
                              - newAssetRelativePath
                              properties:
                                newAssetRelativePath:
                                  type: string
                                  description: This provides a path relative to a temporary base directory (working directory) where the asset to be linked to can be found. It cannot go up using '..' or '/'. Should be a valid file name.
                                currentURI:
                                  type: string
                                  description: The existing URI of the link that needs relinking. If multiple links with this URI are found, all will be relinked. If `linkID` is provided, this attribute will be ignored. Either `currentURI` or `linkID` should be present.
                                linkID:
                                  type: integer
                                  description: The ID of the link which is to be relinked. If `currentURI` is also provided, it will be ignored. Either `currentURI` or `linkID` should be present.
                appLogs:
                  description: Describes parameters regarding application logs.
                  type: object
                  properties:
                    logsRelativePath:
                      type: string
                      description: This provides a path to a file, relative to the temporary base directory (working directory). This file is where the application's logs are to be dumped.
  responses:
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      headers:
        Content-Type:
          schema:
            type: string
          description: The type of content returned (e.g., `application/json`).
        Content-Length:
          schema:
            type: integer
          description: The length of the response content.
        Access-Control-Allow-Origin:
          schema:
            type: string
          description: The Cross Origin Resource Sharing (CORS) header.
        Access-Control-Allow-Methods:
          schema:
            type: string
          description: This header indicates what HTTP methods are allowed.
        Access-Control-Allow-Headers:
          schema:
            type: string
          description: This indicates which HTTP headers can be used during the actual request.
        Access-Control-Allow-Credentials:
          schema:
            type: string
          description: This header is used by servers to indicate that the client shall share HTTP responses.
        Access-Control-Max-Age:
          schema:
            type: integer
          description: This indicates how long the results of a preflight request can be cached.
    TooManyRequests:
      description: Too Many Requests
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      headers:
        Content-Type:
          schema:
            type: string
          description: The format of the content returned (e.g., `application/json`).
        Content-Length:
          schema:
            type: integer
          description: The length of the response content.
        Retry-After:
          schema:
            type: integer
          description: The number of seconds until the user should try again.
        Access-Control-Allow-Origin:
          schema:
            type: string
          description: The Cross Origin Resource Sharing (CORS) header.
        Access-Control-Allow-Methods:
          schema:
            type: string
          description: This indicates what HTTP methods are allowed.
        Access-Control-Allow-Headers:
          schema:
            type: string
          description: This indicates which HTTP headers can be used during the actual request.
        Access-Control-Allow-Credentials:
          schema:
            type: string
          description: This header is used by servers to indicate that the client shall share HTTP responses.
        Access-Control-Max-Age:
          schema:
            type: integer
          description: This indicates how long the results of a preflight request can be cached.
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      headers:
        Content-Type:
          schema:
            type: string
          description: The type of content returned (e.g., `application/json`).
        Content-Length:
          schema:
            type: integer
          description: The length of the response content.
        Access-Control-Allow-Origin:
          schema:
            type: string
          description: The Cross Origin Resource Sharing (CORS) header.
        Access-Control-Allow-Methods:
          schema:
            type: string
          description: This indicates what HTTP methods are allowed.
        Access-Control-Allow-Headers:
          schema:
            type: string
          description: This indicates which HTTP headers can be used during the actual request.
        Access-Control-Allow-Credentials:
          schema:
            type: string
          description: This header is used by servers to indicate that the client shall share HTTP responses.
        Access-Control-Max-Age:
          schema:
            type: integer
          description: This indicates how long the results of a preflight request can be cached.
    Accepted:
      description: The job has been accepted for processing.
      content:
        application/json:
          schema:
            properties:
              jobId:
                type: string
                description: The job ID.
              statusUrl:
                type: string
                description: The status URL.
      headers:
        link:
          schema:
            type: string
          description: The status URL for a retry.
        retry-after:
          schema:
            type: integer
          description: The number of seconds until the user should try again.
        Content-Type:
          schema:
            type: string
          description: The type of content that is returned (e.g., `application/json`).
        Content-Length:
          schema:
            type: integer
          description: The length of the response content.
        Access-Control-Allow-Origin:
          schema:
            type: string
          description: The Cross Origin Resource Sharing (CORS) header.
        Access-Control-Allow-Methods:
          schema:
            type: string
          description: This indicates what HTTP methods are allowed.
        Access-Control-Allow-Headers:
          schema:
            type: string
          description: This indicates which HTTP headers can be used during the actual request.
        Access-Control-Allow-Credentials:
          schema:
            type: string
          description: This header is used by servers to indicate that the client shall share HTTP responses.
        Access-Control-Max-Age:
          schema:
            type: integer
          description: This indicates how long the results of a preflight request can be cached.
    BadParams:
      description: Bad Parameter
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      headers:
        Content-Type:
          schema:
            type: string
          description: The type of content returned (e.g., `application/json`).
        Content-Length:
          schema:
            type: integer
          description: The length of the response content.
        Access-Control-Allow-Origin:
          schema:
            type: string
          description: The Cross Origin Resource Sharing (CORS) header.
        Access-Control-Allow-Methods:
          schema:
            type: string
          description: This header indicates what HTTP methods are allowed.
        Access-Control-Allow-Headers:
          schema:
            type: string
          description: This indicates which HTTP headers can be used during the actual request.
        Access-Control-Allow-Credentials:
          schema:
            type: string
          description: This header is used by servers to indicate that the client shall share HTTP responses.
        Access-Control-Max-Age:
          schema:
            type: integer
          description: This indicates how long the results of a preflight request can be cached.
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      headers:
        Content-Type:
          schema:
            type: string
          description: The type of content returned (e.g., `application/json`).
        Content-Length:
          schema:
            type: integer
          description: The length of the response content.
        Access-Control-Allow-Origin:
          schema:
            type: string
          description: The Cross Origin Resource Sharing (CORS) header.
        Access-Control-Allow-Methods:
          schema:
            type: string
          description: This header indicates what HTTP methods are allowed.
        Access-Control-Allow-Headers:
          schema:
            type: string
          description: This indicates which HTTP headers can be used during the actual request.
        Access-Control-Allow-Credentials:
          schema:
            type: string
          description: This header is used by servers to indicate that the client shall share HTTP responses.
        Access-Control-Max-Age:
          schema:
            type: integer
          description: This indicates how long the results of a preflight request can be cached.
    NotFound:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
      headers:
        Content-Type:
          schema:
            type: string
          description: The type of content returned (e.g., `application/json`).
        Content-Length:
          schema:
            type: integer
          description: The length of the response content.
        Access-Control-Allow-Origin:
          schema:
            type: string
          description: The Cross Origin Resource Sharing (CORS) header.
        Access-Control-Allow-Methods:
          schema:
            type: string
          description: This header indicates what HTTP methods are allowed.
        Access-Control-Allow-Headers:
          schema:
            type: string
          description: This indicates which HTTP headers can be used during the actual request.
        Access-Control-Allow-Credentials:
          schema:
            type: string
          description: This header is used by servers to indicate that the client shall share HTTP responses.
        Access-Control-Max-Age:
          schema:
            type: integer
          description: This indicates how long the results of a preflight request can be cached.
  securitySchemes:
    AccessToken:
      type: http
      scheme: bearer
      description: The Adobe-generated access token, S2S format.
    X-Api-Key:
      type: apiKey
      name: x-api-key
      in: header
      description: The client ID for authentication.