For Developers
API Reference Complete endpoint reference for the Warpflow Signals REST API—webhooks, AI actions, email, conversations, config, and usage.
https://api.warpflow.ai/api/v1
All endpoints are prefixed with /api/v1. Authentication is required on every request—see Authentication .
Explore and test every endpoint in the browser using the interactive API documentation:
Open Interactive API Docs →
The interactive docs (Swagger UI) let you authorize with your API key and make live requests against the API. Use them to explore request/response schemas, try out endpoints, and generate code snippets.
The OpenAPI spec is also available for importing into Postman, Insomnia, or code generators: Download OpenAPI spec
Method Path Description POST /webhook/custom/{tenant_id}/{source_id}Custom webhook —any JSON payload. Add ?mode=sync for immediate responsePOST /webhook/zapier/{tenant_id}Zapier pipeline —full classify → score → route → reply
Webhook endpoints for GHL, Telnyx, Twilio, and Nylas are configured automatically when you connect those integrations. They use provider-specific signature verification, not Bearer auth.
Method Path Description POST /actions/zapier/{tenant_id}/classify-conversationClassify intent, urgency, sentimentPOST /actions/zapier/{tenant_id}/score-contactScore a contact and return tier + buying signalsPOST /actions/zapier/{tenant_id}/generate-replyGenerate a brand-voice reply with Signal Guard check
Method Path Description POST /tenants/{tenant_id}/email/sendSend email via connected Nylas grantGET /tenants/{tenant_id}/email/aliasesList aliases for the connected accountPATCH /tenants/{tenant_id}/email/aliasesUpdate aliases PATCH /tenants/{tenant_id}/email/signatureUpdate signature POST /tenants/{tenant_id}/email/connectConnect a Nylas grant GET /tenants/{tenant_id}/email/grantsList connected email accounts DELETE /tenants/{tenant_id}/email/grants/{grant_id}Disconnect an email account GET /tenants/{tenant_id}/email/grants/{grant_id}Get grant status GET /tenants/{tenant_id}/email/auth-urlGet OAuth URL for email connection POST /tenants/{tenant_id}/email/callbackExchange OAuth code for grant
Method Path Description GET /tenants/{tenant_id}/conversationsList conversations grouped by contact. Filter with ?alias= for email GET /tenants/{tenant_id}/conversations/{contact_id}Full conversation history (SMS, email, voice) POST /tenants/{tenant_id}/conversations/{contact_id}/messagesSend a message (SMS or email) POST /tenants/{tenant_id}/conversations/{contact_id}/readMark all messages for a contact as read POST /tenants/{tenant_id}/conversations/{contact_id}/approve-draftApprove and send a pending AI draft POST /tenants/{tenant_id}/conversations/{contact_id}/dismiss-draftDismiss a pending AI draft without sending
Method Path Description GET /tenants/{tenant_id}/contactsList contacts for a tenant POST /tenants/{tenant_id}/contactsCreate a new contact GET /tenants/{tenant_id}/contacts/{contact_id}Get contact details PATCH /tenants/{tenant_id}/contacts/{contact_id}Update contact (name, email, phone, notes) DELETE /tenants/{tenant_id}/contacts/{contact_id}Soft-delete a contact (moves to archived) POST /tenants/{tenant_id}/contacts/resolveResolve a contact by phone/email POST /tenants/{tenant_id}/contacts/mergeMerge duplicate contacts GET /tenants/{tenant_id}/contacts/{contact_id}/detailFull contact detail with scoring, source channel, and history GET /tenants/{tenant_id}/contacts/{contact_id}/timelineUnified conversation timeline GET /tenants/{tenant_id}/contacts/enrichedList contacts enriched with lead score, tier, channel, and intent
Method Path Description POST /tenants/{tenant_id}/searchSearch contacts and conversations. Warm search (6 months) by default; add deep: true for full scan
Method Path Description GET /tenants/{tenant_id}/leadsList leads (filter by state, score tier, date range) GET /leads/{lead_id}Get lead details with score and classification GET /leads/{lead_id}/conversationFull conversation log for a lead GET /leads/callbacksPending callbacks by status
Method Path Description GET /tenants/{tenant_id}/api-keysList API keys (prefix only, not full key) POST /tenants/{tenant_id}/api-keysCreate a new API key (max 3 active) DELETE /tenants/{tenant_id}/api-keys/{key_id}Revoke an API key POST /tenants/{tenant_id}/api-keys/rotateRotate a key (72-hour grace period)
Method Path Description GET /config/{tenant_id}Get tenant configuration PUT /config/{tenant_id}Replace tenant configuration PATCH /config/{tenant_id}Partial update tenant configuration
Method Path Description GET /tenants/{tenant_id}/webhooksList webhook subscriptions POST /tenants/{tenant_id}/webhooksCreate a webhook subscription DELETE /tenants/{tenant_id}/webhooks/{webhook_id}Delete a webhook subscription POST /tenants/{tenant_id}/webhooks/{webhook_id}/testSend a test event to a webhook endpoint
Method Path Description GET /tenants/{tenant_id}/callsList call history POST /tenants/{tenant_id}/calls/outboundInitiate an outbound call POST /tenants/{tenant_id}/calls/{call_session_id}/transferTransfer an active call GET /tenants/{tenant_id}/calls/{contact_id}/recordingGet a call recording
Method Path Description GET /tenants/{tenant_id}/callbacksList pending callbacks PATCH /tenants/{tenant_id}/callbacks/{task_id}Update a callback task
Method Path Description GET /guardrails/{tenant_id}/activeList active Signal Guard rules GET /guardrails/{tenant_id}/auditGet Signal Guard audit log GET /guardrails/{tenant_id}/statsGet Signal Guard statistics PATCH /guardrails/{tenant_id}Update Signal Guard rules GET /guardrails/{tenant_id}/exportExport guardrail data
Method Path Description POST /test/{tenant_id}Dry-run a message through the pipeline (classify, score, route, reply). Nothing is sent.
Method Path Description GET /tenants/{tenant_id}/sms-filters/blocklistList blocked phone numbers POST /tenants/{tenant_id}/sms-filters/blocklistAdd a phone number to the blocklist DELETE /tenants/{tenant_id}/sms-filters/blocklist/{phone}Remove a number from the blocklist
Method Path Description GET /billing/statusGet billing status and current plan POST /billing/activateActivate subscription (trial to paid) POST /billing/checkoutCreate a checkout session for plan purchase POST /billing/portalGet billing portal URL GET /billing/credits/balanceGet credit balance GET /billing/credits/transactionsGet credit transaction history
Method Path Description GET /usage/{tenant_id}Signal counts and credit balance
{
"success" : true ,
"data" : { ... }
}
{
"items" : [ ... ],
"cursor" : "next_page_token" ,
"has_more" : true
}
Use ?cursor=<value> to fetch the next page.
{
"error" : "VALIDATION_ERROR" ,
"message" : "content.body is required" ,
"status" : 400
}
See Errors for the full error code reference.
Rate limits are applied per tenant. Most endpoints allow a generous number of requests per minute. The email send endpoint is limited to 50 per hour.
When rate limited, the response includes a Retry-After header indicating how long to wait (in seconds).
List endpoints support cursor-based pagination:
?cursor=<token>—start after this cursor
?limit=<n>—number of items per page (default varies by endpoint)
The response includes cursor (for the next page) and has_more (boolean).