Contacts

Create, retrieve, update, and delete contacts. Manage related notes, tasks, and deals. Import and export contact data in bulk.

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

Core Endpoints

GET /contacts List contacts
JWT Required

Retrieve a paginated list of contacts 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 Filter by status. Values: active, inactive
company_id integer Optional Filter by company
assigned_to integer Optional Filter by assigned user
source string Optional Filter by lead source
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, phone, company_name, status, created_at
sort_dir string Optional Sort direction. Values: ASC, DESC

Response

Paginated contact list

{
    "data": [
        {
            "id": 1,
            "first_name": "Jane",
            "last_name": "Smith",
            "email": "jane.smith@example.com",
            "phone": "+1-555-0100",
            "mobile": "+1-555-0101",
            "job_title": "VP of Operations",
            "company_id": 5,
            "company_name": "Acme Corp",
            "address_street": "123 Main St",
            "address_city": "Toronto",
            "address_state": "ON",
            "address_zip": "M5V 2T6",
            "address_country": "Canada",
            "notes": "Key decision maker",
            "tags": "enterprise,priority",
            "status": "active",
            "source": "Website",
            "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/contacts" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
const response = await fetch(
  "https://crm.revorbit.com/api/contacts",
  {
    method: "GET",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
    }
  }
);
const data = await response.json();
POST /contacts Create contact
JWT Required

Create a new contact record.

Request Body

NameTypeRequiredDescription
first_name string Required Contact's first name
last_name string Required Contact's last name
email string Optional Email address
phone string Optional Primary phone number
mobile string Optional Mobile phone number
job_title string Optional Job title or role
company_id integer Optional ID of the associated company
address_street string Optional
address_city string Optional
address_state string Optional
address_zip string Optional
address_country string Optional
notes string Optional
tags string Optional Comma-separated tag list
status string Optional Values: active, inactive
source string Optional
assigned_to integer Optional User ID to assign contact to

Response

Contact created

{
    "success": true,
    "data": {
        "id": 1,
        "first_name": "Jane",
        "last_name": "Smith",
        "email": "jane.smith@example.com",
        "phone": "+1-555-0100",
        "mobile": "+1-555-0101",
        "job_title": "VP of Operations",
        "company_id": 5,
        "company_name": "Acme Corp",
        "address_street": "123 Main St",
        "address_city": "Toronto",
        "address_state": "ON",
        "address_zip": "M5V 2T6",
        "address_country": "Canada",
        "notes": "Key decision maker",
        "tags": "enterprise,priority",
        "status": "active",
        "source": "Website",
        "assigned_to": 1,
        "created_at": "2026-01-15T09:30:00.000000Z",
        "updated_at": "2026-01-15T09:30:00.000000Z"
    },
    "message": "..."
}

Code Examples

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

Retrieve a single contact by ID with full details.

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID

Response

Contact details

{
    "success": true,
    "data": {
        "id": 1,
        "first_name": "Jane",
        "last_name": "Smith",
        "email": "jane.smith@example.com",
        "phone": "+1-555-0100",
        "mobile": "+1-555-0101",
        "job_title": "VP of Operations",
        "company_id": 5,
        "company_name": "Acme Corp",
        "address_street": "123 Main St",
        "address_city": "Toronto",
        "address_state": "ON",
        "address_zip": "M5V 2T6",
        "address_country": "Canada",
        "notes": "Key decision maker",
        "tags": "enterprise,priority",
        "status": "active",
        "source": "Website",
        "assigned_to": 1,
        "created_at": "2026-01-15T09:30:00.000000Z",
        "updated_at": "2026-01-15T09:30:00.000000Z"
    }
}

Code Examples

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

Update an existing contact's fields.

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID

Request Body

NameTypeRequiredDescription
first_name string Required Contact's first name
last_name string Required Contact's last name
email string Optional Email address
phone string Optional Primary phone number
mobile string Optional Mobile phone number
job_title string Optional Job title or role
company_id integer Optional ID of the associated company
address_street string Optional
address_city string Optional
address_state string Optional
address_zip string Optional
address_country string Optional
notes string Optional
tags string Optional Comma-separated tag list
status string Optional Values: active, inactive
source string Optional
assigned_to integer Optional User ID to assign contact to

Code Examples

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

Permanently delete a contact record.

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID

Code Examples

curl -X DELETE "https://crm.revorbit.com/api/contacts/{id}" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
const response = await fetch(
  "https://crm.revorbit.com/api/contacts/{id}",
  {
    method: "DELETE",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
    }
  }
);
const data = await response.json();
POST /contacts/{id}/notes Add note to contact
JWT Required

Add a text note to a contact.

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID

Request Body

NameTypeRequiredDescription
content string Required Note text content

Code Examples

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

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID
noteId integer Required

Code Examples

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

List tasks associated with a contact.

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID

Code Examples

curl -X GET "https://crm.revorbit.com/api/contacts/{id}/tasks" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
const response = await fetch(
  "https://crm.revorbit.com/api/contacts/{id}/tasks",
  {
    method: "GET",
    headers: {
      "Authorization": "Bearer YOUR_JWT_TOKEN",
    }
  }
);
const data = await response.json();
POST /contacts/{id}/tasks Add task to contact
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/contacts/{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/contacts/{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 /contacts/{id}/tasks/{taskId} Update contact 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/contacts/{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/contacts/{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 /contacts/{id}/tasks/{taskId} Delete contact task
JWT Required

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID
taskId integer Required

Code Examples

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

List synced emails linked to this contact.

Path Parameters

NameTypeRequiredDescription
id integer Required Resource ID

Code Examples

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

Export all contacts as a CSV file.

Response

CSV file download (binary file download)

Code Examples

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

Download a CSV template for importing contacts.

Response

CSV template (binary file download)

Code Examples

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

Import contacts from a CSV file. Uses the template format.

Request Body

NameTypeRequiredDescription
file file Optional CSV file to import

Response

Import results

{
    "success": true,
    "message": "...",
    "imported": 1,
    "skipped": 1,
    "errors": [
        "..."
    ]
}

Code Examples

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