Authenticate using an API key (for direct API use) from PandaDoc Settings > Integrations > API, or via OAuth 2.0 for third-party integrations; include 'Authorization: API-Key {your_key}' or 'Authorization: Bearer {token}' in all requests.
Retrieve the template ID from PandaDoc UI (Templates section) or via GET https://api.pandadoc.com/public/v1/templates; note both the template ID and the list of fields/roles defined in the template.
Create a document from the template by POSTing to https://api.pandadoc.com/public/v1/documents with a JSON body containing 'name', 'template_uuid', 'recipients' array (each with 'email', 'first_name', 'last_name', and 'role' matching the template), and 'fields' object for pre-filling template tokens.
Poll GET /public/v1/documents/{document_id} until the 'status' transitions from 'document.draft' to 'document.uploaded' before proceeding — document creation is asynchronous.
Send the document for signature by POSTing to /public/v1/documents/{document_id}/send with a body containing 'message', 'subject', and optionally 'silent' (boolean) to suppress email notifications if managing notifications externally.
Monitor document status via webhook or polling: register a webhook in PandaDoc Settings for events like 'document_state_changed' to detect when all recipients have signed (status 'document.completed').
Known gotchas
Document creation is asynchronous — the POST to /documents returns immediately with a 'document.draft' status, but the document is not ready to send until status is 'document.uploaded'; sending before this transition returns a 400 error.
Recipient roles in the API call must exactly match the role names defined in the template (case-sensitive); mismatched role names cause the document to be created without properly assigned signers, which is not always flagged as an error.
PandaDoc enforces API rate limits per plan tier; sandbox/free plans have much stricter limits than paid plans — performance testing done on a sandbox account will not reflect production throughput.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp