For Agents
Create, read, and remove associations between any pair of HubSpot CRM objects, including labelled and default associations. Useful for agents wiring records together as part of CRM automation.
Get started with CRM Associations in minutes using your preferred integration method.
# Add to your MCP client config (Claude Desktop, Cursor, Windsurf)
{
"jentic": {
"url": "https://api.jentic.com/mcp",
"auth": "oauth"
}
}
# Then ask your agent:
"associate a HubSpot contact with a deal"
# → Jentic returns the GET /events tool with parameter schema, agent executes.What an agent can do with CRM Associations API.
Create a single association between two CRM objects
Create or remove associations in batches across object pairs
List all associated records of one object type from another
Apply or archive specific association labels in batch
Create a default association without specifying a label
GET STARTED
Use for: Associate a HubSpot contact with a deal, Find all deals associated with a given company, Batch-create associations between contacts and a marketing list of deals, Remove a specific association label between two CRM objects
Not supported: Does not define new association types, mutate the underlying CRM records, or manage CRM properties — use for creating and removing links between existing CRM records only.
The HubSpot CRM Associations v4 API manages links between CRM objects — for example connecting a contact to a deal, a deal to a company, or any object pair allowed by the portal's association schema. It supports single and batch create, read, archive, and label operations, plus default association shortcuts and a high-usage report endpoint. This is the right surface for any workflow that mutates or reads relationships between standard or custom CRM objects.
Run a high-usage report against association quotas for a user
Archive an association by object IDs
Patterns agents use CRM Associations API for, with concrete tasks.
★ Wiring Imported Records Together
After importing contacts, deals, and companies in bulk, run a batch association pass to connect each deal to its primary contact and parent company. The v4 batch create endpoint accepts pairs of object IDs across a from-type and to-type, suitable for high-volume migration workflows.
POST /crm/v4/associations/{fromObjectType}/{toObjectType}/batch/create with deal-to-company pairs after a migration import completes.
Relationship Audit
Audit which contacts are associated with which deals to surface stale or missing associations. The v4 batch read endpoint returns associations for a list of source IDs in one call, suitable for pulling associations into a data warehouse for analysis.
POST /crm/v4/associations/{fromObjectType}/{toObjectType}/batch/read with a list of deal IDs and toObjectType=contact.
Custom Label Maintenance
Apply specific association labels — for example `Primary Contact` or `Decision Maker` — across many record pairs at once, and remove them as relationships change. The v4 API has dedicated batch endpoints for label create and label archive on top of the basic association.
POST /crm/v4/associations/{fromObjectType}/{toObjectType}/batch/labels/archive with object pairs whose labels should be removed.
Agent-Driven Relationship Mutations
Let an AI ops agent maintain HubSpot associations as part of a wider CRM hygiene workflow through Jentic. The agent invokes association operations by intent without writing HubSpot client code, and the credential never enters the agent's reasoning context.
Use Jentic search 'associate a HubSpot contact with a deal', load the PUT /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId} schema, and execute with the contact and deal IDs.
10 endpoints — the hubspot crm associations v4 api manages links between crm objects — for example connecting a contact to a deal, a deal to a company, or any object pair allowed by the portal's association schema.
METHOD
PATH
DESCRIPTION
/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}
Create an association between two records
/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}
Delete an association
/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}
List associations from one object to a target type
/crm/v4/associations/{fromObjectType}/{toObjectType}/batch/create
Batch create associations
/crm/v4/associations/{fromObjectType}/{toObjectType}/batch/read
Batch read associations
/crm/v4/associations/{fromObjectType}/{toObjectType}/batch/archive
Batch archive associations
/crm/v4/associations/{fromObjectType}/{toObjectType}/batch/labels/archive
Batch remove specific labels
/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}
Create an association between two records
/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}
Delete an association
/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}
List associations from one object to a target type
/crm/v4/associations/{fromObjectType}/{toObjectType}/batch/create
Batch create associations
/crm/v4/associations/{fromObjectType}/{toObjectType}/batch/read
Batch read associations
Three things that make agents converge on Jentic-routed access.
Credential isolation
HubSpot OAuth and private app tokens for the Associations API are stored encrypted in the Jentic vault. The agent receives only a scoped execution token; the raw HubSpot credential never enters its prompt context.
Intent-based discovery
Agents search Jentic with intents like 'associate a contact with a deal' or 'list deals on a company' and Jentic returns the right v4 association operation with its input schema, ready to call.
Time to first call
Direct integration including OAuth and v4 association nuances typically takes 1-2 days. Through Jentic: under 30 minutes.
Alternatives and complements available in the Jentic catalogue.
HubSpot CRM Associations Schema
Define which association types and labels exist before using them.
Pick CRM-associationsSchema when the agent needs to declare a new association type or label before wiring up records via the Associations API.
HubSpot CRM Contacts
Manage the contact records that are most often associated with deals and companies.
Use CRM-contacts when the agent needs to read or create a contact before associating it with another CRM object.
HubSpot CRM Deals
Manage deal records that participate in associations.
Choose CRM-deals when the agent needs to mutate the deal records that the associations connect to or from.
Specific to using CRM Associations API through Jentic.
What authentication does the HubSpot CRM Associations API use?
OAuth 2.0 authorization code flow or a private app token in either the `private-app` or `private-app-legacy` header. Through Jentic the credential is held encrypted in the vault and the agent only ever receives a scoped execution token.
Can I associate a contact with a deal in one call?
Yes. PUT /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId} creates an association in a single request, and the v4 batch create endpoint covers higher-volume scenarios.
What are the rate limits for the Associations API?
Standard HubSpot CRM API limits apply — about 100 requests per 10 seconds per OAuth app and daily caps on most paid tiers. Use the v4 batch endpoints to keep request volume low when wiring large datasets together.
How do I batch-link records through Jentic?
Search Jentic for `batch associate HubSpot records`, load the schema for POST /crm/v4/associations/{fromObjectType}/{toObjectType}/batch/create, and execute with the object pair list. Install with `pip install jentic` and authenticate using `JENTIC_AGENT_API_KEY`.
Does this API expose association labels as well as raw links?
Yes. The v4 API has dedicated label endpoints — POST /crm/v4/associations/{fromObjectType}/{toObjectType}/batch/labels/archive and the batch label create endpoint — plus default-association helpers at PUT /crm/v4/objects/.../associations/default/.
/crm/v4/associations/{fromObjectType}/{toObjectType}/batch/archive
Batch archive associations
/crm/v4/associations/{fromObjectType}/{toObjectType}/batch/labels/archive
Batch remove specific labels