For Agents
Run batch read, create, update, archive, search, and upsert against any HubSpot CRM object type — companies, contacts, deals, products, tickets, quotes, line items — using the generic objectType-parameterised endpoints.
Get started with CRM Contracts 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:
"create a hubspot crm record"
# → Jentic returns the GET /events tool with parameter schema, agent executes.What an agent can do with CRM Contracts API.
Batch read records of any CRM object type by ID using the objectType path parameter
Batch create records for any CRM object type with property maps and associations
Batch upsert records by an idProperty to avoid duplicates across object types
Search any CRM object type using filter groups with sorting and property selection
GET STARTED
Use for: I need to batch create records for a custom CRM object type, Retrieve records of an arbitrary CRM object type by ID, Search records of any object type with a filter group, Upsert records of an object type by an external id
Not supported: Does not define object schemas, manage associations, or send marketing email — use only for record-level CRUD across HubSpot CRM object types.
The HubSpot CRM Contracts API exposes a generic CRM object endpoint set parameterised by objectType, providing batch read, create, update, archive, search, and upsert operations against any CRM object collection — including standard objects like companies, contacts, deals, line items, products, tickets, and quotes. Each request takes the objectType as a path parameter and operates on the corresponding object collection using the same v3 patterns. It is the most general-purpose CRM v3 endpoint surface in the HubSpot API.
Update records of any object type in batch using PATCH semantics
Archive records of any object type in batch without permanent deletion
Page through any object type's records with cursor-based pagination
Patterns agents use CRM Contracts API for, with concrete tasks.
★ Generic Object Sync
Build an integration that syncs many CRM object types using a single client by parameterising the objectType. The same code path handles companies, deals, products, and custom objects, reducing duplication compared to the per-object endpoint surfaces.
Iterate over [companies, deals, products] and call POST /crm/v3/objects/{objectType}/batch/upsert for each, with the appropriate idProperty per object type.
Cross-Object Search
Search records across several CRM object types from one orchestrator by parameterising the objectType in the search path. Useful when an integration needs to find records by a shared property — for example, an external_id present on contacts, deals, and tickets.
Call POST /crm/v3/objects/{objectType}/search for each of [contacts, deals, tickets] with filterGroups for external_id equals "EXT-12345" and aggregate the results.
Bulk Archival Job
Run a periodic archival job that archives records older than a retention threshold across multiple object types. The objectType path parameter lets the job run with the same logic per object, only varying the lastmodifieddate filter.
For each objectType in the retention policy, search for records with hs_lastmodifieddate older than the threshold and POST IDs to /crm/v3/objects/{objectType}/batch/archive.
AI Agent Object-Agnostic Toolkit
An AI agent uses Jentic to call HubSpot CRM operations across any object type without per-object tool definitions. The agent passes the objectType as a parameter, which keeps the agent's tool list small and the schema understanding shared across operations.
Use Jentic search for "create a hubspot crm record", load the schema for /crm/v3/objects/{objectType}/batch/create, and execute with the objectType inferred from the upstream task.
11 endpoints — the hubspot crm contracts api exposes a generic crm object endpoint set parameterised by objecttype, providing batch read, create, update, archive, search, and upsert operations against any crm object collection — including standard objects like companies, contacts, deals, line items, products, tickets, and quotes.
METHOD
PATH
DESCRIPTION
/crm/v3/objects/{objectType}/batch/create
Create records of any object type in batch
/crm/v3/objects/{objectType}/batch/upsert
Idempotent upsert by idProperty for any object type
/crm/v3/objects/{objectType}/batch/read
Read records of any object type in batch by ID
/crm/v3/objects/{objectType}/batch/update
Update records of any object type in batch
/crm/v3/objects/{objectType}/search
Search records of any object type by filter groups
/crm/v3/objects/{objectType}/{objectId}
Retrieve a single record of any object type
/crm/v3/objects/{objectType}
List records of any object type with pagination
/crm/v3/objects/{objectType}/batch/create
Create records of any object type in batch
/crm/v3/objects/{objectType}/batch/upsert
Idempotent upsert by idProperty for any object type
/crm/v3/objects/{objectType}/batch/read
Read records of any object type in batch by ID
/crm/v3/objects/{objectType}/batch/update
Update records of any object type in batch
/crm/v3/objects/{objectType}/search
Search records of any object type by filter groups
Three things that make agents converge on Jentic-routed access.
Credential isolation
HubSpot OAuth and private app tokens are encrypted in the Jentic vault. Scoped tokens are injected at execution — raw credentials never enter the agent's context or logs.
Intent-based discovery
Agents search Jentic by intent (e.g. 'create a hubspot record') and Jentic returns the matching generic CRM operation with its typed input schema, so the agent passes the objectType without browsing docs.
Time to first call
Direct integration: 1-2 days for OAuth, per-objectType property mapping, and batch error handling. Through Jentic: under 1 hour — search, load schema, execute.
Alternatives and complements available in the Jentic catalogue.
CRM Custom Objects
Defines custom object schemas that the generic CRM Contracts endpoints operate on.
Use Custom Objects to define the schema first, then use CRM Contracts endpoints to read and write records of that schema.
CRM Associations
Manages associations between records across object types.
Use Associations when the agent needs to wire records together after creation, beyond the in-line associations array.
Salesforce
Salesforce SObject REST API offers an equivalent generic record endpoint surface.
Choose Salesforce when the host organisation standardises on Salesforce SObjects rather than HubSpot CRM.
Specific to using CRM Contracts API through Jentic.
What authentication does the HubSpot CRM Contracts API use?
It supports OAuth 2.0 and HubSpot private app tokens passed as bearer tokens. Through Jentic, tokens are stored encrypted in the vault and a scoped token is injected per request, so raw credentials never enter the agent context.
Which object types can I use with the HubSpot CRM Contracts API?
Any CRM object type — companies, contacts, deals, line items, products, tickets, quotes, and custom objects. Pass the object type slug as the {objectType} path parameter on each request. Default properties returned vary per object type as documented in the spec.
What are the rate limits for the HubSpot CRM Contracts API?
Standard CRM v3 limits apply — 100 requests per 10 seconds for OAuth apps and 110 per 10 seconds for private apps on Pro and Enterprise. Use /crm/v3/objects/{objectType}/batch/upsert (up to 100 records per call) for high-volume sync.
How do I upsert records through Jentic?
Run the Jentic search "upsert hubspot crm record" to find POST /crm/v3/objects/{objectType}/batch/upsert, load the schema, and execute with objectType set (e.g. companies) and idProperty for the unique key. Jentic handles authentication.
Is the HubSpot CRM Contracts API free?
Standard object types are accessible on the free HubSpot tier. Custom objects require Enterprise. There is no per-call HubSpot fee on top of the underlying tier subscription.
Can I use these endpoints to manage associations between objects?
Pass an associations array on create or use the dedicated CRM Associations API for richer association management. The single-record GET supports an associations query parameter to return associated object ids in one response.
/crm/v3/objects/{objectType}/{objectId}
Retrieve a single record of any object type
/crm/v3/objects/{objectType}
List records of any object type with pagination