openapi: 3.0.1 info: title: HubSpot CRM Properties description: Basepom for all HubSpot Projects version: 2026-09 x-hubspot-product-tier-requirements: marketing: FREE sales: FREE service: FREE cms: FREE commerce: FREE crmHub: FREE dataHub: FREE x-hubspot-api-use-case: Create a set of custom multi-select properties for storing contract data on company records. x-hubspot-introduction: Use the properties API to store information in fields on individual contact records. You can use this API to manage existing default and custom properties, create new custom properties, and more. servers: - url: https://api.hubapi.com tags: - name: Basic - name: Batch paths: /crm/properties/2026-09/{objectType}: get: tags: - Basic summary: Read all properties description: Read all existing properties for the specified object type and HubSpot account. operationId: get-/crm/properties/2026-09/{objectType}_/crm/properties/2025-09/{objectType} parameters: - name: objectType in: path description: '' required: true style: simple explode: false schema: type: string - name: archived in: query description: Whether to return only results that have been archived. required: false style: form explode: true schema: type: boolean default: false - name: dataSensitivity in: query description: '' required: false style: form explode: true schema: type: string default: non_sensitive enum: - highly_sensitive - non_sensitive - sensitive - name: locale in: query description: '' required: false style: form explode: true schema: type: string - name: properties in: query description: '' required: false style: form explode: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CollectionResponsePropertyNoPaging' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.owners.read - oauth2: - crm.objects.deals.read - oauth2: - crm.objects.subscriptions.read - oauth2: - crm.objects.services.read - oauth2: - crm.objects.tickets.sensitive.read - oauth2: - crm.objects.listings.write - oauth2: - crm.objects.custom.read - oauth2: - crm.schemas.tickets.read - oauth2: - crm.objects.tasks.read - oauth2: - crm.objects.custom.sensitive.write.v2 - oauth2: - crm.objects.custom.highly_sensitive.write.v2 - oauth2: - crm.schemas.quotes.read - oauth2: - crm.objects.companies.read - oauth2: - crm.objects.tickets.highly_sensitive.read - oauth2: - crm.objects.companies.sensitive.read.v2 - oauth2: - media_bridge.read - oauth2: - crm.objects.deals.highly_sensitive.read.v2 - oauth2: - crm.objects.companies.highly_sensitive.read.v2 - oauth2: - crm.objects.contacts.sensitive.write.v2 - oauth2: - crm.objects.calls.read - oauth2: - crm.objects.meetings.read - oauth2: - crm.schemas.services.read - oauth2: - crm.schemas.line_items.read - oauth2: - crm.schemas.subscriptions.read - oauth2: - crm.objects.projects.highly_sensitive.write - oauth2: - crm.schemas.companies.read - oauth2: - crm.objects.products.write - oauth2: - crm.objects.feedback_submissions.read - oauth2: - crm.objects.services.write - oauth2: - crm.objects.subscriptions.write - oauth2: - crm.schemas.calls.read - oauth2: - crm.schemas.meetings.read - oauth2: - crm.objects.contacts.read - oauth2: - crm.objects.invoices.read - oauth2: - crm.schemas.orders.read - oauth2: - crm.schemas.emails.read - oauth2: - crm.schemas.deals.read - oauth2: - crm.objects.deals.write - oauth2: - e-commerce - oauth2: - crm.schemas.notes.read - oauth2: - crm.objects.companies.sensitive.write.v2 - oauth2: - crm.objects.projects.read - oauth2: - crm.objects.custom.highly_sensitive.read.v2 - oauth2: - crm.objects.goals.write - oauth2: - crm.objects.line_items.write - oauth2: - crm.objects.contacts.write - oauth2: - crm.objects.goals.read - oauth2: - crm.objects.line_items.read - oauth2: - crm.objects.deals.sensitive.read.v2 - oauth2: - crm.objects.projects.sensitive.write - oauth2: - crm.objects.quotes.write - oauth2: - tickets.highly_sensitive.v2 - oauth2: - crm.schemas.contacts.read - oauth2: - crm.objects.leads.read - oauth2: - crm.objects.leads.write - oauth2: - crm.schemas.tasks.read - oauth2: - crm.objects.emails.read - oauth2: - crm.schemas.invoices.read - oauth2: - crm.objects.quotes.read - oauth2: - crm.objects.notes.read - oauth2: - crm.objects.courses.read - oauth2: - timeline - oauth2: - crm.objects.marketing_events.read - oauth2: - crm.pipelines.orders.read - oauth2: - crm.objects.contacts.sensitive.read.v2 - oauth2: - crm.schemas.projects.read - oauth2: - crm.objects.orders.read - oauth2: - crm.objects.companies.write - oauth2: - automation - oauth2: - crm.schemas.carts.read - oauth2: - cpq.quotes.write - oauth2: - crm.schemas.listings.read - oauth2: - crm.objects.contacts.highly_sensitive.read.v2 - oauth2: - crm.objects.appointments.sensitive.read.v2 - oauth2: - crm.objects.contacts.highly_sensitive.write.v2 - oauth2: - crm.objects.commercepayments.write - oauth2: - crm.objects.invoices.write - oauth2: - crm.objects.custom.sensitive.read.v2 - oauth2: - crm.objects.users.read - oauth2: - crm.objects.appointments.write - oauth2: - tickets - oauth2: - crm.objects.deals.sensitive.write.v2 - oauth2: - cpq.quotes.read - oauth2: - crm.objects.appointments.sensitive.write.v2 - oauth2: - crm.objects.projects.highly_sensitive.read - oauth2: - crm.schemas.appointments.read - oauth2: - tickets.sensitive.v2 - oauth2: - crm.objects.custom.write - oauth2: - crm.objects.appointments.read - oauth2: - crm.schemas.courses.read - oauth2: - crm.objects.deals.highly_sensitive.write.v2 - oauth2: - crm.objects.companies.highly_sensitive.write.v2 - oauth2: - crm.objects.projects.sensitive.read - oauth2: - crm.objects.marketing_events.write - oauth2: - crm.objects.projects.write - oauth2: - crm.schemas.custom.read - oauth2: - crm.objects.carts.read - oauth2: - crm.objects.courses.write - oauth2: - crm.schemas.commercepayments.read - oauth2: - crm.objects.listings.read x-hubspot-user-level-auth: internalOnly: false post: tags: - Basic summary: Create a property description: Create and return a copy of a new property for the specified object type. operationId: post-/crm/properties/2026-09/{objectType}_/crm/properties/2025-09/{objectType} parameters: - name: objectType in: path description: '' required: true style: simple explode: false schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PropertyCreate' required: true responses: '201': description: successful operation headers: Location: description: URL of the newly created resource style: simple explode: false schema: type: string content: application/json: schema: $ref: '#/components/schemas/Property' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.schemas.quotes.write - oauth2: - tickets - oauth2: - crm.schemas.invoices.write - oauth2: - crm.schemas.orders.write - oauth2: - crm.schemas.commercepayments.write - oauth2: - crm.schemas.courses.write - oauth2: - tickets.sensitive.v2 - oauth2: - e-commerce - oauth2: - crm.schemas.appointments.write - oauth2: - crm.schemas.tasks.write - oauth2: - crm.schemas.contacts.write - oauth2: - crm.schemas.carts.write - oauth2: - crm.objects.tickets.sensitive.write - oauth2: - crm.schemas.companies.write - oauth2: - crm.schemas.subscriptions.write - oauth2: - crm.schemas.emails.write - oauth2: - crm.schemas.custom.write - oauth2: - crm.schemas.listings.write - oauth2: - crm.pipelines.orders.write - oauth2: - crm.objects.users.write - oauth2: - tickets.highly_sensitive.v2 - oauth2: - crm.schemas.services.write - oauth2: - crm.objects.orders.write - oauth2: - crm.schemas.notes.write - oauth2: - crm.schemas.meetings.write - oauth2: - crm.schemas.deals.write - oauth2: - crm.objects.carts.write - oauth2: - crm.schemas.calls.write - oauth2: - crm.schemas.tickets.write - oauth2: - crm.objects.tickets.highly_sensitive.write x-hubspot-user-level-auth: internalOnly: false /crm/properties/2026-09/{objectType}/batch/archive: post: tags: - Batch summary: Archive a batch of properties description: Archive a provided list of properties. This method will return a 204 No Content response on success regardless of the initial state of the property (e.g. active, already archived, non-existent). operationId: post-/crm/properties/2026-09/{objectType}/batch/archive_/crm/properties/2025-09/{objectType}/batch/archive parameters: - name: objectType in: path description: '' required: true style: simple explode: false schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchInputPropertyName' required: true responses: '204': description: No content content: {} default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.schemas.quotes.write - oauth2: - tickets - oauth2: - crm.schemas.invoices.write - oauth2: - crm.schemas.orders.write - oauth2: - crm.schemas.commercepayments.write - oauth2: - crm.schemas.courses.write - oauth2: - tickets.sensitive.v2 - oauth2: - e-commerce - oauth2: - crm.schemas.appointments.write - oauth2: - crm.schemas.tasks.write - oauth2: - crm.schemas.contacts.write - oauth2: - crm.schemas.carts.write - oauth2: - crm.objects.tickets.sensitive.write - oauth2: - crm.schemas.companies.write - oauth2: - crm.schemas.subscriptions.write - oauth2: - crm.schemas.emails.write - oauth2: - crm.schemas.custom.write - oauth2: - crm.schemas.listings.write - oauth2: - crm.pipelines.orders.write - oauth2: - crm.objects.users.write - oauth2: - tickets.highly_sensitive.v2 - oauth2: - crm.schemas.services.write - oauth2: - crm.objects.orders.write - oauth2: - crm.schemas.notes.write - oauth2: - crm.schemas.meetings.write - oauth2: - crm.schemas.deals.write - oauth2: - crm.objects.carts.write - oauth2: - crm.schemas.calls.write - oauth2: - crm.schemas.tickets.write - oauth2: - crm.objects.tickets.highly_sensitive.write /crm/properties/2026-09/{objectType}/batch/create: post: tags: - Batch summary: Create a batch of properties description: Create a batch of properties using the same rules as when creating an individual property. operationId: post-/crm/properties/2026-09/{objectType}/batch/create_/crm/properties/2025-09/{objectType}/batch/create parameters: - name: objectType in: path description: '' required: true style: simple explode: false schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchInputPropertyCreate' required: true responses: '201': description: successful operation content: application/json: schema: $ref: '#/components/schemas/BatchResponseProperty' '207': description: multiple statuses content: application/json: schema: $ref: '#/components/schemas/BatchResponsePropertyWithErrors' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.schemas.quotes.write - oauth2: - tickets - oauth2: - crm.schemas.invoices.write - oauth2: - crm.schemas.orders.write - oauth2: - crm.schemas.commercepayments.write - oauth2: - crm.schemas.courses.write - oauth2: - tickets.sensitive.v2 - oauth2: - e-commerce - oauth2: - crm.schemas.appointments.write - oauth2: - crm.schemas.tasks.write - oauth2: - crm.schemas.contacts.write - oauth2: - crm.schemas.carts.write - oauth2: - crm.objects.tickets.sensitive.write - oauth2: - crm.schemas.companies.write - oauth2: - crm.schemas.subscriptions.write - oauth2: - crm.schemas.emails.write - oauth2: - crm.schemas.custom.write - oauth2: - crm.schemas.listings.write - oauth2: - crm.pipelines.orders.write - oauth2: - crm.objects.users.write - oauth2: - tickets.highly_sensitive.v2 - oauth2: - crm.schemas.services.write - oauth2: - crm.objects.orders.write - oauth2: - crm.schemas.notes.write - oauth2: - crm.schemas.meetings.write - oauth2: - crm.schemas.deals.write - oauth2: - crm.objects.carts.write - oauth2: - crm.schemas.calls.write - oauth2: - crm.schemas.tickets.write - oauth2: - crm.objects.tickets.highly_sensitive.write x-hubspot-user-level-auth: internalOnly: false /crm/properties/2026-09/{objectType}/batch/read: post: tags: - Batch summary: Read a batch of properties description: Read a provided list of properties. operationId: post-/crm/properties/2026-09/{objectType}/batch/read_/crm/properties/2025-09/{objectType}/batch/read parameters: - name: objectType in: path description: '' required: true style: simple explode: false schema: type: string - name: locale in: query description: '' required: false style: form explode: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BatchReadInputPropertyName' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/BatchResponseProperty' '207': description: multiple statuses content: application/json: schema: $ref: '#/components/schemas/BatchResponsePropertyWithErrors' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.owners.read - oauth2: - crm.objects.deals.read - oauth2: - crm.objects.subscriptions.read - oauth2: - crm.objects.services.read - oauth2: - crm.objects.tickets.sensitive.read - oauth2: - crm.objects.listings.write - oauth2: - crm.objects.custom.read - oauth2: - crm.schemas.tickets.read - oauth2: - crm.objects.tasks.read - oauth2: - crm.objects.custom.sensitive.write.v2 - oauth2: - crm.objects.custom.highly_sensitive.write.v2 - oauth2: - crm.schemas.quotes.read - oauth2: - crm.objects.companies.read - oauth2: - crm.objects.tickets.highly_sensitive.read - oauth2: - crm.objects.companies.sensitive.read.v2 - oauth2: - media_bridge.read - oauth2: - crm.objects.deals.highly_sensitive.read.v2 - oauth2: - crm.objects.companies.highly_sensitive.read.v2 - oauth2: - crm.objects.contacts.sensitive.write.v2 - oauth2: - crm.objects.calls.read - oauth2: - crm.objects.meetings.read - oauth2: - crm.schemas.services.read - oauth2: - crm.schemas.line_items.read - oauth2: - crm.schemas.subscriptions.read - oauth2: - crm.objects.projects.highly_sensitive.write - oauth2: - crm.schemas.companies.read - oauth2: - crm.objects.products.write - oauth2: - crm.objects.feedback_submissions.read - oauth2: - crm.objects.services.write - oauth2: - crm.objects.subscriptions.write - oauth2: - crm.schemas.calls.read - oauth2: - crm.schemas.meetings.read - oauth2: - crm.objects.contacts.read - oauth2: - crm.objects.invoices.read - oauth2: - crm.schemas.orders.read - oauth2: - crm.schemas.emails.read - oauth2: - crm.schemas.deals.read - oauth2: - crm.objects.deals.write - oauth2: - e-commerce - oauth2: - crm.schemas.notes.read - oauth2: - crm.objects.companies.sensitive.write.v2 - oauth2: - crm.objects.projects.read - oauth2: - crm.objects.custom.highly_sensitive.read.v2 - oauth2: - crm.objects.goals.write - oauth2: - crm.objects.line_items.write - oauth2: - crm.objects.contacts.write - oauth2: - crm.objects.goals.read - oauth2: - crm.objects.line_items.read - oauth2: - crm.objects.deals.sensitive.read.v2 - oauth2: - crm.objects.projects.sensitive.write - oauth2: - crm.objects.quotes.write - oauth2: - tickets.highly_sensitive.v2 - oauth2: - crm.schemas.contacts.read - oauth2: - crm.objects.leads.read - oauth2: - crm.objects.leads.write - oauth2: - crm.schemas.tasks.read - oauth2: - crm.objects.emails.read - oauth2: - crm.schemas.invoices.read - oauth2: - crm.objects.quotes.read - oauth2: - crm.objects.notes.read - oauth2: - crm.objects.courses.read - oauth2: - timeline - oauth2: - crm.objects.marketing_events.read - oauth2: - crm.pipelines.orders.read - oauth2: - crm.objects.contacts.sensitive.read.v2 - oauth2: - crm.schemas.projects.read - oauth2: - crm.objects.orders.read - oauth2: - crm.objects.companies.write - oauth2: - automation - oauth2: - crm.schemas.carts.read - oauth2: - cpq.quotes.write - oauth2: - crm.schemas.listings.read - oauth2: - crm.objects.contacts.highly_sensitive.read.v2 - oauth2: - crm.objects.appointments.sensitive.read.v2 - oauth2: - crm.objects.contacts.highly_sensitive.write.v2 - oauth2: - crm.objects.commercepayments.write - oauth2: - crm.objects.invoices.write - oauth2: - crm.objects.custom.sensitive.read.v2 - oauth2: - crm.objects.users.read - oauth2: - crm.objects.appointments.write - oauth2: - tickets - oauth2: - crm.objects.deals.sensitive.write.v2 - oauth2: - cpq.quotes.read - oauth2: - crm.objects.appointments.sensitive.write.v2 - oauth2: - crm.objects.projects.highly_sensitive.read - oauth2: - crm.schemas.appointments.read - oauth2: - tickets.sensitive.v2 - oauth2: - crm.objects.custom.write - oauth2: - crm.objects.appointments.read - oauth2: - crm.schemas.courses.read - oauth2: - crm.objects.deals.highly_sensitive.write.v2 - oauth2: - crm.objects.companies.highly_sensitive.write.v2 - oauth2: - crm.objects.projects.sensitive.read - oauth2: - crm.objects.marketing_events.write - oauth2: - crm.objects.projects.write - oauth2: - crm.schemas.custom.read - oauth2: - crm.objects.carts.read - oauth2: - crm.objects.courses.write - oauth2: - crm.schemas.commercepayments.read - oauth2: - crm.objects.listings.read x-hubspot-user-level-auth: internalOnly: false /crm/properties/2026-09/{objectType}/groups: get: tags: - Basic summary: Read all property groups description: Read all existing property groups for the specified object type and HubSpot account. operationId: get-/crm/properties/2026-09/{objectType}/groups_/crm/properties/2025-09/{objectType}/groups parameters: - name: objectType in: path description: '' required: true style: simple explode: false schema: type: string - name: locale in: query description: '' required: false style: form explode: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CollectionResponsePropertyGroupNoPaging' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.owners.read - oauth2: - crm.objects.deals.read - oauth2: - crm.objects.subscriptions.read - oauth2: - crm.objects.services.read - oauth2: - crm.objects.tickets.sensitive.read - oauth2: - crm.objects.listings.write - oauth2: - crm.objects.custom.read - oauth2: - crm.schemas.tickets.read - oauth2: - crm.objects.tasks.read - oauth2: - crm.objects.custom.sensitive.write.v2 - oauth2: - crm.objects.custom.highly_sensitive.write.v2 - oauth2: - crm.schemas.quotes.read - oauth2: - crm.objects.companies.read - oauth2: - crm.objects.tickets.highly_sensitive.read - oauth2: - crm.objects.companies.sensitive.read.v2 - oauth2: - media_bridge.read - oauth2: - crm.objects.deals.highly_sensitive.read.v2 - oauth2: - crm.objects.companies.highly_sensitive.read.v2 - oauth2: - crm.objects.contacts.sensitive.write.v2 - oauth2: - crm.objects.calls.read - oauth2: - crm.objects.meetings.read - oauth2: - crm.schemas.services.read - oauth2: - crm.schemas.line_items.read - oauth2: - crm.schemas.subscriptions.read - oauth2: - crm.objects.projects.highly_sensitive.write - oauth2: - crm.schemas.companies.read - oauth2: - crm.objects.products.write - oauth2: - crm.objects.feedback_submissions.read - oauth2: - crm.objects.services.write - oauth2: - crm.objects.subscriptions.write - oauth2: - crm.schemas.calls.read - oauth2: - crm.schemas.meetings.read - oauth2: - crm.objects.contacts.read - oauth2: - crm.objects.invoices.read - oauth2: - crm.schemas.orders.read - oauth2: - crm.schemas.emails.read - oauth2: - crm.schemas.deals.read - oauth2: - crm.objects.deals.write - oauth2: - e-commerce - oauth2: - crm.schemas.notes.read - oauth2: - crm.objects.companies.sensitive.write.v2 - oauth2: - crm.objects.projects.read - oauth2: - crm.objects.custom.highly_sensitive.read.v2 - oauth2: - crm.objects.goals.write - oauth2: - crm.objects.line_items.write - oauth2: - crm.objects.contacts.write - oauth2: - crm.objects.goals.read - oauth2: - crm.objects.line_items.read - oauth2: - crm.objects.deals.sensitive.read.v2 - oauth2: - crm.objects.projects.sensitive.write - oauth2: - crm.objects.quotes.write - oauth2: - tickets.highly_sensitive.v2 - oauth2: - crm.schemas.contacts.read - oauth2: - crm.objects.leads.read - oauth2: - crm.objects.leads.write - oauth2: - crm.schemas.tasks.read - oauth2: - crm.objects.emails.read - oauth2: - crm.schemas.invoices.read - oauth2: - crm.objects.quotes.read - oauth2: - crm.objects.notes.read - oauth2: - crm.objects.courses.read - oauth2: - timeline - oauth2: - crm.objects.marketing_events.read - oauth2: - crm.pipelines.orders.read - oauth2: - crm.objects.contacts.sensitive.read.v2 - oauth2: - crm.schemas.projects.read - oauth2: - crm.objects.orders.read - oauth2: - crm.objects.companies.write - oauth2: - automation - oauth2: - crm.schemas.carts.read - oauth2: - cpq.quotes.write - oauth2: - crm.schemas.listings.read - oauth2: - crm.objects.contacts.highly_sensitive.read.v2 - oauth2: - crm.objects.appointments.sensitive.read.v2 - oauth2: - crm.objects.contacts.highly_sensitive.write.v2 - oauth2: - crm.objects.commercepayments.write - oauth2: - crm.objects.invoices.write - oauth2: - crm.objects.custom.sensitive.read.v2 - oauth2: - crm.objects.users.read - oauth2: - crm.objects.appointments.write - oauth2: - tickets - oauth2: - crm.objects.deals.sensitive.write.v2 - oauth2: - cpq.quotes.read - oauth2: - crm.objects.appointments.sensitive.write.v2 - oauth2: - crm.objects.projects.highly_sensitive.read - oauth2: - crm.schemas.appointments.read - oauth2: - tickets.sensitive.v2 - oauth2: - crm.objects.custom.write - oauth2: - crm.objects.appointments.read - oauth2: - crm.schemas.courses.read - oauth2: - crm.objects.deals.highly_sensitive.write.v2 - oauth2: - crm.objects.companies.highly_sensitive.write.v2 - oauth2: - crm.objects.projects.sensitive.read - oauth2: - crm.objects.marketing_events.write - oauth2: - crm.objects.projects.write - oauth2: - crm.schemas.custom.read - oauth2: - crm.objects.carts.read - oauth2: - crm.objects.courses.write - oauth2: - crm.schemas.commercepayments.read - oauth2: - crm.objects.listings.read x-hubspot-user-level-auth: internalOnly: false post: tags: - Basic summary: Create a property group description: Create and return a copy of a new property group. operationId: post-/crm/properties/2026-09/{objectType}/groups_/crm/properties/2025-09/{objectType}/groups parameters: - name: objectType in: path description: '' required: true style: simple explode: false schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PropertyGroupCreate' required: true responses: '201': description: successful operation headers: Location: description: URL of the newly created resource style: simple explode: false schema: type: string content: application/json: schema: $ref: '#/components/schemas/PropertyGroup' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.schemas.quotes.write - oauth2: - tickets - oauth2: - crm.schemas.invoices.write - oauth2: - crm.schemas.orders.write - oauth2: - crm.schemas.commercepayments.write - oauth2: - crm.schemas.courses.write - oauth2: - tickets.sensitive.v2 - oauth2: - e-commerce - oauth2: - crm.schemas.appointments.write - oauth2: - crm.schemas.tasks.write - oauth2: - crm.schemas.contacts.write - oauth2: - crm.schemas.carts.write - oauth2: - crm.objects.tickets.sensitive.write - oauth2: - crm.schemas.companies.write - oauth2: - crm.schemas.subscriptions.write - oauth2: - crm.schemas.emails.write - oauth2: - crm.schemas.custom.write - oauth2: - crm.schemas.listings.write - oauth2: - crm.pipelines.orders.write - oauth2: - crm.objects.users.write - oauth2: - tickets.highly_sensitive.v2 - oauth2: - crm.schemas.services.write - oauth2: - crm.objects.orders.write - oauth2: - crm.schemas.notes.write - oauth2: - crm.schemas.meetings.write - oauth2: - crm.schemas.deals.write - oauth2: - crm.objects.carts.write - oauth2: - crm.schemas.calls.write - oauth2: - crm.schemas.tickets.write - oauth2: - crm.objects.tickets.highly_sensitive.write x-hubspot-user-level-auth: internalOnly: false /crm/properties/2026-09/{objectType}/groups/{groupName}: get: tags: - Basic summary: Read a property group description: Read a property group identified by {groupName}. operationId: get-/crm/properties/2026-09/{objectType}/groups/{groupName}_/crm/properties/2025-09/{objectType}/groups/{groupName} parameters: - name: groupName in: path description: '' required: true style: simple explode: false schema: type: string - name: objectType in: path description: '' required: true style: simple explode: false schema: type: string - name: locale in: query description: '' required: false style: form explode: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/PropertyGroup' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.owners.read - oauth2: - crm.objects.deals.read - oauth2: - crm.objects.subscriptions.read - oauth2: - crm.objects.services.read - oauth2: - crm.objects.tickets.sensitive.read - oauth2: - crm.objects.listings.write - oauth2: - crm.objects.custom.read - oauth2: - crm.schemas.tickets.read - oauth2: - crm.objects.tasks.read - oauth2: - crm.objects.custom.sensitive.write.v2 - oauth2: - crm.objects.custom.highly_sensitive.write.v2 - oauth2: - crm.schemas.quotes.read - oauth2: - crm.objects.companies.read - oauth2: - crm.objects.tickets.highly_sensitive.read - oauth2: - crm.objects.companies.sensitive.read.v2 - oauth2: - media_bridge.read - oauth2: - crm.objects.deals.highly_sensitive.read.v2 - oauth2: - crm.objects.companies.highly_sensitive.read.v2 - oauth2: - crm.objects.contacts.sensitive.write.v2 - oauth2: - crm.objects.calls.read - oauth2: - crm.objects.meetings.read - oauth2: - crm.schemas.services.read - oauth2: - crm.schemas.line_items.read - oauth2: - crm.schemas.subscriptions.read - oauth2: - crm.objects.projects.highly_sensitive.write - oauth2: - crm.schemas.companies.read - oauth2: - crm.objects.products.write - oauth2: - crm.objects.feedback_submissions.read - oauth2: - crm.objects.services.write - oauth2: - crm.objects.subscriptions.write - oauth2: - crm.schemas.calls.read - oauth2: - crm.schemas.meetings.read - oauth2: - crm.objects.contacts.read - oauth2: - crm.objects.invoices.read - oauth2: - crm.schemas.orders.read - oauth2: - crm.schemas.emails.read - oauth2: - crm.schemas.deals.read - oauth2: - crm.objects.deals.write - oauth2: - e-commerce - oauth2: - crm.schemas.notes.read - oauth2: - crm.objects.companies.sensitive.write.v2 - oauth2: - crm.objects.projects.read - oauth2: - crm.objects.custom.highly_sensitive.read.v2 - oauth2: - crm.objects.goals.write - oauth2: - crm.objects.line_items.write - oauth2: - crm.objects.contacts.write - oauth2: - crm.objects.goals.read - oauth2: - crm.objects.line_items.read - oauth2: - crm.objects.deals.sensitive.read.v2 - oauth2: - crm.objects.projects.sensitive.write - oauth2: - crm.objects.quotes.write - oauth2: - tickets.highly_sensitive.v2 - oauth2: - crm.schemas.contacts.read - oauth2: - crm.objects.leads.read - oauth2: - crm.objects.leads.write - oauth2: - crm.schemas.tasks.read - oauth2: - crm.objects.emails.read - oauth2: - crm.schemas.invoices.read - oauth2: - crm.objects.quotes.read - oauth2: - crm.objects.notes.read - oauth2: - crm.objects.courses.read - oauth2: - timeline - oauth2: - crm.objects.marketing_events.read - oauth2: - crm.pipelines.orders.read - oauth2: - crm.objects.contacts.sensitive.read.v2 - oauth2: - crm.schemas.projects.read - oauth2: - crm.objects.orders.read - oauth2: - crm.objects.companies.write - oauth2: - automation - oauth2: - crm.schemas.carts.read - oauth2: - cpq.quotes.write - oauth2: - crm.schemas.listings.read - oauth2: - crm.objects.contacts.highly_sensitive.read.v2 - oauth2: - crm.objects.appointments.sensitive.read.v2 - oauth2: - crm.objects.contacts.highly_sensitive.write.v2 - oauth2: - crm.objects.commercepayments.write - oauth2: - crm.objects.invoices.write - oauth2: - crm.objects.custom.sensitive.read.v2 - oauth2: - crm.objects.users.read - oauth2: - crm.objects.appointments.write - oauth2: - tickets - oauth2: - crm.objects.deals.sensitive.write.v2 - oauth2: - cpq.quotes.read - oauth2: - crm.objects.appointments.sensitive.write.v2 - oauth2: - crm.objects.projects.highly_sensitive.read - oauth2: - crm.schemas.appointments.read - oauth2: - tickets.sensitive.v2 - oauth2: - crm.objects.custom.write - oauth2: - crm.objects.appointments.read - oauth2: - crm.schemas.courses.read - oauth2: - crm.objects.deals.highly_sensitive.write.v2 - oauth2: - crm.objects.companies.highly_sensitive.write.v2 - oauth2: - crm.objects.projects.sensitive.read - oauth2: - crm.objects.marketing_events.write - oauth2: - crm.objects.projects.write - oauth2: - crm.schemas.custom.read - oauth2: - crm.objects.carts.read - oauth2: - crm.objects.courses.write - oauth2: - crm.schemas.commercepayments.read - oauth2: - crm.objects.listings.read x-hubspot-user-level-auth: internalOnly: false delete: tags: - Basic summary: Archive a property group description: Move a property group identified by {groupName} to the recycling bin. operationId: delete-/crm/properties/2026-09/{objectType}/groups/{groupName}_/crm/properties/2025-09/{objectType}/groups/{groupName} parameters: - name: groupName in: path description: '' required: true style: simple explode: false schema: type: string - name: objectType in: path description: '' required: true style: simple explode: false schema: type: string responses: '204': description: No content content: {} default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.schemas.quotes.write - oauth2: - tickets - oauth2: - crm.schemas.invoices.write - oauth2: - crm.schemas.orders.write - oauth2: - crm.schemas.commercepayments.write - oauth2: - crm.schemas.courses.write - oauth2: - tickets.sensitive.v2 - oauth2: - e-commerce - oauth2: - crm.schemas.appointments.write - oauth2: - crm.schemas.tasks.write - oauth2: - crm.schemas.contacts.write - oauth2: - crm.schemas.carts.write - oauth2: - crm.objects.tickets.sensitive.write - oauth2: - crm.schemas.companies.write - oauth2: - crm.schemas.subscriptions.write - oauth2: - crm.schemas.emails.write - oauth2: - crm.schemas.custom.write - oauth2: - crm.schemas.listings.write - oauth2: - crm.pipelines.orders.write - oauth2: - crm.objects.users.write - oauth2: - tickets.highly_sensitive.v2 - oauth2: - crm.schemas.services.write - oauth2: - crm.objects.orders.write - oauth2: - crm.schemas.notes.write - oauth2: - crm.schemas.meetings.write - oauth2: - crm.schemas.deals.write - oauth2: - crm.objects.carts.write - oauth2: - crm.schemas.calls.write - oauth2: - crm.schemas.tickets.write - oauth2: - crm.objects.tickets.highly_sensitive.write patch: tags: - Basic summary: Update a property group description: Perform a partial update of a property group identified by {groupName}. Provided fields will be overwritten. operationId: patch-/crm/properties/2026-09/{objectType}/groups/{groupName}_/crm/properties/2025-09/{objectType}/groups/{groupName} parameters: - name: groupName in: path description: '' required: true style: simple explode: false schema: type: string - name: objectType in: path description: '' required: true style: simple explode: false schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PropertyGroupUpdate' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/PropertyGroup' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.schemas.quotes.write - oauth2: - tickets - oauth2: - crm.schemas.invoices.write - oauth2: - crm.schemas.orders.write - oauth2: - crm.schemas.commercepayments.write - oauth2: - crm.schemas.courses.write - oauth2: - tickets.sensitive.v2 - oauth2: - e-commerce - oauth2: - crm.schemas.appointments.write - oauth2: - crm.schemas.tasks.write - oauth2: - crm.schemas.contacts.write - oauth2: - crm.schemas.carts.write - oauth2: - crm.objects.tickets.sensitive.write - oauth2: - crm.schemas.companies.write - oauth2: - crm.schemas.subscriptions.write - oauth2: - crm.schemas.emails.write - oauth2: - crm.schemas.custom.write - oauth2: - crm.schemas.listings.write - oauth2: - crm.pipelines.orders.write - oauth2: - crm.objects.users.write - oauth2: - tickets.highly_sensitive.v2 - oauth2: - crm.schemas.services.write - oauth2: - crm.objects.orders.write - oauth2: - crm.schemas.notes.write - oauth2: - crm.schemas.meetings.write - oauth2: - crm.schemas.deals.write - oauth2: - crm.objects.carts.write - oauth2: - crm.schemas.calls.write - oauth2: - crm.schemas.tickets.write - oauth2: - crm.objects.tickets.highly_sensitive.write x-hubspot-user-level-auth: internalOnly: false /crm/properties/2026-09/{objectType}/{propertyName}: get: tags: - Basic summary: Read a property description: Read a property identified by {propertyName}. operationId: get-/crm/properties/2026-09/{objectType}/{propertyName}_/crm/properties/2025-09/{objectType}/{propertyName} parameters: - name: objectType in: path description: '' required: true style: simple explode: false schema: type: string - name: propertyName in: path description: '' required: true style: simple explode: false schema: type: string - name: archived in: query description: Whether to return only results that have been archived. required: false style: form explode: true schema: type: boolean default: false - name: dataSensitivity in: query description: '' required: false style: form explode: true schema: type: string default: non_sensitive enum: - highly_sensitive - non_sensitive - sensitive - name: locale in: query description: '' required: false style: form explode: true schema: type: string - name: properties in: query description: '' required: false style: form explode: true schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/Property' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.owners.read - oauth2: - crm.objects.deals.read - oauth2: - crm.objects.subscriptions.read - oauth2: - crm.objects.services.read - oauth2: - crm.objects.tickets.sensitive.read - oauth2: - crm.objects.listings.write - oauth2: - crm.objects.custom.read - oauth2: - crm.schemas.tickets.read - oauth2: - crm.objects.tasks.read - oauth2: - crm.objects.custom.sensitive.write.v2 - oauth2: - crm.objects.custom.highly_sensitive.write.v2 - oauth2: - crm.schemas.quotes.read - oauth2: - crm.objects.companies.read - oauth2: - crm.objects.tickets.highly_sensitive.read - oauth2: - crm.objects.companies.sensitive.read.v2 - oauth2: - media_bridge.read - oauth2: - crm.objects.deals.highly_sensitive.read.v2 - oauth2: - crm.objects.companies.highly_sensitive.read.v2 - oauth2: - crm.objects.contacts.sensitive.write.v2 - oauth2: - crm.objects.calls.read - oauth2: - crm.objects.meetings.read - oauth2: - crm.schemas.services.read - oauth2: - crm.schemas.line_items.read - oauth2: - crm.schemas.subscriptions.read - oauth2: - crm.objects.projects.highly_sensitive.write - oauth2: - crm.schemas.companies.read - oauth2: - crm.objects.products.write - oauth2: - crm.objects.feedback_submissions.read - oauth2: - crm.objects.services.write - oauth2: - crm.objects.subscriptions.write - oauth2: - crm.schemas.calls.read - oauth2: - crm.schemas.meetings.read - oauth2: - crm.objects.contacts.read - oauth2: - crm.objects.invoices.read - oauth2: - crm.schemas.orders.read - oauth2: - crm.schemas.emails.read - oauth2: - crm.schemas.deals.read - oauth2: - crm.objects.deals.write - oauth2: - e-commerce - oauth2: - crm.schemas.notes.read - oauth2: - crm.objects.companies.sensitive.write.v2 - oauth2: - crm.objects.projects.read - oauth2: - crm.objects.custom.highly_sensitive.read.v2 - oauth2: - crm.objects.goals.write - oauth2: - crm.objects.line_items.write - oauth2: - crm.objects.contacts.write - oauth2: - crm.objects.goals.read - oauth2: - crm.objects.line_items.read - oauth2: - crm.objects.deals.sensitive.read.v2 - oauth2: - crm.objects.projects.sensitive.write - oauth2: - crm.objects.quotes.write - oauth2: - tickets.highly_sensitive.v2 - oauth2: - crm.schemas.contacts.read - oauth2: - crm.objects.leads.read - oauth2: - crm.objects.leads.write - oauth2: - crm.schemas.tasks.read - oauth2: - crm.objects.emails.read - oauth2: - crm.schemas.invoices.read - oauth2: - crm.objects.quotes.read - oauth2: - crm.objects.notes.read - oauth2: - crm.objects.courses.read - oauth2: - timeline - oauth2: - crm.objects.marketing_events.read - oauth2: - crm.pipelines.orders.read - oauth2: - crm.objects.contacts.sensitive.read.v2 - oauth2: - crm.schemas.projects.read - oauth2: - crm.objects.orders.read - oauth2: - crm.objects.companies.write - oauth2: - automation - oauth2: - crm.schemas.carts.read - oauth2: - cpq.quotes.write - oauth2: - crm.schemas.listings.read - oauth2: - crm.objects.contacts.highly_sensitive.read.v2 - oauth2: - crm.objects.appointments.sensitive.read.v2 - oauth2: - crm.objects.contacts.highly_sensitive.write.v2 - oauth2: - crm.objects.commercepayments.write - oauth2: - crm.objects.invoices.write - oauth2: - crm.objects.custom.sensitive.read.v2 - oauth2: - crm.objects.users.read - oauth2: - crm.objects.appointments.write - oauth2: - tickets - oauth2: - crm.objects.deals.sensitive.write.v2 - oauth2: - cpq.quotes.read - oauth2: - crm.objects.appointments.sensitive.write.v2 - oauth2: - crm.objects.projects.highly_sensitive.read - oauth2: - crm.schemas.appointments.read - oauth2: - tickets.sensitive.v2 - oauth2: - crm.objects.custom.write - oauth2: - crm.objects.appointments.read - oauth2: - crm.schemas.courses.read - oauth2: - crm.objects.deals.highly_sensitive.write.v2 - oauth2: - crm.objects.companies.highly_sensitive.write.v2 - oauth2: - crm.objects.projects.sensitive.read - oauth2: - crm.objects.marketing_events.write - oauth2: - crm.objects.projects.write - oauth2: - crm.schemas.custom.read - oauth2: - crm.objects.carts.read - oauth2: - crm.objects.courses.write - oauth2: - crm.schemas.commercepayments.read - oauth2: - crm.objects.listings.read x-hubspot-user-level-auth: internalOnly: false delete: tags: - Basic summary: Archive a property description: Move a property identified by {propertyName} to the recycling bin. operationId: delete-/crm/properties/2026-09/{objectType}/{propertyName}_/crm/properties/2025-09/{objectType}/{propertyName} parameters: - name: objectType in: path description: '' required: true style: simple explode: false schema: type: string - name: propertyName in: path description: '' required: true style: simple explode: false schema: type: string responses: '204': description: No content content: {} default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.schemas.quotes.write - oauth2: - tickets - oauth2: - crm.schemas.invoices.write - oauth2: - crm.schemas.orders.write - oauth2: - crm.schemas.commercepayments.write - oauth2: - crm.schemas.courses.write - oauth2: - tickets.sensitive.v2 - oauth2: - e-commerce - oauth2: - crm.schemas.appointments.write - oauth2: - crm.schemas.tasks.write - oauth2: - crm.schemas.contacts.write - oauth2: - crm.schemas.carts.write - oauth2: - crm.objects.tickets.sensitive.write - oauth2: - crm.schemas.companies.write - oauth2: - crm.schemas.subscriptions.write - oauth2: - crm.schemas.emails.write - oauth2: - crm.schemas.custom.write - oauth2: - crm.schemas.listings.write - oauth2: - crm.pipelines.orders.write - oauth2: - crm.objects.users.write - oauth2: - tickets.highly_sensitive.v2 - oauth2: - crm.schemas.services.write - oauth2: - crm.objects.orders.write - oauth2: - crm.schemas.notes.write - oauth2: - crm.schemas.meetings.write - oauth2: - crm.schemas.deals.write - oauth2: - crm.objects.carts.write - oauth2: - crm.schemas.calls.write - oauth2: - crm.schemas.tickets.write - oauth2: - crm.objects.tickets.highly_sensitive.write patch: tags: - Basic summary: Update a property description: Perform a partial update of a property identified by { propertyName }. Provided fields will be overwritten. operationId: patch-/crm/properties/2026-09/{objectType}/{propertyName}_/crm/properties/2025-09/{objectType}/{propertyName} parameters: - name: objectType in: path description: '' required: true style: simple explode: false schema: type: string - name: propertyName in: path description: '' required: true style: simple explode: false schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PropertyUpdate' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/Property' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.schemas.quotes.write - oauth2: - tickets - oauth2: - crm.schemas.invoices.write - oauth2: - crm.schemas.orders.write - oauth2: - crm.schemas.commercepayments.write - oauth2: - crm.schemas.courses.write - oauth2: - tickets.sensitive.v2 - oauth2: - e-commerce - oauth2: - crm.schemas.appointments.write - oauth2: - crm.schemas.tasks.write - oauth2: - crm.schemas.contacts.write - oauth2: - crm.schemas.carts.write - oauth2: - crm.objects.tickets.sensitive.write - oauth2: - crm.schemas.companies.write - oauth2: - crm.schemas.subscriptions.write - oauth2: - crm.schemas.emails.write - oauth2: - crm.schemas.custom.write - oauth2: - crm.schemas.listings.write - oauth2: - crm.pipelines.orders.write - oauth2: - crm.objects.users.write - oauth2: - tickets.highly_sensitive.v2 - oauth2: - crm.schemas.services.write - oauth2: - crm.objects.orders.write - oauth2: - crm.schemas.notes.write - oauth2: - crm.schemas.meetings.write - oauth2: - crm.schemas.deals.write - oauth2: - crm.objects.carts.write - oauth2: - crm.schemas.calls.write - oauth2: - crm.schemas.tickets.write - oauth2: - crm.objects.tickets.highly_sensitive.write x-hubspot-user-level-auth: internalOnly: false components: schemas: BatchInputPropertyCreate: required: - inputs type: object properties: inputs: type: array items: $ref: '#/components/schemas/PropertyCreate' BatchInputPropertyName: required: - inputs type: object properties: inputs: type: array items: $ref: '#/components/schemas/PropertyName' BatchReadInputPropertyName: required: - archived - dataSensitivity - inputs type: object properties: archived: type: boolean description: Specifies whether the property is archived. dataSensitivity: type: string description: Indicates the sensitivity level of the data, such as 'non_sensitive', 'sensitive', or 'highly_sensitive'. enum: - highly_sensitive - non_sensitive - sensitive inputs: type: array items: $ref: '#/components/schemas/PropertyName' BatchResponseProperty: required: - completedAt - results - startedAt - status type: object properties: completedAt: type: string description: The timestamp indicating when the batch operation was completed. format: date-time links: type: object additionalProperties: type: string description: A collection of URLs linking to documentation or resources related to the batch operation. requestedAt: type: string description: The timestamp indicating when the batch operation was requested. format: date-time results: type: array items: $ref: '#/components/schemas/Property' startedAt: type: string description: The timestamp indicating when the batch operation began processing. format: date-time status: type: string description: The current status of the batch operation, with possible values being CANCELED, COMPLETE, PENDING, or PROCESSING. enum: - CANCELED - COMPLETE - PENDING - PROCESSING BatchResponsePropertyWithErrors: required: - completedAt - results - startedAt - status type: object properties: completedAt: type: string format: date-time errors: type: array items: $ref: '#/components/schemas/StandardError' links: type: object additionalProperties: type: string numErrors: type: integer format: int32 requestedAt: type: string format: date-time results: type: array items: $ref: '#/components/schemas/Property' startedAt: type: string format: date-time status: type: string enum: - CANCELED - COMPLETE - PENDING - PROCESSING CollectionResponsePropertyGroupNoPaging: required: - results type: object properties: results: type: array items: $ref: '#/components/schemas/PropertyGroup' CollectionResponsePropertyNoPaging: required: - results type: object properties: results: type: array items: $ref: '#/components/schemas/Property' Error: required: - category - correlationId - message type: object properties: category: type: string description: The error category context: type: object additionalProperties: type: array items: type: string description: Context about the error condition example: '{invalidPropertyName=[propertyValue], missingScopes=[scope1, scope2]}' correlationId: type: string description: A unique identifier for the request. Include this value with any error reports or support tickets format: uuid example: aeb5f871-7f07-4993-9211-075dc63e7cbf errors: type: array description: further information about the error items: $ref: '#/components/schemas/ErrorDetail' links: type: object additionalProperties: type: string description: A map of link names to associated URIs containing documentation about the error or recommended remediation steps message: type: string description: A human readable message describing the error along with remediation steps where appropriate example: An error occurred subCategory: type: string description: A specific category that contains more specific detail about the error description: Represents an error response returned by the API when an operation fails. This component is used in various endpoints to provide detailed information about the error encountered. example: message: Invalid input (details will vary based on the error) correlationId: aeb5f871-7f07-4993-9211-075dc63e7cbf category: VALIDATION_ERROR links: knowledge-base: https://www.hubspot.com/products/service/knowledge-base ErrorDetail: required: - message type: object properties: code: type: string description: The status code associated with the error detail context: type: object additionalProperties: type: array items: type: string description: Context about the error condition example: '{missingScopes=[scope1, scope2]}' in: type: string description: The name of the field or parameter in which the error was found. message: type: string description: A human readable message describing the error along with remediation steps where appropriate subCategory: type: string description: A specific category that contains more specific detail about the error description: Represents detailed information about an error that occurred in the API. This component is used to provide additional context and specifics about errors, typically as part of an error response. Option: required: - hidden - label - value type: object properties: description: type: string description: A description of the option. displayOrder: type: integer description: Options are displayed in order starting with the lowest positive integer value. Values of -1 will cause the option to be displayed after any positive values. format: int32 hidden: type: boolean description: Hidden options will not be displayed in HubSpot. label: type: string description: A human-readable option label that will be shown in HubSpot. value: type: string description: The internal value of the option, which must be used when setting the property value through the API. description: A HubSpot property option OptionInput: required: - displayOrder - hidden - label - value type: object properties: description: type: string description: A description of the option. displayOrder: type: integer description: Options are shown in order starting with the lowest positive integer value. Values of -1 will cause the option to be displayed after any positive values. format: int32 hidden: type: boolean description: Hidden options won't be shown in HubSpot. label: type: string description: A human-readable option label that will be shown in HubSpot. value: type: string description: The internal value of the option, which must be used when setting the property value through the API. Property: required: - description - fieldType - groupName - label - name - options - type type: object properties: archived: type: boolean description: Whether or not the property is archived. archivedAt: type: string description: When the property was archived. format: date-time calculated: type: boolean description: For default properties, true indicates that the property is calculated by a HubSpot process. It has no effect for custom properties. calculationFormula: type: string description: Represents a formula that is used to compute a calculated property. createdAt: type: string description: The timestamp when the property was created, in ISO 8601 format. format: date-time createdUserId: type: string description: The internal user ID of the user who created the property in HubSpot. This field may not exist if the property was created outside of HubSpot. currencyPropertyName: type: string description: The name of the related currency property. dataSensitivity: type: string description: Indicates the sensitivity level of the property, such as "non_sensitive", "sensitive", or "highly_sensitive". enum: - highly_sensitive - non_sensitive - sensitive dateDisplayHint: type: string description: Indicates how date values should be displayed, with options such as 'absolute', 'absolute_with_relative', 'time_since', or 'time_until'. enum: - absolute - absolute_with_relative - time_since - time_until description: type: string description: A description of the property that will be shown as help text in HubSpot. displayOrder: type: integer description: Properties are shown in order, starting with the lowest positive integer value. format: int32 externalOptions: type: boolean description: For default properties, true indicates that the options are stored externally to the property settings. fieldType: type: string description: Controls how the property appears in HubSpot. formField: type: boolean description: Whether or not the property can be used in a HubSpot form. groupName: type: string description: The name of the property group the property belongs to. hasUniqueValue: type: boolean description: Whether or not the property's value must be unique. Once set, this can't be changed. hidden: type: boolean description: Whether or not the property will be hidden from the HubSpot UI. It's recommended this be set to false for custom properties. example: false hubspotDefined: type: boolean description: This will be true for default object properties built into HubSpot. label: type: string description: A human-readable property label that will be shown in HubSpot. modificationMetadata: $ref: '#/components/schemas/PropertyModificationMetadata' name: type: string description: The internal property name, which must be used when referencing the property via the API. numberDisplayHint: type: string description: 'Hint for how a number property is displayed and validated in HubSpot''s UI. Can be: "unformatted", "formatted", "currency", "percentage", "duration", or "probability".' enum: - currency - duration - formatted - percentage - probability - unformatted options: type: array description: A list of valid options for the property. This field is required for enumerated properties, but will be empty for other property types. items: $ref: '#/components/schemas/Option' referencedObjectType: type: string description: If this property is related to other object(s), they'll be listed here. sensitiveDataCategories: type: array description: When sensitiveData is true, lists the type of sensitive data contained in the property (e.g., "HIPAA"). items: type: string showCurrencySymbol: type: boolean description: Whether or not the property will display the currency symbol set in the account settings. textDisplayHint: type: string description: 'Hint for how the text is displayed and validated in HubSpot''s UI. Can be: "unformatted_single_line", "multi_line", "email", "phone_number", "domain_name", "ip_address", "physical_address", or "postal_code".' enum: - domain_name - email - ip_address - multi_line - phone_number - physical_address - postal_code - unformatted_single_line type: type: string description: The property data type. updatedAt: type: string description: The timestamp when the property was last updated, in ISO 8601 format. format: date-time updatedUserId: type: string description: The internal user ID of the user who updated the property in HubSpot. This field may not exist if the property was updated outside of HubSpot. description: A HubSpot property PropertyCreate: required: - fieldType - groupName - label - name - type type: object properties: calculationFormula: type: string description: Represents a formula that is used to compute a calculated property. currencyPropertyName: type: string dataSensitivity: type: string description: 'Indicates the sensitivity level of the property, with options: highly_sensitive, non_sensitive, or sensitive.' enum: - highly_sensitive - non_sensitive - sensitive description: type: string description: A description of the property that will be shown as help text in HubSpot. displayOrder: type: integer description: Properties are displayed in order starting with the lowest positive integer value. Values of -1 will cause the property to be displayed after any positive values. format: int32 externalOptions: type: boolean description: Applicable only for 'enumeration' type properties. Should be set to true in conjunction with a 'referencedObjectType' of 'OWNER'. Otherwise false. fieldType: type: string description: Controls how the property appears in HubSpot. enum: - booleancheckbox - calculation_equation - checkbox - date - file - html - number - phonenumber - radio - select - text - textarea formField: type: boolean description: Whether or not the property can be used in a HubSpot form. groupName: type: string description: The name of the property group the property belongs to. hasUniqueValue: type: boolean description: Whether or not the property's value must be unique. Once set, this can't be changed. hidden: type: boolean description: If true, the property won't be visible and can't be used in HubSpot. label: type: string description: A human-readable property label that will be shown in HubSpot. name: type: string description: The internal property name, which must be used when referencing the property via the API. numberDisplayHint: type: string enum: - currency - duration - formatted - percentage - probability - unformatted options: type: array description: A list of valid options for the property. This field is required for enumerated properties. items: $ref: '#/components/schemas/OptionInput' referencedObjectType: type: string description: Should be set to 'OWNER' when 'externalOptions' is true, which causes the property to dynamically pull option values from the current HubSpot users. showCurrencySymbol: type: boolean textDisplayHint: type: string enum: - domain_name - email - ip_address - multi_line - phone_number - physical_address - postal_code - unformatted_single_line type: type: string description: The data type of the property. enum: - bool - date - datetime - enumeration - number - phone_number - string PropertyGroup: required: - archived - label - name type: object properties: archived: type: boolean description: Indicates whether the property group is archived. displayOrder: type: integer description: Property groups are displayed in order starting with the lowest positive integer value. Values of -1 will cause the property group to be displayed after any positive values. format: int32 label: type: string description: A human-readable label that will be shown in HubSpot. name: type: string description: The internal property group name, which must be used when referencing the property group via the API. PropertyGroupCreate: required: - label - name type: object properties: displayOrder: type: integer description: Property groups are displayed in order starting with the lowest positive integer value. Values of -1 will cause the property group to be displayed after any positive values. format: int32 label: type: string description: A human-readable label that will be shown in HubSpot. name: type: string description: The internal property group name, which must be used when referencing the property group via the API. PropertyGroupUpdate: type: object properties: displayOrder: type: integer description: Property groups are displayed in order starting with the lowest positive integer value. Values of -1 will cause the property group to be displayed after any positive values. format: int32 label: type: string description: A human-readable label that will be shown in HubSpot. PropertyModificationMetadata: required: - archivable - readOnlyDefinition - readOnlyValue type: object properties: archivable: type: boolean description: Specifies whether the property can be archived. readOnlyDefinition: type: boolean description: Indicates whether the property's definition is read-only and cannot be modified. readOnlyOptions: type: boolean description: Indicates whether the property's options are read-only and cannot be modified. readOnlyValue: type: boolean description: Indicates whether the property's value is read-only and cannot be modified. PropertyName: required: - name type: object properties: name: type: string description: The name of the property to read or modify. PropertyUpdate: type: object properties: calculationFormula: type: string description: Represents a formula that is used to compute a calculated property. currencyPropertyName: type: string description: type: string description: A description of the property that will be shown as help text in HubSpot. displayOrder: type: integer description: Properties are displayed in order starting with the lowest positive integer value. Values of -1 will cause the Property to be displayed after any positive values. format: int32 fieldType: type: string description: Controls how the property appears in HubSpot. enum: - booleancheckbox - calculation_equation - checkbox - date - file - html - number - phonenumber - radio - select - text - textarea formField: type: boolean description: Whether or not the property can be used in a HubSpot form. groupName: type: string description: The name of the property group the property belongs to. hidden: type: boolean description: If true, the property won't be visible and can't be used in HubSpot. label: type: string description: A human-readable property label that will be shown in HubSpot. numberDisplayHint: type: string enum: - currency - duration - formatted - percentage - probability - unformatted options: type: array description: A list of valid options for the property. items: $ref: '#/components/schemas/OptionInput' showCurrencySymbol: type: boolean textDisplayHint: type: string enum: - domain_name - email - ip_address - multi_line - phone_number - physical_address - postal_code - unformatted_single_line type: type: string description: The data type of the property. enum: - bool - date - datetime - enumeration - number - phone_number - string StandardError: required: - category - context - errors - links - message - status type: object properties: category: type: string description: The main category of the error. context: type: object additionalProperties: type: array items: type: string description: Additional context-specific information related to the error. errors: type: array description: The detailed error objects. items: $ref: '#/components/schemas/ErrorDetail' id: type: string description: A unique ID for the error instance. links: type: object additionalProperties: type: string description: URLs linking to documentation or resources associated with the error. message: type: string description: A human-readable string describing the error and possible remediation steps. status: type: string description: The HTTP status code associated with the error. subCategory: type: object properties: {} description: A more specific error category within each main category. description: Represents a standard error response in the HubSpot API, providing detailed information about an error that occurred during an API request. responses: Error: description: An error occurred. content: '*/*': schema: $ref: '#/components/schemas/Error' securitySchemes: developer_hapikey: type: apiKey name: hapikey in: query oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://app.hubspot.com/oauth/authorize tokenUrl: https://api.hubapi.com/oauth/v1/token scopes: automation: '' cpq.quotes.read: '' cpq.quotes.write: '' crm.objects.appointments.read: '' crm.objects.appointments.sensitive.read.v2: '' crm.objects.appointments.sensitive.write.v2: '' crm.objects.appointments.write: '' crm.objects.calls.read: '' crm.objects.carts.read: '' crm.objects.carts.write: '' crm.objects.commercepayments.write: '' crm.objects.companies.highly_sensitive.read.v2: '' crm.objects.companies.highly_sensitive.write.v2: '' crm.objects.companies.read: '' crm.objects.companies.sensitive.read.v2: '' crm.objects.companies.sensitive.write.v2: '' crm.objects.companies.write: '' crm.objects.contacts.highly_sensitive.read.v2: '' crm.objects.contacts.highly_sensitive.write.v2: '' crm.objects.contacts.read: '' crm.objects.contacts.sensitive.read.v2: '' crm.objects.contacts.sensitive.write.v2: '' crm.objects.contacts.write: '' crm.objects.courses.read: '' crm.objects.courses.write: '' crm.objects.custom.highly_sensitive.read.v2: '' crm.objects.custom.highly_sensitive.write.v2: '' crm.objects.custom.read: '' crm.objects.custom.sensitive.read.v2: '' crm.objects.custom.sensitive.write.v2: '' crm.objects.custom.write: '' crm.objects.deals.highly_sensitive.read.v2: '' crm.objects.deals.highly_sensitive.write.v2: '' crm.objects.deals.read: '' crm.objects.deals.sensitive.read.v2: '' crm.objects.deals.sensitive.write.v2: '' crm.objects.deals.write: '' crm.objects.emails.read: '' crm.objects.feedback_submissions.read: '' crm.objects.goals.read: '' crm.objects.goals.write: '' crm.objects.invoices.read: '' crm.objects.invoices.write: '' crm.objects.leads.read: '' crm.objects.leads.write: '' crm.objects.line_items.read: '' crm.objects.line_items.write: '' crm.objects.listings.read: '' crm.objects.listings.write: '' crm.objects.marketing_events.read: '' crm.objects.marketing_events.write: '' crm.objects.meetings.read: '' crm.objects.notes.read: '' crm.objects.orders.read: '' crm.objects.orders.write: '' crm.objects.owners.read: '' crm.objects.products.write: '' crm.objects.projects.highly_sensitive.read: '' crm.objects.projects.highly_sensitive.write: '' crm.objects.projects.read: '' crm.objects.projects.sensitive.read: '' crm.objects.projects.sensitive.write: '' crm.objects.projects.write: '' crm.objects.quotes.read: '' crm.objects.quotes.write: '' crm.objects.services.read: '' crm.objects.services.write: '' crm.objects.subscriptions.read: '' crm.objects.subscriptions.write: '' crm.objects.tasks.read: '' crm.objects.tickets.highly_sensitive.read: '' crm.objects.tickets.highly_sensitive.write: '' crm.objects.tickets.sensitive.read: '' crm.objects.tickets.sensitive.write: '' crm.objects.users.read: '' crm.objects.users.write: '' crm.pipelines.orders.read: '' crm.pipelines.orders.write: '' crm.schemas.appointments.read: '' crm.schemas.appointments.write: '' crm.schemas.calls.read: '' crm.schemas.calls.write: '' crm.schemas.carts.read: '' crm.schemas.carts.write: '' crm.schemas.commercepayments.read: '' crm.schemas.commercepayments.write: '' crm.schemas.companies.read: '' crm.schemas.companies.write: '' crm.schemas.contacts.read: '' crm.schemas.contacts.write: '' crm.schemas.courses.read: '' crm.schemas.courses.write: '' crm.schemas.custom.read: '' crm.schemas.custom.write: '' crm.schemas.deals.read: '' crm.schemas.deals.write: '' crm.schemas.emails.read: '' crm.schemas.emails.write: '' crm.schemas.invoices.read: '' crm.schemas.invoices.write: '' crm.schemas.line_items.read: '' crm.schemas.listings.read: '' crm.schemas.listings.write: '' crm.schemas.meetings.read: '' crm.schemas.meetings.write: '' crm.schemas.notes.read: '' crm.schemas.notes.write: '' crm.schemas.orders.read: '' crm.schemas.orders.write: '' crm.schemas.projects.read: '' crm.schemas.quotes.read: '' crm.schemas.quotes.write: '' crm.schemas.services.read: '' crm.schemas.services.write: '' crm.schemas.subscriptions.read: '' crm.schemas.subscriptions.write: '' crm.schemas.tasks.read: '' crm.schemas.tasks.write: '' crm.schemas.tickets.read: '' crm.schemas.tickets.write: '' e-commerce: '' media_bridge.read: '' tickets: '' tickets.highly_sensitive.v2: '' tickets.sensitive.v2: '' timeline: '' private_apps: type: apiKey name: private-app in: header private_apps_legacy: type: apiKey name: private-app-legacy in: header x-hubspot-available-client-libraries: - Node - Python - Ruby - PHP x-hubspot-product-tier-requirements: marketing: FREE sales: FREE service: FREE cms: FREE commerce: FREE crmHub: FREE dataHub: FREE