Activity
Retrieve the activity feed for any CRM record, including interactions, tasks, and notes in a single request.
The activity endpoint returns a unified feed of everything that happened on a record. It aggregates interactions (emails, calls, meetings), tasks, and notes into a single response.
Get Activity Feed
GET /api/v1/activity/{object}/{id}Returns the activity feed for a specific record.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
object | string | The object name (e.g. contacts, companies) |
id | UUID | The record ID |
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
include | string | interactions,tasks,notes | Comma-separated list of sections to include. Accepted values: interactions, tasks, notes. |
channel | string | Filter interactions by channel (e.g. email, call, linkedin, whatsapp) | |
cursor | string | Pagination cursor from a previous response | |
limit | integer | 20 | Number of items per section (max 100) |
Example Request
curl -X GET "https://kasar.app/api/v1/activity/contacts/550e8400-e29b-41d4-a716-446655440000?include=interactions,tasks&channel=email&limit=10" \
-H "Authorization: Bearer ksr_a1b2c3d4e5f6..."Response
Each included section returns a normalized { data, total } object:
{
"interactions": {
"data": [
{
"id": "a1b2c3d4-...",
"channel": "email",
"direction": "inbound",
"subject": "Follow-up on proposal",
"snippet": "Hi Alice, I wanted to circle back on...",
"created_at": "2025-03-10T14:22:00Z"
}
],
"total": 34
},
"tasks": {
"data": [
{
"id": "e5f6a7b8-...",
"title": "Send updated contract",
"status": "pending",
"due_date": "2025-03-15",
"assigned_to": "Bob Dupont",
"created_at": "2025-03-08T09:00:00Z"
}
],
"total": 5
},
"nextCursor": "eyJpZCI6ImUxZjJhM2I0..."
}Sections that are not included in the include parameter are omitted from the response entirely.
Filtering by Channel
Use the channel parameter to narrow down interactions. This only affects the interactions section; tasks and notes are returned unfiltered.
curl -X GET "https://kasar.app/api/v1/activity/companies/99aabb00-...?include=interactions&channel=call" \
-H "Authorization: Bearer ksr_a1b2c3d4e5f6..."Pagination
When more items exist beyond the current page, the response includes a nextCursor value. Pass it as the cursor query parameter to fetch the next page:
curl -X GET "https://kasar.app/api/v1/activity/contacts/550e8400-...?cursor=eyJpZCI6ImUxZjJhM2I0..." \
-H "Authorization: Bearer ksr_a1b2c3d4e5f6..."When nextCursor is null, you have reached the last page.
Error Responses
| Status | Code | Description |
|---|---|---|
| 400 | INVALID_OBJECT | The object name does not exist |
| 404 | RECORD_NOT_FOUND | No record found with the given ID |
| 403 | PERMISSION_DENIED | Token lacks permission to read this record |