VX Agents

API directory · CRM & Sales

HubSpot CRM Meetings

v1.0.0 · 9 endpoints · 0 connections · shared by vx.ai

For sales reps who live in HubSpot: log meetings on contact, company and deal timelines, mark the outcome (completed, no show, rescheduled), add internal notes, switch the meeting notetaker on or off, and search past meetings by owner or date before a follow-up call.

Connect this API to an AI agent Browse all specs

What you can do with HubSpot CRM Meetings via MCP

Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.

MethodPathOperationDescription
GET /crm/objects/2026-09/meetings listMeetings List logged meetings page by page with chosen properties
POST /crm/objects/2026-09/meetings createMeeting Log a meeting and link it to contacts, companies or deals
POST /crm/objects/2026-09/meetings/search searchMeetings Search meetings by owner, outcome, start time or other properties
GET /crm/objects/2026-09/meetings/{objectId} getMeeting Get one meeting by id, with its contacts, companies or deals if asked
PATCH /crm/objects/2026-09/meetings/{objectId} updateMeeting Update a meeting, e.g. its outcome, notes or notetaker setting
POST /crm/objects/2026-09/meetings/batch/read batchReadMeetings Read up to 100 meetings by id in one call
POST /crm/objects/2026-09/meetings/batch/create batchCreateMeetings Log up to 100 meetings in one call
POST /crm/objects/2026-09/meetings/batch/update batchUpdateMeetings Update up to 100 meetings in one call
POST /crm/objects/2026-09/meetings/batch/upsert batchUpsertMeetings Create or update up to 100 meetings matched on a unique property

Authentication

private_app_token

Bearer token — sent as Authorization: Bearer <token>

HubSpot private app access token (or an OAuth access token), sent as Authorization: Bearer <token>.

How to get a credential

  1. In HubSpot, open Development (or Settings > Integrations) > Legacy apps / Private apps.
  2. Click Create legacy app > Private, and name it (e.g. VX Agents meetings).
  3. On the Scopes tab add crm.objects.contacts.read and crm.objects.contacts.write (meeting engagements use the contact scopes).
  4. Create the app and copy the access token (pat-...).

Permissions used

Scope Operations
crm.objects.contacts.read listMeetings, searchMeetings, getMeeting, batchReadMeetings
crm.objects.contacts.write createMeeting, updateMeeting, batchCreateMeetings, batchUpdateMeetings, batchUpsertMeetings

Common errors

Status Meaning Fix
401 Token missing, expired or revoked Copy the token again from the private app; rotate it if it was revoked.
403 Scope missing Add the contact scopes above to the private app and use the new token.
400 Missing hs_timestamp, unknown property or bad association type Always send hs_timestamp; use internal property names; meeting to contact is association type 200, company 188, deal 212, ticket 226.
429 Rate limit Wait and retry; search allows a few requests per second.

Store the token as a VX Agents credential (Bearer token).

Usage guide

Setup

  • Credential: a HubSpot private app token with crm.objects.contacts.read and crm.objects.contacts.write (meeting engagements use the contact scopes).
  • Worth pinning: your own hubspot_owner_id (from the HubSpot owners list) so meetings are logged under the right rep.

Log and follow up on meetings

  1. Find past meetings: searchMeetings with filterGroups, e.g. {"propertyName": "hubspot_owner_id", "operator": "EQ", "value": "<ownerId>"} plus a hs_meeting_start_time GTE filter. Ask for hs_meeting_title, hs_meeting_start_time, hs_meeting_outcome, hs_meeting_body in properties.
  2. Read one: getMeeting with associations=contacts,companies,deals to see who attended and which deal it was about.
  3. Log a meeting: createMeeting with properties (hs_timestamp is required; also hs_meeting_title, hs_meeting_start_time, hs_meeting_end_time, hs_meeting_body, hs_internal_meeting_notes, hs_meeting_location, hs_meeting_outcome, hubspot_owner_id) and associations with associationCategory: HUBSPOT_DEFINED.
  4. After the meeting: updateMeeting to set hs_meeting_outcome (SCHEDULED, COMPLETED, RESCHEDULED, NO_SHOW, CANCELED) and add notes. Set hs_meeting_notetaker_selection to enabled, disabled or deferred to control the notetaker bot.
  5. Many at once: batchReadMeetings, batchCreateMeetings, batchUpdateMeetings (up to 100 per call); batchUpsertMeetings matches on a unique property (idProperty).

Confirm with the user before creating or changing meetings: they show on customer timelines and can trigger workflows.

Good to know

  • Association type ids from a meeting: contact 200, company 188, deal 212, ticket 226, lead 601.
  • hs_timestamp should equal hs_meeting_start_time. Dates are ISO 8601 UTC or epoch milliseconds.
  • AI fields such as hs_meeting_summary, hs_has_meeting_transcript and hs_meeting_recording_url can be read when the notetaker recorded the meeting.
  • To clear a property, send an empty string. Read-only and unknown properties are ignored.
  • Search returns at most 200 per page and 10,000 in total; page with after. List pages with after from paging.next.
  • These are logged meeting activities, not booking links (that is the HubSpot Meetings Scheduler).

Source: HubSpot API reference (https://developers.hubspot.com/docs/api-reference/latest/crm/activities/meetings/guide), checked 2026-10-25.

How to use this spec

  1. Create a free VX Agents account (sandbox tools included).
  2. Open the marketplace and connect “HubSpot CRM Meetings” to an agent.
  3. Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.

Related APIs