PDF Monkey Templates API
Manage document templates for PDF generation
Manage document templates for PDF generation
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/pdf-monkey-templates-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.1.0
info:
title: PDF Monkey Authentication Templates 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: Templates
description: Manage document templates for PDF generation
paths:
/document_template_cards:
get:
operationId: listTemplateCards
summary: List template cards
description: Retrieve a paginated list of lightweight template card objects for a given workspace.
tags:
- Templates
parameters:
- name: q[workspace_id]
in: query
required: true
description: Workspace UUID to filter templates by
schema:
type: string
format: uuid
- name: q[folders]
in: query
description: Comma-separated folder IDs; use 'none' for root or 'all' for all folders
schema:
type: string
- name: page
in: query
description: Page number for pagination
schema:
type: integer
minimum: 1
default: 1
- name: sort
in: query
description: Sort attribute
schema:
type: string
responses:
'200':
description: Paginated list of template cards
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateCardListResponse'
'401':
$ref: '#/components/responses/Unauthorized'
/document_templates:
post:
operationId: createTemplate
summary: Create a template
description: Create a new document template with HTML/Liquid body, SCSS styles, sample data, and generation settings.
tags:
- Templates
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateCreateRequest'
example:
document_template:
app_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
identifier: invoice-template
body: '<h1>Invoice</h1><p>Customer: {{ customer_name }}</p>'
scss_style: 'body { font-family: Arial, sans-serif; }'
sample_data: '{"customer_name": "Jane Doe"}'
output_type: pdf
edition_mode: code
responses:
'201':
description: Template created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/UnprocessableEntity'
/document_templates/{id}:
get:
operationId: getTemplate
summary: Get a template
description: Retrieve the full document template object including body, styles, settings, and test data.
tags:
- Templates
parameters:
- $ref: '#/components/parameters/TemplateId'
responses:
'200':
description: Full template object
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updateTemplate
summary: Update a template
description: Update an existing document template's properties.
tags:
- Templates
parameters:
- $ref: '#/components/parameters/TemplateId'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateUpdateRequest'
responses:
'200':
description: Updated template object
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
'422':
$ref: '#/components/responses/UnprocessableEntity'
delete:
operationId: deleteTemplate
summary: Delete a template
description: Permanently delete a document template.
tags:
- Templates
parameters:
- $ref: '#/components/parameters/TemplateId'
responses:
'204':
description: Template deleted successfully
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
schemas:
TemplateCreateRequest:
type: object
required:
- document_template
properties:
document_template:
type: object
required:
- app_id
- identifier
properties:
app_id:
type: string
format: uuid
description: Workspace UUID this template belongs to
identifier:
type: string
minLength: 1
maxLength: 100
description: Unique human-readable identifier for the template
body:
type: string
description: HTML + Liquid template body (published version)
body_draft:
type: string
description: HTML + Liquid template body (draft version)
scss_style:
type: string
description: CSS/SCSS styles (published version)
scss_style_draft:
type: string
description: CSS/SCSS styles (draft version)
sample_data:
type: string
description: JSON sample data for template preview (published)
sample_data_draft:
type: string
description: JSON sample data (draft)
settings:
$ref: '#/components/schemas/TemplateSettings'
settings_draft:
$ref: '#/components/schemas/TemplateSettings'
pdf_engine_id:
type: string
format: uuid
pdf_engine_draft_id:
type: string
format: uuid
template_folder_id:
type: string
format: uuid
ttl:
type: integer
description: Time-to-live in seconds for generated documents
edition_mode:
type: string
enum:
- code
- builder
default: code
output_type:
type: string
enum:
- pdf
- image
default: pdf
DocumentTemplate:
type: object
properties:
id:
type: string
format: uuid
description: Template unique identifier
app_id:
type: string
format: uuid
description: Workspace (app) identifier
identifier:
type: string
description: Human-readable unique identifier for the template (1-100 chars)
edition_mode:
type: string
enum:
- code
- builder
description: Whether the template uses code editor or visual builder
output_type:
type: string
enum:
- pdf
- image
description: Output format type
is_draft:
type: boolean
description: Whether this template is currently in draft state
body:
type: string
description: Published HTML + Liquid template body
body_draft:
type: string
description: Draft HTML + Liquid template body
scss_style:
type: string
description: Published CSS/SCSS styles
scss_style_draft:
type: string
description: Draft CSS/SCSS styles
sample_data:
type: string
description: Published JSON sample data for template preview
sample_data_draft:
type: string
description: Draft JSON sample data
settings:
$ref: '#/components/schemas/TemplateSettings'
settings_draft:
$ref: '#/components/schemas/TemplateSettings'
pdf_engine_id:
type:
- string
- 'null'
format: uuid
description: PDF engine UUID used for generation
pdf_engine_draft_id:
type:
- string
- 'null'
format: uuid
template_folder_id:
type:
- string
- 'null'
format: uuid
description: Folder this template belongs to
ttl:
type:
- integer
- 'null'
description: Time-to-live in seconds for generated documents
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
TemplateCardListResponse:
type: object
properties:
document_template_cards:
type: array
items:
$ref: '#/components/schemas/DocumentTemplateCard'
meta:
$ref: '#/components/schemas/PaginationMeta'
DocumentTemplateCard:
type: object
description: Lightweight template object for listing
properties:
id:
type: string
format: uuid
app_id:
type: string
format: uuid
identifier:
type: string
edition_mode:
type: string
enum:
- code
- builder
output_type:
type: string
enum:
- pdf
- image
is_draft:
type: boolean
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
pdf_engine_name:
type:
- string
- 'null'
description: Name of the PDF rendering engine
pdf_engine_deprecated_on:
type:
- string
- 'null'
format: date-time
description: Date when this engine will be deprecated, null if not deprecated
template_folder_id:
type:
- string
- 'null'
format: uuid
template_folder_identifier:
type:
- string
- 'null'
TemplateResponse:
type: object
properties:
document_template:
$ref: '#/components/schemas/DocumentTemplate'
TemplateSettings:
type: object
description: PDF generation settings for the template
properties:
footer:
type: object
description: Footer configuration with left, center, right, or content properties
header:
type: object
description: Header configuration with left, center, right, or content properties
inject_javascript:
type: boolean
description: Whether to inject and execute JavaScript during generation
margin:
type: object
description: Page margins in millimeters
properties:
top:
type: number
bottom:
type: number
left:
type: number
right:
type: number
orientation:
type: string
enum:
- portrait
- landscape
description: Page orientation
paper_format:
type: string
enum:
- a0
- a1
- a2
- a3
- a4
- a5
- a6
- letter
- custom
description: Paper size format
paper_height:
type: number
description: Custom paper height in millimeters (used when paper_format is 'custom')
paper_width:
type: number
description: Custom paper width in millimeters (used when paper_format is 'custom')
transparent_background:
type: boolean
description: Whether the PDF background should be transparent
use_emojis:
type: boolean
description: Whether emoji rendering is enabled
use_paged:
type: boolean
description: Whether to use Paged.js for print layout
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'
TemplateUpdateRequest:
type: object
required:
- document_template
properties:
document_template:
type: object
properties:
identifier:
type: string
minLength: 1
maxLength: 100
body:
type: string
body_draft:
type: string
scss_style:
type: string
scss_style_draft:
type: string
sample_data:
type: string
sample_data_draft:
type: string
settings:
$ref: '#/components/schemas/TemplateSettings'
settings_draft:
$ref: '#/components/schemas/TemplateSettings'
pdf_engine_id:
type: string
format: uuid
pdf_engine_draft_id:
type: string
format: uuid
template_folder_id:
type: string
format: uuid
ttl:
type: integer
output_type:
type: string
enum:
- pdf
- image
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:
TemplateId:
name: id
in: path
required: true
description: Template 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.