CRM Contacts
Create, list, update, delete, and bulk import contacts in the Talkturo CRM — manage customer data with filtering, pagination, and custom field support.
curl -X GET "https://app.talkturo.com/api/crm/contacts?page=1&limit=25&search=chen&companyId=cmp_9f3e21&campaignId=camp_7d2a44" \
-H "Cookie: sb-access-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example"
const response = await fetch(
"https://app.talkturo.com/api/crm/contacts?page=1&limit=25&search=chen&companyId=cmp_9f3e21&campaignId=camp_7d2a44",
{
method: "GET",
credentials: "include",
}
);
const data = await response.json();
console.log(data);
{
"success": true,
"contacts": [
{
"id": "8e1f5b9d-1e4b-4db1-92b2-4d93471f1af2",
"first_name": "Maya",
"last_name": "Chen",
"email": "maya.chen@northstarhealth.co",
"phone": "+14155550187",
"company_id": "cmp_9f3e21"
},
{
"id": "bd3cfaf2-d375-47b4-9495-3e66512a6e75",
"first_name": "Daniel",
"last_name": "Chen",
"email": "daniel.chen@northstarhealth.co",
"phone": "+14155550199",
"company_id": "cmp_9f3e21"
}
],
"total": 2,
"page": 1
}
curl -X POST "https://app.talkturo.com/api/crm/contacts" \
-H "Content-Type: application/json" \
-H "Cookie: sb-access-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example" \
-d '{
"first_name": "Priya",
"last_name": "Natarajan",
"email": "priya.natarajan@lakesidepartners.com",
"phone": "+14155550231",
"company_id": "cmp_4c8d12",
"job_title": "Operations Director",
"lead_source": "webinar"
}'
const response = await fetch("https://app.talkturo.com/api/crm/contacts", {
method: "POST",
credentials: "include",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
first_name: "Priya",
last_name: "Natarajan",
email: "priya.natarajan@lakesidepartners.com",
phone: "+14155550231",
company_id: "cmp_4c8d12",
job_title: "Operations Director",
lead_source: "webinar",
}),
});
const data = await response.json();
console.log(data);
{
"success": true,
"contact": {
"id": "2c7f1c6c-4d67-45f0-bf0e-5c9d3d2f2e41",
"first_name": "Priya",
"last_name": "Natarajan",
"email": "priya.natarajan@lakesidepartners.com",
"phone": "+14155550231",
"company_id": "cmp_4c8d12",
"job_title": "Operations Director",
"lead_source": "webinar"
}
}
curl -X POST "https://app.talkturo.com/api/crm/contacts/import" \
-H "Content-Type: application/json" \
-H "Cookie: sb-access-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example" \
-d '{
"contacts": [
{
"first_name": "Alicia",
"last_name": "Moreno",
"email": "alicia.moreno@brightpath.io",
"phone": "+14155550311",
"company_id": "cmp_12ab45",
"region": "West"
},
{
"first_name": "Marcus",
"last_name": "Reed",
"email": "marcus.reed@brightpath.io",
"phone": "+14155550329",
"company_id": "cmp_12ab45",
"region": "Central"
}
]
}'
curl -X POST "https://app.talkturo.com/api/crm/contacts/import" \
-H "Content-Type: text/csv" \
-H "Cookie: sb-access-token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.example" \
--data-binary $'first_name,last_name,email,phone,company_id,region
Alicia,Moreno,alicia.moreno@brightpath.io,+14155550311,cmp_12ab45,West
Marcus,Reed,marcus.reed@brightpath.io,+14155550329,cmp_12ab45,Central'
{
"success": true,
"imported": 2,
"failed": 0,
"errors": []
}
CRM contacts endpoints
Use CRM contact endpoints to manage contact records, filter contact lists, and import contacts in bulk.
All CRM contact endpoints require session cookie authentication. Send requests from an authenticated browser session or a client that includes the Talkturo session cookie.
Endpoint summary
| Method | Path | Description |
|---|---|---|
GET | /api/crm/contacts | List contacts with pagination and filters |
POST | /api/crm/contacts | Create a contact |
GET | /api/crm/contacts/{id} | Get a single contact by ID |
PATCH | /api/crm/contacts/{id} | Update a contact |
DELETE | /api/crm/contacts/{id} | Delete a contact |
POST | /api/crm/contacts/import | Bulk import contacts from JSON or CSV |
List contacts
Retrieve a paginated list of contacts. Use query parameters to search by text or narrow results to a company or campaign.
Query parameters
Page number to return.
Maximum number of contacts to return for the current page.
Free-text search term used to filter contacts.
Filter contacts to a specific company.
Filter contacts to a specific campaign.
Response fields
Returns true when the request succeeds.
Array of contact objects for the current page.
Unique contact identifier.
Contact first name.
Contact last name.
Contact email address when available.
Contact phone number when available.
Associated company ID when the contact belongs to a company.
Total number of contacts that match the current filters.
Current page number in the paginated result.
Create contact
Create a single CRM contact by sending the contact fields in the request body. Include custom fields alongside the standard fields when your workspace uses them.
Request body
Contact first name.
Contact last name.
Contact email address.
Contact phone number.
Company ID to associate with the contact.
Any additional custom fields supported by your CRM configuration. Send each custom field as a top-level property in the request body.
Response fields
Returns true when the contact is created.
Created contact record.
Unique contact identifier.
Contact first name.
Contact last name.
Contact email address when provided.
Contact phone number when provided.
Associated company ID when provided.
Get a contact
Fetch a single contact by its ID.
Path parameters
Contact ID as a UUID.
Response fields
Returns true when the contact is found.
Contact record for the requested ID.
Unique contact identifier.
Contact first name.
Contact last name.
Contact email address when available.
Contact phone number when available.
Associated company ID when the contact belongs to a company.
Update a contact
Update one or more contact fields by sending a partial request body. Omit fields you do not want to change.
Path parameters
Contact ID as a UUID.
Request body
Updated first name.
Updated last name.
Updated email address.
Updated phone number.
Updated associated company ID.
Any custom contact fields to update. Send each field as a top-level property in the request body.
Response fields
Returns true when the contact is updated.
Updated contact record.
Delete a contact
Delete a contact by ID.
Path parameters
Contact ID as a UUID.
Response fields
Returns true when the contact is deleted.
Deletion result message. The response returns a success message such as Contact deleted.
Bulk import contacts
Import many contacts in a single request. Send either structured JSON with a contacts array or CSV data, depending on your import flow.
JSON request body
Array of contacts to import when using JSON input.
Contact first name for each imported record.
Contact last name for each imported record.
Contact email address.
Contact phone number.
Company ID to associate with each imported contact.
Additional custom fields for each imported contact. Send each field as a top-level property on the contact object.
Response fields
Returns true when the import request is processed.
Number of contacts imported successfully.
Number of contacts that failed to import.
List of import errors for records that could not be processed.
Notes on custom fields
Contact create, update, and import endpoints accept custom fields in addition to the standard contact properties.
Send custom fields as top-level properties in the JSON body. Keep field names consistent with your CRM configuration so imported and updated data maps to the expected contact fields.