Leads

Capture and manage inbound leads. Qualify leads into contacts or disqualify them. Manage notes, tasks, and emails.

All Leads endpoints require JWT authentication via the Authorization: Bearer <token> header. Some endpoints require Admin role.

Core Endpoints

GET /leads List leads
JWT Required

Retrieve a paginated list of leads with optional filters.

Query Parameters

NameTypeRequiredDescription
page integer Optional Page number for pagination. Default: 1
per_page integer Optional Number of results per page (max 100). Default: 25. Max: 100
search string Optional Search term to filter results
status string Optional Values: new, contacted, qualified, disqualified
source string Optional
assigned_to integer Optional
date_from string Optional Filter by created_at start date (YYYY-MM-DD)
date_to string Optional Filter by created_at end date (YYYY-MM-DD)
scope string Optional Filter by user scope (me, team, company). Values: me, team, company
sort_by string Optional Sort field (default: name). Values: name, email, company_name, status, source, assigned_to_name, created_at
sort_dir string Optional Sort direction (default: ASC). Values: ASC, DESC

Response

Paginated lead list

{
    "data": [
        {
            "id": 20,
            "first_name": "John",
            "last_name": "Doe",
            "email": "john.doe@example.com",
            "phone": "...",
            "company": "Doe Industries",
            "job_title": "...",
            "source": "Website",
            "status": "new",
            "notes": "...",
            "tags": "...",
            "assigned_to": 1,
            "created_at": "2026-01-15T09:30:00.000000Z",
            "updated_at": "2026-01-15T09:30:00.000000Z"
        }
    ],
    "current_page": 1,
    "last_page": 1,
    "per_page": 1,
    "total": 1
}

Code Examples

curl -X GET "https://crm.revorbit.com/api/leads" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
const response = await fetch(
  "https://crm.revorbit.com/api/leads",
  {
    method: "GET",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
    }
  }
);
const data = await response.json();
POST /leads Create lead
JWT Required

Request Body

NameTypeRequiredDescription
first_name string Required
last_name string Required
email string Optional
phone string Optional
company string Optional
job_title string Optional
source string Optional
status string Optional Values: new, contacted, qualified, disqualified
notes string Optional
tags string Optional
assigned_to integer Optional

Code Examples

curl -X POST "https://crm.revorbit.com/api/leads" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "...",
    "last_name": "...",
    "email": "...",
    "phone": "...",
    "company": "...",
    "job_title": "...",
    "source": "...",
    "status": "new",
    "notes": "...",
    "tags": "...",
    "assigned_to": 1
}'
const response = await fetch(
  "https://crm.revorbit.com/api/leads",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
      "Content-Type": "application/json"
    },
    body: JSON.stringify(
      {
          "first_name": "...",
          "last_name": "...",
          "email": "...",
          "phone": "...",
          "company": "...",
          "job_title": "...",
          "source": "...",
          "status": "new",
          "notes": "...",
          "tags": "...",
          "assigned_to": 1
      }
    )
  }
);
const data = await response.json();
GET /leads/{id} Get lead
JWT Required

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID

Code Examples

curl -X GET "https://crm.revorbit.com/api/leads/{id}" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
const response = await fetch(
  "https://crm.revorbit.com/api/leads/{id}",
  {
    method: "GET",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
    }
  }
);
const data = await response.json();
PUT /leads/{id} Update lead
JWT Required

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID

Request Body

NameTypeRequiredDescription
first_name string Required
last_name string Required
email string Optional
phone string Optional
company string Optional
job_title string Optional
source string Optional
status string Optional Values: new, contacted, qualified, disqualified
notes string Optional
tags string Optional
assigned_to integer Optional

Code Examples

curl -X PUT "https://crm.revorbit.com/api/leads/{id}" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "...",
    "last_name": "...",
    "email": "...",
    "phone": "...",
    "company": "...",
    "job_title": "...",
    "source": "...",
    "status": "new",
    "notes": "...",
    "tags": "...",
    "assigned_to": 1
}'
const response = await fetch(
  "https://crm.revorbit.com/api/leads/{id}",
  {
    method: "PUT",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
      "Content-Type": "application/json"
    },
    body: JSON.stringify(
      {
          "first_name": "...",
          "last_name": "...",
          "email": "...",
          "phone": "...",
          "company": "...",
          "job_title": "...",
          "source": "...",
          "status": "new",
          "notes": "...",
          "tags": "...",
          "assigned_to": 1
      }
    )
  }
);
const data = await response.json();
DELETE /leads/{id} Delete lead
JWT Required

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID

Code Examples

curl -X DELETE "https://crm.revorbit.com/api/leads/{id}" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
const response = await fetch(
  "https://crm.revorbit.com/api/leads/{id}",
  {
    method: "DELETE",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
    }
  }
);
const data = await response.json();
POST /leads/{id}/qualify Qualify lead
JWT Required

Convert a lead into a contact (and optionally a company and deal).

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID

Request Body

NameTypeRequiredDescription
create_company boolean Optional Also create a company record
create_deal boolean Optional Also create a deal
deal_name string Optional
deal_value number Optional
deal_stage_id integer Optional

Response

Lead qualified

{
    "success": true,
    "contact_id": 1,
    "company_id": 1,
    "deal_id": 1
}

Code Examples

curl -X POST "https://crm.revorbit.com/api/leads/{id}/qualify" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"create_company":true,"create_deal":true,"deal_name":"...","deal_value":1,"deal_stage_id":1}'
const response = await fetch(
  "https://crm.revorbit.com/api/leads/{id}/qualify",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
      "Content-Type": "application/json"
    },
    body: JSON.stringify(
      {
          "create_company": true,
          "create_deal": true,
          "deal_name": "...",
          "deal_value": 1,
          "deal_stage_id": 1
      }
    )
  }
);
const data = await response.json();
PUT /leads/{id}/disqualify Disqualify lead
JWT Required

Mark a lead as disqualified with an optional reason.

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID

Request Body

NameTypeRequiredDescription
reason string Optional

Code Examples

curl -X PUT "https://crm.revorbit.com/api/leads/{id}/disqualify" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"reason":"..."}'
const response = await fetch(
  "https://crm.revorbit.com/api/leads/{id}/disqualify",
  {
    method: "PUT",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
      "Content-Type": "application/json"
    },
    body: JSON.stringify(
      {
          "reason": "..."
      }
    )
  }
);
const data = await response.json();
POST /leads/{id}/notes Add note to lead
JWT Required

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID

Request Body

NameTypeRequiredDescription
content string Required

Code Examples

curl -X POST "https://crm.revorbit.com/api/leads/{id}/notes" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"content":"..."}'
const response = await fetch(
  "https://crm.revorbit.com/api/leads/{id}/notes",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
      "Content-Type": "application/json"
    },
    body: JSON.stringify(
      {
          "content": "..."
      }
    )
  }
);
const data = await response.json();
DELETE /leads/{id}/notes/{noteId} Delete lead note
JWT Required

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID
noteId integer Required

Code Examples

curl -X DELETE "https://crm.revorbit.com/api/leads/{id}/notes/{noteId}" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
const response = await fetch(
  "https://crm.revorbit.com/api/leads/{id}/notes/{noteId}",
  {
    method: "DELETE",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
    }
  }
);
const data = await response.json();
GET /leads/{id}/tasks Get lead tasks
JWT Required

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID

Code Examples

curl -X GET "https://crm.revorbit.com/api/leads/{id}/tasks" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
const response = await fetch(
  "https://crm.revorbit.com/api/leads/{id}/tasks",
  {
    method: "GET",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
    }
  }
);
const data = await response.json();
POST /leads/{id}/tasks Add task to lead
JWT Required

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID

Request Body

NameTypeRequiredDescription
title string Required
description string Optional
due_date date Optional
due_time string Optional
priority string Optional Values: low, medium, high
assigned_to integer Optional
contact_id integer Optional
company_id integer Optional
deal_id integer Optional

Code Examples

curl -X POST "https://crm.revorbit.com/api/leads/{id}/tasks" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "...",
    "description": "...",
    "due_date": "2026-01-15",
    "due_time": "...",
    "priority": "low",
    "assigned_to": 1,
    "contact_id": 1,
    "company_id": 1,
    "deal_id": 1
}'
const response = await fetch(
  "https://crm.revorbit.com/api/leads/{id}/tasks",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
      "Content-Type": "application/json"
    },
    body: JSON.stringify(
      {
          "title": "...",
          "description": "...",
          "due_date": "2026-01-15",
          "due_time": "...",
          "priority": "low",
          "assigned_to": 1,
          "contact_id": 1,
          "company_id": 1,
          "deal_id": 1
      }
    )
  }
);
const data = await response.json();
PUT /leads/{id}/tasks/{taskId} Update lead task
JWT Required

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID
taskId integer Required

Request Body

NameTypeRequiredDescription
title string Required
description string Optional
due_date date Optional
due_time string Optional
priority string Optional Values: low, medium, high
assigned_to integer Optional
contact_id integer Optional
company_id integer Optional
deal_id integer Optional

Code Examples

curl -X PUT "https://crm.revorbit.com/api/leads/{id}/tasks/{taskId}" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "...",
    "description": "...",
    "due_date": "2026-01-15",
    "due_time": "...",
    "priority": "low",
    "assigned_to": 1,
    "contact_id": 1,
    "company_id": 1,
    "deal_id": 1
}'
const response = await fetch(
  "https://crm.revorbit.com/api/leads/{id}/tasks/{taskId}",
  {
    method: "PUT",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
      "Content-Type": "application/json"
    },
    body: JSON.stringify(
      {
          "title": "...",
          "description": "...",
          "due_date": "2026-01-15",
          "due_time": "...",
          "priority": "low",
          "assigned_to": 1,
          "contact_id": 1,
          "company_id": 1,
          "deal_id": 1
      }
    )
  }
);
const data = await response.json();
DELETE /leads/{id}/tasks/{taskId} Delete lead task
JWT Required

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID
taskId integer Required

Code Examples

curl -X DELETE "https://crm.revorbit.com/api/leads/{id}/tasks/{taskId}" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
const response = await fetch(
  "https://crm.revorbit.com/api/leads/{id}/tasks/{taskId}",
  {
    method: "DELETE",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
    }
  }
);
const data = await response.json();
GET /leads/{id}/linked-emails Get lead emails
JWT Required

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID

Code Examples

curl -X GET "https://crm.revorbit.com/api/leads/{id}/linked-emails" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
const response = await fetch(
  "https://crm.revorbit.com/api/leads/{id}/linked-emails",
  {
    method: "GET",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
    }
  }
);
const data = await response.json();
GET /leads/export Export leads CSV
Admin Required

Download all leads as a CSV file.

Code Examples

curl -X GET "https://crm.revorbit.com/api/leads/export" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
const response = await fetch(
  "https://crm.revorbit.com/api/leads/export",
  {
    method: "GET",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
    }
  }
);
const data = await response.json();
GET /leads/template Download leads CSV template
Admin Required

Download an empty CSV template for lead imports.

Code Examples

curl -X GET "https://crm.revorbit.com/api/leads/template" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
const response = await fetch(
  "https://crm.revorbit.com/api/leads/template",
  {
    method: "GET",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
    }
  }
);
const data = await response.json();
GET /leads/match-company Match lead to company
JWT Required

Find existing companies matching a lead's company name.

Query Parameters

NameTypeRequiredDescription
company string Optional Company name to search

Code Examples

curl -X GET "https://crm.revorbit.com/api/leads/match-company" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
const response = await fetch(
  "https://crm.revorbit.com/api/leads/match-company",
  {
    method: "GET",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
    }
  }
);
const data = await response.json();
GET /leads/match-contact Match lead to contact
JWT Required

Find existing contacts matching a lead's email.

Query Parameters

NameTypeRequiredDescription
email string Optional Email to search

Code Examples

curl -X GET "https://crm.revorbit.com/api/leads/match-contact" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
const response = await fetch(
  "https://crm.revorbit.com/api/leads/match-contact",
  {
    method: "GET",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
    }
  }
);
const data = await response.json();
POST /leads/import Import leads
JWT Required

Request Body

NameTypeRequiredDescription
file file Optional

Code Examples

curl -X POST "https://crm.revorbit.com/api/leads/import" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -F "file=@/path/to/file"
const response = await fetch(
  "https://crm.revorbit.com/api/leads/import",
  {
    method: "POST",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
    }
  }
);
const data = await response.json();