To create an association, PUT to /crm/v4/objects/{fromObjectType}/{fromObjectId}/associations/{toObjectType}/{toObjectId} with a body specifying associationCategory and associationTypeId
Retrieve available association type IDs by calling GET /crm/v4/associations/{fromObjectType}/{toObjectType}/labels
To read all associations for a record, GET /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}
For bulk association creation, POST to /crm/v4/associations/{fromObjectType}/{toObjectType}/batch/create with an inputs array
To remove an association, DELETE to /crm/v4/objects/{fromObjectType}/{fromObjectId}/associations/{toObjectType}/{toObjectId}
Known gotchas
v4 associations replaced the older v3 associations endpoint; v3 is still functional but lacks label support and should be considered legacy
Association type IDs differ between HubSpot portals for custom labels — always look up the type ID dynamically rather than hard-coding it
Some default object-to-object association types are HUBSPOT_DEFINED and cannot be deleted or relabeled
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp