Skip to main content

Log an activity (call, note, meeting…)

POST 

/activities

Always send Idempotency-Key, keyed on your own call/event id. The CRM sits behind a proxy that retries slow POSTs, so without it a call log that takes >30s to acknowledge lands on the timeline twice. A retry carrying the same key returns the ORIGINAL activity with 200 and meta.duplicate: true.

Call provenance rides in metadata. Five keys are accepted and round-tripped: recording_url (http/https, ≤2048), external_id (≤200), external_source (≤64), from_number, to_number (≤32) — plus color / priority. An invalid or over-long value is dropped silently and the write still succeeds — an activity is never rejected because of a metadata field. Read the response back if you need to know what stuck.

403 with "code": "module_disabled" means the workspace's plan has no activities module. Surface that as "call logging unavailable on this plan", not as a generic failure — the rest of the integration keeps working.

Scope: write:activities. Rate limit: 120/min.

Request​

Responses​

A retry of an already-logged activity — the ORIGINAL row, with meta.duplicate: true.