VX Agents

API directory · CRM & Sales

HubSpot CRM Quotes

v1.0.0 · 7 endpoints · 0 connections · shared by vx.ai

For sales reps who quote out of HubSpot: find quotes by deal, status or expiration date, draft a new quote on a deal with its template and line items, adjust terms or expiry, and pull several quotes at once to see what is still waiting for a signature.

Connect this API to an AI agent Browse all specs

What you can do with HubSpot CRM Quotes via MCP

Every endpoint below becomes a governed tool your AI agent (Claude, ChatGPT, or a customer-facing VX agent) can call — with scoped permissions, sandbox testing, and audit logs.

MethodPathOperationDescription
GET /crm/objects/2026-09/quotes listQuotes List quotes, newest pages first, with chosen properties
POST /crm/objects/2026-09/quotes createQuote Create a draft quote, optionally linked to a deal, template and line items
GET /crm/objects/2026-09/quotes/{objectId} getQuote Get one quote with its properties and associated records
PATCH /crm/objects/2026-09/quotes/{objectId} updateQuote Update a quote's properties, such as title, expiry or status
POST /crm/objects/2026-09/quotes/search searchQuotes Search quotes by status, deal, owner or expiration date
POST /crm/objects/2026-09/quotes/batch/read batchReadQuotes Read several quotes by id in one call
PUT /crm/objects/2026-09/quotes/{fromObjectId}/associations/default/{toObjectType}/{toObjectId} associateQuote Link an existing quote to a deal, line item, contact or company

Authentication

private_app_token

Bearer token — sent as Authorization: Bearer <token>

HubSpot private app access token (or an OAuth access token), sent as Authorization: Bearer <token>.

How to get a credential

  1. In HubSpot, open Development (or Settings > Integrations) > Legacy apps / Private apps.
  2. Click Create legacy app > Private, and name it (e.g. VX Agents quotes).
  3. On the Scopes tab add crm.objects.quotes.read and crm.objects.quotes.write. To link quotes to deals, line items and contacts also add crm.objects.deals.read, crm.objects.line_items.read and crm.objects.contacts.read.
  4. Create the app and copy the access token (pat-...).

Permissions used

Scope Operations
crm.objects.quotes.read listQuotes, getQuote, searchQuotes, batchReadQuotes
crm.objects.quotes.write createQuote, updateQuote, associateQuote

Common errors

Status Meaning Fix
401 Token missing, expired or revoked Copy the token again from the private app; rotate it if it was revoked.
403 Scope missing Add the scope from the table above to the private app and use the new token.
400 Invalid property name or value, or a quote without the required hs_title / hs_expiration_date Read the message and errors fields and fix the property.
429 Rate limit (per 10 seconds, or search per second) Wait and retry; narrow searches instead of paging far.

Store the token as a Bearer credential in VX Agents; never paste it into chat.

Usage guide

Setup

  1. Add a HubSpot private app token (pat-...) as a VX Agents Bearer credential, with scopes crm.objects.quotes.read and crm.objects.quotes.write.
  2. Optional: pin properties on listQuotes / getQuote to hs_title,hs_status,hs_expiration_date,hs_quote_amount,hs_currency,hs_quote_link,hs_pdf_download_link,hubspot_owner_id, otherwise HubSpot returns only a few default fields.

Quote a deal

  1. Find open quotes with searchQuotes: filterGroups on hs_status (e.g. DRAFT, PENDING_APPROVAL, REJECTED), associations.deal EQ <deal id>, or hs_expiration_date LT <Unix ms> for quotes about to expire. Add sorts and properties; page with after.
  2. getQuote with associations=deals,line_items,contacts to see what a quote is attached to; batchReadQuotes reads up to 100 quotes by id.
  3. To draft a quote, show the user the details and confirm, then createQuote with properties (required: hs_title, hs_expiration_date e.g. 2026-12-31, hs_template_type = CPQ_QUOTE) and associations, each {"to": {"id": "<id>"}, "types": [{"associationCategory": "HUBSPOT_DEFINED", "associationTypeId": <n>}]}. Type ids: line item 67, deal 64, contact 69, quote template 286. A quote needs a deal, a contact and line items; the template can only be set at creation.
  4. To link a record later, confirm, then associateQuote with toObjectType (deal, line_item, contact, company) and toObjectId.
  5. To change a quote, confirm, then updateQuote with only the changed properties. A published quote is locked: set hs_status back to DRAFT first.

Good to know

  • Creating quotes needs a Revenue Hub Professional or Enterprise subscription; older Sales Hub accounts may only have legacy quotes.
  • hs_quote_link and hs_pdf_download_link are filled in after the quote is published.
  • Search date filters use Unix milliseconds; search returns at most 10,000 results and allows only a few requests per second.
  • Quotes are customer-facing: confirm every create, update or association. Archiving quotes is not part of this spec.

Source: HubSpot Quotes API reference (https://developers.hubspot.com/docs/api-reference/latest/crm/objects/quotes/guide), checked 2026-10-22.

How to use this spec

  1. Create a free VX Agents account (sandbox tools included).
  2. Open the marketplace and connect “HubSpot CRM Quotes” to an agent.
  3. Expose it as an MCP server for Claude/ChatGPT, or chat with it directly.

Related APIs