Log an Activity
ActivityBody shape also used on Accounts and Activities. The meeting-flavoured fields are persisted for every activity type — nothing branches on type. attendees, transcript, recording_url, location and provider collapse into the activities.metadata JSONB column; due_at and duration_minutes are not metadata — they go into their own activities.due_at / activities.duration_minutes columns.
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
201 with {"id": "<activity id>"}. Also records a track_activity_logged analytics event.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
The deal's id.
Body
Activity type: note, call, meeting, email, or task.
Short headline for the activity; stored as the subject column.
Free-text body/notes content.
Direction for calls/emails, e.g. inbound or outbound.
Contact this activity is associated with.
ISO 8601 scheduled time. Persisted for any activity type, not just meetings, and it drives the generated effective_time column (COALESCE(due_at, created_at)) that the activity feed sorts by and that exclude_future filters on.
Duration in minutes. Persisted for any activity type, not just meetings.
Attendee list, stored in metadata. Persisted for any activity type, not just meetings.
Transcript text, stored in metadata. Persisted for any activity type, not just meetings.
Absolute http(s) URL to a recording, stored in metadata. Persisted for any activity type, not just meetings.
Location or video-call link, stored in metadata. Persisted for any activity type, not just meetings.
Source provider, e.g. gcal, zoom, teams, or manual, stored in metadata. Persisted for any activity type, not just meetings.
Response
Successful Response