REST API Reference
Manage contacts, tags, workflows, segments, and enrollments programmatically. All endpoints use API key authentication and are scoped to your organization.
Authentication
All API requests require an API key passed as a Bearer token in the Authorization header. API keys are scoped to your organization — every request is automatically filtered to your data.
Authorization: Bearer fn_your_api_key_here
API keys start with the fn_ prefix. Create and manage keys from Settings > API Keys in the FlowNurture dashboard.
API Keys
Each API key has one or more scopes that control what it can access. Only assign the scopes your integration needs.
| Scope | Permission |
|---|---|
| contacts:read | List and retrieve contacts |
| contacts:write | Create and update contacts |
| tags:write | Add and remove tags from contacts |
| workflows:read | List and retrieve workflows |
| segments:read | List and retrieve segments |
| enrollments:write | Enroll contacts in workflows |
Errors
The API returns standard HTTP status codes. Error responses include a JSON body with a message field.
{
"statusCode": 400,
"message": "Validation failed",
"error": "Bad Request"
}| Code | Meaning |
|---|---|
| 200 | Success |
| 201 | Created |
| 400 | Bad request — invalid parameters or body |
| 401 | Unauthorized — missing or invalid API key |
| 403 | Forbidden — insufficient scope or access |
| 404 | Not found — resource doesn't exist in your organization |
| 409 | Conflict — duplicate record (e.g. contact email already exists) |
| 429 | Too many requests — rate limit exceeded |
| 500 | Internal server error |
Rate Limits
API requests are rate-limited to protect service stability. Current limits:
- 60 requests per minute per API key
- Exceeding the limit returns
429 Too Many Requests - Retry after the
Retry-Afterheader value (in seconds)
Contacts
/api/v1/contactsScope: contacts:readList all contacts in your organization. Supports pagination and search.
Query parameters:
page— Page number (default: 1)limit— Items per page (default: 25, max: 100)search— Filter by name or email
curl -H "Authorization: Bearer fn_your_key" \ "https://api.flownurture.com/api/v1/contacts?page=1&limit=10"
[
{
"id": "clx1abc...",
"email": "[email protected]",
"firstName": "Jane",
"lastName": "Smith",
"company": "Acme Inc",
"lifecycleStage": "LEAD",
"createdAt": "2026-03-15T10:00:00.000Z"
}
]/api/v1/contacts/:idScope: contacts:readRetrieve a single contact by ID.
curl -H "Authorization: Bearer fn_your_key" \ "https://api.flownurture.com/api/v1/contacts/clx1abc..."
/api/v1/contactsScope: contacts:writeCreate a new contact. Email is required and must be unique within your organization.
{
"email": "[email protected]",
"firstName": "Jane",
"lastName": "Smith",
"company": "Acme Inc",
"jobTitle": "Marketing Manager",
"lifecycleStage": "LEAD"
}Lifecycle stages: SUBSCRIBER LEAD MQL SQL CUSTOMER
/api/v1/contacts/:idScope: contacts:writeUpdate an existing contact. Only include the fields you want to change.
{
"company": "New Company",
"lifecycleStage": "MQL"
}Tags
Workflows
/api/v1/workflowsScope: workflows:readList all workflows in your organization with step and enrollment counts.
[
{
"id": "clx3ghi...",
"name": "Welcome Sequence",
"status": "ACTIVE",
"createdAt": "2026-03-10T08:00:00.000Z",
"_count": { "steps": 5, "enrollments": 142 }
}
]/api/v1/workflows/:idScope: workflows:readRetrieve a single workflow with all its steps.
{
"id": "clx3ghi...",
"name": "Welcome Sequence",
"status": "ACTIVE",
"steps": [
{ "id": "...", "type": "SEND_EMAIL", "order": 0 },
{ "id": "...", "type": "DELAY", "order": 1, "delayAmount": 2, "delayUnit": "DAYS" },
{ "id": "...", "type": "SEND_EMAIL", "order": 2 }
]
}Segments
/api/v1/segmentsScope: segments:readList all segments in your organization.
[
{
"id": "clx4jkl...",
"name": "High-intent leads",
"createdAt": "2026-03-20T12:00:00.000Z"
}
]/api/v1/segments/:idScope: segments:readRetrieve a single segment with its groups and rules.
Enrollments
/api/v1/enrollmentsScope: enrollments:writeEnroll a contact in an active workflow. The contact will begin receiving the workflow steps immediately.
Requirements:
- Workflow must have status
ACTIVE - Workflow must have at least one step
- Contact must not already be actively enrolled in the same workflow
{
"contactId": "clx1abc...",
"workflowId": "clx3ghi..."
}{
"id": "clx5mno...",
"contactId": "clx1abc...",
"workflowId": "clx3ghi...",
"status": "ACTIVE",
"createdAt": "2026-04-09T14:00:00.000Z"
}Ready to integrate?
Create your API key from Settings > API Keys in the FlowNurture dashboard and start building.