# Send Manual Reminder Sends manual reminders to one or more recipients of a specified document. # OpenAPI definition ```json { "openapi": "3.0.3", "info": { "title": "PandaDoc Public API", "description": "PandaDoc API spans a broad range of functionality to help you build incredible documents automation experiences inside your product.\n\nPandaDoc API is organized around REST. Our API has predictable resource-oriented URLs and uses standard HTTP response codes, authentication, and verbs.\n\n## Getting started\n\nYou can start testing PandaDoc API with a sandbox key on our [Enterprise](https://www.pandadoc.com/pricing/) plan, either active or in trial.\n\nGenerate your [sandbox key](https://developers.pandadoc.com/reference/sandbox-key) on the Developer Dashboard with predefined [rate limits](https://developers.pandadoc.com/reference/limits). Or contact our solutions expert if you work with high-transaction volumes.\n\n## Guides\n\nIf you’re just getting started with PandaDoc, you may want to jump straight into one of our [getting started guides](https://developers.pandadoc.com/docs/getting-started) for the feature you’re most interested in, whether that’s:\n\n- [Create from template](https://developers.pandadoc.com/docs/create-send-document),\n- [Upload and send a local PDF](https://developers.pandadoc.com/docs/upload-and-send-a-local-pdf),\n- or [Listening for changes in document status](https://developers.pandadoc.com/docs/listen-document-status-changes).\n\nWe also recommend you to discover our dynamic content generation on a fly: [Create from a template with content placeholder](https://developers.pandadoc.com/docs/create-with-content-placeholders-from-template).\n", "termsOfService": "https://www.pandadoc.com/master-services-agreement/", "contact": { "name": "PandaDoc API Support", "url": "https://developers.pandadoc.com/", "email": "api-track@pandadoc.com" }, "license": { "name": "MIT", "url": "https://github.com/PandaDoc/pandadoc-openapi-specification/blob/main/LICENSE" }, "version": "7.18.2" }, "servers": [ { "url": "https://api.pandadoc.com", "description": "Public API" } ], "security": [ { "apiKey": [] }, { "oauth2": [] } ], "tags": [ { "name": "Document Reminders", "description": "Operations for configuring document reminders." } ], "paths": { "/public/v1/documents/{document_id}/send-reminder": { "post": { "summary": "Send Manual Reminder", "operationId": "createManualReminder", "description": "Sends manual reminders to one or more recipients of a specified document.\n", "tags": [ "Document Reminders" ], "parameters": [ { "name": "document_id", "in": "path", "description": "The UUID of the document.", "schema": { "type": "string" }, "required": true, "example": "BhVzRcxH9Z2LgfPPGXFUBa" } ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentSendManualReminderRequest" }, "examples": { "Send Manual Reminder": { "value": { "reminders": [ { "recipient_id": "2eWSKSvVqmuVCnuUK3iWwD", "delivery_methods": { "email": true, "sms": false } }, { "recipient_id": "7JhSDcvLQa9uR7kBX8mYeK", "delivery_methods": { "email": true, "sms": true } } ] } } } } } }, "responses": { "200": { "description": "Successfully processed reminder requests.\nReturns an array of objects, where each object details the outcome of the reminder delivery attempt for a specific recipient.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentSendManualReminder200Response" }, "examples": { "Send Manual Reminder": { "value": { "result": [ { "recipient_id": "2eWSKSvVqmuVCnuUK3iWwD", "email": { "status": "sent", "sent_at": "2025-04-14T10:15:30Z" }, "sms": { "status": "sent", "sent_at": "2025-04-14T10:15:31Z" } }, { "recipient_id": "2ZjA3A3RvjgVadJ9DpNQwz", "email": { "status": "error", "detail": "Can't send reminder. Signing order is enabled and this Recipient can't sign the document yet" }, "sms": { "status": "error", "detail": "Can't send reminder. Signing order is enabled and this Recipient can't sign the document yet" } }, { "recipient_id": "udDBKqHFhJt9PxzS5cv7to", "sms": { "status": "error", "detail": "Can't send SMS reminder to the Recipient with invalid phone number" }, "email": { "status": "sent", "sent_at": "2025-04-14T10:15:35Z" } } ] } } } } } }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" }, "404": { "$ref": "#/components/responses/404" }, "409": { "description": "Returned when a manual reminder cannot be sent due to the document's current status.\nThis occurs when:\n - The document has not been sent yet.\n - The document is in a final state (e.g., completed, paid, declined, or expired).\n - The document is in \"suggesting mode,\" during which reminders are disabled.\n", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DocumentSendManualReminder409Response" } } } }, "429": { "$ref": "#/components/responses/429" } } } } }, "components": { "securitySchemes": { "apiKey": { "type": "apiKey", "name": "Authorization", "in": "header", "description": "The `Authorization` header must contain the API key. The value should be prefixed with `API-Key` followed by a space and the actual API key.\n", "x-default": "API-Key 3039ba033eb1410caa0a2227158d63c9d6502cd8" }, "oauth2": { "type": "oauth2", "flows": { "authorizationCode": { "authorizationUrl": "https://app.pandadoc.com/oauth2/authorize", "tokenUrl": "https://api.pandadoc.com/oauth2/access_token", "refreshUrl": "https://api.pandadoc.com/oauth2/access_token", "scopes": { "read+write": "Use `read+write` to create, send, delete, and download documents, and `read` to view templates and document details." } } }, "description": "Send the authenticating user to the PandaDoc OAuth2 request URL. We recommend a button or a link titled\n\"Connect to PandaDoc\" if you are connecting users from a custom application. Users will see the \"Authorize Application\" screen.\nWhen the user clicks \"Authorize\", PandaDoc redirects the user back to your site with an authorization code inside the URL.\n\nhttps://app.pandadoc.com/oauth2/authorize?client_id={client_id}&redirect_uri={redirect_uri}&scope=read+write&response_type=code\n\n`client_id` and `redirect_uri` values should match your application settings.\n" } }, "schemas": { "RecipientDeliveryMethods": { "type": "object", "nullable": true, "properties": { "email": { "type": "boolean" }, "sms": { "type": "boolean" } } }, "DocumentSendManualReminderRequest": { "type": "object", "properties": { "reminders": { "type": "array", "description": "A list of reminders to be sent to specified recipients.\nUse this field to specify which recipients should receive a reminder and through which delivery methods.\n\nEach email reminder contains document sender in the From field, \nensuring the recipient always sees consistent sender details and branding.\n", "items": { "type": "object", "properties": { "recipient_id": { "type": "string", "example": "2eWSKSvVqmuVCnuUK3iWwD", "description": "Unique identifier of the recipient to receive the reminder." }, "delivery_methods": { "$ref": "#/components/schemas/RecipientDeliveryMethods" }, "email_customization": { "type": "object", "description": "Optional customization settings for the reminder email.\nDefines the subject and body text used when sending the reminder via email.\n**This object is processed only if** `delivery_methods.email` is set to `true`.\n", "example": { "subject": "Reminder: Please sign the document \"Service Agreement\"", "message": "This is a friendly reminder to review and sign the document \"Service Agreement\".\nPlease click the link below to access the document.\nThank you,\nThe Tech Solutions Team\n" }, "properties": { "subject": { "type": "string", "description": "Subject line of the reminder email sent to the recipient.\n", "example": "Reminder: Please sign the document \"Service Agreement\"", "maxLength": 512 }, "message": { "type": "string", "description": "Custom message body of the reminder email. Can include friendly or contextual\ntext encouraging the recipient to complete the signing process.\n\nSupports **Markdown** syntax for rich text formatting (e.g., bold, italics, links, and line breaks).\n", "example": "**Reminder:** Please review and sign the document *\"Service Agreement\"*.\n\nThank you, \n**The Tech Solutions Team**\n", "maxLength": 5000 } } } } } } } }, "DocumentSendManualReminder200Response": { "type": "object", "properties": { "result": { "type": "array", "items": { "type": "object", "properties": { "recipient_id": { "type": "string", "description": "Unique identifier of the recipient." }, "sms": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "sent", "error" ], "description": "Status of the SMS reminder attempt (sent or error)." }, "sent_at": { "type": "string", "format": "date-time", "description": "Timestamp of when the reminder was sent, in ISO 8601 format." }, "detail": { "type": "string", "enum": [ "Can't send reminder to CC recipient", "Can't send reminder to recipient group", "Can't send reminder to the Recipient who completed their part", "Can't send reminder. Signing order is enabled and this Recipient can't sign the document yet", "Can't send reminder. SMS delivery method is not selected for recipient", "Can't send SMS reminder. Confirmation of recipient consent is required. Admin should access workspace settings to certify", "Can't send SMS reminder to the Recipient more than once every 24 hours", "Can't send SMS reminder to the Recipient with no phone number", "Can't send SMS reminder to the Recipient with invalid phone number", "Can't send reminder. The document does not contain a recipient with the specified recipient ID" ], "description": "Detailed explanation of why the reminder could not be sent, if applicable." } } }, "email": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "sent", "error" ], "description": "Status of the email reminder attempt (sent or error)." }, "sent_at": { "type": "string", "format": "date-time", "description": "Timestamp of when the reminder was sent, in ISO 8601 format." }, "detail": { "type": "string", "enum": [ "Can't send reminder to CC recipient", "Can't send reminder to recipient group", "Can't send reminder to the Recipient who completed their part", "Can't send reminder. Signing order is enabled and this Recipient can't sign the document yet", "Can't send reminder. Email delivery method is not selected for recipient", "Can't send email reminder. Recipient's mailbox is unreachable", "Can't send email reminder to the Recipient with no email", "Can't send email reminder to the Recipient more than once every 24 hours", "Can't send reminder. The document does not contain a recipient with the specified recipient ID", "Can’t send reminder. Email message contains potentially malicious links and could not be processed" ], "description": "Detailed explanation of why the reminder could not be sent, if applicable." } } }, "email_customization": { "type": "object", "description": "Optional customization settings for the reminder email.\nDefines the subject and body text used when sending the reminder via email.\n", "example": { "subject": "Reminder: Please sign the document \"Service Agreement\"", "message": "This is a friendly reminder to review and sign the document \"Service Agreement\".\nPlease click the link below to access the document.\nThank you,\nThe Tech Solutions Team\n" }, "properties": { "subject": { "type": "string", "description": "Subject line of the reminder email sent to the recipient.\n", "example": "Reminder: Please sign the document \"Service Agreement\"", "maxLength": 512 }, "message": { "type": "string", "description": "Custom message body of the reminder email. Can include friendly or contextual\ntext encouraging the recipient to complete the signing process.\n\nSupports **Markdown** syntax for rich text formatting (e.g., bold, italics, links, and line breaks).\n", "example": "**Reminder:** Please review and sign the document *\"Service Agreement\"*.\n\nThank you, \n**The Tech Solutions Team**\n", "maxLength": 5000 } } } } }, "required": [ "recipient_id" ] } } }, "DocumentSendManualReminder409Response": { "type": "object", "properties": { "id": { "type": "string", "example": "mXpGsEBHdSFW97zKXq75hm" }, "status": { "type": "string", "example": "document.uploaded" }, "info_message": { "type": "string", "example": "Can't send reminder. Document is not in SENT or VIEWED statuses" } } } }, "responses": { "401": { "description": "Authentication error", "content": { "application/json": { "schema": { "properties": { "type": { "type": "string", "example": "authentication_error" }, "detail": { "type": "string", "example": "Authentication credentials were not provided." } } } } } }, "403": { "description": "Permission error", "content": { "application/json": { "schema": { "properties": { "type": { "type": "string", "example": "permission_error" }, "detail": { "type": "string", "example": "You do not have permission to perform this action." }, "info_message": { "type": "string", "description": "Human-readable explanation of the permission error.", "example": "You are not allowed to send documents outside of your organization" }, "links": { "type": "array", "description": "Optional links related to the error (e.g. a status endpoint).", "items": { "type": "object", "properties": { "rel": { "type": "string", "example": "status" }, "href": { "type": "string", "example": "https://api.pandadoc.com/public/v1/documents/RsXrKarV524iCpjci9CMGa" }, "type": { "type": "string", "example": "POST" } } } } } } } } }, "404": { "description": "Not found", "content": { "application/json": { "schema": { "properties": { "type": { "type": "string", "example": "request_error" }, "detail": { "type": "string", "example": "Not found" } } } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "properties": { "type": { "type": "string", "example": "throttled" }, "detail": { "type": "string", "example": "Request was throttled." } } } } } } } } } ```