InTouch Hub · Blue Isle Software

PandaDoc

Generate, send, and track quotes and proposals via the PandaDoc REST API. Lists documents, reads document status/details, creates a document from a template, and sends a document for signature.

PandaDoc

Generate, send, and track quotes and proposals via the PandaDoc REST API.

This tool lists documents, reads a document's status/details, creates a document from a template, and sends a document for signature. It uses the Python standard library only (no requests), and every call returns the raw PandaDoc response body plus the HTTP status code.

Operations

operation method + path required inputs optional inputs
list_documents GET /documents status, count, query
get_document GET /documents/{id} documentId
create_document POST /documents name, templateUuid, recipientEmail recipientFirstName, recipientLastName, recipientRole
send_document POST /documents/{id}/send documentId subject, message, silent

Notes: - list_documents status is a PandaDoc status code (0–13); count defaults to 50, max 100; query searches by name or reference number. - A document must be in document.draft status before send_document will send it. create_document is asynchronous — poll get_document until the status leaves document.uploaded before sending. - silent: true on send_document suppresses recipient and sender email notifications.

API key setup

  1. Sign in to PandaDoc.
  2. Go to Settings → API & Integrations → API Key.
  3. Copy the Sandbox key for testing or the Production key for live use.
  4. Pass it as the apiKey input. The tool sends it as Authorization: API-Key <apiKey>.

The key is the only credential needed — there is no OAuth/JWT exchange for the API-key flow.

Output

Every operation prints a JSON envelope:

{ "status": "200", "result": "<raw PandaDoc JSON response as a string>" }

On a bad input or a transport failure (DNS, connection refused, timeout) the tool prints {"error": "<message>"} and exits non-zero so the job step fails. HTTP 4xx/5xx responses are NOT treated as transport failures — the PandaDoc error body is returned in result with its real status code so you can see exactly what PandaDoc rejected.

Examples

List the 10 most recently changed documents:

{
  "apiKey": "YOUR_KEY",
  "operation": "list_documents",
  "count": "10"
}

Search documents by name or reference number:

{
  "apiKey": "YOUR_KEY",
  "operation": "list_documents",
  "query": "Acme Q3 Proposal"
}

Get one document's status/details:

{
  "apiKey": "YOUR_KEY",
  "operation": "get_document",
  "documentId": "ABCdef123..."
}

Create a document from a template:

{
  "apiKey": "YOUR_KEY",
  "operation": "create_document",
  "name": "Acme Q3 Proposal",
  "templateUuid": "TEMPLATE_UUID",
  "recipientEmail": "[email protected]",
  "recipientFirstName": "Jordan",
  "recipientLastName": "Lee",
  "recipientRole": "signer"
}

Send a (draft) document for signature:

{
  "apiKey": "YOUR_KEY",
  "operation": "send_document",
  "documentId": "ABCdef123...",
  "subject": "Your proposal from Acme",
  "message": "Hi Jordan — please review and sign.",
  "silent": "false"
}