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.
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.
Install Jentic One Beta
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the CRM Contracts, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
Two steps, two machines. Install the instance in a safe environment, then register your agent from wherever it runs.
Step 1: Jentic One Host machine
# On the machine that will host your Jentic One instance:
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | shStep 2: Agent machine
# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
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
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
/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
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.
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.
GET STARTED