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

# HubSpot CRM Objects

The HubSpot CRM Objects API provides a unified interface for reading, creating, updating, and archiving any standard or custom CRM record by object type. It exposes generic endpoints that operate against companies, contacts, deals, line items, products, tickets, quotes, and any custom object you define on the portal. Batch read, create, update, and archive operations let agents move large volumes of records in a single call, and a search endpoint supports filtering and pagination across object types. Use it as the primary CRUD layer when you need a single integration that works across HubSpot's full object model rather than a separate client for each record type.

## For AI agents

Read, create, update, archive, and search any standard or custom HubSpot CRM record through generic object-type endpoints, with batch operations for bulk record changes.

## Scope

Does not handle marketing email sends, workflow automation, or analytics reporting - use for generic CRM record CRUD and search only.

## Capabilities

- Read any CRM record by object type and record ID without using a type-specific client
- Create, update, or archive records in batches of up to 100 with batch endpoints
- Search records of any object type using filter groups, sort criteria, and pagination
- List records of a given object type with property selection and association expansion
- Patch individual records to update specific properties without overwriting others
- Operate against custom object types defined in the HubSpot portal using the same endpoints

## Use cases

### Unified CRUD across standard and custom objects

Treat companies, contacts, deals, custom objects, and any other CRM record through the same generic endpoints. Pass the object type as a path parameter and reuse the same code path for read, list, patch, and archive operations. This removes the need to build a separate integration per record type and is the recommended approach when an agent has to operate over HubSpot's full object graph.

Example prompt: Fetch the record at /crm/v3/objects/{objectType}/{objectId} for objectType=companies and objectId=12345 and return its properties.

### Bulk record migration

Migrate large volumes of records into HubSpot using the batch create endpoint, then verify the import with batch read. The batch endpoints accept up to 100 records per call, which makes them suitable for ETL pipelines, CSV imports, and inter-system syncs. Pair this with the search endpoint to validate the import landed.

Example prompt: POST 100 contact records to /crm/v3/objects/contacts/batch/create and confirm each one returned a non-null id field.

### Conditional record search

Run filtered searches across any object type using filter groups, sorts, and a query string. The search endpoint returns paginated results with the standard CRM properties and supports filtering on custom properties. Useful for agents that need to locate records matching multi-property criteria before acting on them.

Example prompt: POST a search to /crm/v3/objects/companies/search filtering where industry equals SOFTWARE and lifecyclestage equals customer, sorted by createdate descending.

### AI agent execution through Jentic

An agent that needs to act on HubSpot records discovers this API through Jentic's intent search using a query like 'read a hubspot crm record', loads the input schema for /crm/v3/objects/{objectType}/{objectId}, and executes the call with credentials supplied from your Jentic One instance. The same flow works for batch operations and search.

Example prompt: Search Jentic for 'read a hubspot crm record', load the GET /crm/v3/objects/{objectType}/{objectId} operation, and execute it for objectType=deals and objectId=987.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /crm/v3/objects/{objectType}/{objectId} | Read a single record by object type and ID |
| PATCH | /crm/v3/objects/{objectType}/{objectId} | Update properties on a single record |
| DELETE | /crm/v3/objects/{objectType}/{objectId} | Archive a single record |
| GET | /crm/v3/objects/{objectType} | List records of an object type with pagination |
| POST | /crm/v3/objects/{objectType}/batch/create | Create up to 100 records in one call |
| POST | /crm/v3/objects/{objectType}/batch/read | Read up to 100 records by ID in one call |
| POST | /crm/v3/objects/{objectType}/batch/update | Update up to 100 records in one call |
| POST | /crm/v3/objects/{objectType}/batch/archive | Archive up to 100 records in one call |

## Key resources

- **Basic** — Single-record read, list, patch, and archive against any object type
- **Batch** — Batch read, create, update, and archive operations of up to 100 records per call
- **Search** — Filtered search across records of an object type with sort, pagination, and property selection

## Why Jentic

- **Setup:** Wiring CRM Objects by hand means implementing HubSpot's OAuth2 authorization-code flow (or managing a private-app header token), sending each call to api.hubapi.com with the correct objectType in the path and matching property payloads, and handling token refresh yourself. Through Jentic you install once, import CRM Objects from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** This API puts the object type in the URL path (/crm/v3/objects/{objectType}/...), so a rule can pin your agent to one object type: it can read and search records of that type and no other. You choose the operations it may call, so destructive ones like record delete or batch archive are not included unless you add them.
- **Credential handling:** Your HubSpot 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 'read a HubSpot CRM record' or 'batch create records', and Jentic returns the matching CRM Objects operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **HubSpot CRM Custom Objects** — Defines custom object schemas that the CRM Objects API then reads and writes records against
- **HubSpot CRM Associations** — Manages links between records (e.g. contact to company) that the Objects API can return alongside records
- **Salesforce Platform API** — Comparable generic CRM record API for the Salesforce object model

## FAQ

### What authentication does the HubSpot CRM Objects API use?

It accepts OAuth 2.0 access tokens issued to a HubSpot app and private app access tokens passed as a Bearer token in the Authorization header. Through Jentic, the token is stored in the credential vault and injected at execution time, so the raw token never enters the agent's prompt context.

### Can I work with custom objects through this API?

Yes. The same endpoints under /crm/v3/objects/{objectType} accept any custom object type defined on the portal in addition to standard types like companies and contacts, so a single integration covers the whole object model.

### What are the rate limits for the HubSpot CRM Objects API?

HubSpot enforces account-level rate limits that vary by subscription tier (typically 100 requests per 10 seconds for OAuth apps and higher daily caps for Enterprise). Batch endpoints count as a single request, so prefer /crm/v3/objects/{objectType}/batch/create over per-record loops to stay within limits.

### How do I create a batch of records through Jentic?

Search Jentic with 'batch create hubspot records', load the POST /crm/v3/objects/{objectType}/batch/create operation, then execute it with an inputs array of up to 100 records. Jentic returns the response body containing each created record's id and properties.

### Is the HubSpot CRM Objects API free?

It is included with every HubSpot account that has API access enabled. The free tier includes lower rate limits and standard objects only; custom object endpoints require an Enterprise subscription.

### How do I update properties on a record without overwriting others?

Use PATCH /crm/v3/objects/{objectType}/{objectId} with a properties object that contains only the fields you want to change. Properties not included in the request body remain untouched on the record.

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

Yes. Because you run Jentic One yourself, your own rules decide which operations and credentials the agent may use. Since this API carries the object type in the URL path (/crm/v3/objects/{objectType}/...), you can pin the agent to a single object type so it only reads and searches records of that type and no other. You also choose which operations it may call, so destructive ones like DELETE /crm/v3/objects/{objectType}/{objectId} or POST /crm/v3/objects/{objectType}/batch/archive stay out of reach unless you explicitly grant them.
