CRMCRM Groups

CRM Groups

List, create, update, and inspect contact groups in the Talkturo CRM — organize contacts into groups for campaigns, assistant routing, and segmentation.

curl --request GET \
  --url "https://app.talkturo.com/api/crm/groups?teamId=team_9f2c1a7d&search=vip" \
  --header "Authorization: Bearer tk_example_9xmk7q2r"
{
  "success": true,
  "groups": [
    {
      "id": "grp_2c7f4f91",
      "team_id": "team_9f2c1a7d",
      "name": "VIP Accounts",
      "is_default": false,
      "created_at": "2025-01-14T18:22:11.000Z",
      "updated_at": "2025-01-14T18:22:11.000Z",
      "created_by": "usr_7b6d2c18",
      "contact_count": 42
    },
    {
      "id": "grp_85b1d603",
      "team_id": "team_9f2c1a7d",
      "name": "VIP Renewals",
      "is_default": false,
      "created_at": "2025-02-03T09:41:27.000Z",
      "updated_at": "2025-02-03T09:41:27.000Z",
      "created_by": "usr_7b6d2c18",
      "contact_count": 8
    }
  ],
  "count": 2
}
curl --request POST \
  --url "https://app.talkturo.com/api/crm/groups" \
  --header "Authorization: Bearer tk_example_9xmk7q2r" \
  --header "Content-Type: application/json" \
  --data '{
    "teamId": "team_9f2c1a7d",
    "name": "Assistant Overflow"
  }'
{
  "success": true,
  "group": {
    "id": "grp_d3e801aa",
    "team_id": "team_9f2c1a7d",
    "name": "Assistant Overflow",
    "is_default": false,
    "created_at": "2025-03-06T12:18:44.000Z",
    "updated_at": "2025-03-06T12:18:44.000Z",
    "created_by": "usr_7b6d2c18",
    "contact_count": 0
  }
}
curl --request GET \
  --url "https://app.talkturo.com/api/crm/groups/grp_2c7f4f91" \
  --header "Authorization: Bearer tk_example_9xmk7q2r"
{
  "success": true,
  "group": {
    "id": "grp_2c7f4f91",
    "team_id": "team_9f2c1a7d",
    "name": "VIP Accounts",
    "is_default": false,
    "created_at": "2025-01-14T18:22:11.000Z",
    "updated_at": "2025-01-22T10:09:02.000Z",
    "created_by": "usr_7b6d2c18",
    "contacts": [
      {
        "id": "ctc_19f4b0d8",
        "first_name": "Jane",
        "last_name": "Chen",
        "email": "jane.chen@northstarhealth.com",
        "phone": "+14155550132",
        "job_title": "Revenue Operations Director",
        "lead_status": "qualified"
      },
      {
        "id": "ctc_88ca60e2",
        "first_name": "Marcus",
        "last_name": "Reed",
        "email": "marcus.reed@lakesideelectric.com",
        "phone": "+14155550177",
        "job_title": "VP of Sales",
        "lead_status": "new"
      }
    ],
    "contact_count": 200
  }
}
curl --request PUT \
  --url "https://app.talkturo.com/api/crm/groups/grp_2c7f4f91" \
  --header "Authorization: Bearer tk_example_9xmk7q2r" \
  --header "Content-Type: application/json" \
  --data '{
    "name": "Strategic Accounts"
  }'
{
  "success": true,
  "group": {
    "id": "grp_2c7f4f91",
    "team_id": "team_9f2c1a7d",
    "name": "Strategic Accounts",
    "is_default": false,
    "created_at": "2025-01-14T18:22:11.000Z",
    "updated_at": "2025-03-06T13:09:55.000Z",
    "created_by": "usr_7b6d2c18",
    "contact_count": 200
  }
}
curl --request DELETE \
  --url "https://app.talkturo.com/api/crm/groups/grp_2c7f4f91" \
  --header "Authorization: Bearer tk_example_9xmk7q2r"
{
  "error": "Groups cannot be deleted. Rename it instead, or leave it unused."
}

Endpoint summary

MethodPathPurposeAuth
GET/api/crm/groupsList groups for a workspaceSession cookie or API key
POST/api/crm/groupsCreate a groupSession cookie or API key
GET/api/crm/groups/{id}Get one group with contactsSession cookie or API key
PUT/api/crm/groups/{id}Rename a groupSession cookie or API key
DELETE/api/crm/groups/{id}Not supportedSession cookie or API key
GET/api/crm/groups/{id}/contactsList contacts in a groupSession cookie or API key
POST/api/crm/groups/{id}/contactsAdd a contact to a groupSession cookie or API key
DELETE/api/crm/groups/{id}/contactsRemove a contact from a groupSession cookie or API key

Use the base URL https://app.talkturo.com. These endpoints accept either a Talkturo session cookie or an Authorization header with a Bearer API key. For API key requests, the team is derived from the key and any teamId value in the request is ignored.

DELETE /api/crm/groups/{id} always returns 405 Method Not Allowed. Groups cannot be deleted. Rename the group instead, or leave it unused.

List groups

List all CRM groups in a workspace. Use search to filter groups by name.

Endpoint

GET https://app.talkturo.com/api/crm/groups

Query parameters

query
teamIdstring
Required

Workspace ID. Required when you authenticate with a session cookie. Ignored for API key requests because the API key already scopes the request to a team.

Request example

Response example

Response fields

successboolean
Required

Indicates whether the request succeeded.

groupsarray
Required

Array of groups that match the request filters.

groups[].idstring
Required

Unique group ID.

groups[].team_idstring
Required

Workspace ID that owns the group.

groups[].namestring
Required

Group name. Names are unique within a team.

groups[].is_defaultboolean
Required

Whether the group is the default CRM group for the workspace.

groups[].created_atstring
Required

Group creation timestamp in ISO 8601 format.

groups[].updated_atstring
Required

Last update timestamp in ISO 8601 format.

groups[].created_bystring

User ID of the creator. This value can be null in some records.

groups[].contact_countnumber
Required

Exact number of contacts currently assigned to the group.

countnumber
Required

Number of groups returned in the groups array.

Error responses

StatusMeaning
400Missing teamId for a session-authenticated request
500Database or server error

Create group

Create a new contact group in a workspace. Group names must be unique within the team.

Endpoint

POST https://app.talkturo.com/api/crm/groups

Body parameters

body
teamIdstring
Required

Workspace ID. Required when you authenticate with a session cookie. Ignored for API key requests.

body
namestring
Required

Group name. The name must be unique within the team.

Request example

Response example

Response fields

successboolean
Required

Indicates whether the request succeeded.

groupobject
Required

The newly created group.

group.idstring
Required

Unique group ID.

group.team_idstring
Required

Workspace ID that owns the group.

group.namestring
Required

Group name.

group.is_defaultboolean
Required

Whether the group is the default CRM group.

group.created_atstring
Required

Creation timestamp in ISO 8601 format.

group.updated_atstring
Required

Last update timestamp in ISO 8601 format.

group.created_bystring

User ID of the creator. This value can be null.

group.contact_countnumber
Required

Number of contacts currently assigned to the group.

Error responses

StatusMeaning
400Missing teamId, missing name, or duplicate group name
500Database or server error

Get group with contacts

Fetch one group and the most recent contacts assigned to it. The response includes up to 100 contacts ordered by newest added_at first.

Endpoint

GET https://app.talkturo.com/api/crm/groups/{id}

This endpoint requires auth.accountId in addition to authentication. If the request identity does not include an account context, the API returns 401.

Path parameters

Request example

Response example

Response fields

successboolean
Required

Indicates whether the request succeeded.

groupobject
Required

The requested group record with contact data.

group.idstring
Required

Unique group ID.

group.team_idstring
Required

Workspace ID that owns the group.

group.namestring
Required

Group name.

group.is_defaultboolean
Required

Whether the group is the default CRM group.

group.created_atstring
Required

Group creation timestamp in ISO 8601 format.

group.updated_atstring
Required

Last update timestamp in ISO 8601 format.

group.created_bystring

User ID of the creator. This value can be null.

group.contactsarray
Required

Up to 100 contacts in the group, ordered by newest assignment first.

group.contacts[].idstring
Required

Unique contact ID.

group.contacts[].first_namestring

Contact first name.

group.contacts[].last_namestring

Contact last name.

group.contacts[].emailstring

Contact email address.

group.contacts[].phonestring

Contact phone number.

group.contacts[].job_titlestring

Contact job title.

group.contacts[].lead_statusstring

Lead status for the contact.

group.contact_countnumber
Required

Total number of contacts in the group. This can be larger than the length of group.contacts.

Error responses

StatusMeaning
401Missing authentication or missing account context
404Group not found
500Database or server error

Update group

Rename an existing group. This endpoint does not let you change whether a group is the default.

Endpoint

PUT https://app.talkturo.com/api/crm/groups/{id}

Do not send is_default in the request body. This endpoint does not support changing it.

Path parameters

Body parameters

body
namestring

New group name. If you send name, it must not be an empty string.

Request example

Response example

Response fields

successboolean
Required

Indicates whether the request succeeded.

groupobject
Required

The updated group record.

group.idstring
Required

Unique group ID.

group.team_idstring
Required

Workspace ID that owns the group.

group.namestring
Required

Updated group name.

group.is_defaultboolean
Required

Whether the group is the default CRM group.

group.created_atstring
Required

Creation timestamp in ISO 8601 format.

group.updated_atstring
Required

Last update timestamp in ISO 8601 format.

group.created_bystring

User ID of the creator. This value can be null.

group.contact_countnumber
Required

Number of contacts currently assigned to the group.

Error responses

StatusMeaning
400Empty name or duplicate group name
401Missing authentication or missing account context
404Group not found
500Database or server error

Delete group

Deletion is not supported for CRM groups. The endpoint exists but always rejects the request.

Endpoint

DELETE https://app.talkturo.com/api/crm/groups/{id}

Path parameters

Request example

Response example

Response fields

errorstring
Required

Human-readable error message explaining that group deletion is not supported.

Error responses

StatusMeaning
405Groups cannot be deleted

Group contact membership

Manage which contacts belong to a CRM group. Add, remove, and list contacts within a group using these membership endpoints.

List contacts in a group

Retrieve paginated contacts for a specific group. Results are ordered by membership creation time, newest first.

Endpoint

GET https://app.talkturo.com/api/crm/groups/{id}/contacts

Path parameters

Query parameters

query
limitinteger

Maximum number of contacts to return. Defaults to 100.

query
offsetinteger

Number of contacts to skip for pagination. Defaults to 0.

Response fields

successboolean
Required

Indicates whether the request succeeded.

contactsarray
Required

Array of contact records in the group.

countinteger
Required

Total number of contacts in the group.

limitinteger
Required

Pagination limit used for this request.

offsetinteger
Required

Pagination offset used for this request.

Error responses

StatusMeaning
401Missing authentication or account context
404Group not found or does not belong to the account

Add a contact to a group

Add a contact to a CRM group. The contact and group must both belong to the same account. This operation is idempotent, so adding a contact that is already in the group returns success without creating a duplicate.

Endpoint

POST https://app.talkturo.com/api/crm/groups/{id}/contacts

Path parameters

Body parameters

body
contactIdstring
Required

UUID of the contact to add. The contact must belong to the same account as the group.

API keys require the contacts:write scope for this endpoint.

Response fields

successboolean
Required

Returns true when the contact is added or was already a member.

Error responses

StatusMeaning
400Missing contactId
401Missing authentication or account context
404Group or contact not found

Remove a contact from a group

Remove a contact from a CRM group by contact ID. Removing a contact that is not in the group still returns success.

Endpoint

DELETE https://app.talkturo.com/api/crm/groups/{id}/contacts?contactId={contactId}

Path parameters

Query parameters

query
contactIdstring
Required

UUID of the contact to remove from the group.

API keys require the contacts:write scope for this endpoint.

Response fields

successboolean
Required

Returns true when the contact is removed or was not a member.

Error responses

StatusMeaning
400Missing contactId
401Missing authentication or account context
404Group not found or does not belong to the account