SDKs and integrations
What is available today, what is planned for SDKs, the CLI, no-code platforms and the MCP server, and how to use the REST API meanwhile.
The REST API is the product: everything the dashboard does, you can do over HTTP. Client libraries and platform integrations are being built on top of it, and this page is an honest status list so you can plan around it.
Status
| Tool | Status |
|---|---|
REST API at https://api-eu.dynamicdocumentapi.com/v1 | Available |
OpenAPI 3.1 description at https://api-eu.dynamicdocumentapi.com/v1/openapi.json and the API reference | Available |
TypeScript and JavaScript SDK (@dynamic-document-api/sdk) | Planned |
Python SDK (dynamic-document-api) | Planned |
PHP SDK (dynamic-document-api/dynamic-document-api-php) | Planned |
| Ruby, Go, Java and C# SDKs | Planned, after the first three |
| Command-line interface | Planned |
| Zapier, Make, n8n, Bubble | Planned |
MCP server at https://mcp.dynamicdocumentapi.com/mcp | Planned |
| Power Automate, Pipedream, Activepieces, Airtable, Google Sheets, WordPress and WooCommerce, Shopify | Planned |
Planned means designed and on the roadmap, not available yet. Until an SDK ships for your language, call the API directly: it is a small surface, and the quickstart has working examples in cURL, TypeScript and Python.
What the SDKs will provide
The SDKs are generated from the same OpenAPI description as the API reference, so they stay in step with the API. Every language will offer:
- A configurable base URL (the EU host by default), with the API key read from the
DYNAMIC_DOCUMENT_API_KEYenvironment variable - Automatic retries for
429,5xxand network errors, with exponential backoff and jitter, honouringRetry-After - Automatically generated idempotency keys for POST requests, which you can override
- Sensible timeouts, around 70 seconds for synchronous renders
- Typed errors per error
code, carrying therequest_id - Pagination iterators for list endpoints
- Helpers: wait for a render to finish, download a file as bytes or a stream, verify webhook signatures, and sign signed-link URLs locally
- A
User-Agentwith the SDK name and version, which you can turn off
Planned runtimes are Node.js 18 and later (including Deno, Bun and edge runtimes), Python 3.9 and later, PHP 8.1 and later, Ruby 3.1 and later, Go 1.22 and later, Java 11 and later, and .NET 8.
Using the REST API today
Any HTTP client works. A few practical notes:
- Set your client's timeout above your plan's sync timeout so you receive the
202response instead of dropping the connection. - Send an
Idempotency-Keyheader on every POST request and reuse it on retries. - Implement the small retry policy described in Errors.
- For long renders, use
mode: "async"plus webhooks, which includes copy-paste verification code for Node.js and Python. - Postman, Bruno and Insomnia can import the OpenAPI description directly.
No-code platforms
Connectors for Zapier, Make, n8n and Bubble are planned, with instant triggers for render.succeeded, render.failed, batch.completed and template.published, actions for every render type and PDF tool, and dynamic fields built from each template's schema.
Until they ship, these platforms can call the API with their generic HTTP modules:
- Authenticate with the
X-API-Keyheader, which is easier than a bearer token in some builders. - Use the flat convenience endpoints, for example
POST /v1/pdf/from-templatewithtemplate_id,dataandfilename. - Most platforms abort a step after 25 to 40 seconds. Keep requests inside that budget, or submit with
mode: "async"and continue from a webhook. GET /v1/templatesandGET /v1/templates/{id}/schemagive you template lists and field definitions for dropdowns and mappings.
MCP server
A remote MCP server at https://mcp.dynamicdocumentapi.com/mcp is planned, so AI agents and assistants can list templates, read their schemas and generate documents. It will use OAuth 2.1 with scoped access, let you choose a workspace and region at consent, and default new connections to test mode. Planned tools cover listing templates, reading a template schema, rendering PDFs from a template, HTML or Markdown, rendering images, retrieving a render and merging PDFs.
Building your own integration
If you distribute an integration to other workspaces:
- Send the
X-Dynamic-Document-Api-Sourceheader with a short, stable identifier for your platform, and put your integration's name and version in theUser-Agent. Renders are then attributable to your integration in the dashboard's render list and usage breakdown. - Use
GET /v1/accountas a connection test: it returns the workspace name and plan, which makes a good connection label. - Build input fields from
GET /v1/templates/{id}/schemarather than asking users for raw JSON, and offer a raw JSON mode as a fallback. - Send an
Idempotency-Keyfor every render so that a retried automation step doesn't produce duplicate documents. - Let users set the API host, rather than hard-coding one.
- Ask users for a key with the narrowest scopes your integration needs, and support test keys.
OAuth 2.0 authorisation for marketplace apps, so users don't have to paste API keys, is planned. If you are building something and need an identifier registered, write to support@dynamicdocumentapi.com.