Activities API
The Activities API lets you log and manage all customer interactions programmatically. Create notes, tasks, call logs, and meeting records, associate them with contacts, companies, or deals, and bulk import up to 100 activities at a time.
Endpoints
/api/v1/activitiesList activities/api/v1/activitiesCreate an activity/api/v1/activities/{id}Get activity by ID/api/v1/activities/{id}Update an activity/api/v1/activities/{id}Delete an activity/api/v1/activities/bulkBulk create (max 100)List endpoints support ?limit, ?offset, ?updatedSince, and ?fields query parameters. See the API Overview for details.
Activity Types
Rally supports four activity types. Some fields are type-specific (for example, call fields only apply to call activities).
note
Free-form notes attached to a record.
task
Action items with due dates and priority levels.
call
Call logs with direction, outcome, and duration.
meeting
Scheduled meetings with location and video link.
Create Activity Request
Request body for POST /api/v1/activities. Some fields are specific to certain activity types as noted in the descriptions.
CreateActivityRequest
| Property | Type | Required | Description |
|---|---|---|---|
activityType | string | ✓ | Type: "note", "task", "call", "meeting" |
subject | string | ✓ | Activity subject |
body | string? | — | Description / notes |
contactId | Guid? | — | Associated contact |
companyId | Guid? | — | Associated company |
dealId | Guid? | — | Associated deal |
scheduledAt | DateTime? | — | Scheduled date/time |
dueDate | DateTime? | — | Due date (tasks) |
priority | string? | — | "low", "normal", "high", "urgent" |
status | string | — | "pending", "completed" (default: "pending") |
callDirection | string? | — | "inbound" or "outbound" (calls only) |
callOutcome | string? | — | "connected", "voicemail", "no_answer", etc. (calls only) |
callDurationSeconds | int? | — | Call duration in seconds (calls only) |
durationMinutes | int? | — | Meeting duration in minutes (meetings only) |
location | string? | — | Meeting location (meetings only) |
meetingUrl | string? | — | Meeting link (meetings only) |
ownerId | Guid? | — | Owner |
Activity Response
Returned by all GET, POST, and PUT endpoints.
ActivityResponse
| Property | Type | Required | Description |
|---|---|---|---|
id | Guid | ✓ | Unique identifier |
tenantId | Guid | ✓ | Tenant identifier |
activityType | string | ✓ | Activity type |
subject | string | ✓ | Activity subject |
body | string? | — | Description / notes |
contactId | Guid? | — | Associated contact |
companyId | Guid? | — | Associated company |
dealId | Guid? | — | Associated deal |
scheduledAt | DateTime? | — | Scheduled date/time |
dueDate | DateTime? | — | Due date |
priority | string? | — | Priority level |
status | string | ✓ | Current status |
callDirection | string? | — | Call direction |
callOutcome | string? | — | Call outcome |
callDurationSeconds | int? | — | Call duration in seconds |
durationMinutes | int? | — | Meeting duration in minutes |
location | string? | — | Meeting location |
meetingUrl | string? | — | Meeting link |
ownerId | Guid? | — | Owner |
completedAt | DateTime? | — | Completion timestamp |
createdAt | DateTime | ✓ | Creation timestamp |
updatedAt | DateTime | ✓ | Last update timestamp |
Code Examples
Log a Call
curl -X POST "https://your-tenant.rallycrm.io/api/v1/activities" \
-H "X-Api-Key: rk_live_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"activityType": "call",
"subject": "Discovery call with Sarah Chen",
"body": "Discussed enterprise licensing needs and timeline",
"contactId": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"dealId": "c8f9a0b1-2d3e-4f56-7890-abcdef123456",
"callDirection": "outbound",
"callOutcome": "connected",
"callDurationSeconds": 1800,
"status": "completed"
}'Create a Task
curl -X POST "https://your-tenant.rallycrm.io/api/v1/activities" \
-H "X-Api-Key: rk_live_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"activityType": "task",
"subject": "Send proposal to Acme Corp",
"body": "Include enterprise pricing and implementation timeline",
"contactId": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"dealId": "c8f9a0b1-2d3e-4f56-7890-abcdef123456",
"dueDate": "2025-07-15T17:00:00Z",
"priority": "high",
"status": "pending"
}'Schedule a Meeting
curl -X POST "https://your-tenant.rallycrm.io/api/v1/activities" \
-H "X-Api-Key: rk_live_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"activityType": "meeting",
"subject": "Quarterly business review",
"body": "Review Q2 results and discuss expansion plan",
"contactId": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"companyId": "b5c7e1a2-3d4f-5678-9abc-def012345678",
"scheduledAt": "2025-07-20T14:00:00Z",
"durationMinutes": 60,
"location": "Conference Room B",
"meetingUrl": "https://meet.example.com/abc-def-ghi"
}'Example Responses
Call Activity
{
"id": "a7b8c9d0-1e2f-3456-789a-bcdef0123456",
"tenantId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"activityType": "call",
"subject": "Discovery call with Sarah Chen",
"body": "Discussed enterprise licensing needs and timeline",
"contactId": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"companyId": null,
"dealId": "c8f9a0b1-2d3e-4f56-7890-abcdef123456",
"scheduledAt": null,
"dueDate": null,
"priority": null,
"status": "completed",
"callDirection": "outbound",
"callOutcome": "connected",
"callDurationSeconds": 1800,
"durationMinutes": null,
"location": null,
"meetingUrl": null,
"ownerId": "e4d909c2-90d0-4b2b-88c5-8e9a0fa1e4b1",
"completedAt": "2025-06-14T15:30:00Z",
"createdAt": "2025-06-14T15:30:00Z",
"updatedAt": "2025-06-14T15:30:00Z"
}Task Activity
{
"id": "b8c9d0e1-2f3a-4567-89ab-cdef01234567",
"tenantId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"activityType": "task",
"subject": "Send proposal to Acme Corp",
"body": "Include enterprise pricing and implementation timeline",
"contactId": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"companyId": null,
"dealId": "c8f9a0b1-2d3e-4f56-7890-abcdef123456",
"scheduledAt": null,
"dueDate": "2025-07-15T17:00:00Z",
"priority": "high",
"status": "pending",
"callDirection": null,
"callOutcome": null,
"callDurationSeconds": null,
"durationMinutes": null,
"location": null,
"meetingUrl": null,
"ownerId": "e4d909c2-90d0-4b2b-88c5-8e9a0fa1e4b1",
"completedAt": null,
"createdAt": "2025-06-14T16:00:00Z",
"updatedAt": "2025-06-14T16:00:00Z"
}List Activities
[
{
"id": "a7b8c9d0-1e2f-3456-789a-bcdef0123456",
"tenantId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"activityType": "call",
"subject": "Discovery call with Sarah Chen",
"body": "Discussed enterprise licensing needs and timeline",
"contactId": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"companyId": null,
"dealId": "c8f9a0b1-2d3e-4f56-7890-abcdef123456",
"scheduledAt": null,
"dueDate": null,
"priority": null,
"status": "completed",
"callDirection": "outbound",
"callOutcome": "connected",
"callDurationSeconds": 1800,
"durationMinutes": null,
"location": null,
"meetingUrl": null,
"ownerId": "e4d909c2-90d0-4b2b-88c5-8e9a0fa1e4b1",
"completedAt": "2025-06-14T15:30:00Z",
"createdAt": "2025-06-14T15:30:00Z",
"updatedAt": "2025-06-14T15:30:00Z"
}
]Bulk Create Response
{
"created": 4,
"updated": 0,
"failed": 0,
"createdIds": [
"a7b8c9d0-1e2f-3456-789a-bcdef0123456",
"b8c9d0e1-2f3a-4567-89ab-cdef01234567",
"c9d0e1f2-3a4b-5678-9abc-def012345678",
"d0e1f2a3-4b5c-6789-abcd-ef0123456789"
],
"errors": []
}