Skip to content

API & Zapier

Living Page has a small, read-only HTTP API for any automation you want to build. It’s available on the Agency Pro plan — mint a key in Settings → Integrations and start calling it.

It also powers our Zapier integration, which is a separate thing still awaiting listing approval. You don’t need Zapier to use the API.

  • Base URL: https://api.livingpage.app
  • Format: JSON. All list endpoints return an array, newest first, and every record has a stable id you can use to de-duplicate.
  • Read-only: the v1 API exposes your leads and documents; it does not create or modify anything.

The API uses API keys. Create one in the dashboard under Settings → Integrations → Zapier → Create key. The key (lp_live_…) is shown once — copy it then; we only store a hash.

Send it as a Bearer token in the Authorization header on every request:

Authorization: Bearer lp_live_your_key_here

Keys are scoped to the workspace that created them and are read-only. Revoke a key any time from the same screen. Keys stop working immediately if the workspace drops below Agency Pro.

Terminal window
curl -H "Authorization: Bearer lp_live_your_key_here" \
https://api.livingpage.app/api/v1/me

Each key is limited to 120 requests per minute. Over the limit returns 429; wait and retry.

Status Meaning
401 Missing or invalid API key (send Authorization: Bearer <key>)
403 The key’s workspace isn’t on Agency Pro ({"code":"plan_limit"})
429 Rate limit exceeded — retry shortly

Returns the workspace the key belongs to. Handy as an auth check.

{
"organizationId": "org_abc123",
"name": "Acme Agency",
"plan": "Agency Pro"
}

Reader email addresses captured by your documents’ email gates, newest first.

Query parameters

Param Default Notes
limit 50 1–100
[
{
"id": "lead_abc123",
"email": "reader@example.com",
"documentId": "doc_abc123",
"documentTitle": "Q3 Proposal",
"createdAt": "2026-07-29T12:00:00.000Z"
}
]

Your documents, newest first.

Query parameters

Param Default Notes
status Filter by lifecycle: published, ready, processing, failed. Omit for all.
limit 50 1–100
[
{
"id": "doc_abc123",
"title": "Q3 Proposal",
"status": "ready",
"published": true,
"hidden": false,
"live": true,
"clientName": "Acme Co",
"publicSlug": "abc123",
"vanitySlug": null,
"publicUrl": "https://read.livingpage.app/v/acme-co/abc123",
"pageCount": 12,
"searchVisible": false,
"publishedAt": "2026-07-29T12:00:00.000Z",
"createdAt": "2026-07-29T11:00:00.000Z"
}
]
  • status — render lifecycle: processing, ready, failed.
  • published — has a public share link; hidden — taken out of listings; live — actually reachable by readers (published && !hidden).
  • publicUrl / publicSlug — the share link + its slug (null until published); vanitySlug — a custom slug if set.
  • pageCount — number of pages.
  • searchVisible — whether the public page may be indexed by search engines.

Your client workspaces, newest first.

[
{ "id": "cl_abc123", "name": "Acme Co", "slug": "acme-co", "createdAt": "2026-07-20T09:00:00.000Z" }
]

The Zapier integration is built on this API. It offers two triggers:

  • New Lead — fires when a reader submits an email gate (polls GET /api/v1/leads).
  • New Published Flipbook — fires when a document is published (polls GET /api/v1/documents?status=published).

Connect it by pasting an API key when you add the Living Page connection in Zapier. Both triggers de-duplicate on the record id, so a Zap runs once per new lead or published flipbook.