HubSpot · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Hubspot Advanced API

58 actions 58 updates phrasing extends openapi/hubspot-advanced-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for HubSpot's API. It is a proposal applied on top of the contract, not a document HubSpot publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 58 · first 16 shown; the file carries all of them

$.info
$.paths['/oauth/2026-09/token'].post
$.paths['/oauth/2026-09/token/introspect'].post
$.paths['/oauth/2026-09/token/revoke'].post
$.paths['/cms/blog-settings/2026-09/settings/{blogId}/revisions'].get
$.paths['/cms/blog-settings/2026-09/settings/{blogId}/revisions/{revisionId}'].get
$.paths['/cms/audit-logs/2026-09/export'].post
$.paths['/media-bridge/2026-09/events/attention-span'].post
$.paths['/media-bridge/2026-09/events/media-played'].post
$.paths['/media-bridge/2026-09/events/media-played-percent'].post
$.paths['/media-bridge/2026-09/{appId}/schemas/{objectType}/associations'].post
$.paths['/media-bridge/2026-09/{appId}/settings/object-definitions'].post
$.paths['/media-bridge/2026-09/{appId}/settings/register'].post
$.paths['/media-bridge/2026-09/{appId}/settings/video-association-definition'].post
$.paths['/cms/pages/2026-09/landing-pages/{objectId}/revisions'].get
$.paths['/cms/pages/2026-09/landing-pages/{objectId}/revisions/{revisionId}'].get

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for Hubspot Advanced API
  version: 1.0.0
extends: openapi/hubspot-advanced-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-09-24'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 57
- target: $.paths['/oauth/2026-09/token'].post
  update:
    x-apievangelist-phrasing:
      intent: Exchange an OAuth code or refresh token for tokens
      effect: write
      questions:
      - How do I trade an OAuth authorization code for an access token and refresh token?
      - Can I get a fresh access token using a refresh token I already have?
      - Does the token endpoint accept a PKCE code verifier when exchanging the code?
      instructions:
      - text: Exchange authorization code {code} for access and refresh tokens using redirect URI {redirect_uri}.
        slots:
          code: requestBody.code
          redirect_uri: requestBody.redirect_uri
      - text: Get a new access token for client {client_id} from refresh token {refresh_token}.
        slots:
          client_id: requestBody.client_id
          refresh_token: requestBody.refresh_token
      method: generated
      generated: '2026-09-24'
- target: $.paths['/oauth/2026-09/token/introspect'].post
  update:
    x-apievangelist-phrasing:
      intent: Check whether an OAuth token is valid
      effect: read
      questions:
      - Is there a way to check if an access token is still valid and what metadata it carries?
      - Can I inspect a refresh token to see whether it has expired?
      instructions:
      - text: Introspect token {token} and tell me whether it is still valid.
        slots:
          token: requestBody.token
      - text: Look up the metadata behind {token_type_hint} token {token}.
        slots:
          token: requestBody.token
          token_type_hint: requestBody.token_type_hint
      method: generated
      generated: '2026-09-24'
- target: $.paths['/oauth/2026-09/token/revoke'].post
  update:
    x-apievangelist-phrasing:
      intent: Revoke a refresh token
      effect: destructive
      questions:
      - How can I revoke a refresh token when a user disconnects my app?
      - What happens to a refresh token once I revoke it through the OAuth API?
      instructions:
      - text: Revoke refresh token {token} so it can no longer be used.
        slots:
          token: requestBody.token
      - text: Invalidate the refresh token {token} issued to client {client_id}.
        slots:
          token: requestBody.token
          client_id: requestBody.client_id
      method: generated
      generated: '2026-09-24'
- target: $.paths['/cms/blog-settings/2026-09/settings/{blogId}/revisions'].get
  update:
    x-apievangelist-phrasing:
      intent: List the revision history of a blog's settings
      effect: read
      questions:
      - Where can I see every past revision of a blog's settings?
      - Can I filter a blog's settings revisions by when they were created or updated?
      instructions:
      - text: List all settings revisions for blog {blogId}.
        slots:
          blogId: path.blogId
      - text: Show the first {limit} settings revisions for blog {blogId}.
        slots:
          limit: query.limit
          blogId: path.blogId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/cms/blog-settings/2026-09/settings/{blogId}/revisions/{revisionId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one revision of a blog's settings
      effect: read
      questions:
      - What did a blog's settings look like at one particular revision?
      - Can I pull up a single blog settings revision by its revision ID?
      instructions:
      - text: Get revision {revisionId} of the settings for blog {blogId}.
        slots:
          revisionId: path.revisionId
          blogId: path.blogId
      - text: Show me what blog {blogId}'s settings were in revision {revisionId}.
        slots:
          blogId: path.blogId
          revisionId: path.revisionId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/cms/audit-logs/2026-09/export'].post
  update:
    x-apievangelist-phrasing:
      intent: Export CMS audit logs to recipients
      effect: write
      questions:
      - Can I export the CMS audit log and have it sent to specific users?
      - Is it possible to mark an exported audit log file as sensitive?
      instructions:
      - text: Export the CMS audit logs for portal {portalId} as {format} and email them to {email}.
        slots:
          portalId: requestBody.portalId
          format: requestBody.format
          email: requestBody.email
      - text: 'Send a {type} audit log export for portal {portalId} to users {recipientUserIds}, marked sensitive: {shouldMarkExportFileAsSensitive}.'
        slots:
          type: requestBody.type
          portalId: requestBody.portalId
          recipientUserIds: requestBody.recipientUserIds
          shouldMarkExportFileAsSensitive: requestBody.shouldMarkExportFileAsSensitive
      method: generated
      generated: '2026-09-24'
- target: $.paths['/media-bridge/2026-09/events/attention-span'].post
  update:
    x-apievangelist-phrasing:
      intent: Record an attention span event for media
      effect: write
      questions:
      - How can I track how long someone paid attention to a video or audio file?
      - Can I log an attention span event against a known contact?
      instructions:
      - text: Record an attention span event for {mediaType} media in session {sessionId} at {occurredTimestamp} with raw data {rawDataMap}.
        slots:
          mediaType: requestBody.mediaType
          sessionId: requestBody.sessionId
          occurredTimestamp: requestBody.occurredTimestamp
          rawDataMap: requestBody.rawDataMap
      - text: Log attention span data for contact {contactId} watching {mediaName}.
        slots:
          contactId: requestBody.contactId
          mediaName: requestBody.mediaName
      method: generated
      generated: '2026-09-24'
- target: $.paths['/media-bridge/2026-09/events/media-played'].post
  update:
    x-apievangelist-phrasing:
      intent: Record that a media item was played
      effect: write
      questions:
      - Can I log the moment a contact starts playing a video on my page?
      - Which play states can I report when someone plays a piece of media?
      instructions:
      - text: Record a media played event with state {state} for {mediaType} in session {sessionId} at {occurredTimestamp}.
        slots:
          state: requestBody.state
          mediaType: requestBody.mediaType
          sessionId: requestBody.sessionId
          occurredTimestamp: requestBody.occurredTimestamp
      - text: Log that contact {contactId} played {mediaName} on page {pageUrl}.
        slots:
          contactId: requestBody.contactId
          mediaName: requestBody.mediaName
          pageUrl: requestBody.pageUrl
      method: generated
      generated: '2026-09-24'
- target: $.paths['/media-bridge/2026-09/events/media-played-percent'].post
  update:
    x-apievangelist-phrasing:
      intent: Record how much of a media item was played
      effect: write
      questions:
      - How do I report what percentage of a video a viewer actually watched?
      - Can I track that a contact got 75% of the way through an audio file?
      instructions:
      - text: Record that {playedPercent} percent of {mediaType} media was played in session {sessionId} at {occurredTimestamp}.
        slots:
          playedPercent: requestBody.playedPercent
          mediaType: requestBody.mediaType
          sessionId: requestBody.sessionId
          occurredTimestamp: requestBody.occurredTimestamp
      - text: Log a watch-percentage milestone of {playedPercent} for contact {contactId} on {mediaName}.
        slots:
          playedPercent: requestBody.playedPercent
          contactId: requestBody.contactId
          mediaName: requestBody.mediaName
      method: generated
      generated: '2026-09-24'
- target: $.paths['/media-bridge/2026-09/{appId}/schemas/{objectType}/associations'].post
  update:
    x-apievangelist-phrasing:
      intent: Define an association for a Media Bridge object type
      effect: write
      questions:
      - Can my Media Bridge app link its media object type to another object type?
      - What do I need to define a relationship between two object types in a Media Bridge app?
      instructions:
      - text: In Media Bridge app {appId}, associate the {objectType} media object type from {fromObjectTypeId} to {toObjectTypeId}.
        slots:
          appId: path.appId
          objectType: path.objectType
          fromObjectTypeId: requestBody.fromObjectTypeId
          toObjectTypeId: requestBody.toObjectTypeId
      - text: Create a Media Bridge association named {name} on {objectType} for app {appId}, from {fromObjectTypeId} to {toObjectTypeId}.
        slots:
          name: requestBody.name
          objectType: path.objectType
          appId: path.appId
          fromObjectTypeId: requestBody.fromObjectTypeId
          toObjectTypeId: requestBody.toObjectTypeId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/media-bridge/2026-09/{appId}/settings/object-definitions'].post
  update:
    x-apievangelist-phrasing:
      intent: Create media object definitions for an app
      effect: write
      questions:
      - Which media types can a Media Bridge app define objects for, like video or audio?
      - How do I set up the media object definitions my app will use?
      instructions:
      - text: Create media object definitions for app {appId} covering {mediaTypes}.
        slots:
          appId: path.appId
          mediaTypes: requestBody.mediaTypes
      - text: Define VIDEO and AUDIO media objects for Media Bridge app {appId}.
        slots:
          appId: path.appId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/media-bridge/2026-09/{appId}/settings/register'].post
  update:
    x-apievangelist-phrasing:
      intent: Register an app as a media bridge provider
      effect: write
      questions:
      - Is the older Media Bridge settings registration endpoint deprecated?
      - Can I allow imports to continue after my media bridge provider disconnects?
      instructions:
      - text: Register app {appId} as media bridge provider {name}, last updated {updatedAt}.
        slots:
          appId: path.appId
          name: requestBody.name
          updatedAt: requestBody.updatedAt
      - text: Use the deprecated register endpoint to set module {moduleName} for app {appId} as of {updatedAt}.
        slots:
          moduleName: requestBody.moduleName
          appId: path.appId
          updatedAt: requestBody.updatedAt
      method: generated
      generated: '2026-09-24'
- target: $.paths['/media-bridge/2026-09/{appId}/settings/video-association-definition'].post
  update:
    x-apievangelist-phrasing:
      intent: Define how videos associate with other objects
      effect: write
      questions:
      - How do I tell the platform how my app's videos relate to other CRM objects?
      - Does a Media Bridge app need a video association definition before linking videos?
      instructions:
      - text: Create the video association definition for Media Bridge app {appId}.
        slots:
          appId: path.appId
      - text: Set up video associations for app {appId} so its videos can link to other records.
        slots:
          appId: path.appId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/landing-pages/{objectId}/revisions'].get
  update:
    x-apievangelist-phrasing:
      intent: List previous versions of a landing page
      effect: read
      questions:
      - Where can I see the full version history of a landing page?
      - Can I page through older versions of a landing page a few at a time?
      instructions:
      - text: List all previous versions of landing page {objectId}.
        slots:
          objectId: path.objectId
      - text: Show the last {limit} saved versions of landing page {objectId}.
        slots:
          limit: query.limit
          objectId: path.objectId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/landing-pages/{objectId}/revisions/{revisionId}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one previous version of a landing page
      effect: read
      questions:
      - What did a landing page look like in one specific earlier version?
      - Can I fetch a single landing page revision to compare it with the live page?
      instructions:
      - text: Get version {revisionId} of landing page {objectId}.
        slots:
          revisionId: path.revisionId
          objectId: path.objectId
      - text: Show me landing page {objectId} as it was in revision {revisionId}.
        slots:
          objectId: path.objectId
          revisionId: path.revisionId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/landing-pages/{objectId}/revisions/{revisionId}/restore'].post
  update:
    x-apievangelist-phrasing:
      intent: Restore a landing page to a previous version
      effect: write
      questions:
      - How do I roll a landing page back to an earlier version?
      - Can I undo recent edits to a landing page by restoring an old revision?
      instructions:
      - text: Restore landing page {objectId} to version {revisionId}.
        slots:
          objectId: path.objectId
          revisionId: path.revisionId
      - text: Roll landing page {objectId} back to revision {revisionId}, replacing the current version.
        slots:
          objectId: path.objectId
          revisionId: path.revisionId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/landing-pages/{objectId}/revisions/{revisionId}/restore-to-draft'].post
  update:
    x-apievangelist-phrasing:
      intent: Set an old landing page version as the draft
      effect: write
      questions:
      - Can I load an older landing page version into the draft without touching the live page?
      - Is there a way to start editing from a past landing page revision as a draft?
      instructions:
      - text: Make revision {revisionId} the draft of landing page {objectId}.
        slots:
          revisionId: path.revisionId
          objectId: path.objectId
      - text: Copy landing page {objectId} version {revisionId} into its draft only.
        slots:
          objectId: path.objectId
          revisionId: path.revisionId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/site-pages/{objectId}/revisions/{revisionId}/restore'].post
  update:
    x-apievangelist-phrasing:
      intent: Restore a website page to a previous version
      effect: write
      questions:
      - How can I roll a website page (not a landing page) back to an earlier version?
      - Can I revert a site page after a bad edit went live?
      instructions:
      - text: Restore website page {objectId} to version {revisionId}.
        slots:
          objectId: path.objectId
          revisionId: path.revisionId
      - text: Revert site page {objectId} to its revision {revisionId}.
        slots:
          objectId: path.objectId
          revisionId: path.revisionId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/cms/source-code/2026-09/extract/async'].post
  update:
    x-apievangelist-phrasing:
      intent: Extract a zip file in the developer file system
      effect: write
      questions:
      - Can I unzip an archive that's already in the CMS developer file system?
      - Does zip extraction in the design manager run asynchronously?
      instructions:
      - text: Extract the zip file at {path} in the developer file system.
        slots:
          path: requestBody.path
      - text: Start an async unzip of {path} and give me the task ID.
        slots:
          path: requestBody.path
      method: generated
      generated: '2026-09-24'
- target: $.paths['/cms/source-code/2026-09/extract/async/tasks/{taskId}/status'].get
  update:
    x-apievangelist-phrasing:
      intent: Check the status of a zip extraction
      effect: read
      questions:
      - Has my zip file finished extracting in the developer file system?
      - What's the status of an unzip task I started earlier?
      instructions:
      - text: Check the status of zip extraction task {taskId}.
        slots:
          taskId: path.taskId
      - text: Tell me if unzip task {taskId} is done.
        slots:
          taskId: path.taskId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/cms/source-code/2026-09/{environment}/content/{path}'].put
  update:
    x-apievangelist-phrasing:
      intent: Upload or overwrite a CMS source code file
      effect: write
      questions:
      - Can I overwrite a template file in the developer file system if it already exists?
      - Is there an upsert for CMS source files so I don't have to check whether they exist first?
      instructions:
      - text: Upload {file} to {path} in the {environment} environment, replacing any existing file.
        slots:
          file: requestBody.file
          path: path.path
          environment: path.environment
      - text: Create or update the source file at {path} in {environment}.
        slots:
          path: path.path
          environment: path.environment
      method: generated
      generated: '2026-09-24'
- target: $.paths['/cms/source-code/2026-09/{environment}/content/{path}'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a new CMS source code file
      effect: write
      questions:
      - How do I add a brand-new file to the developer file system without risking an overwrite?
      - What happens if I try to create a source file at a path that's already taken?
      instructions:
      - text: Create a new file at {path} in {environment}, failing if one already exists.
        slots:
          path: path.path
          environment: path.environment
      - text: Add {file} as a new source file at {path} in the {environment} environment.
        slots:
          file: requestBody.file
          path: path.path
          environment: path.environment
      method: generated
      generated: '2026-09-24'
- target: $.paths['/cms/source-code/2026-09/{environment}/validate/{path}'].post
  update:
    x-apievangelist-phrasing:
      intent: Validate a CMS source file's contents
      effect: read
      questions:
      - Can I check a template or module file for errors before uploading it?
      - Is there a way to lint a CMS file against a path without saving it?
      instructions:
      - text: Validate {file} as if it were saved at {path} in {environment}.
        slots:
          file: requestBody.file
          path: path.path
          environment: path.environment
      - text: Check the contents intended for {path} in {environment} for errors.
        slots:
          path: path.path
          environment: path.environment
      method: generated
      generated: '2026-09-24'
- target: $.paths['/commerce/price-books/2026-09/price-books'].get
  update:
    x-apievangelist-phrasing:
      intent: List price books
      effect: read
      questions:
      - Which price books are set up in my HubSpot account?
      - Can I see archived price books as well as active ones?
      instructions:
      - text: List all my price books.
      - text: 'Show archived price books only: {archived}.'
        slots:
          archived: query.archived
      - text: Get the next {limit} price books after cursor {after}.
        slots:
          limit: query.limit
          after: query.after
      method: generated
      generated: '2026-09-24'
- target: $.paths['/crm/objects/2026-03/{objectType}/gdpr-delete'].post
  update:
    x-apievangelist-phrasing:
      intent: GDPR-purge a record of any object type
      effect: destructive
      questions:
      - Can I permanently purge a record and its GDPR data for an object type other than contacts?
      - Is there a generic GDPR delete that works on any CRM object type?
      instructions:
      - text: Fully purge {objectType} record {objectId} and its GDPR-related data.
        slots:
          objectType: path.objectType
          objectId: requestBody.objectId
      - text: GDPR-delete the {objectType} record whose {idProperty} is {objectId}.
        slots:
          objectType: path.objectType
          idProperty: requestBody.idProperty
          objectId: requestBody.objectId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/crm/objects/2026-03/{objectType}/merge'].post
  update:
    x-apievangelist-phrasing:
      intent: Merge two records of any object type
      effect: destructive
      questions:
      - Can I merge two duplicate records of a custom object type?
      - Is there one merge endpoint that works for whichever object type I pass in?
      instructions:
      - text: Merge {objectType} record {objectIdToMerge} into {primaryObjectId}.
        slots:
          objectType: path.objectType
          objectIdToMerge: requestBody.objectIdToMerge
          primaryObjectId: requestBody.primaryObjectId
      - text: Combine duplicate {objectType} records, keeping {primaryObjectId} as the primary.
        slots:
          objectType: path.objectType
          primaryObjectId: requestBody.primaryObjectId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/crm/extensions/calling/2026-03/inbound-call'].post
  update:
    x-apievangelist-phrasing:
      intent: Log an inbound call (2026-03 version)
      effect: write
      questions:
      - How do I log an inbound call from my phone system on the 2026-03 calling API?
      - Which final call statuses can I report for an inbound call under the 2026-03 version?
      instructions:
      - text: Using the 2026-03 calling API, log inbound call {externalCallId} from {fromNumber} to {toNumber} with status {finalCallStatus}.
        slots:
          externalCallId: requestBody.externalCallId
          fromNumber: requestBody.fromNumber
          toNumber: requestBody.toNumber
          finalCallStatus: requestBody.finalCallStatus
      - text: Submit 2026-03 inbound call {externalCallId} for users {potentialRecipientUserIds}, engagement {createEngagement}, properties {engagementProperties}.
        slots:
          externalCallId: requestBody.externalCallId
          potentialRecipientUserIds: requestBody.potentialRecipientUserIds
          createEngagement: requestBody.createEngagement
          engagementProperties: requestBody.engagementProperties
      method: generated
      generated: '2026-09-24'
- target: $.paths['/crm/extensions/calling/2026-03/recordings/ready'].post
  update:
    x-apievangelist-phrasing:
      intent: Mark a call recording as ready
      effect: write
      questions:
      - How do I signal that a call recording has finished processing and can be retrieved?
      - Can I flag a recording as ready once my calling app has uploaded it?
      instructions:
      - text: Mark the call recording for engagement {engagementId} as ready.
        slots:
          engagementId: requestBody.engagementId
      - text: Let the CRM fetch the recording on call engagement {engagementId} now.
        slots:
          engagementId: requestBody.engagementId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/crm/objects/2026-03/companies/merge'].post
  update:
    x-apievangelist-phrasing:
      intent: Merge two company records
      effect: destructive
      questions:
      - How do I merge two duplicate company records?
      - When merging companies, which one survives as the primary?
      instructions:
      - text: Merge company {objectIdToMerge} into company {primaryObjectId}.
        slots:
          objectIdToMerge: requestBody.objectIdToMerge
          primaryObjectId: requestBody.primaryObjectId
      - text: Combine these duplicate companies, keeping company {primaryObjectId}.
        slots:
          primaryObjectId: requestBody.primaryObjectId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/crm/objects/2026-03/contacts/gdpr-delete'].post
  update:
    x-apievangelist-phrasing:
      intent: Permanently delete a contact for GDPR
      effect: destructive
      questions:
      - How do I permanently erase a contact to honour a GDPR request?
      - Can I GDPR-delete a contact by email address instead of by ID?
      - What happens if the email I GDPR-delete doesn't match any contact?
      instructions:
      - text: Permanently delete contact {objectId} and all associated content for GDPR.
        slots:
          objectId: requestBody.objectId
      - text: GDPR-erase the contact identified by {idProperty} {objectId}.
        slots:
          idProperty: requestBody.idProperty
          objectId: requestBody.objectId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/crm/objects/2026-03/contacts/merge'].post
  update:
    x-apievangelist-phrasing:
      intent: Merge two contact records
      effect: destructive
      questions:
      - Can I merge two duplicate contacts into one?
      - Which contact's property values win when two contacts are merged?
      instructions:
      - text: Merge contact {objectIdToMerge} into contact {primaryObjectId}.
        slots:
          objectIdToMerge: requestBody.objectIdToMerge
          primaryObjectId: requestBody.primaryObjectId
      - text: Deduplicate contacts by folding {objectIdToMerge} into primary contact {primaryObjectId}.
        slots:
          objectIdToMerge: requestBody.objectIdToMerge
          primaryObjectId: requestBody.primaryObjectId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/crm/objects/2026-03/courses/merge'].post
  update:
    x-apievangelist-phrasing:
      intent: Merge two course records
      effect: destructive
      questions:
      - Is it possible to merge two duplicate course records?
      - When I merge courses, is the secondary course removed afterwards?
      instructions:
      - text: Merge course {objectIdToMerge} into course {primaryObjectId}.
        slots:
          objectIdToMerge: requestBody.objectIdToMerge
          primaryObjectId: requestBody.primaryObjectId
      - text: Combine the duplicate courses so only course {primaryObjectId} remains.
        slots:
          primaryObjectId: requestBody.primaryObjectId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/crm/exports/2026-09/export/async'].post
  update:
    x-apievangelist-phrasing:
      intent: Start a CRM data export
      effect: write
      questions:
      - How do I kick off an export of my CRM data?
      - Does a CRM export run in the background and hand back a task to check on?
      instructions:
      - text: Start an export of my CRM data.
      - text: Begin an asynchronous CRM export for this portal.
      method: generated
      generated: '2026-09-24'
- target: $.paths['/crm/exports/2026-09/export/async/tasks/{taskId}/status'].get
  update:
    x-apievangelist-phrasing:
      intent: Check a CRM export and get its download link
      effect: read
      questions:
      - Is my CRM export finished, and where do I download the file?
      - When does a CRM export include a download URL?
      instructions:
      - text: Check the status of CRM export task {taskId}.
        slots:
          taskId: path.taskId
      - text: Get the download link for export {taskId} once it's complete.
        slots:
          taskId: path.taskId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/crm/imports/2026-09'].post
  update:
    x-apievangelist-phrasing:
      intent: Start a CRM import from files
      effect: write
      questions:
      - How do I import a spreadsheet of records into the CRM through the API?
      - What goes in the import request alongside the uploaded files?
      instructions:
      - text: Import {files} into the CRM using import settings {importRequest}.
        slots:
          files: requestBody.files
          importRequest: requestBody.importRequest
      - text: Start a new CRM import from the file {files}.
        slots:
          files: requestBody.files
      method: generated
      generated: '2026-09-24'
- target: $.paths['/crm/imports/2026-09/{importId}/cancel'].post
  update:
    x-apievangelist-phrasing:
      intent: Cancel an active CRM import
      effect: destructive
      questions:
      - Can I stop a CRM import that's still running?
      - What should I do if I started an import with the wrong file?
      instructions:
      - text: Cancel import {importId}.
        slots:
          importId: path.importId
      - text: Stop the active CRM import {importId} before it finishes.
        slots:
          importId: path.importId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/crm/objects/2026-03/orders/merge'].post
  update:
    x-apievangelist-phrasing:
      intent: Merge two order records
      effect: destructive
      questions:
      - Can two duplicate orders be merged into a single order?
      - Which order is kept when I merge orders?
      instructions:
      - text: Merge order {objectIdToMerge} into order {primaryObjectId}.
        slots:
          objectIdToMerge: requestBody.objectIdToMerge
          primaryObjectId: requestBody.primaryObjectId
      - text: Combine duplicate orders, keeping order {primaryObjectId} as primary.
        slots:
          primaryObjectId: requestBody.primaryObjectId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/crm/pipelines-rules/2026-09/{objectTypeId}/{pipelineId}/approvals/start'].post
  update:
    x-apievangelist-phrasing:
      intent: Start a pipeline approval for a record
      effect: write
      questions:
      - How do I kick off an approval before a deal moves to the next pipeline stage?
      - Can I trigger a pipeline approval workflow for one specific record?
      instructions:
      - text: Start an approval for record {objectId} in pipeline {pipelineId} of object type {objectTypeId}.
        slots:
          objectId: requestBody.objectId
          pipelineId: path.pipelineId
          objectTypeId: path.objectTypeId
      - text: Request pipeline approval on {objectTypeId} record {objectId} in pipeline {pipelineId}.
        slots:
          objectTypeId: path.objectTypeId
          objectId: requestBody.objectId
          pipelineId: path.pipelineId
      method: generated
      generated: '2026-09-24'
- target: $.paths['/crm/objects/2026-03/projects/merge'].post
  update:
    x-apievangelist-phrasing:
      intent: Merge two project records
      effect: destructive
      questions:
      - Can I merge two duplicate project records?
      - What happens to the second project after a project merge?
      instructions:
      - text: Merge project {objectIdToMerge} into project {primaryObjectId}.
        slots:
          objectIdToMerge: requestBody.objectIdToMerge
          primaryObjectId: requestBody.primaryObjectId
      - text: Combine the duplicate projects, keeping project {primaryObjectId}.
        slots:
          primaryObjectId: requestBody.primaryObjectId
      method: generated
      generated: '2026-09-24'


# --- truncated at 32 KB (47 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hubspot/refs/heads/main/overlays/hubspot-advanced-api-phrasing-overlay.yaml

Work with this as data

Every overlay here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for openapi overlays

4 MCP tools reach this
  • find_overlaysBrowse and filter every overlay in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/hubspot-advanced-api-phrasing-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.