API Reference
Read your pipeline, push leads in, write updates back, and reply on an agent's behalf.
The Reply First API is how your CRM or backend reads and writes the pipeline. It pairs with the outbound webhook — the API is how you read and write Reply First, the webhook is how Reply First tells you what changed.
The base URL is https://replyfirst.ae. All requests use an org-scoped bearer token; all bodies are JSON.
There's no SDK yet — call the API directly with fetch, requests, or curl. The examples throughout show all three.
Authenticate
Create a token at Settings → Integrations → Webhook, then send it as a bearer token. Start with /api/v1/me to confirm the token works and see what it's allowed to do:
curl https://replyfirst.ae/api/v1/me \
-H "Authorization: Bearer $RF_ORG_TOKEN"See Authentication for tokens and scopes, and Rate limits for the 120/minute cap.
Endpoints
Leads
| Method | Endpoint | Scope | |
|---|---|---|---|
GET | /api/v1/leads | read | List leads |
POST | /api/v1/leads | write | Create a lead |
GET | /api/v1/leads/{leadId} | read | Get a lead |
PATCH | /api/v1/leads/{leadId} | write | Update a lead |
Conversations & messages
| Method | Endpoint | Scope | |
|---|---|---|---|
GET | /api/v1/conversations | read | List conversations |
GET | /api/v1/conversations/{conversationId} | read | Get a conversation |
GET | /api/v1/conversations/{conversationId}/messages | read | List messages |
POST | /api/v1/leads/{leadId}/messages | send | Send a message |
Handoffs
| Method | Endpoint | Scope | |
|---|---|---|---|
GET | /api/v1/handoffs | read | List handoffs |
GET | /api/v1/handoffs/{handoffId} | read | Get a handoff |
POST | /api/v1/handoffs/{handoffId}/accept | write | Accept a handoff |
POST | /api/v1/handoffs/{handoffId}/resolve | write | Resolve a handoff |
Account
| Method | Endpoint | Scope | |
|---|---|---|---|
GET | /api/v1/me | read | Describe the calling token |
GET | /api/v1/stats/leads | read | Lead counts by stage |
Conventions
Every resource carries an object field naming its type (lead, conversation, message, handoff), and every list response is { object: "list", data, has_more, next_cursor }. Timestamps are RFC 3339 UTC. Ids are UUIDs.