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
idyou can use to de-duplicate. - Read-only: the v1 API exposes your leads and documents; it does not create or modify anything.
Authentication
Section titled “Authentication”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_hereKeys 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.
curl -H "Authorization: Bearer lp_live_your_key_here" \ https://api.livingpage.app/api/v1/meRate limits
Section titled “Rate limits”Each key is limited to 120 requests per minute. Over the limit returns 429; wait and retry.
Errors
Section titled “Errors”| 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 |
Endpoints
Section titled “Endpoints”GET /api/v1/me
Section titled “GET /api/v1/me”Returns the workspace the key belongs to. Handy as an auth check.
{ "organizationId": "org_abc123", "name": "Acme Agency", "plan": "Agency Pro"}GET /api/v1/leads
Section titled “GET /api/v1/leads”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" }]GET /api/v1/documents
Section titled “GET /api/v1/documents”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 (nulluntil published);vanitySlug— a custom slug if set.pageCount— number of pages.searchVisible— whether the public page may be indexed by search engines.
GET /api/v1/clients
Section titled “GET /api/v1/clients”Your client workspaces, newest first.
[ { "id": "cl_abc123", "name": "Acme Co", "slug": "acme-co", "createdAt": "2026-07-20T09:00:00.000Z" }]Zapier
Section titled “Zapier”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.