Update an existing activity by its numeric ID. All fields are optional — only send the fields you want to change.
ATZ CRM provides the following built-in activity types you can use via activity_type_id:
| ID | Label |
|---|---|
| 2 | Meeting |
| 3 | Task |
| 4 | |
| 5 | Interview |
Custom activity types created in your account are also valid.
Request
PUT
PUT /v1/activity/:id
Path Parameter
- id
integerThe numeric ID of the activity to update.
Body
- title
stringMax 100 characters.
- activity_type_id
integerPositive integer. Use 2 (Meeting), 3 (Task), 4 (Email), 5 (Interview), or a custom type ID. To fetch all available types for your account, use the Get Activity Types endpoint.
- start_datetime
stringISO 8601 datetime. Example: 2024-06-15T10:00:00Z
- end_datetime
stringISO 8601 datetime. Must be after start_datetime.
- related_to_entity
integerEntity type: 1 (Candidate), 2 (Job), 3 (Organization), 4 (Contact), 5 (Deal), 10 (Other).
- related_to
stringSlug of the related record (max 50 characters).
- collaborators
stringComma-separated user IDs. Example: "1,2,3"
- candidates_as_attendees
stringComma-separated candidate slugs. Replaces all existing candidate attendees. Example: "candidate_2f0ea5cd69a6cd6c7163,candidate_9b3fa1de02c741ab8821"
- contacts_as_attendees
stringComma-separated contact slugs. Replaces all existing contact attendees. Example: "contact_d86c343cf49040381fc7,contact_a12b456cd78ef9012345"
- users_as_attendees
stringComma-separated user IDs. Replaces all existing user attendees.
- meeting_link
stringValid URL, max 100 characters.
- importance
stringOne of: low, normal, high, critical.
- location
stringMax 50 characters.
- description
stringFree-text description of the activity.
- do_not_send_calendar_invite
booleanSet to true to suppress calendar invite.
- mark_as_done
booleanMark the activity as completed.
- attachment
file or stringUpload a file via multipart/form-data, or provide a URL string (max 350 characters).
Headers
- Authorization: Bearer your_access_token
Request Example
{
"title": "Client Demo Call Updated",
"activity_type_id": 3,
"related_to_entity": 1,
"related_to": "candidate_2f0ea5cd69a6cd6c7163",
"collaborators": "1",
"start_datetime": "2026-04-25T10:00:00Z",
"end_datetime": "2026-04-25T11:00:00Z",
"candidates_as_attendees": "candidate_2f0ea5cd69a6cd6c7163",
"contacts_as_attendees": "contact_d86c343cf49040381fc7",
"users_as_attendees": "1",
"meeting_link": "https://meet.google.com/xyz-abcd-efg",
"importance": "normal",
"location": "Zoom",
"description": "Discuss product demo and onboarding",
"do_not_send_calendar_invite": true,
"mark_as_done": true,
"attachment": "https://example.com/files/sample-agenda.pdf"
}
When any of candidates_as_attendees, contacts_as_attendees, or users_as_attendees is sent, all existing attendees are replaced with the new list. To clear all attendees of a type, send an empty string.
Response
200
Returns the updated activity object. See Add Activity response for the full schema.
400
Body
- Invalid activity ID or validation error message.
401
Body
- Unauthorized
404
Body
- Activity not found
Response Example
{
"id": 42,
"title": "Updated Team Sync",
"activity_type": {
"id": 3,
"label": "Task"
},
"related_to": "candidate_abc123",
"related_record": {
"slug": "candidate_abc123"
},
"related_to_type": "candidate",
"collaborators": [],
"start_date": "2024-06-16",
"start_time": "09:00",
"end_time": "10:00",
"attendees": {
"candidates": [],
"contacts": [],
"users": []
},
"meeting_link": "",
"importance": "normal",
"location": "Zoom",
"description": "Rescheduled sync",
"do_not_send_calendar_invite": true,
"mark_as_done": false,
"attachment": null,
"created_by": {
"id": 1,
"slug": "user_abc",
"full_name": "John Doe",
"email": "john@example.com"
},
"updated_by": {
"id": 1,
"slug": "user_abc",
"full_name": "John Doe",
"email": "john@example.com"
},
"created_at": "2024-06-15T10:00:00Z",
"updated_at": "2024-06-16T08:30:00Z"
}