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

# HubSpot Tickets

The HubSpot CRM Tickets API manages support ticket records - the customer issues that flow through HubSpot Service Hub pipelines. Tickets have status, priority, owner, source, and category properties, and can be associated with contacts, companies, deals, conversations, and any custom CRM object. The API exposes single-record CRUD, batch read, batch create, batch update, batch upsert by unique property, batch archive, ticket merge, and a search endpoint with full filter, sort, and paging support.

## For AI agents

Create, update, search, archive, and merge HubSpot CRM Tickets - the support cases tracked in Service Hub pipelines - through /crm/v3/objects/tickets including a dedicated merge endpoint.

## Scope

Does not handle live chat sessions, knowledge base content, or call recording - use for managing CRM Ticket records, their associations, and merges only.

## Capabilities

- Create a support ticket associated with a contact and company via POST /crm/v3/objects/tickets
- Update ticket status, priority, or pipeline stage with PATCH /crm/v3/objects/tickets/{ticketId}
- Search tickets by owner, status, or priority via POST /crm/v3/objects/tickets/search
- Merge two duplicate tickets of the same type with POST /crm/v3/objects/tickets/merge
- Bulk-create tickets from an external system using POST /crm/v3/objects/tickets/batch/create
- Archive resolved tickets with DELETE /crm/v3/objects/tickets/{ticketId}
- Read a batch of tickets by ID using POST /crm/v3/objects/tickets/batch/read

## Use cases

### Inbound Support Ticket Creation From Email

An email-to-ticket integration parses inbound support emails and creates a HubSpot ticket associated with the sender contact. POST /crm/v3/objects/tickets accepts the subject, body, pipeline, stage, and association inputs in a single call. The ticket appears in Service Hub immediately so support agents can pick it up. For high-volume ingestion, POST /crm/v3/objects/tickets/batch/create handles up to 100 tickets per request.

Example prompt: Call POST /crm/v3/objects/tickets with subject, content, hs_pipeline, hs_pipeline_stage, hs_ticket_priority, and an association to the contactId.

### Duplicate Ticket Merge

Customers sometimes file multiple tickets for the same issue across different channels. Support managers identify duplicates and use POST /crm/v3/objects/tickets/merge to combine them - the secondary ticket's notes, associations, and history merge into the primary, and the secondary is archived. This keeps the support history clean and gives agents one canonical ticket to work.

Example prompt: Call POST /crm/v3/objects/tickets/merge with primaryObjectId set to the ticket to keep and objectIdToMerge set to the duplicate, then verify the merge result.

### SLA Compliance Reporting

Support leadership needs daily reporting on tickets approaching or breaching SLA. POST /crm/v3/objects/tickets/search with filters on hs_pipeline_stage, createdate range, and priority returns the matching tickets. Combined with sorting by createdate ascending, the report surfaces the oldest open tickets first so triage can happen before SLA breach. Paging supports queues with thousands of open tickets.

Example prompt: Call POST /crm/v3/objects/tickets/search with filters on hs_pipeline_stage in [open stages] and createdate within the last 7 days, sorted ascending.

### AI Agent Triage and Status Updates

An AI support agent triages new tickets - reads the content, checks the customer's account, sets priority and category, and assigns the right rep. Through Jentic the agent searches for ticket operations, loads the create and patch schemas, and executes them with the inferred values. Jentic stores OAuth credentials in its vault so the agent only handles scoped execution tokens.

Example prompt: Search Jentic for 'update hubspot ticket priority and owner', load PATCH /crm/v3/objects/tickets/{ticketId}, and execute it with hs_ticket_priority and hubspot_owner_id set based on triage rules.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /crm/v3/objects/tickets | Create a ticket |
| GET | /crm/v3/objects/tickets/{ticketId} | Read a ticket |
| PATCH | /crm/v3/objects/tickets/{ticketId} | Update a ticket |
| DELETE | /crm/v3/objects/tickets/{ticketId} | Archive a ticket |
| POST | /crm/v3/objects/tickets/merge | Merge two tickets |
| POST | /crm/v3/objects/tickets/search | Search tickets |
| POST | /crm/v3/objects/tickets/batch/create | Batch create tickets |

## Key resources

- **Basic** — Single-ticket CRUD on /crm/v3/objects/tickets including read, create, update, archive, plus a merge endpoint.
- **Batch** — Batch read, create, update, upsert, and archive endpoints for processing many tickets per request.
- **Search** — Filter tickets by status, priority, owner, pipeline stage, and custom properties via POST /crm/v3/objects/tickets/search.

## Why Jentic

- **Setup:** Wiring HubSpot Tickets by hand means learning its OAuth2 access token or private app token auth, targeting the api.hubapi.com host, and handling merge, batch, and search calls yourself. Through Jentic you install once, import HubSpot Tickets from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** The Tickets API puts the ticket id in the URL path (/crm/v3/objects/tickets/{ticketId}), so a rule can pin your agent to one ticket for read and update. You choose the operations it may call, so ones like deleting a ticket or merging tickets are not included unless you add them.
- **Credential handling:** Your HubSpot access 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 'create a HubSpot support ticket' or 'search tickets by status', and Jentic returns the matching Tickets operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Zendesk Support API** — Zendesk is a dedicated help desk platform with deeper ticketing, macros, and SLA features than HubSpot Service Hub.
- **Freshdesk API** — Freshdesk is a competing help desk with comparable ticket CRUD, dispatch rules, and reporting.
- **HubSpot Conversations Inbox** — Conversations Inbox holds the message threads that often originate a ticket - link the two for full context.

## FAQ

### What authentication does the HubSpot Tickets API use?

It supports OAuth 2.0 (recommended for public apps) and HubSpot private app access tokens passed as a Bearer token in the Authorization header. Through Jentic the token is stored encrypted in the vault and injected at execution time so the agent never holds the raw secret.

### Can I merge two tickets through this API?

Yes. POST /crm/v3/objects/tickets/merge accepts primaryObjectId (the ticket to keep) and objectIdToMerge (the duplicate). The secondary's properties, associations, and history merge into the primary, and the secondary is archived. Both tickets must be of the same type.

### What are the rate limits for the HubSpot Tickets API?

HubSpot enforces 100 requests per 10 seconds for OAuth apps and 190 per 10 seconds for private apps on Enterprise tiers, plus daily quotas. Use POST /crm/v3/objects/tickets/batch/create and batch/update (up to 100 tickets per request) for high-volume ingestion.

### How do I find open tickets nearing SLA breach through Jentic?

Search Jentic for 'find oldest open hubspot tickets', load POST /crm/v3/objects/tickets/search, and execute it with filters on hs_pipeline_stage in your open stages and createdate range, sorted ascending. Jentic returns the typed ticket list.

### Can I associate a ticket with a conversation thread?

Yes. Tickets support associations to Conversations objects (alongside contacts, companies, and deals). Pass association inputs when creating the ticket or use the Associations API to link an existing conversation thread to an existing ticket.

### Does archiving a ticket with DELETE /crm/v3/objects/tickets/{ticketId} delete it permanently?

No. Archive is a soft delete - the ticket is removed from default queues and search results but can be restored within HubSpot's retention window. To permanently remove records you must use HubSpot's GDPR delete process.

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

Yes. Jentic One is self-hosted by you, and your own rules decide which Tickets operations and credentials the agent may use. Because the ticket id sits in the URL path (/crm/v3/objects/tickets/{ticketId}), a rule can pin the agent to a single ticket for read and update. You choose the operations it can call, so destructive ones like archiving a ticket via DELETE or merging tickets via POST /crm/v3/objects/tickets/merge are excluded unless you add them.
