Skip to main content
PATCH
Update Activity
Partial edit of an activity’s content and its deal link. Only fields present in the request body are touched: an explicit null clears a column (e.g. unlinking a contact), an omitted field is left untouched entirely. At least one field must be present, or the request fails with 422. System-generated activities are read-only: stage-change/audit rows (any type outside note/call/meeting/email/task) and provider-synced rows (any source outside manual/import — e.g. calendar, gmail, outlook, slack, teams from a connected Pipedream integration) can’t be edited, and this endpoint returns 403. A null source is treated as user-created. deal_id is handled specially: a change routes through the same validated RPC as Link an activity to a deal (so the account-match check, account backfill, and deals.last_activity_at bump all still apply), not a raw column write. If the activity is already linked to a different deal, it’s unlinked first and then relinked to the new one. Every other field (type, summary → subject, body, contact_id) is a direct PostgREST column patch.
The response is just {"id": "<activity_id>"} — not the updated row. Re-GET the activity if you need the fresh state back.

Auth

Requires a CRM manage scope and an active organization on the token. Any *:manage scope qualifies — in practice contacts:manage, deals:manage, companies:manage, or activities:manage.

Response

Errors

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

activity_id
string
required

The activity's id to update.

Body

application/json

Partial edit of an activity's content and associations.

Only fields present in the request are patched — an explicit null clears the column (e.g. unlinking a deal/contact), while an omitted field is left untouched.

type
string | null

New activity type; omit to leave unchanged.

summary
string | null

New subject line; omit to leave unchanged, maps to the subject column.

body
string | null

New body text; omit to leave unchanged.

contact_id
string | null

New contact link, or null to clear it; omit to leave unchanged.

deal_id
string | null

New deal link, or null to unlink; omit to leave unchanged, routed through the link-deal RPC.

assigned_to
string | null

Reassign to this user id; omit to leave unchanged.

due_at
string | null

New ISO 8601 due time, or null to clear it; omit to leave unchanged.

account_id
string | null

Move the activity to this account. Refused when the activity is linked to a deal on a different account; omit to leave unchanged.

done
boolean | null

Mark done (true) or reopen (false); omit to leave unchanged.

priority
enum<string> | null

New priority, or null to clear it.

Available options:
low,
medium,
high
next_step
string | null

New next step, or null to clear it.

outcome
string | null

New outcome, or null to clear it.

attendees
MeetingAttendee · object[] | null

People to merge into metadata.attendees. A new person is added; an existing entry with the same name and no email gets this email. Nothing is removed or renamed and an existing email is never changed. Omit to leave attendees unchanged.

Response

Successful Response

The response is of type Response Update Activity Activities Activity Id Patch · object.