API Access
Integrate Sift programmatically using the REST API (Growth and Scale plans)
API Access
The Sift REST API lets you pull lead data, conversation history, and update lead statuses programmatically — for CRM sync, custom dashboards, or automation workflows.
API Keys
API keys are self-serve — no need to contact support.
Generate an API Key
Click Settings in the sidebar, then select the API Keys tab.
Enter a name for the key (e.g. "CRM integration") and click Create.
The key is shown once — copy it now and store it securely. You cannot retrieve it again.
Revoking an API Key
Go to Settings → API Keys, find the key you want to revoke, and click Delete. The key is revoked immediately.
Authentication
All API v1 requests must include your API key in the Authorization header:
The organization_id query parameter is not required for v1 endpoints — your API key already scopes all requests to your organisation.
Base URL
Endpoints
Leads
| Method | Endpoint | Description |
|---|---|---|
GET | /api/v1/leads | List leads (paginated, newest first) |
GET | /api/v1/leads/{id} | Get a single lead by ID |
PATCH | /api/v1/leads/{id}/status | Update a lead's status |
List leads
Query parameters:
limit— 1–500 (default 50)offset— pagination offset (default 0)since— ISO 8601 timestamp; return only leads created at or after this time. Use this to poll for new leads incrementally (e.g.since=2026-06-01T00:00:00Z).status— filter by status. Acceptsnew,hot,warm,cold,qualified,converted,lost,contacted,rejected,archived.
Tip
GET /api/v1/leads?status=qualified&since=<last-seen-timestamp> on a schedule and advance your stored timestamp to the newest created_at you've processed.Response (additional fields such as budget_max, bedrooms_max, buyer_scheme, stamp_duty_position, financing_status, and updated_at are also returned):
Update lead status
Allowed status values: new, contacted, qualified, rejected, archived.
Conversations
| Method | Endpoint | Description |
|---|---|---|
GET | /api/v1/conversations | List conversations (paginated, newest first) |
GET | /api/v1/conversations/{id}/messages | Get messages for a conversation |
List conversations
Response includes id, lead_id, channel (website, sms, or email), status, languages_used, created_at, and updated_at.
Get messages
Returns a chronological list of messages with role (user or assistant), content, and created_at.
Rate Limits
API requests are rate-limited per organisation. If you hit the limit, the API returns HTTP 429. Wait before retrying.
Common Error Responses
| Status | Meaning |
|---|---|
401 | Missing or invalid API key |
403 | Feature not available on your plan |
404 | Resource not found or belongs to another org |
422 | Invalid request body (e.g. unsupported status value) |
429 | Rate limit exceeded |