> ## Documentation Index
> Fetch the complete documentation index at: https://www.composer.id/llms.txt
> Use this file to discover all available pages before exploring further.

# PandaDoc

> PandaDoc (Signature & Contract Management): the API posture, publish target and field mapping composerID publishes a decision reference through.

This page records how composerID publishes into PandaDoc: the vendor's API posture, the publish target and field mapping, and the documentation each claim rests on. It is for anyone evaluating the connection or building against it.

PandaDoc is a document-automation and eSignature platform with a clean public REST API. composerID creates documents from templates and stamps the Intent ID into the document's metadata, which is returned on reads and webhooks.

<Info>
  Category: Signature & Contract Management. Coverage status: Specification mapped. Vendor documentation: public developer portal.
</Info>

## Integration path

How composerID connects to this destination, at a glance.

| Step                 | Detail                                                                                                                                                                                                                     |
| -------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Authentication       | API key via the Authorization: API-Key \<key> header, or OAuth 2.0 authorization-code flow (authorize at [https://app.pandadoc.com/oauth2/authorize](https://app.pandadoc.com/oauth2/authorize)) for multi-workspace apps. |
| composerID publishes | Document (from template): POST /public/v1/documents                                                                                                                                                                        |
| Intent ID lands on   | `document` `metadata.intent_id`, written into the destination record                                                                                                                                                       |
| Back-sync            | Webhooks: the destination pushes events; composerID verifies each delivery and lands it on the intent's timeline.                                                                                                          |

## Vendor documentation

<Columns cols={2}>
  <Card title="PandaDoc Developer Docs" icon="external-link" href="https://developers.pandadoc.com/" horizontal />

  <Card title="Developer Reference" icon="external-link" href="https://developers.pandadoc.com/reference/about" horizontal />

  <Card title="Official API client (GitHub)" icon="external-link" href="https://github.com/PandaDoc/pandadoc-api-python-client" horizontal />
</Columns>

## API posture

| Aspect         | Detail                                                                                                                                                                                                                     |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Authentication | API key via the Authorization: API-Key \<key> header, or OAuth 2.0 authorization-code flow (authorize at [https://app.pandadoc.com/oauth2/authorize](https://app.pandadoc.com/oauth2/authorize)) for multi-workspace apps. |
| Style          | REST, JSON                                                                                                                                                                                                                 |
| Base URL       | [https://api.pandadoc.com](https://api.pandadoc.com)  (resources under /public/v1)                                                                                                                                         |
| Webhooks       | Native webhook subscriptions (/public/v1/webhook-subscriptions) with a queryable webhook-events log; events fire on document state changes and recipient completion.                                                       |
| Events posture | Webhooks                                                                                                                                                                                                                   |
| Rate limits    | Rate limited per account with HTTP 429 on exceed; back off and retry. Plan-specific limits: confirm current values in the developer docs.                                                                                  |
| Objects        | documents, templates, contacts, content-library-items, document-attachments, webhook-subscriptions                                                                                                                         |

## Publish target and field mapping

Each object below pairs the canonical intent fields with the destination's own fields and operations. The mapping is indicative until it is confirmed against a tenant at onboarding.

<AccordionGroup>
  <Accordion title="Document (from template)" icon="arrow-right-left" description="Create a document">
    | Mapping                  | Detail                                           |
    | ------------------------ | ------------------------------------------------ |
    | Canonical to destination | template\_uuid, recipients\[], fields/tokens     |
    | Target                   | POST /public/v1/documents                        |
    | Requirement              | Required                                         |
    | Notes                    | Document generated from a template + intent data |
  </Accordion>

  <Accordion title="Document status" icon="arrow-right-left" description="Send for signature">
    | Mapping                  | Detail                               |
    | ------------------------ | ------------------------------------ |
    | Canonical to destination | document\_id, status                 |
    | Target                   | POST /public/v1/documents/\{id}/send |
    | Requirement              | Tenant required                      |
    | Notes                    | Moves draft -> sent once uploaded    |
  </Accordion>

  <Accordion title="Intent ID correlation" icon="arrow-right-left" description="Carry the Intent ID">
    | Mapping                  | Detail                                                                      |
    | ------------------------ | --------------------------------------------------------------------------- |
    | Canonical to destination | intent\_id, intent\_version                                                 |
    | Target                   | metadata on the document                                                    |
    | Requirement              | Required                                                                    |
    | Notes                    | PandaDoc documents carry arbitrary metadata, returned on reads and webhooks |
  </Accordion>

  <Accordion title="Webhook event" icon="arrow-right-left" description="Read for back-sync">
    | Mapping                  | Detail                                                    |
    | ------------------------ | --------------------------------------------------------- |
    | Canonical to destination | event, document\_id, status                               |
    | Target                   | /public/v1/webhook-subscriptions                          |
    | Requirement              | Required                                                  |
    | Notes                    | Reconcile on document state change / recipient completion |
  </Accordion>
</AccordionGroup>

<Note>
  PandaDoc documents accept arbitrary metadata (key-value) that is returned on reads and webhooks, so the Intent ID rides natively. Templates and roles are configured per workspace; a single-workspace integration can use an API key, while multi-workspace apps use OAuth.
</Note>

## Next steps

<Columns cols={3}>
  <Card title="How composerID connects" icon="plug-zap" href="/guides/connect">
    The five ways composerID reaches a destination, and the minimum a destination must offer.
  </Card>

  <Card title="Publishing" icon="send" href="/concepts/publishing">
    Plan, preflight and publish: how a decision becomes a valid record in a destination.
  </Card>

  <Card title="All destinations" icon="plug" href="/destinations">
    Every destination composerID documents, with its category and coverage status.
  </Card>
</Columns>
