Adobe PDF Services PDF Properties API

Retrieve metadata and properties from PDF documents.

Operations 2

POST /operation/pdfproperties Extract basic information about a PDF document. #
GET /operation/pdfproperties/{jobID}/status Poll the PDF properties job for completion #

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-pdf-properties-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-pdf-properties-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Adobe PDF Properties API
  version: '1.0'
  description: 'Operations tagged PDF Properties across 2 of this provider''s published API definitions: adobe-pdf-services-api-openapi-official.json, adobe-pdf-services-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://pdf-services-ue1.adobe.io
- url: https://pdf-services-ew1.adobe.io
- url: https://pdf-services.adobe.io
  description: Adobe PDF Services API - Default Production
tags:
- name: PDF Properties
  description: Extract basic information about a PDF document.
paths:
  /operation/pdfproperties:
    post:
      tags:
      - PDF Properties
      summary: Extract basic information about a PDF document.
      description: Extract basic information about the document such as page count, pdf version, if the file is encrypted, if the file linearized, if the file contains embedded files etc.
      operationId: pdfoperations.pdfproperties
      parameters:
      - name: Authorization
        in: header
        description: Bearer + Token (<a href="https://developer.adobe.com/document-services/docs/overview/pdf-services-api/gettingstarted/#step-1--getting-the-access-token">Learn more</a> about getting the access token)
        required: true
        schema:
          type: string
      - name: x-api-key
        in: header
        description: The clientId from the generated credentials
        required: true
        schema:
          type: string
      requestBody:
        description: Params for Pdf Properties Operation. Refer to the External Section below for using external storage with PDF Properties Operation.
        content:
          application/json:
            schema:
              oneOf:
              - $ref: '#/components/schemas/PDFPropertiesInternal'
              - $ref: '#/components/schemas/PDFPropertiesExternal'
        required: true
      responses:
        '201':
          description: Request creation for the operation and status uri generated, which can be found in the 'location' header.
          headers:
            location:
              description: Job status URI for polling the results
              schema:
                type: string
            x-request-id:
              description: A unique value to identify this request. If x-request-id is specified in the POST request, this value will be the same as the input.
              schema:
                type: string
        '400':
          description: Bad Request. The request was invalid or cannot be otherwise served.
          headers:
            content-type:
              description: The content type of the POST API call response
              schema:
                type: string
            x-request-id:
              description: A unique value to identify this request. If x-request-id is specified in the POST request, this value will be the same as the input.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/400'
        '404':
          description: Resource Not Found.
          headers:
            content-type:
              description: The content type of the POST API call response
              schema:
                type: string
            x-request-id:
              description: A unique value to identify this request. If x-request-id is specified in the POST request, this value will be the same as the input.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/404'
        '401':
          description: Unauthorized.
          headers:
            content-type:
              description: The content type of the error JSON response.
              schema:
                type: string
            x-request-id:
              description: A unique value to identify this request. If x-request-id is specified in the POST request, this value will be the same as the input.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/401'
        '429':
          description: Caller doesn't have sufficient quota for this operation.
          headers:
            content-type:
              description: The content type of the POST API call response
              schema:
                type: string
            x-request-id:
              description: A unique value to identify this request. If x-request-id is specified in the POST request, this value will be the same as the input.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/429'
        '500':
          description: Internal Server Error. The server has encountered an error and is unable to process your request at this time.
          headers:
            content-type:
              description: The content type of the POST API call response
              schema:
                type: string
            x-request-id:
              description: A unique value to identify this request. If x-request-id is specified in the POST request, this value will be the same as the input.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/500'
      x-codegen-request-body-name: body
    servers:
    - url: https://pdf-services-ue1.adobe.io
    - url: https://pdf-services-ew1.adobe.io
  /operation/pdfproperties/{jobID}/status:
    get:
      tags:
      - PDF Properties
      summary: Poll the PDF properties job for completion
      operationId: pdfoperations.pdfproperties.jobstatus
      parameters:
      - name: jobID
        in: path
        description: Job ID of the request
        required: true
        schema:
          type: string
      - name: Authorization
        in: header
        description: Bearer + Token (<a href="https://developer.adobe.com/document-services/docs/overview/pdf-services-api/gettingstarted/#step-1--getting-the-access-token">Learn more</a> about getting the access token)
        required: true
        schema:
          type: string
      - name: x-api-key
        in: header
        description: The clientId from the generated credentials
        required: true
        schema:
          type: string
      responses:
        '200':
          description: A response with job information.
          headers:
            content-type:
              description: The content type of the status call response.
              schema:
                type: string
            x-request-id:
              description: A unique value to identify this request. If x-request-id is specified in the POST request, this value will be the same as the input.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PDFPropertiesJobStatus'
        '400':
          description: Bad Request. The request was invalid or cannot be otherwise served.
          headers:
            content-type:
              description: The content type of the status call response
              schema:
                type: string
            x-request-id:
              description: A unique value to identify this request. If x-request-id is specified in the POST request, this value will be the same as the input.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Status400'
        '404':
          description: Resource Not Found.
          headers:
            content-type:
              description: The content type of the POST API call response
              schema:
                type: string
            x-request-id:
              description: A unique value to identify this request. If x-request-id is specified in the POST request, this value will be the same as the input.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Satus404'
        '401':
          description: Unauthorized.
          headers:
            content-type:
              description: The content type of the POST API call response
              schema:
                type: string
            x-server:
              description: The name and version of the server.
              schema:
                type: string
            x-request-id:
              description: A unique value to identify this request. If x-request-id is specified in the POST request, this value will be the same as the input.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Satus401'
        '429':
          description: Caller doesn't have sufficient quota for this operation.
          headers:
            content-type:
              description: The content type of the POST API call response
              schema:
                type: string
            x-request-id:
              description: A unique value to identify this request. If x-request-id is specified in the POST request, this value will be the same as the input.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Satus429'
        '500':
          description: Internal Server Error. The server has encountered an error and is unable to process your request at this time.
          headers:
            content-type:
              description: The content type of the POST API call response
              schema:
                type: string
            x-request-id:
              description: A unique value to identify this request. If x-request-id is specified in the POST request, this value will be the same as the input.
              schema:
                type: string
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Satus500'
    servers:
    - url: https://pdf-services-ue1.adobe.io
    - url: https://pdf-services-ew1.adobe.io
components:
  schemas:
    PDFPropertiesDone:
      title: done
      description: Response in case of 'done' status
      type: object
      properties:
        status:
          description: Job Status
          type: string
          enum:
          - done
        metadata:
          description: 'Json containing metadata information about pdf document such as the title, the fonts used, and security settings. '
          type: object
          properties:
            document:
              type: object
              description: Details like page count, pdf version, number of times PDF is edited, if it is a XFA, has form fields etc.
              properties:
                is_XFA:
                  description: Document is based on the XFA (Extensible Forms Architecture) format or not
                  type: boolean
                has_acroform:
                  description: If the file contains any form fields.
                  type: boolean
                file_size:
                  description: Size of input PDF file.
                  type: string
                has_embedded_files:
                  description: Document contains embedded files or not.
                  type: boolean
                incremental_save_count:
                  description: Number of times the file is edited and saved.
                  type: number
                is_certified:
                  description: Document has been digitally signed with a certifying signature or not.
                  type: boolean
                is_signed:
                  description: If the PDF file is digitally signed.
                  type: boolean
                is_encrypted:
                  description: If the file is encrypted.
                  type: boolean
                is_linearized:
                  description: If it is a linearized PDF file that makes viewing faster over the Internet.
                  type: boolean
                is_portfolio:
                  description: If it is a portfolio PDF - multiple documents are packaged together into one PDF File.
                  type: boolean
                is_tagged:
                  description: If it is a tagged PDF.
                  type: boolean
                is_FTPDF:
                  description: 'If it is a Fully Tagged PDF file. '
                  type: boolean
                page_count:
                  description: Number of pages in file.
                  type: number
                pdf_version:
                  description: PDF version of the document.
                  type: string
                pdfa_compliance_level:
                  description: Returns the pdfa compliance level for the input file
                  type: string
                pdfe_compliance_level:
                  description: Returns the pdfe compliance level for the input file
                  type: string
                pdfua_compliance_level:
                  description: Returns the pdfua compliance level for the input file
                  type: string
                pdfvt_compliance_level:
                  description: Returns the pdfvt compliance level for the input file
                  type: string
                pdfx_compliance_level:
                  description: Returns the pdfx compliance level for the input file
                  type: string
                fonts:
                  type: array
                  description: Tag describing list of fonts in input pdf
                  items:
                    type: object
                    properties:
                      font_type:
                        description: Font technology (type) - eg. Type 1, TrueType, OpenType
                        type: string
                      family_name:
                        description: Font's family name. Example - For font "Times Bold Italic", family name is "Times"
                        type: string
                      name:
                        description: The PostScript name of the font
                        type: string
                    additionalProperties: false
                XMP:
                  description: Tag describing properties.
                  type: string
                info_dict:
                  type: object
                  description: Information related to file
                  properties:
                    CreationDate:
                      description: Date of file creation.
                      type: string
                    Creator:
                      description: The one by which the PDF is created. Eg. Adobe Acrobat 21.5.
                      type: string
                    ModDate:
                      description: Date when the file is last modified.
                      type: string
                    Producer:
                      description: By which we get PDF for example Adobe Acrobat 21.5 Image Conversion Plug-in.
                      type: string
                    Author:
                      description: The one who created the PDF.
                      type: string
                    Title:
                      description: Title of PDF if there.
                      type: string
            security_info:
              type: object
              description: Details related to encryption if it is an encrypted PDF like encrypted for metadata, file attachments, permissions for copying, editing, printing etc.
              properties:
                encryption:
                  type: object
                  description: Password, encryption algorithm related information.
                  properties:
                    algorithm:
                      description: Encryption algorithm used like AES
                      type: string
                    bit_length:
                      description: The number of bits in a key used by a cryptographic algorithm.
                      type: number
                    encrypt_attachments_only:
                      description: If the PDF is encrypted only for file attachments.
                      type: boolean
                    encrypt_metadata:
                      description: If the PDF is encrypted for metadata.
                      type: boolean
                    has_owner_password:
                      description: If the file has a password for any permissions ( like to edit, copy etc)
                      type: boolean
                    has_user_password:
                      description: If the file has a password to open it.
                      type: boolean
                  additionalProperties: false
                permissions:
                  type: object
                  description: Permission settings include restricting printing, content copying, editing, page extracting, commenting, etc in the PDF
                  properties:
                    assistive_technology:
                      description: Whether or not the file will be exposed to a screen reader.
                      type: boolean
                    form_filling:
                      description: Permission for filling in form fields.
                      type: boolean
                    copying:
                      description: Permission for copying the content of file.
                      type: boolean
                    page_extraction:
                      description: Permission for extracting pages.
                      type: boolean
                    document_assembly:
                      description: Permission for adding or inserting pages.
                      type: boolean
                    commenting:
                      description: Permission to add comments to file.
                      type: boolean
                    printing:
                      description: Permission for printing the file.
                      type: string
                    editing:
                      description: Permission for editing the content in file.
                      type: boolean
                  additionalProperties: false
              additionalProperties: false
            pages:
              type: array
              description: Json array consisting page level properties
              items:
                type: object
                properties:
                  page_number:
                    description: Page number starting from 0.
                    type: number
                  is_scanned:
                    description: If the page is scanned or not.
                    type: boolean
                  has_structure:
                    description: If the page has structure/tagging.
                    type: boolean
                  height:
                    description: Dimension of the page.
                    type: number
                  width:
                    description: Dimension of the page.
                    type: number
                  content:
                    type: object
                    properties:
                      is_empty:
                        description: If it is an empty/blank page.
                        type: boolean
                      has_images:
                        description: If the page has any images.
                        type: boolean
                      number_of_images:
                        description: Number of images in that page.
                        type: number
                      only_images:
                        description: If the page consists only images.
                        type: boolean
                      has_text:
                        description: If the pages has any text.
                        type: boolean
                additionalProperties: false
      example:
        status: done
        metadata:
          pages:
          - page_number: 0
            is_scanned: false
            width: 595.0
            has_structure: false
            content:
              number_of_images: 0
              only_images: false
              has_text: true
              has_images: false
              is_empty: false
            height: 842.0
          document:
            is_linearized: false
            pdfe_compliance_level: ''
            is_tagged: false
            is_portfolio: false
            is_certified: false
            is_encrypted: false
            info_dict:
              CreationDate: null
              Producer: null
              Creator: null
              ModDate: null
            is_FTPDF: false
            pdf_version: '1.6'
            has_acroform: false
            file_size: 4550.09 KB
            is_signed: false
            incremental_save_count: 0
            has_embedded_files: false
            is_XFA: false
            fonts:
            - name: BAAAAA+LiberationSans-Bold
              font_type: TrueType
              family_name: Liberation Sans
            pdfa_compliance_level: ''
            pdfvt_compliance_level: ''
            pdfx_compliance_level: ''
            pdfua_compliance_level: ''
            XMP: null
            page_count: 101
            signature_details:
            - signee_name: Signed by Simon Haringa
              signing_date_time: Jul 18, 2023 11:31:33 +0000
              signature_type: UNKNOWN
              cert_info:
                valid_from: Apr 26, 2019 18:00:25 +0000
                valid_upto: Apr 24, 2024 18:00:25 +0000
                cert_status: UNKNOWN
                trust_sources:
                - UNKNOWN
            - signee_name: Signed by Simon Alex Haringa
              signing_date_time: Jul 18, 2023 11:32:38 +0000
              signature_type: QES
              cert_info:
                valid_from: Nov 15, 2022 11:50:02 +0000
                valid_upto: Nov 15, 2023 11:50:02 +0000
                cert_status: VALID
                trust_sources:
                - AATL
                - EUTL
            - signee_name: Certified by Adobe Acrobat Sign
              signing_date_time: Jul 21, 2023 08:14:50 +0000
              signature_type: UNKNOWN
              cert_info:
                valid_from: Dec 20, 2022 00:00:00 +0000
                valid_upto: Dec 19, 2025 23:59:59 +0000
                cert_status: UNKNOWN
                trust_sources:
                - UNKNOWN
            - signee_name: Signed by Adobe Acrobat Sign
              signing_date_time: Jul 21, 2023 08:14:51 +0000
              signature_type: UNKNOWN
              cert_info:
                valid_from: Dec 20, 2022 00:00:00 +0000
                valid_upto: Dec 19, 2025 23:59:59 +0000
                cert_status: UNKNOWN
                trust_sources:
                - UNKNOWN
          permissions: null
    Satus429:
      properties:
        error_code:
          description: 'The string containing the code field. code is the Mnemonic returned by service in case of any failure. The below list is extendable and going forward the error codes can become more specific. '
          type: string
        message:
          description: "An English language string that contains more information about the error. \n\n<table><tr><th>code</th><th>message</th></tr><tr><td>429001</td><td>Service usage limit reached</td></tr><tr><td>429002</td><td>Developer key usage limit reached</td></tr><tr><td>429050</td><td>Too many requests</td></tr></table>"
          type: string
      example:
        error_code: '429050'
        message: Too many requests
    Status400:
      properties:
        error:
          type: object
          properties:
            code:
              description: The string containing the code field. code is the Mnemonic returned by service in case of any failure. The below list is extendable and going forward the error codes can become more specific.
              type: string
            message:
              description: "An English language string that contains more information about the error.  \n\n<table><tr><th>code</th><th>message</th></tr><tr><td>INVALID_JOB_ID</td><td>Invalid job id present in path param.</td></tr></table>"
              type: string
      example:
        error:
          code: INVALID_JOB_ID
          message: Invalid job id present in path param.
    PDFPropertiesExternal:
      title: External
      description: Params for PDF Properties Operation
      type: object
      properties:
        input:
          $ref: '#/components/schemas/ExternalStorageInput'
        params:
          description: Params for PDF Properties processing
          type: object
          properties:
            pageLevel:
              description: To get page level properties of the PDF.
              type: boolean
              default: false
        notifiers:
          $ref: '#/components/schemas/notifiers'
      example:
        input:
          uri: https://dcplatformstorageservice-dev-us-east-1.s3-accelerate.amazonaws.com/e0983a2df4d647a8818e2c5e06f85169_097819C664A2BBC20A49421A%40techacct.adobe.com/d7dc8346-f984-4c05-a276-4a1831a19146?X-Amz-Security-Token=FwoGZXIvYXdzEML%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaDNgsF%2FxAk7585OhJpSLSAQc%2FNC8n50ag2ut24XYriaC72ihx1vpAniZeiex4DWR6GfqWad%2BLefSSVRdoy3j5ltJnw1eaCuVZ85sKHZru6DTAaXX408Ke%2FRPnf%2BVt7x0ZmZT%2FFLq6R8DKMe82v8%2FeaBkfxsquo5m7CXIg1%2BwBwrQ1dwsBv6FZhxqSDBbtpDRh%2B9Qvjzbw4xybzPWwa8pC8AN3bdd66J6Pa2NQKGtpPfEz6D1kOSqbNwE0m0ysyrLmK%2B2N8O46U2VZMpC6De8zpAHFLw7BirSQtilS0NY%2BNCJ4tSjOioWmBjItbRVda0hvUrHl0C6Sle7nRjw44nXT1mWsBalV9nIKICeKQ5k8h%2Bfuhg21I9lR&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20230726T160950Z&X-Amz-SignedHeaders=host&X-Amz-Expires=3599&X-Amz-Credential=REDACTED_AWS_ACCESS_KEY_ID%2F20230726%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Signature=f70693e5e6cf429f2f5b99fbdb48aacc7dc0152bec0f26f4e7f9622b159e181a
          storage: S3
        params:
          pageLevel: false
        notifiers:
        - type: CALLBACK
          data:
            url: https://dummy.callback.org/
            headers:
              x-api-key: dummykey
              access-token: dummytoken
      required:
      - input
      additionalProperties: false
    notifiers:
      description: Specifies the notifiers to be invoked on the completion of job. To know more about notifiers, please see the <a href="https://developer.adobe.com/document-services/docs/overview/pdf-services-api/howtos/webhook-notification/">documentation</a>.
      type: array
      items:
        properties:
          type:
            description: Specifies the notifier type. Currently supported value is "CALLBACK" only.
            type: string
          data:
            description: Specifies the data needed to invoke the notifier.
            type: object
        required:
        - type
        - data
    '404':
      properties:
        error:
          type: object
          properties:
            code:
              description: The string containing the code field. code is the Mnemonic returned by service in case of any failure. The below list is extendable and going forward the error codes can become more specific.
              type: string
            message:
              description: "An English language string that contains more information about the error. \n\n<table><tr><th>code</th><th>message</th></tr><tr><td>NOT_FOUND</td><td>Asset not found.</td></tr></table>"
              type: string
      example:
        error:
          code: NOT_FOUND
          message: Asset not found.
    ExternalStorageInput:
      title: Input
      description: Params representing input object.
      type: object
      properties:
        uri:
          description: Input file Download Signed URI.
          type: string
        storage:
          description: Specifies the type of the external storage
          type: string
          enum:
          - S3
          - SHAREPOINT
          - DROPBOX
          - BLOB
      required:
      - uri
    inprogress:
      description: Response in case of 'in progress' status
      type: object
      properties:
        status:
          description: Job Status
          type: string
          enum:
          - in progress
      example:
        status: in progress
    Satus401:
      properties:
        error:
          type: object
          properties:
            code:
              description: The string containing the code field. code is the Mnemonic returned by service in case of any failure. The below list is extendable and going forward the error codes can become more specific.
              type: string
            message:
              description: "An English language string that contains more information about the error.  \n\n<table><tr><th>code</th><th>message</th></tr><tr><td>UNAUTHORIZED</td><td>Not authorised to perform the operation.</td></tr></table>"
              type: string
      example:
        error:
          code: UNAUTHORIZED
          message: Not authorised to perform the operation.
    failed:
      description: Response in case of 'failed' status
      type: object
      properties:
        status:
          description: Job Status
          type: string
          enum:
          - failed
        error:
          type: object
          properties:
            status:
              description: Http status code returned by the service
              type: integer
            code:
              description: The string containing the code field. code is the Mnemonic returned by service in case of any failure. The below list is extendable and going forward the error codes can become more specific.
              type: string
            message:
              description: "An English language string that contains more information about the error. \n\n<table><tr><th>status</th><th>code</th><th>message</th></tr><tr><td>400</td><td>CORRUPT_DOCUMENT</td><td>For $(format) mime-type The input file appears to be corrupted and cannot be processed.</td></tr><tr><td>400</td><td>PASSWORD_PROTECTED</td><td>Source file is protected and cannot be processed.</td></tr><tr><td>500</td><td>INTERNAL_SERVER_ERROR</td><td>There was an error processing your request.</td></tr></table>"
              type: string
      example:
        status: failed
        error:
          status: 500
          code: INTERNAL_SERVER_ERROR
          message: There was an error processing your request
    '401':
      properties:
        error:
          type: object
          properties:
            code:
              description: The string containing the code field. code is the Mnemonic returned by service in case of any failure. The below list is extendable and going forward the error codes can become more specific.
              type: string
            message:
              description: "An English language string that contains more information about the error.  \n\n<table><tr><th>code</th><th>message</th></tr><tr><td>UNAUTHORIZED</td><td>Not authorised to perform the operation.</td></tr></table>"
              type: string
      example:
        error:
          code: UNAUTHORIZED
          message: Not authorised to perform the operation.
    Satus404:
      properties:
        error:
          type: object
          properties:
            code:
              description: The string containing the code field. code is the Mnemonic returned by service in case of any failure. The below list is extendable and going forward the error codes can become more specific.
              type: string
            message:
              description: "An English language string that contains more information about the error.  \n\n<table><tr><th>code</th><th>message</th></tr><tr><td>NOT_FOUND</td><td>Job not found.</td></tr></table>"
              type: string
      example:
        error:
          code: NOT_FOUND
          message: Job not found.
    PDFPropertiesJobStatus:
      oneOf:
      - $ref: '#/components/schemas/inprogress'
      - $ref: '#/components/schemas/PDFPropertiesDone'
      - $ref: '#/components/schemas/failed'
    '400':
      properties:
        error:
          type: object
          properties:
            code:
              description: The string containing the code field. code is the Mnemo

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/adobe/refs/heads/main/openapi/adobe-pdf-properties-api-openapi.yml