DocsAutomator
BlogLaunch App
  • 📃DocsAutomator Basics
    • DocsAutomator Overview
    • âš¡Quickstart Guide
    • Google Doc Template Guide
  • 🔗Integrations / API
    • Airtable
    • Google Sheets
    • Glide
    • Noloco
    • ClickUp
    • Zapier
    • DocsAutomator API
  • ✨Features
    • Dynamic Images
    • Line Items
      • Line Items Grouping + Calculations
      • Auto Row Numbers
    • Sections
    • Advanced Placeholder Options
      • Conditional Paragraph / Row Deletion
      • Enable Markdown Formatting
      • Hidden Values
      • Conditional Show / Hide
      • Conditional Styling
    • Actions After Document Generation
      • Saving Google Docs
      • Save PDFs in Google Drive
      • Send Email
      • Merge Existing PDFs
      • Notify Webhook
    • Document Previews
    • Run History
    • PDF Expiration / Storage
    • Team Management
    • Workspaces
  • More
    • DocsAutomator Reviews
    • Troubleshooting Guide
      • Airtable: 30 seconds limit on automation scripts
      • Airtable: Attachment url issue when sending emails
      • Tab cover page added in generated documents
      • Data source is set as Airtable and no record id is given
  • Data Privacy
  • YouTube
  • X
  • Feature Requests / Roadmap
Powered by GitBook
On this page
  1. Integrations / API

DocsAutomator API

DocsAutomator offers a powerful REST API to create documents from anywhere and list, create, update and delete your DocsAutomator automations.

PreviousZapierNextDynamic Images

Last updated 8 months ago

Intro

DocsAutomator's API allows you to generate documents programmatically from code. In addition, it offers endpoints to perform all CRUD actions on automations (create, read, update, delete) as well as listing placeholders of documents, copying a Google Doc tempate with code and more.

The API can be utilised to add a performant document creation solution into any software. If you have any questions, please reach out via chat or to support@docsautomator.co.

If you haven't created a template yet, please start with the guide here: Google Doc Template Guide

Integration developers: If you're interested in building an integration for DocsAutomator, please reach out to support.

Authorization

DocsAutomator uses API keys for authentication. The API key is passed like so:

Authorization: Bearer API_KEY

Error Responses

The API will send descriptive error responses for a variety of errors that can occur during document creation requests. Please find the most common errors listed below:

Please make sure you're passing the correct API key. Otherwise, you'll receive the following error:

{
  "message": 'Incorrect / missing API key'
}

Google's refresh token is valid for 60 days and might expire. Please re-authenticate in this case under in your DocsAutomator account.

{
  "message": "No refresh token found, please re-authenticate Google"
}

Please makes you're passing a valid automation id ("docId").

{
  "message": "Please add a valid automation id with key 'docId' to the request."
}

Please makes you're passing a valid automation id ("docId") which is part of the authenticated user.

{
  "message": "Automation / template id does not exist or is not part of the account with the given API key. Please check in your DocsAutomator account."
}

Please make sure to set a Google Doc template in your automation.

{
  "message": "No Google Docs template set for the given document id. Please set a template in your DocsAutomator account."
}

If you've reached your documents limit, you will receive the following:

{
  "message": "You have reached your documents limit. Please upgrade your plan: https://app.docsautomator.co/subscribe"
}

Please make sure the automation is active when sending requests:

{
  "message": "Automation is not active. Please activate automation in your DocsAutomator account."
}

Endpoints

settings
🔗
Page cover image

List placeholders in automation

get

This endpoint lists placeholders in an automation. The response includes all placeholders for main document and line items.

Authorizations
Query parameters
automationIdstringRequired

The ID of the automation

Responses
200
Placeholders listed successfully
application/json
401
Unauthorized
404
Automation or user not found
500
Internal server error
get
GET /listPlaceholdersV2 HTTP/1.1
Host: api.docsautomator.co
Authorization: Bearer JWT
Accept: */*
{
  "placeholders": {
    "main": [
      "text"
    ],
    "line_items_1": [],
    "line_items_2": []
  }
}

Create a document (Airtable and ClickUp only)

get

This endpoint triggers document creation as a GET request. Successful requests don't receive a JSON response, just a status 200 (if you need the PDF or Google Doc URL as a response, please use the POST request below). This works for Airtable and ClickUp only and you will have to pass the Airtable Record ID or ClickUp Task ID when making a request. Error messages are returned as JSON.

Authorizations
Query parameters
apiKeystringRequired

API key for authentication

docIdstringRequired

The ID of the document

recIdstringRequired

Record ID for Airtable

taskIdstringRequired

Task ID for ClickUp

Responses
200
Successful response
text/html
Responsestring
get
GET /createDocument HTTP/1.1
Host: api.docsautomator.co
Authorization: Bearer JWT
Accept: */*
200

Successful response

text

Get user automations

get
Authorizations
Responses
200
Successful response
application/json
401
Unauthorized
404
User not found
500
Internal server error
get
GET /automations HTTP/1.1
Host: api.docsautomator.co
Authorization: Bearer JWT
Accept: */*
{
  "automations": [
    {
      "dataSource": {
        "airtableLinkedFields": [
          "text"
        ],
        "name": "text",
        "airtableBaseId": "text",
        "airtableTableId": "text"
      },
      "imageOptions": {
        "quality": "text",
        "maxWidth": 1
      },
      "options": {
        "lineDeletions": [
          "text"
        ]
      },
      "title": "text",
      "dateCreated": "2025-05-29T09:31:59.971Z",
      "locale": "text",
      "isActive": true,
      "formatNumbersWithLocale": true,
      "pdfExpiration": "2025-05-29T09:31:59.971Z",
      "_id": "text",
      "docTemplateLink": "text",
      "newDocumentNameField": "text",
      "attachmentField": "text",
      "lastPreviewPdf": "text",
      "dataSourceName": "text"
    }
  ]
}

Delete an automation

delete
Authorizations
Query parameters
docIdstringRequired

The ID of the automation document

Responses
200
Automation deleted successfully
application/json
401
Unauthorized
404
Document or user not found
500
Internal server error
delete
DELETE /deleteAutomation HTTP/1.1
Host: api.docsautomator.co
Authorization: Bearer JWT
Accept: */*
{
  "message": "text",
  "user": {}
}

Duplicate an automation

post
Authorizations
Query parameters
automationIdstringRequired

The ID of the automation to duplicate

Responses
200
Automation duplicated successfully
application/json
401
Unauthorized
404
Automation or user not found
500
Internal server error
post
POST /duplicateAutomation HTTP/1.1
Host: api.docsautomator.co
Authorization: Bearer JWT
Accept: */*
{
  "newAutomationId": "text"
}

Duplicate a Google Doc template

post
Authorizations
Query parameters
automationIdstringRequired

The ID of the automation containing the template to duplicate

newTemplateNamestringOptional

The name for the new template

Responses
200
Google Doc template duplicated successfully
application/json
400
Bad request
401
Unauthorized
404
Automation or user not found
500
Internal server error
post
POST /duplicateGoogleDocTemplate HTTP/1.1
Host: api.docsautomator.co
Authorization: Bearer JWT
Accept: */*
{
  "message": "text",
  "newTemplateId": "text",
  "url": "text"
}
  • Intro
  • Authorization
  • Error Responses
  • Endpoints
  • GETCreate a document (Airtable and ClickUp only)
  • POSTCreate a new document
  • GETGet user automations
  • PUTUpdate an automation
  • DELETEDelete an automation
  • POSTCreate a new automation
  • GETList placeholders in automation
  • POSTDuplicate an automation
  • POSTDuplicate a Google Doc template

Create a new document

post

This endpoint triggers document creation as a POST request. For successes, you will receive a JSON response with the URL of the created PDF and optionally the url of the Google Doc (if enabled in your automation). Error messages are returned as JSON as explained above under 'Error Messages'.

Authorizations
Header parameters
Content-TypestringRequired

Content type header

Example: application/json
AuthorizationstringRequired

Authorization header with Bearer token

Example: Bearer {apiKey}
Body
docIdstringRequired

The ID of the document

documentNamestringOptional

The name of the generated document (data source API only)

recIdstringOptional

Record ID for Airtable (Airtable only — data not required)

taskIdstringOptional

Task ID for ClickUp (ClickUp only — data not required)

Responses
200
Document created successfully
application/json
post
POST /createDocument HTTP/1.1
Host: api.docsautomator.co
Authorization: Bearer {apiKey}
Content-Type: application/json
Accept: */*
Content-Length: 212

{
  "docId": "text",
  "documentName": "text",
  "recId": "text",
  "taskId": "text",
  "data": {
    "placeholderOne": "text",
    "placeholderTwo": "text",
    "line_items_$num": [
      {
        "lineItemPlaceholderOne": "text",
        "lineItemPlaceholderTwo": "text"
      }
    ]
  }
}
200

Document created successfully

{
  "pdfUrl": "https://firebasestorage.googleapis.com/v0/b/docsautomator.appspot.com/o/1krzffnfKYAEO6gbOmvIHfnOqw6-OjaDSzemLkQb1yjM.pdf?alt=media&token=194fd896-e303-4e7c-8abd-d5718b91723c",
  "googleDocUrl": "https://docs.google.com/document/d/1RQqb0JqkCHSp0WaJGuRAVt85C4yxxizV48kyhBPXoug/edit",
  "savePdfGoogleDriveFolderId": "1RQqb0JqkCHSp0WaJGuRAVt85C4yxxizV48kyhBPXoug"
}

Update an automation

put
Authorizations
Query parameters
docIdstringRequired

The ID of the automation document

Body
objectOptional
Responses
200
Automation updated successfully
application/json
400
Bad request
401
Unauthorized
404
Document not found
500
Internal server error
put
PUT /updateAutomation HTTP/1.1
Host: api.docsautomator.co
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 2

{}
{
  "message": "text",
  "updatedAutomation": {
    "title": "text",
    "docTemplateLink": "text",
    "newDocumentNameField": "text",
    "attachmentField": "text",
    "locale": "text",
    "dataSource": {
      "name": "text",
      "airtableBaseId": "text",
      "airtableTableId": "text",
      "airtableLinkedFields": [
        "text"
      ]
    },
    "fields": {},
    "saveGoogleDoc": true,
    "overwriteAttachment": true,
    "isActive": true,
    "isPreview": true,
    "lastPreviewPdf": "text",
    "googleDocDestinationFolderUrl": "text",
    "googleDocUrlField": "text",
    "dateFormat": "text",
    "formatNumbersWithLocale": true,
    "pdfExpiration": "2025-05-29T09:31:59.971Z",
    "imageOptions": {
      "quality": "text",
      "maxWidth": 1
    },
    "options": {
      "lineDeletions": [
        "text"
      ]
    }
  }
}

Create a new automation

post
Authorizations
Body
titlestringRequired
dataSourceNamestringRequired
docTemplateLinkstring | nullableOptional
Responses
201
Automation created successfully
application/json
400
Bad request
401
Unauthorized
500
Internal server error
post
POST /createAutomation HTTP/1.1
Host: api.docsautomator.co
Authorization: Bearer JWT
Content-Type: application/json
Accept: */*
Content-Length: 65

{
  "title": "text",
  "dataSourceName": "text",
  "docTemplateLink": "text"
}
{
  "message": "text",
  "newAutomation": {
    "title": "text",
    "dateCreated": "2025-05-29T09:31:59.971Z",
    "docTemplateLink": "text",
    "dataSource": {
      "name": "text"
    },
    "_id": "text"
  }
}