canonical: https://jentic.com/apis/hubspot.com/hubspot-crm-associations

# HubSpot CRM Associations

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.

## For AI 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.

## Scope

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.

## Capabilities

- 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
- Run a high-usage report against association quotas for a user
- Archive an association by object IDs

## Use cases

### 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.

Example prompt: 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.

Example prompt: 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.

Example prompt: 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.

Example prompt: 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.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| PUT | /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId} | Create an association between two records |
| DELETE | /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId} | Delete an association |
| GET | /crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType} | List associations from one object to a target type |
| POST | /crm/v4/associations/{fromObjectType}/{toObjectType}/batch/create | Batch create associations |
| POST | /crm/v4/associations/{fromObjectType}/{toObjectType}/batch/read | Batch read associations |
| POST | /crm/v4/associations/{fromObjectType}/{toObjectType}/batch/archive | Batch archive associations |
| POST | /crm/v4/associations/{fromObjectType}/{toObjectType}/batch/labels/archive | Batch remove specific labels |

## Key resources

- **Object associations** — Pairwise associations across any CRM object types under /crm/v4/associations and /crm/v4/objects.
- **Association labels** — Labelled association types created and archived via batch label endpoints.
- **Usage reports** — High-usage association reports under /crm/v4/associations/usage.

## Why Jentic

- **Setup:** Wiring HubSpot CRM Associations by hand means registering an OAuth app or minting a private app token, targeting api.hubapi.com, and coding the v4 put, batch create, and batch read calls yourself. Through Jentic you install once, import CRM Associations from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Associations puts the record ids in the URL path (/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}), so a rule can pin your agent to reading or creating links for one record. You choose the operations it may call, so removing a link or batch archiving labels is not included unless you add it.
- **Credential handling:** Your HubSpot OAuth token or private app token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'associate a contact with a deal' or 'list deals on a company', and Jentic returns the matching CRM Associations operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **HubSpot CRM Associations Schema** — Define which association types and labels exist before using them.
- **HubSpot CRM Contacts** — Manage the contact records that are most often associated with deals and companies.
- **HubSpot CRM Deals** — Manage deal records that participate in associations.

## FAQ

### 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/.

### Can I limit what my agent is allowed to do with the HubSpot CRM Associations API?

Yes. Because you run Jentic One yourself, your own rules decide which HubSpot CRM Associations operations your agent may call and which stored credential it uses. This API puts the record IDs in the URL path (/crm/v4/objects/{objectType}/{objectId}/associations/{toObjectType}/{toObjectId}), so a rule can pin the agent to reading or creating links for a specific record. You choose the allowed operations, so removing a link or batch archiving labels is not available to the agent unless you grant it.
