PDF Monkey Documents API

Create, retrieve, update, delete, and list PDF documents

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/pdf-monkey-documents-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

pdf-monkey-documents-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: PDF Monkey Authentication Documents API
  description: REST API for generating, managing, and retrieving PDF documents using Handlebars/Liquid templates and JSON data payloads. Supports asynchronous and synchronous generation modes, document lifecycle management, template management, and webhook notifications for real-time event handling.
  version: 1.0.0
  contact:
    url: https://pdfmonkey.io/docs/
  termsOfService: https://www.pdfmonkey.io/terms
  license:
    name: Proprietary
servers:
- url: https://api.pdfmonkey.io/api/v1
  description: PDF Monkey Production API
security:
- bearerAuth: []
tags:
- name: Documents
  description: Create, retrieve, update, delete, and list PDF documents
paths:
  /documents:
    post:
      operationId: createDocument
      summary: Create a document
      description: Asynchronously create a new PDF document from a template. Returns immediately with status 'pending'. Poll the document_cards endpoint or use webhooks to detect completion.
      tags:
      - Documents
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentCreateRequest'
            example:
              document:
                document_template_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                payload:
                  customer_name: Jane Doe
                  invoice_number: INV-2024-001
                  total: 1250.0
                meta:
                  order_id: ORD-789
                status: pending
      responses:
        '201':
          description: Document created and queued for generation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /documents/sync:
    post:
      operationId: createDocumentSync
      summary: Create a document synchronously
      description: Synchronously create and generate a PDF document. The request waits until generation is complete (up to 6 minutes) before returning. Returns a lightweight DocumentCard object.
      tags:
      - Documents
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentCreateRequest'
            example:
              document:
                document_template_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
                payload:
                  customer_name: Jane Doe
                  invoice_number: INV-2024-001
                status: pending
      responses:
        '200':
          description: Document generated synchronously
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentCardResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
  /documents/{id}:
    get:
      operationId: getDocument
      summary: Get a document
      description: Retrieve the full document object including payload and generation logs. Use document_cards/{id} when the full payload is not needed.
      tags:
      - Documents
      parameters:
      - $ref: '#/components/parameters/DocumentId'
      responses:
        '200':
          description: Full document object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateDocument
      summary: Update a document
      description: Update a document's properties. Set status to 'pending' to trigger regeneration.
      tags:
      - Documents
      parameters:
      - $ref: '#/components/parameters/DocumentId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DocumentUpdateRequest'
            example:
              document:
                payload:
                  customer_name: John Doe
                  invoice_number: INV-2024-002
                status: pending
      responses:
        '200':
          description: Updated document object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
    delete:
      operationId: deleteDocument
      summary: Delete a document
      description: Permanently delete a document and its generated file.
      tags:
      - Documents
      parameters:
      - $ref: '#/components/parameters/DocumentId'
      responses:
        '204':
          description: Document deleted successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /document_cards:
    get:
      operationId: listDocumentCards
      summary: List document cards
      description: Retrieve a paginated list of lightweight document card objects. Supports filtering by template, status, workspace, and update time. Returns up to 24 documents per page.
      tags:
      - Documents
      parameters:
      - name: page[number]
        in: query
        description: Page number for pagination
        schema:
          type: integer
          minimum: 1
          default: 1
      - name: q[document_template_id]
        in: query
        description: Filter by template UUID or comma-separated list of UUIDs
        schema:
          type: string
      - name: q[status]
        in: query
        description: Filter by document status
        schema:
          $ref: '#/components/schemas/DocumentStatus'
      - name: q[workspace_id]
        in: query
        description: Filter by workspace UUID
        schema:
          type: string
          format: uuid
      - name: q[updated_since]
        in: query
        description: Filter documents updated after this timestamp (Unix timestamp or ISO 8601)
        schema:
          type: string
      - name: q[search]
        in: query
        description: Search by document ID (exact) or filename (partial match)
        schema:
          type: string
      responses:
        '200':
          description: Paginated list of document cards
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentCardListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /document_cards/{id}:
    get:
      operationId: getDocumentCard
      summary: Get a document card
      description: Retrieve a lightweight document card object. Recommended for polling document generation status as it excludes the large payload and generation_logs fields.
      tags:
      - Documents
      parameters:
      - $ref: '#/components/parameters/DocumentId'
      responses:
        '200':
          description: Document card object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DocumentCardResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    Document:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Document unique identifier
        app_id:
          type: string
          format: uuid
          description: Workspace (app) identifier
        checksum:
          type:
          - string
          - 'null'
          description: MD5 checksum of the generated PDF file
        created_at:
          type: string
          format: date-time
          description: Document creation timestamp
        document_template_id:
          type: string
          format: uuid
          description: ID of the template used to generate this document
        download_url:
          type:
          - string
          - 'null'
          format: uri
          description: Temporary signed URL to download the generated PDF. Valid for 1 hour. Null until generation completes.
        failure_cause:
          type:
          - string
          - 'null'
          description: Reason for generation failure, null if not failed
        filename:
          type:
          - string
          - 'null'
          description: Generated filename for the PDF
        generation_logs:
          type:
          - array
          - 'null'
          description: Logs from the PDF generation process
          items:
            type: object
        meta:
          description: Custom metadata attached to the document (max 200 KB)
          oneOf:
          - type: object
          - type: string
        output_type:
          type: string
          enum:
          - pdf
          - image
          description: Output format type
        payload:
          description: JSON data payload used to render the template
          oneOf:
          - type: object
          - type: string
        preview_url:
          type:
          - string
          - 'null'
          format: uri
          description: URL for document preview
        public_share_link:
          type:
          - string
          - 'null'
          format: uri
          description: Public shareable link for the document, if share links are enabled
        status:
          $ref: '#/components/schemas/DocumentStatus'
        updated_at:
          type: string
          format: date-time
          description: Last document update timestamp
    DocumentStatus:
      type: string
      enum:
      - draft
      - pending
      - generating
      - success
      - failure
      description: Current generation status of a document
    DocumentUpdateRequest:
      type: object
      required:
      - document
      properties:
        document:
          type: object
          properties:
            document_template_id:
              type: string
              format: uuid
            payload:
              oneOf:
              - type: object
              - type: string
            meta:
              oneOf:
              - type: object
              - type: string
            status:
              type: string
              enum:
              - draft
              - pending
              description: Set to 'pending' to trigger regeneration
    DocumentResponse:
      type: object
      properties:
        document:
          $ref: '#/components/schemas/Document'
    DocumentCard:
      type: object
      description: Lightweight document object excluding payload and generation_logs
      properties:
        id:
          type: string
          format: uuid
          description: Document unique identifier
        app_id:
          type: string
          format: uuid
          description: Workspace (app) identifier
        created_at:
          type: string
          format: date-time
          description: Document creation timestamp
        document_template_id:
          type: string
          format: uuid
          description: ID of the template used
        document_template_identifier:
          type:
          - string
          - 'null'
          description: Human-readable identifier of the template
        download_url:
          type:
          - string
          - 'null'
          format: uri
          description: Temporary signed URL to download the generated PDF. Valid for 1 hour.
        failure_cause:
          type:
          - string
          - 'null'
          description: Reason for generation failure
        filename:
          type:
          - string
          - 'null'
          description: Generated filename
        meta:
          description: Custom metadata
          oneOf:
          - type: object
          - type: string
        output_type:
          type: string
          enum:
          - pdf
          - image
        preview_url:
          type:
          - string
          - 'null'
          format: uri
        public_share_link:
          type:
          - string
          - 'null'
          format: uri
        status:
          $ref: '#/components/schemas/DocumentStatus'
        updated_at:
          type: string
          format: date-time
    DocumentCreateRequest:
      type: object
      required:
      - document
      properties:
        document:
          type: object
          required:
          - document_template_id
          properties:
            document_template_id:
              type: string
              format: uuid
              description: UUID of the template to use for generation
            payload:
              description: JSON data payload to render into the template
              oneOf:
              - type: object
              - type: string
            meta:
              description: Custom metadata to attach to the document (max 200 KB)
              oneOf:
              - type: object
              - type: string
            status:
              type: string
              enum:
              - draft
              - pending
              default: draft
              description: Set to 'pending' to immediately trigger generation
    PaginationMeta:
      type: object
      properties:
        current_page:
          type: integer
          description: Current page number
        next_page:
          type:
          - integer
          - 'null'
          description: Next page number, null if on last page
        prev_page:
          type:
          - integer
          - 'null'
          description: Previous page number, null if on first page
        total_pages:
          type: integer
          description: Total number of pages
    ApiError:
      type: object
      properties:
        status:
          type: string
          description: HTTP status code as string
        title:
          type: string
          description: Short error title
        detail:
          type: string
          description: Detailed error description
    ErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ApiError'
    DocumentCardListResponse:
      type: object
      properties:
        document_cards:
          type: array
          items:
            $ref: '#/components/schemas/DocumentCard'
        meta:
          $ref: '#/components/schemas/PaginationMeta'
    DocumentCardResponse:
      type: object
      properties:
        document_card:
          $ref: '#/components/schemas/DocumentCard'
  responses:
    NotFound:
      description: The requested resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Authentication failed — missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            errors:
            - status: '401'
              title: Unauthorized
              detail: We were unable to authenticate you based on the provided API key.
    UnprocessableEntity:
      description: Validation errors — the request body is invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  parameters:
    DocumentId:
      name: id
      in: path
      required: true
      description: Document UUID
      schema:
        type: string
        format: uuid
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Authenticate using your PDF Monkey API secret key as a Bearer token in the Authorization header.