Cloud Storage
PandaDoc
API integration
Ship Cloud Storage features without building the integration. Full PandaDoc API access via Proxy, normalized data through Unified APIs, and 120+ MCP-ready tools for AI agents — all extensible to your exact use case.
Talk to usUse Cases
Why integrate with PandaDoc
Common scenarios for SaaS companies building PandaDoc integrations for their customers.
Auto-generate proposals from your platform's deal data
SaaS companies building CRMs or sales tools can let users trigger PandaDoc proposal creation directly from their app, injecting deal values like amounts, client names, and line items into branded templates — eliminating copy-paste and accelerating close rates.
Embed document signing into your application's workflow
Platforms in field service, healthcare, or HR can offer in-app signing experiences using PandaDoc's embedded sessions, so end users never leave your product to collect legally binding signatures from customers, candidates, or vendors.
Sync document statuses back into your app in real time
B2B SaaS products can listen for PandaDoc webhook events — like document viewed, signed, or declined — and reflect those statuses natively in their own UI, enabling users to act on document milestones without switching tools.
Automate offer letter workflows for ATS and HRIS platforms
HR tech platforms can map candidate data to PandaDoc templates so recruiters generate offer letters with a single click, and upon signature the signed PDF is automatically archived to the employee's profile.
Populate pricing tables from your product's catalog or estimates
Vertical SaaS platforms with quoting or invoicing features can push line items, quantities, discounts, and taxes directly into PandaDoc pricing tables, producing polished proposals that stay in sync with the source of truth.
What You Can Build
Ship these features with Truto + PandaDoc
Concrete product features your team can ship faster by leveraging Truto’s PandaDoc integration instead of building from scratch.
One-click document generation from app records
Let users select a PandaDoc template, auto-map your platform's data fields to PandaDoc tokens, and generate a ready-to-send document without leaving your product.
Real-time document status dashboard
Surface live PandaDoc document states (Draft, Sent, Viewed, Completed, Declined) inside your app's native UI by consuming webhook events.
Embedded in-app signing experience
Generate PandaDoc embedded signing sessions so your end users' recipients can sign documents directly within your product's portal or mobile app.
Signed PDF auto-archival to records
Automatically download the finalized signed PDF when a document is completed and attach it to the relevant record in your platform — deal, employee profile, or project.
User directory sync via Unified API
Use Truto's Unified User Directory API to read PandaDoc workspace users, enabling your platform to map document ownership, manage permissions, and display sender identities natively.
Dynamic pricing table injection from line items
Push your app's estimate or invoice line items — including optional selections, quantities, and discounts — directly into PandaDoc pricing tables for interactive, client-facing proposals.
SuperAI
PandaDoc AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
list_all_panda_doc_members
List Members. Returns: user_id, membership_id, email, first_name, last_name, is_active, workspace, workspace_name, emails_verified, role, user_license, date_created, date_modified.
get_single_panda_doc_member_by_id
Member Details. Returns: user_id, membership_id, email, first_name, last_name, is_active, workspace, workspace_name, emails_verified, role, user_license, date_created, date_modified. Required: id.
list_all_panda_doc_attachment_downloads
Download Document Attachment. Returns no documented response fields; the response body is the raw file bytes. Required: id, attachment_id.
list_all_panda_doc_auto_reminders_status
Document Auto Reminder Status. Returns: recipient_id, status. Required: document_id.
create_a_panda_doc_document_append_content_library_item
Append Content Library Item to a document. Returns: cli, block_mapping. Required: id.
panda_doc_document_attachments_bulk_delete
Delete Document Attachment. Returns an empty 204 response on success. Required: id, attachment_id.
list_all_panda_doc_document_attachments
Document Attachment Details. Returns: uuid, date_created, created_by, name. Required: id, attachment_id.
create_a_panda_doc_document_attachments_upload
Create Document Attachment From Upload. Returns: uuid, date_created, created_by, name. Required: id.
list_all_panda_doc_document_audit_trails
List Document Audit Trail. Returns: id, user, action, reason, date_created, ip_address. Required: document_id.
panda_doc_document_auto_reminders_bulk_update
Update Document Auto Reminder Settings. Returns: enabled, delivery_method, initial_delay_days, is_recurring, recurrence_frequency_days. Required: document_id, enabled.
list_all_panda_doc_document_auto_reminders
Document Auto Reminder Settings. Returns: enabled, delivery_method, initial_delay_days, is_recurring, recurrence_frequency_days. Required: document_id.
list_all_panda_doc_document_details
Document Details. Returns: id, name, autonumbering_sequence_name_prefix, folder_uuid, date_created, date_modified, date_completed, content_date_modified, date_sent, ref_number, created_by, template, expiration_date, metadata, tokens, fields, pricing, tables, images, texts, tags, sent_by, recipients, grand_total, linked_objects, status, approval_execution, version, lock. Required: id.
list_all_panda_doc_document_download_protecteds
Download Completed Document. Returns no documented response fields; the response body is the raw file bytes. Required: id.
list_all_panda_doc_document_downloads
Document Download. Returns no documented response fields; the response body is the raw file bytes. Required: id.
create_a_panda_doc_document_draft
Move Document to Draft. Returns: id, name, status, date_created, date_modified, expiration_date, version. Required: id.
create_a_panda_doc_document_editing_session
Create Document Editing Session. Returns: id, email, expires_at, key, token, document_id. Required: id, email.
list_all_panda_doc_document_esign_disclosures
Document eSign disclosure. Returns: is_enabled, company_name, esign_disclosure_text. Required: document_id.
panda_doc_document_fields_bulk_update
Update Document Fields Assignment. Returns an empty 204 response on success. Required: id, fields.
create_a_panda_doc_document_field
Create Document Fields. Returns: fields. Required: id.
list_all_panda_doc_document_fields
List Document Fields. Returns: uuid, name, title, value, field_id, type, placeholder, assigned_to, layout, section_uuid. Required: id.
panda_doc_document_linked_objects_bulk_delete
Delete Linked Object. Returns an empty 204 response on success. Required: id, linked_object_id.
create_a_panda_doc_document_linked_object
Create Linked Object. Returns: id, provider, entity_type, entity_id, children. Required: id, provider, entity_type, entity_id.
list_all_panda_doc_document_linked_objects
List Linked Objects. Returns: id, provider, entity_type, entity_id, children. Required: id.
create_a_panda_doc_document_move_to_folder
Document move to folder. Returns an empty 204 response on success. Required: id, folder_id.
panda_doc_document_ownerships_bulk_update
Update document ownership. Returns an empty 204 response on success. Required: id.
panda_doc_document_recipients_bulk_delete
Delete Document Recipient. Returns an empty 204 response on success. Required: id, recipient_id.
create_a_panda_doc_document_recipient
Add Document Recipient. Returns: recipient_id. Required: id, kind.
panda_doc_document_sections_bulk_delete
Delete Document Section. Returns an empty 204 response on success. Required: document_id, section_id.
get_single_panda_doc_document_section_by_id
Document Section Details. Returns: uuid, name, document_uuid. Required: document_id, id.
list_all_panda_doc_document_sections
List Document Sections. Returns: uuid, name. Required: document_id.
create_a_panda_doc_document_send_reminder
Send Manual Reminder. Returns: result. Required: document_id.
create_a_panda_doc_document_session
Create Document Session for Embedded Sign. Returns: id, expires_at. Required: id, recipient.
panda_doc_document_settings_bulk_update
Update document settings. Returns: language, qualified_electronic_signature, expires_in, suggest_edits. Required: document_id.
list_all_panda_doc_document_settings
Get document settings. Returns: language, qualified_electronic_signature, expires_in, suggest_edits. Required: document_id.
panda_doc_document_status_bulk_update
Document Status Change. Returns an empty 204 response on success. Required: id, status.
panda_doc_document_status_uploads_bulk_update
Document Status Change with Upload. Returns an empty 204 response on success. Required: id.
list_all_panda_doc_documents_linked_objects
List Documents by Linked Object. Returns: id, status, date_created, template_id. Required: entity_id, entity_type, provider.
panda_doc_documents_ownerships_bulk_update
Transfer all documents ownership. Returns an empty 204 response on success.
create_a_panda_doc_oauth_2_access_token
Create/Refresh Access Token. Returns: access_token, token_type, expires_in, scope, refresh_token.
panda_doc_public_documents_attach_attachment
Create Document Attachment. Returns: uuid, date_created, created_by, name. Required: id.
panda_doc_public_documents_bulk_delete
Delete documents (bulk). Returns: id.
create_a_panda_doc_public_document
Create Document. Returns: id, name, status, date_created, date_modified, expiration_date, version, uuid, links, info_message.
delete_a_panda_doc_public_document_by_id
Delete Document. Returns an empty 204 response on success. Required: id.
get_single_panda_doc_public_document_by_id
Document Status. Returns: id, name, status, date_created, date_modified, date_completed, expiration_date, version, uuid. Required: id.
list_all_panda_doc_public_documents
List Documents. Returns: id, name, status, date_created, date_modified, date_completed, expiration_date, version.
panda_doc_public_documents_list_attachments
List Document Attachments. Returns: uuid, date_created, created_by, name. Required: id.
panda_doc_public_documents_send
Send Document. Returns: id, name, status, date_created, date_modified, date_completed, expiration_date, version, uuid, recipients. Required: id.
update_a_panda_doc_public_document_by_id
Update Document. Returns an empty 204 response on success. Required: id.
create_a_panda_doc_public_documents_upload_markdown
Create Document from Markdown File Upload. Returns: id, name, status, date_created, date_modified, expiration_date, version, uuid, links, info_message.
create_a_panda_doc_public_documents_upload
Create Document from File Upload. Returns: id, name, status, date_created, date_modified, expiration_date, version, uuid, links, info_message.
create_a_panda_doc_recipient_reassign
Change Signer (Reassign Document Recipient). Returns: recipient_id. Required: id, recipient_id, kind.
panda_doc_recipients_bulk_update
Update Document Recipient. Returns an empty 204 response on success. Required: id, recipient_id.
list_all_panda_doc_sections_uploads
Document Section Upload Status. Returns: uuid, document_uuid, status, name, sections_uuids, date_created, date_modified. Required: document_id, upload_id.
create_a_panda_doc_sections_upload
Create Document Section. Returns: uuid, name, document_uuid, status, date_created, date_modified, date_completed, info_message. Required: document_id.
create_a_panda_doc_sections_uploads_upload
Create Document Section from File Upload. Returns: uuid, name, document_uuid, status, date_created, date_modified, date_completed, info_message. Required: document_id.
create_a_panda_doc_add_named_item
Add DSV Named Items to a Document. Returns: results, count. Required: document_id, items.
list_all_panda_doc_public_content_library_items
List Content Library Item. Returns: id, name, date_created, date_modified, version.
create_a_panda_doc_public_content_library_item
Create Content Library Item. Returns: id, name, date_created, date_modified, version, status.
get_single_panda_doc_public_content_library_item_by_id
Content Library Item Status. Returns: id, name, date_created, date_modified, version, status. Required: id.
create_a_panda_doc_public_content_library_items_upload
Create Content Library Item from File Upload. Returns: id, name, date_created, date_modified, version, status.
list_all_panda_doc_content_library_item_details
Content Library Item Details. Returns: id, name, date_created, date_modified, content_date_modified, created_by, metadata, tokens, fields, pricing, tags, roles, version, content_placeholders, tables, images. Required: id.
list_all_panda_doc_public_templates
List Templates. Returns: id, name, date_created, date_modified, version, content_date_modified.
create_a_panda_doc_public_template
Create Template. Returns: id, name, date_created, date_modified, version, content_date_modified.
get_single_panda_doc_public_template_by_id
Template Status. Returns: id, name, date_created, date_modified, version, status. Required: id.
update_a_panda_doc_public_template_by_id
Template Update. Returns an empty 204 response on success. Required: id.
delete_a_panda_doc_public_template_by_id
Delete Template. Returns an empty 204 response on success. Required: id.
create_a_panda_doc_public_templates_upload
Create Template from File Upload. Returns: id, name, date_created, date_modified, version, content_date_modified.
list_all_panda_doc_template_details
Template Details. Returns: id, name, folder_uuid, date_created, date_modified, content_date_modified, created_by, metadata, tokens, fields, pricing, tags, roles, version, content_placeholders, tables, images. Required: id.
create_a_panda_doc_template_editing_session
Create Template Editing Session. Returns: id, email, expires_at, key, token, template_id. Required: id, email.
list_all_panda_doc_template_settings
Get template settings. Returns: language. Required: template_id.
panda_doc_template_settings_bulk_update
Update template settings. Returns: language. Required: template_id.
list_all_panda_doc_public_forms
List Forms. Returns: id, name, date_created, date_modified, status.
list_all_panda_doc_documents_folders
List Documents Folders. Returns: uuid, name, date_created, has_folders, has_items.
create_a_panda_doc_documents_folder
Create Documents Folder. Returns: uuid, name, date_created. Required: name.
update_a_panda_doc_documents_folder_by_id
Rename Documents Folder. Returns: uuid, name, date_created. Required: id, name.
list_all_panda_doc_templates_folders
List Templates Folders. Returns: uuid, name, date_created, has_folders, has_items.
create_a_panda_doc_templates_folder
Create Templates Folder. Returns: uuid, name, date_created. Required: name.
update_a_panda_doc_templates_folder_by_id
Rename Templates Folder. Returns: uuid, name, date_created. Required: id, name.
list_all_panda_doc_public_contacts
List contacts. Returns: id, email, first_name, last_name, company, job_title, phone, country, state, street_address, city, postal_code.
create_a_panda_doc_public_contact
Create contact. Returns: id, email, first_name, last_name, company, job_title, phone, country, state, street_address, city, postal_code.
get_single_panda_doc_public_contact_by_id
Contact Details. Returns: id, email, first_name, last_name, company, job_title, phone, country, state, street_address, city, postal_code. Required: id.
update_a_panda_doc_public_contact_by_id
Update Contact. Returns: id, email, first_name, last_name, company, job_title, phone, country, state, street_address, city, postal_code. Required: id.
delete_a_panda_doc_public_contact_by_id
Delete Contact. Returns an empty 204 response on success. Required: id.
list_all_panda_doc_public_logs
List API Log. Returns: id, url, status, request_time, response_time.
get_single_panda_doc_public_log_by_id
API Log Details. Returns: id, url, method, status, request_time, response_time, response_body, query_params_string, query_params_object, request_body, token_type, application, key, request_id, user_email, user_id. Required: id.
list_all_panda_doc_public_logs_v_2
List API Log. Returns: id, url, status, request_time, response_time.
get_single_panda_doc_public_logs_v_2_by_id
API Log Details. Returns: id, url, method, status, request_time, response_time, response_body, query_params_string, query_params_object, request_body, token_type, application, key, request_id, user_email, user_id. Required: id.
get_single_panda_doc_public_member_by_id
Current Member Details. Returns: user_id, membership_id, email, first_name, last_name, is_active, workspace, workspace_name, emails_verified, role, user_license, date_created, date_modified.
create_a_panda_doc_member_token
Create Member Token. Returns: token. Required: member_id.
list_all_panda_doc_notary_notaries
List Notaries. Returns: id, email, name, status, commission_state.
list_all_panda_doc_notary_notarization_requests
List Notarization Requests. Returns: id, status, name, document_id, date_created, date_started, date_completed, created_by_user_id.
create_a_panda_doc_notary_notarization_request
Create Notarization Request. Returns: id, name, status, date_created, date_accepted, created_by, invitees. Required: document_id, invitation.
get_single_panda_doc_notary_notarization_request_by_id
Notarization Request Details. Returns: id, status, document_id, date_created, date_started, date_completed, created_by, invitees, signed_documents, recording, termination_reason, termination_details. Required: id.
delete_a_panda_doc_notary_notarization_request_by_id
Delete Notarization Request. Returns an empty 204 response on success. Required: id.
list_all_panda_doc_public_webhook_events
List Webhook Events. Returns: uuid, name, type, http_status_code, error, delivery_time. Required: count.
get_single_panda_doc_public_webhook_event_by_id
Webhook Event Details. Returns: uuid, name, type, http_status_code, error, delivery_time, url, signature, request_body, response_body, response_headers, event_time. Required: id.
list_all_panda_doc_public_webhook_subscriptions
List Webhook Subscriptions. Returns: uuid, name, url, active, payload, triggers, workspace_id, shared_key, status.
create_a_panda_doc_public_webhook_subscription
Create Webhook Subscription. Returns: uuid, name, url, active, payload, triggers, workspace_id, shared_key, status. Required: name, url, triggers.
get_single_panda_doc_public_webhook_subscription_by_id
Webhook Subscription Details. Returns: uuid, name, url, active, payload, triggers, workspace_id, shared_key, status. Required: id.
update_a_panda_doc_public_webhook_subscription_by_id
Update Webhook Subscription. Returns: uuid, name, url, active, payload, triggers, workspace_id, shared_key, status. Required: id.
delete_a_panda_doc_public_webhook_subscription_by_id
Delete Webhook Subscription. Returns an empty 204 response on success. Required: id.
panda_doc_webhook_subscription_shared_keys_bulk_update
Update Webhook Subscription Shared Key. Returns: shared_key. Required: id.
list_all_panda_doc_contents
[Beta] Document Content. Returns: format, content. Required: document_id, format.
list_all_panda_doc_document_ai_metadatas
[Beta] Get AI Metadata for a Document. Returns: id, key, field_type, settings, value. Required: document_id.
create_a_panda_doc_document_docx_export_task
[Beta] Create DOCX Export Task. Returns: id, document_id, status. Required: document_id.
list_all_panda_doc_document_docx_export_tasks
[Beta] DOCX Export Task. Returns: id, document_id, status, docx_items. Required: document_id, task_id.
panda_doc_document_quotes_bulk_update
Quote update. Returns: id, currency, total, summary, sections, merge_rules, settings. Required: document_id, quote_id.
list_all_panda_doc_document_summaries
[Beta] Document Summary. Returns: type, summary. Required: document_id, type.
create_a_panda_doc_documents_ai_metadata
[Beta] Get AI Metadata for Multiple Documents. Returns: count, results. Required: document_ids.
list_all_panda_doc_documents_searches
[Beta] List Documents Search. Returns: document_id, name, status, date_created, owner, folder, extra_fields. Required: q.
list_all_panda_doc_items_searches
List Catalog Items Search. Returns: billing_cycle, billing_type, bundle_items_count, workspace_id, category_id, category_name, created_by, cost, currency, custom_fields, date_created, date_modified, description, image_src, images, max_tier_value, min_tier_value, modified_by, price, pricing_method, sku, title, tiers, type, uuid, highlights.
panda_doc_member_roles_bulk_update
Change Member Role in Workspace. Returns: member_id, workspace_id, role, email. Required: workspace_id, member_id, role.
panda_doc_product_catalog_items_bulk_delete
Delete Catalog Item. Returns an empty 204 response on success. Required: item_uuid.
panda_doc_product_catalog_items_bulk_update
Update Catalog Item. Returns: uuid, title, date_created, date_modified, created_by, modified_by, category_id, category_name, type, bundle_items, default_price_configuration, variants. Required: item_uuid.
create_a_panda_doc_product_catalog_item
Create Catalog Item. Returns: uuid, title, date_created, date_modified, created_by, modified_by, category_id, category_name, type, bundle_items, default_price_configuration, variants. Required: title, price_configuration.
list_all_panda_doc_product_catalog_items
Catalog Item Details. Returns: uuid, title, date_created, date_modified, created_by, modified_by, category_id, category_name, type, bundle_items, default_price_configuration, variants. Required: item_uuid.
list_all_panda_doc_public_sms_opt_outs
Recent SMS Opt-out. Returns: phone_number, status, opt_out_changed.
create_a_panda_doc_public_user
Create User. Returns: user_id, workspaces. Required: user, workspaces, license.
get_single_panda_doc_public_user_by_id
Get User Details by ID. Returns: user_id, email, first_name, last_name, phone_number, license, is_organization_owner, workspaces. Required: id.
list_all_panda_doc_public_users
List Users. Returns: user_id, email, first_name, last_name, phone_number, license, is_organization_owner, workspaces.
panda_doc_public_workspaces_attach_member
Add Member to Workspace. Returns: member_id, workspace_id, role, email, first_name, last_name. Required: workspace_id, user_id, role.
create_a_panda_doc_public_workspace
Create Workspace. Returns: id, name. Required: name.
panda_doc_public_workspaces_deactivate
Deactivate Workspace. Specifies an empty response body on success. Required: workspace_id.
list_all_panda_doc_public_workspaces
List Workspaces. Returns: id, name, date_created, owner.
create_a_panda_doc_workspace_api_key
Create API Key. Returns: user_id, type, workspace_id, key. Required: workspace_id, type.
panda_doc_workspace_members_bulk_delete
Remove Member from Workspace. Returns an empty 204 response on success. Required: workspace_id, member_id.
Why Truto
Why use Truto’s MCP server for PandaDoc
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 550+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
Unified APIs
Unified APIs for PandaDoc
Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.
Unified User Directory API
Users
The User object represents a User.
How It Works
From zero to integrated
Go live with PandaDoc in under an hour. No boilerplate, no maintenance burden.
Link your customer’s PandaDoc account
Use Truto’s frontend SDK to connect your customer’s PandaDoc account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call PandaDoc
Truto’s Proxy API is a 1-to-1 mapping of the PandaDoc API. You call us, we call PandaDoc, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate PandaDoc’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about PandaDoc on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
What Truto Unified APIs are available for PandaDoc today?
PandaDoc is currently supported under Truto's Unified User Directory API, which covers reading users from PandaDoc workspaces. Additional tools and unified API coverage (documents, templates, webhooks) are built on request — contact Truto to scope your specific workflow needs.
How does authentication work for PandaDoc through Truto?
PandaDoc supports OAuth 2.0 for third-party integrations. Truto manages the full OAuth flow — token acquisition, refresh, and secure storage — so your end users connect their PandaDoc accounts with a simple authorization prompt and you never handle credentials directly.
Does PandaDoc have API rate limits I should be aware of?
Yes. PandaDoc enforces rate limits on its API that vary by endpoint and plan tier. Truto handles retry logic and rate-limit awareness so your integration gracefully manages throttling without dropping requests.
Can I access PandaDoc template tokens and roles via the integration?
PandaDoc's API exposes template details including tokens (merge variables) and recipient roles. While specific Truto tools for templates are built on request, this data is available through PandaDoc's API and Truto can proxy or unify access to it for your use case.
What happens if my customer's PandaDoc plan doesn't include API access?
PandaDoc API access is available on their Business and Enterprise plans. If an end user is on a lower-tier plan, API calls will be rejected by PandaDoc. Truto surfaces these errors clearly so you can guide users to upgrade their PandaDoc subscription.
Can Truto support PandaDoc webhooks for real-time event handling?
PandaDoc offers webhooks for events like document state changes and PDF readiness. Truto can be configured to receive and normalize these webhook payloads as part of a custom integration build — reach out to discuss your specific event-driven workflow requirements.
PandaDoc
Get PandaDoc integrated into your app
Our team understands what it takes to make a PandaDoc integration successful. A short, crisp 30 minute call with folks who understand the problem.