Authenticate with a HubSpot Private App access token (Bearer) against https://api.hubapi.com
GET /crm/v3/pipelines/tickets to list all ticket pipelines and capture the pipelineId and stage IDs (hs_pipeline_stage values) needed for status transitions
POST /crm/v3/objects/tickets with properties including subject, hs_pipeline, hs_pipeline_stage, hs_ticket_priority, and any custom properties to create a new ticket
PATCH /crm/v3/objects/tickets/{ticketId} with updated hs_pipeline_stage to move the ticket to the next pipeline stage (e.g., from 'New' to 'Waiting on customer')
POST /crm/v3/objects/tickets/{ticketId}/associations/contacts/{contactId}/ticket_to_contact to associate the ticket with the customer contact record
GET /crm/v3/objects/tickets/{ticketId}?properties=hs_pipeline_stage,hs_ticket_priority,createdate,closed_date to retrieve ticket details for SLA reporting
Known gotchas
Pipeline and stage IDs are opaque numeric strings that differ between HubSpot portals — never hardcode stage IDs; always retrieve them dynamically via the pipeline endpoints at runtime or during setup
The HubSpot Tickets API is part of the CRM Objects API and uses the same /crm/v3/objects/tickets path regardless of the Service Hub tier; however, some pipeline automation features require a Service Hub Professional or Enterprise subscription to activate
Associations between tickets and contacts, companies, or deals must be created as a separate API call after ticket creation — they cannot be set in the initial POST body in the v3 API
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp