Obtain an API key from the PandaDoc developer dashboard or use OAuth 2.0 for user-level access; include the Authorization: API-Key {key} or Authorization: Bearer {token} header on all requests
POST to /public/v1/documents with a JSON body specifying name, template_uuid (a saved PandaDoc template), recipients (with email, first_name, last_name, and role), and pricing_tables to pre-fill table rows with qty, price, and product name values
Wait for the document status to transition from document.uploaded to document.draft by polling GET /public/v1/documents/{id} or listening for the document_state_changed webhook event
Send the document for signature with POST /public/v1/documents/{id}/send, specifying the subject and message for the email notification sent to recipients
Track the document through document.sent, document.viewed, and document.completed states; download the completed PDF with GET /public/v1/documents/{id}/download
Known gotchas
Pricing table structure in the API payload must match the table schema defined in the template; adding columns not present in the template will be silently ignored or may cause a validation error
Document creation is asynchronous; the POST /documents response returns immediately with document.uploaded status — always poll or use webhooks before attempting to send, as sending a non-ready document returns an error
PandaDoc API rate limits apply per API key; design your integration with retry logic and back-off for 429 responses
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