How to Send a Document via API
Send a document to recipients for viewing and signing via the PandaDoc API, with options for silent delivery, approval workflows, and forwarding control.
Problem
You have created a document via the API and it has reached document.draft status. Now you need to send it to recipients for viewing and signing, and you want to control the delivery method, notification behavior, and forwarding permissions.
Prerequisites
- A PandaDoc API key or OAuth token
- A document in
document.draftstatus (see Building a Reliable Document Creation Workflow) - Recipients assigned to the document (added during document creation)
Solution
Step 1: Confirm the document is in draft status
You can only send a document that is in document.draft status. After creation, documents briefly remain in document.uploaded (typically 3-5 seconds) while processing. Use the Document Status endpoint or webhooks to confirm the transition.
Attempting to send a document that is still indocument.uploadedstatus returns a409 Conflictresponse.
Step 2: Build the send request
At minimum, the request body can be empty ({}). PandaDoc will send a default notification email to all recipients. To customize delivery, include any of the following:
POST /public/v1/documents/{id}/send
{
"message": "Hello! Please review and sign this agreement.",
"subject": "Action required: Partnership Agreement",
"silent": false
}| Parameter | Purpose |
|---|---|
message | Custom body text included in the notification email |
subject | Custom email subject line (default: "[Sender] sent you '[Document name]'") |
silent | If true, disables all recipient email/SMS notifications (see Step 3) |
sender | Override the sender (email or membership_id) |
forwarding_settings | Control whether recipients can forward the document or reassign their fields |
selected_approvers | Select an approver from a group when an approval workflow is configured (see Step 5) |
See the Send Document API reference for the full parameter schema.
Step 3: Choose between notified and silent delivery
By default (silent: false), PandaDoc sends a notification email (and/or SMS if configured) to recipients with a link to the document.
Set silent: true when you are delivering the document through an alternative channel:
- Embedded signing -- you display the signing session inside your app
- Shared links -- you send the document link yourself via your own email, chat, or portal
Silent mode disables sent, viewed, comment, and completed email notifications. It does not affect approval workflow notifications.
For guidance on choosing between email delivery and embedded signing, see How to Choose Between Shared Links and Embedded Signing.
Step 4: Control forwarding permissions (optional)
You can restrict whether recipients can forward the document or reassign their signing rights:
{
"silent": false,
"forwarding_settings": {
"forwarding_allowed": true,
"forwarding_with_reassigning_allowed": false
}
}forwarding_allowed-- recipients can forward the document link to another email addressforwarding_with_reassigning_allowed-- recipients can transfer their field assignments (including signature) to someone else
Step 5: Handle approval workflows (if applicable)
If the document's template has an approval workflow enabled, sending moves the document to document.waiting_approval instead of document.sent. Once approved, you need to call the Send endpoint again to move it to document.sent.
To select a specific approver from a selectable group:
- Call Document Details and find the
approval_execution.stepssection - Copy the
stepsinto theselected_approversfield of your send request - Set
is_selected: truefor the approver you want
{
"selected_approvers": {
"steps": [
{
"id": "LzWmancTxrgfTMpsJP9Eqd",
"group": {
"id": "op9MA75HygJHiV4aeVHXCH",
"type": "selectable",
"assignees": [
{
"user": "tpBLrk3vJoLggypMSRt92i",
"is_selected": true
}
]
}
}
]
}
}
You can change the selected approver only by reverting the document back todocument.draftstatus.
Verification
- Check the API response -- a successful send returns the document with status
document.sent(ordocument.waiting_approvalif an approval workflow is active). - If
silent: false, verify that recipients received the notification email. - Use the Document Status endpoint or webhooks to track subsequent status changes (
document.viewed,document.completed).
Troubleshooting
| Error | Cause | Fix |
|---|---|---|
409 Conflict | Document is still in document.uploaded status | Wait for it to reach document.draft; poll status or use webhooks |
404 Not Found | Invalid document ID or document not yet processed | Verify the ID and confirm the document exists |
403 Permission Error | Sending outside your organization with a sandbox key, or insufficient permissions | Use a production API key, or check account permissions |
Related
- Send Document API reference -- full endpoint parameters and response schema
- Building a Reliable Document Creation Workflow -- async creation patterns
- How to Choose Between Shared Links and Embedded Signing -- delivery method comparison
- How to Set Up Post-Completion Redirect URLs -- redirect recipients after signing
- How to Resend a Document via Different Delivery Method -- change delivery after initial send
Updated about 12 hours ago