Contacts API

Connect my tools3 min readUpdated 2026-03-12

Contacts API

The Contacts API lets you keep your JustCall contact list synchronized with your CRM, database, or any external system. You can create, read, update, and delete individual contacts, run filtered searches, and import contacts in bulk.

Endpoints

MethodEndpointDescription
GET/v2/contactsList and search contacts
GET/v2/contacts/{id}Get a single contact
POST/v2/contactsCreate a contact
PUT/v2/contacts/{id}Update a contact
DELETE/v2/contacts/{id}Delete a contact
POST/v2/contacts/bulkBulk import contacts

Create a Contact

curl -X POST "https://api.justcall.io/v2/contacts" \
  -H "Authorization: {api_key}:{api_secret}" \
  -H "Content-Type: application/json" \
  -d '{
    "first_name": "Jordan",
    "last_name": "Lee",
    "phone": "+14155559876",
    "email": "jordan@example.com",
    "company": "Acme Corp",
    "custom_fields": {
      "lead_source": "Website",
      "plan_tier": "Enterprise"
    }
  }'

Response

{
  "status": "success",
  "data": {
    "id": 98765,
    "first_name": "Jordan",
    "last_name": "Lee",
    "phone": "+14155559876",
    "email": "jordan@example.com",
    "company": "Acme Corp",
    "custom_fields": {
      "lead_source": "Website",
      "plan_tier": "Enterprise"
    },
    "created_at": "2026-03-12T14:30:00Z"
  }
}

Search and Filter Contacts

curl -X GET "https://api.justcall.io/v2/contacts?search=jordan&company=Acme+Corp&page=1&per_page=25" \
  -H "Authorization: {api_key}:{api_secret}"
ParameterTypeDescription
searchstringSearch across name, phone, and email fields
phonestringFilter by exact phone number (E.164)
emailstringFilter by exact email address
companystringFilter by company name
pageintegerPage number (default: 1)
per_pageintegerResults per page (default: 25, max: 100)

Update a Contact

curl -X PUT "https://api.justcall.io/v2/contacts/98765" \
  -H "Authorization: {api_key}:{api_secret}" \
  -H "Content-Type: application/json" \
  -d '{
    "company": "Acme Corp International",
    "custom_fields": {
      "plan_tier": "Premium"
    }
  }'

Only the fields you include in the request body are updated. Omitted fields remain unchanged.

Delete a Contact

curl -X DELETE "https://api.justcall.io/v2/contacts/98765" \
  -H "Authorization: {api_key}:{api_secret}"

Deletion is permanent and cannot be undone.

Bulk Import Contacts

Upload up to 5,000 contacts in a single request:

curl -X POST "https://api.justcall.io/v2/contacts/bulk" \
  -H "Authorization: {api_key}:{api_secret}" \
  -H "Content-Type: application/json" \
  -d '{
    "contacts": [
      {"first_name": "Jordan", "last_name": "Lee", "phone": "+14155559876"},
      {"first_name": "Sam", "last_name": "Chen", "phone": "+14155558765"}
    ]
  }'

The response includes a summary of created, updated (matched by phone number), and failed records.

Custom Fields

You can store arbitrary key-value pairs in the custom_fields object. Custom field keys must be strings. Define custom fields in Settings → Contacts → Custom Fields before using them via the API.


Was this helpful?