API Reference

Programmatic access to your FrazzleCRM workspace. The public API and MCP are available on the Pro plan and up. Base URL: https://app.frazzlecrm.com

Authentication

Create an API key in Settings → API keys (keys look like frz_… and are shown once). Send it on every request:

curl https://app.frazzlecrm.com/api/v1/contacts \
  -H "Authorization: Bearer frz_your_key"
# or: -H "x-api-key: frz_your_key"

Contacts

GET/api/v1/contacts
List contacts. Query: ?limit=, ?search=.
POST/api/v1/contacts
Create/upsert a contact (deduped by your company's policy — email, phone, or email-then-phone).
{ "firstName": "Ada", "email": "ada@example.com",
  "phone": "+15551234567", "tags": ["vip"],
  "fields": { "plan": "pro" } }
GET/api/v1/contacts/:id
Fetch one contact (tags, custom fields, DND state).
PUT/api/v1/contacts/:id
Update fields/tags. DELETE removes the contact.

Automations

GET/api/v1/automations
List automations with status and triggers.
POST/api/v1/automations/:id/trigger
Enroll a contact into an automation.
{ "email": "ada@example.com" }   // or { "contactId": "..." }

Appointments

POST/api/v1/appointments
Push a booking from an external scheduler. Fires appointment-booked triggers; flexible date parsing (ISO, epoch, US formats — zone-less times use your company timezone).
{ "email": "ada@example.com", "title": "Demo call",
  "startsAt": "2026-08-01T15:00:00Z", "status": "booked" }

Relationships

GET/api/v1/relationship-types
Your relationship vocabulary (Parent/Child, custom…).
POST/api/v1/relationships
Link two contacts. DELETE /api/v1/relationships/:id unlinks.

Inbound webhooks (no API key needed)

POST/api/wh/:webhookId
The URL minted by an Inbound Webhook node. POST any JSON: the contact is upserted from email/phone/name/tags/fields, the FULL payload becomes {{webhook.*}} merge fields, an embedded appointment is ingested, and the wired automation enrolls the contact when live. Drafts capture test samples.

Trigger links

GET/api/l/:linkId?email=…
A tracked redirect: records who clicked, fires any “Trigger link is clicked” automations watching the link, then 302s to the destination (utm_* params pass through).

MCP (AI access)

Connect Claude or any MCP-capable client to POST https://app.frazzlecrm.com/api/mcp with your API key as a Bearer token. Your AI can read the funnel map, audit automations, and create/update flows (drafts by default). Call get_schema_reference first — it documents every trigger, step and rule shape.

Questions or missing endpoints? Email support@frazzlecrm.com. Rate limits are generous; be sensible.