HubSpot · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for Hubspot Batch API
224 actions
224 updates
phrasing
extends
openapi/hubspot-batch-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.
What the actions change
x-apievangelist-phrasing
Targets 224 · first 16 shown; the file carries all of them
$.info
$.paths['/cms/blogs/2026-09/authors/batch/archive'].post
$.paths['/cms/blogs/2026-09/authors/batch/create'].post
$.paths['/cms/blogs/2026-09/authors/batch/read'].post
$.paths['/cms/blogs/2026-09/authors/batch/update'].post
$.paths['/media-bridge/2026-09/{appId}/properties/{objectType}/batch/archive'].post
$.paths['/media-bridge/2026-09/{appId}/properties/{objectType}/batch/create'].post
$.paths['/media-bridge/2026-09/{appId}/properties/{objectType}/batch/read'].post
$.paths['/cms/pages/2026-09/landing-pages/batch/archive'].post
$.paths['/cms/pages/2026-09/landing-pages/batch/create'].post
$.paths['/cms/pages/2026-09/landing-pages/batch/read'].post
$.paths['/cms/pages/2026-09/landing-pages/batch/update'].post
$.paths['/cms/pages/2026-09/landing-pages/folders/batch/archive'].post
$.paths['/cms/pages/2026-09/landing-pages/folders/batch/create'].post
$.paths['/cms/pages/2026-09/landing-pages/folders/batch/update'].post
$.paths['/cms/pages/2026-09/site-pages/batch/archive'].post
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for Hubspot Batch API
version: 1.0.0
extends: openapi/hubspot-batch-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: 223
- target: $.paths['/cms/blogs/2026-09/authors/batch/archive'].post
update:
x-apievangelist-phrasing:
intent: Delete several blog authors at once
effect: destructive
questions:
- How do I remove a whole list of blog authors from my HubSpot blog in one call?
- Can I delete multiple blog author profiles by their IDs together?
instructions:
- text: Delete the blog authors with IDs {author_ids}.
slots:
author_ids: requestBody.inputs
- text: 'Remove these blog author profiles from the blog: {author_ids}.'
slots:
author_ids: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/blogs/2026-09/authors/batch/create'].post
update:
x-apievangelist-phrasing:
intent: Create several blog authors at once
effect: write
questions:
- Can I add a batch of new blog authors with names and bios in one request?
- What's the quickest way to set up a team of writers as blog authors?
instructions:
- text: 'Create these blog authors: {authors}.'
slots:
authors: requestBody.inputs
- text: Add {authors} as new author profiles on our blog.
slots:
authors: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/blogs/2026-09/authors/batch/read'].post
update:
x-apievangelist-phrasing:
intent: Look up several blog authors by ID
effect: read
questions:
- How can I fetch the details of several blog authors when I already have their IDs?
- Can I pull back only archived blog authors when reading them in bulk?
instructions:
- text: Get the blog author profiles for IDs {author_ids}.
slots:
author_ids: requestBody.inputs
- text: 'Fetch archived blog authors {author_ids}, archived only: {archived}.'
slots:
author_ids: requestBody.inputs
archived: query.archived
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/blogs/2026-09/authors/batch/update'].post
update:
x-apievangelist-phrasing:
intent: Edit several blog authors at once
effect: write
questions:
- How do I change the bios or display names of many blog authors together?
- Can one request update a group of existing blog author profiles?
instructions:
- text: 'Update these blog author profiles with the new details: {author_changes}.'
slots:
author_changes: requestBody.inputs
- text: Apply {author_changes} to our existing blog authors.
slots:
author_changes: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/media-bridge/2026-09/{appId}/properties/{objectType}/batch/archive'].post
update:
x-apievangelist-phrasing:
intent: Archive app properties for a Media Bridge object type
effect: destructive
questions:
- Can I retire several Media Bridge properties my app defined for one object type?
- How would my media app hide properties it no longer needs on a media object type?
instructions:
- text: Archive the properties {property_names} on object type {object_type} for app {app_id}.
slots:
property_names: requestBody.inputs
object_type: path.objectType
app_id: path.appId
- text: In Media Bridge app {app_id}, retire properties {property_names} from {object_type}.
slots:
app_id: path.appId
property_names: requestBody.inputs
object_type: path.objectType
method: generated
generated: '2026-09-24'
- target: $.paths['/media-bridge/2026-09/{appId}/properties/{objectType}/batch/create'].post
update:
x-apievangelist-phrasing:
intent: Define new properties for a Media Bridge object type
effect: write
questions:
- How can my Media Bridge app set up several custom properties on a media object type at once?
- Can I register a batch of property definitions for my app's video or audio objects?
instructions:
- text: Create properties {property_definitions} on media object type {object_type} for app {app_id}.
slots:
property_definitions: requestBody.inputs
object_type: path.objectType
app_id: path.appId
- text: 'Set up these Media Bridge properties for app {app_id} on {object_type}: {property_definitions}.'
slots:
app_id: path.appId
object_type: path.objectType
property_definitions: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/media-bridge/2026-09/{appId}/properties/{objectType}/batch/read'].post
update:
x-apievangelist-phrasing:
intent: Read Media Bridge property definitions in bulk
effect: read
questions:
- Which details can I get back for a list of my Media Bridge app's properties by name?
- Can I include archived Media Bridge properties or filter by data sensitivity when reading them?
instructions:
- text: Read the Media Bridge properties {property_names} on {object_type} for app {app_id}.
slots:
property_names: requestBody.inputs
object_type: path.objectType
app_id: path.appId
- text: 'Look up app {app_id} properties {property_names} for {object_type}, include archived: {archived}, sensitivity {data_sensitivity}.'
slots:
app_id: path.appId
property_names: requestBody.inputs
object_type: path.objectType
archived: requestBody.archived
data_sensitivity: requestBody.dataSensitivity
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/landing-pages/batch/archive'].post
update:
x-apievangelist-phrasing:
intent: Delete several landing pages
effect: destructive
questions:
- How do I permanently delete a set of landing pages by ID?
- Is deleting landing pages through the API the same as archiving them in the dashboard?
instructions:
- text: Delete landing pages {page_ids}.
slots:
page_ids: requestBody.inputs
- text: 'Permanently remove these landing pages: {page_ids}.'
slots:
page_ids: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/landing-pages/batch/create'].post
update:
x-apievangelist-phrasing:
intent: Create several landing pages
effect: write
questions:
- Can I publish a batch of new landing pages for a campaign in one call?
- What's the way to create multiple landing pages programmatically at once?
instructions:
- text: 'Create these landing pages: {pages}.'
slots:
pages: requestBody.inputs
- text: Spin up new landing pages from {pages}.
slots:
pages: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/landing-pages/batch/read'].post
update:
x-apievangelist-phrasing:
intent: Fetch several landing pages by ID
effect: read
questions:
- How can I get the content and settings for a handful of landing pages I know the IDs of?
- Can I read landing pages that have been archived?
instructions:
- text: Get landing pages {page_ids}.
slots:
page_ids: requestBody.inputs
- text: 'Fetch landing pages {page_ids}, archived only: {archived}.'
slots:
page_ids: requestBody.inputs
archived: query.archived
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/landing-pages/batch/update'].post
update:
x-apievangelist-phrasing:
intent: Update several landing pages
effect: write
questions:
- How do I change the content or settings on many landing pages together?
- Can I archive landing pages in the dashboard by updating them instead of deleting them?
instructions:
- text: 'Update landing pages with these changes: {page_updates}.'
slots:
page_updates: requestBody.inputs
- text: Apply {page_updates} to our existing landing pages.
slots:
page_updates: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/landing-pages/folders/batch/archive'].post
update:
x-apievangelist-phrasing:
intent: Delete several landing page folders
effect: destructive
questions:
- Can I remove a batch of landing page folders by ID?
- How do I clean up empty landing page folders in one go?
instructions:
- text: Delete landing page folders {folder_ids}.
slots:
folder_ids: requestBody.inputs
- text: Remove the landing page folders with IDs {folder_ids}.
slots:
folder_ids: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/landing-pages/folders/batch/create'].post
update:
x-apievangelist-phrasing:
intent: Create several landing page folders
effect: write
questions:
- How can I set up a group of folders to organize landing pages?
- Can I create multiple landing page folders in a single request?
instructions:
- text: Create landing page folders {folders}.
slots:
folders: requestBody.inputs
- text: 'Make new folders for organizing landing pages: {folders}.'
slots:
folders: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/landing-pages/folders/batch/update'].post
update:
x-apievangelist-phrasing:
intent: Rename or edit several landing page folders
effect: write
questions:
- Can I rename a bunch of landing page folders at once?
- Which request changes existing landing page folders in bulk?
instructions:
- text: Update landing page folders with {folder_updates}.
slots:
folder_updates: requestBody.inputs
- text: 'Rename our landing page folders as follows: {folder_updates}.'
slots:
folder_updates: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/site-pages/batch/archive'].post
update:
x-apievangelist-phrasing:
intent: Delete several website pages
effect: destructive
questions:
- How do I permanently delete multiple website pages from my site?
- Does deleting site pages via the API differ from the dashboard archive?
instructions:
- text: Delete website pages {page_ids}.
slots:
page_ids: requestBody.inputs
- text: 'Permanently remove these site pages: {page_ids}.'
slots:
page_ids: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/site-pages/batch/create'].post
update:
x-apievangelist-phrasing:
intent: Create several website pages
effect: write
questions:
- Can I create a batch of new website pages in one call?
- What's the way to add multiple site pages to my HubSpot website programmatically?
instructions:
- text: 'Create these website pages: {pages}.'
slots:
pages: requestBody.inputs
- text: Add new site pages built from {pages}.
slots:
pages: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/site-pages/batch/read'].post
update:
x-apievangelist-phrasing:
intent: Fetch several website pages by ID
effect: read
questions:
- How can I retrieve several website pages at once when I have their IDs?
- Can I read back site pages that are archived?
instructions:
- text: Get website pages {page_ids}.
slots:
page_ids: requestBody.inputs
- text: 'Fetch site pages {page_ids}, archived only: {archived}.'
slots:
page_ids: requestBody.inputs
archived: query.archived
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/pages/2026-09/site-pages/batch/update'].post
update:
x-apievangelist-phrasing:
intent: Update several website pages
effect: write
questions:
- How do I push content changes to many website pages together?
- Can I archive site pages in the dashboard by updating archivedInDashboard?
instructions:
- text: Update website pages with {page_updates}.
slots:
page_updates: requestBody.inputs
- text: Apply {page_updates} to our site pages.
slots:
page_updates: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/blogs/2026-09/posts/batch/archive'].post
update:
x-apievangelist-phrasing:
intent: Delete several blog posts
effect: destructive
questions:
- How do I permanently delete a set of blog posts by ID?
- Is deleting blog posts through the API the same as the in-app archive?
instructions:
- text: Delete blog posts {post_ids}.
slots:
post_ids: requestBody.inputs
- text: 'Permanently remove these blog posts: {post_ids}.'
slots:
post_ids: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/blogs/2026-09/posts/batch/create'].post
update:
x-apievangelist-phrasing:
intent: Create several blog posts
effect: write
questions:
- Can I draft a batch of blog posts with their content in one request?
- What's the way to import many articles into my HubSpot blog at once?
instructions:
- text: 'Create these blog posts: {posts}.'
slots:
posts: requestBody.inputs
- text: Draft new blog posts from {posts}.
slots:
posts: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/blogs/2026-09/posts/batch/read'].post
update:
x-apievangelist-phrasing:
intent: Fetch several blog posts by ID
effect: read
questions:
- How can I pull several blog posts at once when I know their IDs?
- Can I retrieve only archived blog posts in bulk?
instructions:
- text: Get blog posts {post_ids}.
slots:
post_ids: requestBody.inputs
- text: 'Fetch blog posts {post_ids}, archived only: {archived}.'
slots:
post_ids: requestBody.inputs
archived: query.archived
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/blogs/2026-09/posts/batch/update'].post
update:
x-apievangelist-phrasing:
intent: Update several blog posts
effect: write
questions:
- How do I edit titles or content across many existing blog posts together?
- Can one call apply changes to a batch of blog posts?
instructions:
- text: Update blog posts with {post_updates}.
slots:
post_updates: requestBody.inputs
- text: Apply {post_updates} to our existing blog articles.
slots:
post_updates: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/blogs/2026-09/tags/batch/archive'].post
update:
x-apievangelist-phrasing:
intent: Delete several blog tags
effect: destructive
questions:
- Can I delete a list of unused blog tags in one request?
- How do I get rid of several blog topic tags by ID?
instructions:
- text: Delete blog tags {tag_ids}.
slots:
tag_ids: requestBody.inputs
- text: 'Remove these tags from the blog: {tag_ids}.'
slots:
tag_ids: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/blogs/2026-09/tags/batch/create'].post
update:
x-apievangelist-phrasing:
intent: Create several blog tags
effect: write
questions:
- How can I add a set of new tags to my blog at once?
- Can I create multiple blog tags in a single request?
instructions:
- text: Create blog tags {tags}.
slots:
tags: requestBody.inputs
- text: 'Add these new topic tags to the blog: {tags}.'
slots:
tags: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/blogs/2026-09/tags/batch/read'].post
update:
x-apievangelist-phrasing:
intent: Fetch several blog tags by ID
effect: read
questions:
- How do I read the names of several blog tags from their IDs?
- Can I look up archived blog tags in bulk?
instructions:
- text: Get blog tags {tag_ids}.
slots:
tag_ids: requestBody.inputs
- text: 'Fetch blog tags {tag_ids}, archived only: {archived}.'
slots:
tag_ids: requestBody.inputs
archived: query.archived
method: generated
generated: '2026-09-24'
- target: $.paths['/cms/blogs/2026-09/tags/batch/update'].post
update:
x-apievangelist-phrasing:
intent: Rename or edit several blog tags
effect: write
questions:
- Can I rename a group of blog tags in one request?
- What call changes several existing blog tags together?
instructions:
- text: Update blog tags with {tag_updates}.
slots:
tag_updates: requestBody.inputs
- text: 'Rename our blog tags as follows: {tag_updates}.'
slots:
tag_updates: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/archive'].post
update:
x-apievangelist-phrasing:
intent: Archive items in a price book
effect: destructive
questions:
- How do I archive a batch of items out of a specific price book?
- Can I remove several products from one price book in a single request?
instructions:
- text: Archive items {item_ids} in price book {price_book_id}.
slots:
item_ids: requestBody.inputs
price_book_id: path.priceBookId
- text: Take {item_ids} out of active use in price book {price_book_id}.
slots:
item_ids: requestBody.inputs
price_book_id: path.priceBookId
method: generated
generated: '2026-09-24'
- target: $.paths['/commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/create'].post
update:
x-apievangelist-phrasing:
intent: Add products to a price book
effect: write
questions:
- How can I add a batch of products to one of my price books?
- Does adding many items to a price book tell me which ones failed?
instructions:
- text: Add products {products} to price book {price_book_id}.
slots:
products: requestBody.inputs
price_book_id: path.priceBookId
- text: Create price book items in {price_book_id} for {products}.
slots:
price_book_id: path.priceBookId
products: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/commerce/price-books/2026-09/price-books/{priceBookId}/items/batch/update'].post
update:
x-apievangelist-phrasing:
intent: Update items in a price book
effect: write
questions:
- How do I change prices for many items in a price book at once?
- Can I bulk edit the items already in one price book?
instructions:
- text: Update items in price book {price_book_id} with {item_updates}.
slots:
price_book_id: path.priceBookId
item_updates: requestBody.inputs
- text: 'Reprice these entries in price book {price_book_id}: {item_updates}.'
slots:
price_book_id: path.priceBookId
item_updates: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/communication-preferences/2026-09/statuses/batch/read'].post
update:
x-apievangelist-phrasing:
intent: Check subscription statuses for several contacts
effect: read
questions:
- Which email subscriptions is each of these contacts opted into?
- Can I check subscription statuses for a list of contacts within one business unit?
instructions:
- text: Get the {channel} subscription statuses for {contacts}.
slots:
channel: query.channel
contacts: requestBody.inputs
- text: Look up subscription statuses on channel {channel} for {contacts} in business unit {business_unit_id}.
slots:
channel: query.channel
contacts: requestBody.inputs
business_unit_id: query.businessUnitId
method: generated
generated: '2026-09-24'
- target: $.paths['/communication-preferences/2026-09/statuses/batch/unsubscribe-all'].post
update:
x-apievangelist-phrasing:
intent: Unsubscribe contacts from all subscriptions
effect: destructive
questions:
- How do I opt a list of contacts out of every email subscription at once?
- Can I unsubscribe contacts from everything for just one business unit?
instructions:
- text: Unsubscribe {contacts} from all {channel} subscriptions.
slots:
contacts: requestBody.inputs
channel: query.channel
- text: Opt {contacts} out of everything on {channel} in business unit {business_unit_id}.
slots:
contacts: requestBody.inputs
channel: query.channel
business_unit_id: query.businessUnitId
method: generated
generated: '2026-09-24'
- target: $.paths['/communication-preferences/2026-09/statuses/batch/unsubscribe-all/read'].post
update:
x-apievangelist-phrasing:
intent: Check which contacts opted out of everything
effect: read
questions:
- Have any of these contacts opted out of all communications?
- How can I tell whether a set of contacts unsubscribed from all messages on a channel?
instructions:
- text: Check whether {contacts} have opted out of all {channel} communications.
slots:
contacts: requestBody.inputs
channel: query.channel
- text: See if {contacts} unsubscribed from everything in business unit {business_unit_id} on {channel}.
slots:
contacts: requestBody.inputs
business_unit_id: query.businessUnitId
channel: query.channel
method: generated
generated: '2026-09-24'
- target: $.paths['/communication-preferences/2026-09/statuses/batch/write'].post
update:
x-apievangelist-phrasing:
intent: Set subscription statuses for several contacts
effect: write
questions:
- How do I subscribe or unsubscribe a list of contacts to specific subscription types?
- Can I change many contacts' communication preferences in one request?
instructions:
- text: 'Apply these subscription status changes: {status_changes}.'
slots:
status_changes: requestBody.inputs
- text: Update contacts' subscription statuses per {status_changes}.
slots:
status_changes: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/crm/objects/2026-03/{fromObjectType}/{fromObjectId}/associations/default/{toObjectType}/{toObjectId}'].put
update:
x-apievangelist-phrasing:
intent: Link two CRM records with the default association
effect: write
questions:
- How do I connect one CRM record to another with the standard, unlabeled association?
- Can I associate a single contact with a single company without picking a label?
instructions:
- text: Associate {from_object_type} {from_object_id} with {to_object_type} {to_object_id} using the default association.
slots:
from_object_type: path.fromObjectType
from_object_id: path.fromObjectId
to_object_type: path.toObjectType
to_object_id: path.toObjectId
- text: Create a default link from record {from_object_id} ({from_object_type}) to record {to_object_id} ({to_object_type}).
slots:
from_object_id: path.fromObjectId
from_object_type: path.fromObjectType
to_object_id: path.toObjectId
to_object_type: path.toObjectType
method: generated
generated: '2026-09-24'
- target: $.paths['/crm/objects/2026-03/{objectType}/batch/archive'].post
update:
x-apievangelist-phrasing:
intent: Archive a batch of records of any object type
effect: destructive
questions:
- How do I archive many records of an object type I choose, like appointments, by ID?
- Is there one bulk archive call that works for whichever CRM object type I name?
instructions:
- text: Archive {object_type} records {record_ids}.
slots:
object_type: path.objectType
record_ids: requestBody.inputs
- text: 'Move these {object_type} records to the recycling bin: {record_ids}.'
slots:
object_type: path.objectType
record_ids: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/crm/objects/2026-03/{objectType}/batch/create'].post
update:
x-apievangelist-phrasing:
intent: Create a batch of records of any object type
effect: write
questions:
- Can I bulk create records for an object type I specify in the path, such as appointments?
- What's the generic way to create many CRM records of a chosen type?
instructions:
- text: Create {object_type} records from {records}.
slots:
object_type: path.objectType
records: requestBody.inputs
- text: 'Add a batch of new {object_type} entries: {records}.'
slots:
object_type: path.objectType
records: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/crm/objects/2026-03/{objectType}/batch/read'].post
update:
x-apievangelist-phrasing:
intent: Read a batch of records of any object type
effect: read
questions:
- How do I fetch many records of an object type I name, by ID or a unique property?
- Can I get property history when bulk reading records of a chosen object type?
instructions:
- text: Read {object_type} records {record_ids} with properties {properties}.
slots:
object_type: path.objectType
record_ids: requestBody.inputs
properties: requestBody.properties
- text: Fetch {object_type} records whose {id_property} is in {record_ids}, with history for {history_properties}.
slots:
object_type: path.objectType
id_property: requestBody.idProperty
record_ids: requestBody.inputs
history_properties: requestBody.propertiesWithHistory
method: generated
generated: '2026-09-24'
- target: $.paths['/crm/objects/2026-03/{objectType}/batch/update'].post
update:
x-apievangelist-phrasing:
intent: Update a batch of records of any object type
effect: write
questions:
- How can I bulk update records for whatever CRM object type I pass in?
- Is there a generic batch update that takes the object type as a parameter?
instructions:
- text: Update {object_type} records with {record_updates}.
slots:
object_type: path.objectType
record_updates: requestBody.inputs
- text: Apply {record_updates} to existing {object_type} entries.
slots:
object_type: path.objectType
record_updates: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/crm/objects/2026-03/{objectType}/batch/upsert'].post
update:
x-apievangelist-phrasing:
intent: Upsert a batch of records of any object type
effect: write
questions:
- Can I create-or-update records of a chosen object type keyed on a unique property?
- What's the generic upsert for an object type I specify, like appointments?
instructions:
- text: Upsert {object_type} records {records} by their unique property.
slots:
object_type: path.objectType
records: requestBody.inputs
- text: 'Create or update these {object_type} entries, matching on a unique value: {records}.'
slots:
object_type: path.objectType
records: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/crm/associations/2026-03/{fromObjectType}/{toObjectType}/batch/archive'].post
update:
x-apievangelist-phrasing:
intent: Remove all associations between record pairs
effect: destructive
questions:
- How do I unlink many pairs of CRM records, for example contacts from companies, at once?
- Can I bulk delete every association between specific records of two object types?
instructions:
- text: Remove associations from {from_object_type} to {to_object_type} for pairs {record_pairs}.
slots:
from_object_type: path.fromObjectType
to_object_type: path.toObjectType
record_pairs: requestBody.inputs
- text: 'Unlink these {from_object_type} records from their {to_object_type} records: {record_pairs}.'
slots:
from_object_type: path.fromObjectType
to_object_type: path.toObjectType
record_pairs: requestBody.inputs
method: generated
generated: '2026-09-24'
- target: $.paths['/crm/associations/2026-03/{fromObjectType}/{toObjectType}/batch/associate/default'].post
update:
x-apievangelist-phrasing:
intent: Create default associations in bulk
effect: write
questions:
- How do I link many record pairs using just the generic, unlabeled association type?
- Can I bulk associate deals to contacts without choosing association labels?
instructions:
- text: Create default associations from {from_object_type} to {to_object_type} for {record_pairs}.
slots:
from_object_type: path.fromObjectType
to_object_type: path.toObjectType
record_pairs: requestBody.inputs
- text: Link {record_pairs} between {from_object_type} and {to_object_type} with the most generic association.
slots:
record_pairs: requestBody.inputs
from_object_type: path.fromObjectType
to_object_type: path.toObjectType
method: generated
generated: '2026-09-24'
- target: $.paths['/crm/associations/2026-03/{fromObjectType}/{toObjectType}/batch/create'].post
update:
x-apievangelist-phrasing:
intent: Associate record pairs with labels in bulk
effect: write
questions:
- How can I link many records with a specific association label, like primary company?
- Can I apply labelled associations between two object types for lots of records at once?
instructions:
- text: Associate {from_object_type} to {to_object_type} with labels for {labelled_pairs}.
slots:
from_object_type: path.fromObjectType
to_object_type: path.toObjectType
labelled_pairs: requestBody.inputs
- text: 'Create these labelled links between {from_object_type} and {to_object_type} records: {labelled_pairs}.'
slots:
from_object_type: path.fromObjectType
to_object_type: path.toObjectType
labelled_pairs: requestBody.inputs
method: generated
generated: '2026-09-24'
# --- truncated at 32 KB (159 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hubspot/refs/heads/main/overlays/hubspot-batch-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.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/hubspot-batch-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.