n8n Integration

n8n has no dedicated DeckExtract node — and it doesn’t need one. Its built-in HTTP Request node calls the DeckExtract API directly, so any workflow can turn a DocSend or Papermark link into a PDF and a structured deck analysis, then route it wherever you like.

Get your free API key

Sign up free (email code) to get a dk_… key — 5 extractions/month, or go unlimited with Pro.

Get your free API key

Workflow shape: Trigger (new email, form, or CRM record) → HTTP Request (DeckExtract) → use download.url + analysis in the next node.

1. Add an HTTP Request node

Add an HTTP Request node and set the method to POST with this URL:

POST https://deckextract.com/api/v2/extract

Under Body, choose JSON and send the deck link. format is "pdf" (default) or "pptx":

{
  "url": "https://docsend.com/view/abc123",
  "format": "pdf"
}

For gated decks, add an email and/or password field to the same body — DeckExtract completes the access steps for you.

You'll also need the Authorization header from step 2 on every request (the key is free).

2. Add your API key

Every request needs an API key — it's free (5 extractions/month on the free plan). For the structured analysis, set "analyze": true with a Pro key. In the HTTP Request node, add an authentication header:

  • Name:Authorization
  • Value: the Bearer token below — your API key
Bearer dk_your_api_key

Then the body becomes:

{
  "url": "https://docsend.com/view/abc123",
  "format": "pdf",
  "analyze": true
}

Keep the key in an n8n credential (Header Auth) or an environment variable rather than pasting it inline, so it isn’t stored in the workflow JSON. analyze requires Pro; without a valid key the API returns 402.

3. Use the response

The node returns JSON. The extracted file lives at download.url (a short-lived link, valid about an hour), and the structured fields are under analysis:

{
  "success": true,
  "download": {
    "url": "https://deckextract.com/dl/ab12cd….pdf",
    "filename": "ab12cd….pdf",
    "contentType": "application/pdf",
    "bytes": 554790,
    "expiresAt": "2026-06-14T17:24:33Z"
  },
  "analysis": {
    "company": { "name": "Acme", "description": "…" },
    "round":   { "stage": "seed", "amount": { "value": 5000000, "currency": "USD" } },
    "metrics": { "arr": { "value": 1200000, "currency": "USD" } }
  },
  "meta": { "platform": "docsend.com", "format": "pdf", "analyzed": true, "pages": 12 }
}

To attach the actual PDF to a downstream record, add a second HTTP Request node that downloads the file as binary:

# Second HTTP Request node — fetch the file bytes
Method:  GET
URL:     {{ $json.download.url }}
Response: set "Response Format" to "File" (binary) so the PDF
          is available as binary data for the next node

From there, map the binary file and any analysis fields into your destination — see the Attio, Affinity, HubSpot, Salesforce, and Notion guides for the destination-side mapping.

Good to know

  • Status codes: v2 uses real HTTP codes — 200 success, 422 when a password/email step is needed (retry with the returned sessionId), 429 rate limited. Use n8n’s “Continue On Fail” or an IF node to branch on these.
  • Timeout: extractions take 15–90 seconds. Raise the node’s timeout to at least 120 s so it doesn’t abort mid-extraction.
  • Rate limits: the free tier allows 5 extractions per IP per 30 minutes; Pro lifts the cap to 30/hour. Add a small delay between items when looping over many links.

Related

Prefer a different tool? The same request works in Zapier and Make. Full reference lives in the API docs, and all integrations are listed on the Integrations page.