AgentStorybook API

v1 · Create storybooks programmatically from your CRM, a spreadsheet, or any tool.

Authentication

Generate an API key in your dashboard under Account → API Access. Send it on every request as a bearer token:

Authorization: Bearer asb_live_xxxxxxxxxxxx

Keep keys secret — anyone with a key can create storybooks on your account. Rate limit: 60 requests/minute.

Create a storybook

POST https://agentstorybook.ai/api/v1/storybooks

Leave the cover to us. Provide a clientPhotoUrl to illustrate your clients, a housePhotoUrl for the home (sellers fall back to Street View), or nothing at all for a clean no-likeness cover. Supply a finished coverImageUrl to skip generation entirely. Cover generation can take 30–60 seconds.

Fields

FieldRequiredNotes
typeyes"seller" or "buyer"
addressyesFull street address. Used for the auto cover.
clientsnoFull display name, used as-is. e.g. "John & Sarah Smith"
client1, client2noTwo owner names from your CRM. We format smartly: shared surname → "John & Sarah Smith"; different → "John Smith & Sarah Jones". Ignored if clients is set.
agentnoAgent name shown on the storybook
brandnoBrokerage / brand name. Printed on the SOLD sign only when you have not uploaded a yard-sign photo in Account.
datesnoObject. Seller: listing, list, prePhoto, photo, contract, closing. Buyer: consultation, seeHomes, contract, closing. ISO dates (2026-07-01).
clientPhotoUrlnoPublic image URL of the client(s). We illustrate their likeness on the cover. Omit for a no-likeness cover.
housePhotoUrlnoPublic image URL of the home. Sellers fall back to Street View if omitted.
coverImageUrlnoSupply your own cover image instead of auto-generating.
waitForCovernoDefault true (waits ~30–60s and returns when the cover is ready). Set false to return immediately with coverStatus:"generating" — recommended for Zapier and other timeout-sensitive callers.
idempotencyKeynoReuse the same value to avoid duplicates on retries.

Example

curl -X POST https://agentstorybook.ai/api/v1/storybooks \
  -H "Authorization: Bearer asb_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "seller",
    "address": "123 Main St, Dallas, TX 75201",
    "clients": "John & Sarah Smith",
    "agent": "Thomas Eaves",
    "dates": { "listing": "2026-07-01", "closing": "2026-08-15" },
    "idempotencyKey": "crm-deal-48213"
  }'

Response 201 Created

{
  "slug": "123-main-st",
  "type": "seller",
  "clientUrl": "https://agentstorybook.ai/stories/123-main-st?token=...",
  "publicUrl": "https://agentstorybook.ai/stories/123-main-st",
  "coverGenerated": true,
  "coverStatus": "ready",
  "status": "ready"
}

Other endpoints

GET /api/v1/storybooks — list your storybooks.
GET /api/v1/storybooks?slug=123-main-st — fetch one.
DELETE /api/v1/storybooks?slug=123-main-st — delete one.
GET /api/v1/me — verify a key; returns your plan.

Errors

Errors return a JSON body: { "error": "code", "message": "..." }. Common codes: 401 unauthorized, 400 invalid, 402/403 limit_reached, 404 not_found, 429 rate_limited.

Questions? Reply to your AgentStorybook welcome email.