/clients/{clientId}/activities/{activityId}Update a manual activityEdits a manual activity. Only manual activities are editable: a PUT on an activity from an external source (gmail, outlook, fireflies) returns 403 forbidden — the activity exists and belongs to you, but its source makes it immutable on the v1 surface (immutable: true).
All body fields are optional; omitted fields are left unchanged. participants, when provided, fully replaces the existing list.
Parameters
clientIdstring · uuidpathrequiredClient UUID.
activityIdstring · uuidpathrequiredActivity UUID.
Request body
requiredapplication/json
Request body for editing a manual activity. All fields optional; omitted fields are left unchanged. `participants`, when present, fully replaces the existing list.
contentstringparticipantsarray of string · emailShow child attributes
subjectnull | stringtypestring{
"content": "string",
"participants": [
"user@example.com"
],
"subject": "string",
"type": "chat"
}Responses
Headers
X-RateLimit-LimitThe request cap for the tighter of the per-organization / per-endpoint windows that applied to this request.
X-RateLimit-RemainingRequests remaining in the current window.
X-RateLimit-ResetUnix timestamp (seconds) when the current window resets.
allOf · 2 options
datavaluerequiredThe response payload — shape depends on the endpoint.
metaobjectrequiredPagination metadata — populated on list endpoints, empty on single-resource endpoints.
Show child attributes
cursornull | stringOpaque cursor to pass to the next request.
hasMoreboolean | nullTrue when further pages of results are available.
dataobjectA communication event linked to a client. Projected from Salfio's Conversation + messages + conversation_clients model family. The `clientId` is the "primary" client derived from the junction table — a conversation linked to multiple clients is surfaced once per linked client (from the list endpoints of each). `content` is the full concatenated body of all messages on the conversation, joined by `\n\n---\n\n` — single-resource GETs never truncate it. It is returned only on single-resource GETs; list endpoints omit it for response-size reasons. Webhook delivery payloads cap `content` at 10 KiB (with a `[content truncated at 10 KiB]` marker) — fetch the activity by ID when you need the full text. `immutable` is derived server-side: non-`manual` sources are always immutable on the v1 surface (per the spec source/operation matrix).
Show child attributes
archivedAtnull | string · date-timeclientIdstring · uuidrequiredcontentstringrequiredFull concatenated message bodies (single-resource GETs only; capped at 10 KiB in webhook deliveries).
createdAtstring · date-timerequiredidstring · uuidrequiredimmutablebooleanrequiredTrue when the activity's source prevents it from being edited or hard-deleted via the API.
occurredAtstring · date-timerequiredparticipantsarray of string · emailrequiredShow child attributes
sourcestringrequiredsubjectnull | stringtypestringrequiredupdatedAtstring · date-timerequired{
"data": {
"archivedAt": "2026-06-09T00:00:00Z",
"clientId": "00000000-0000-0000-0000-000000000000",
"content": "string",
"createdAt": "2026-06-09T00:00:00Z",
"id": "00000000-0000-0000-0000-000000000000",
"immutable": true,
"occurredAt": "2026-06-09T00:00:00Z",
"participants": [
"user@example.com"
],
"source": "fireflies",
"subject": "string",
"type": "chat",
"updatedAt": "2026-06-09T00:00:00Z"
},
"meta": {
"cursor": "string",
"hasMore": true
}
}errorobjectrequiredShow child attributes
codestringrequiredMachine-readable error category.
detailsobjectOptional per-code context (field names, retry windows, …).
messagestringrequiredHuman-readable description — intended for operator logs, not end-user display.
{
"error": {
"code": "invalid_argument",
"message": "limit must be an integer between 1 and 100"
}
}errorobjectrequiredShow child attributes
codestringrequiredMachine-readable error category.
detailsobjectOptional per-code context (field names, retry windows, …).
messagestringrequiredHuman-readable description — intended for operator logs, not end-user display.
{
"error": {
"code": "unauthorized",
"message": "Authentication required"
}
}errorobjectrequiredShow child attributes
codestringrequiredMachine-readable error category.
detailsobjectOptional per-code context (field names, retry windows, …).
messagestringrequiredHuman-readable description — intended for operator logs, not end-user display.
{
"error": {
"code": "forbidden",
"message": "activity is immutable; only manual activities can be edited"
}
}errorobjectrequiredShow child attributes
codestringrequiredMachine-readable error category.
detailsobjectOptional per-code context (field names, retry windows, …).
messagestringrequiredHuman-readable description — intended for operator logs, not end-user display.
{
"error": {
"code": "not_found",
"message": "client not found"
}
}Headers
Retry-AfterSeconds the client should wait before retrying.
errorobjectrequiredShow child attributes
codestringrequiredMachine-readable error category.
detailsobjectOptional per-code context (field names, retry windows, …).
messagestringrequiredHuman-readable description — intended for operator logs, not end-user display.
{
"error": {
"code": "rate_limited",
"details": {
"retry_after_seconds": 30
},
"message": "Rate limit exceeded"
}
}