openapi: 3.0.1 info: title: HubSpot Conversations Custom Channels description: Basepom for all HubSpot Projects version: 2026-09 x-hubspot-product-tier-requirements: marketing: FREE sales: PROFESSIONAL service: PROFESSIONAL cms: FREE commerce: FREE crmHub: FREE dataHub: FREE x-hubspot-api-use-case: Allow admins to install an integration with a third-party messaging channel that your team uses to communicate with customers, to allow users in your account to manage their conversations for that channel directly in HubSpot. x-hubspot-introduction: 'Use the custom channels API to create custom channels to build a bridge between an external message service and HubSpot''s inbox or help desk features. ' servers: - url: https://api.hubapi.com tags: - name: Basic - name: Channel accounts - name: Channels - name: Messages paths: /conversations/custom-channels/2026-09: get: tags: - Basic operationId: get-/conversations/custom-channels/2026-09_/conversations/custom-channels/v3 parameters: - name: after in: query description: The paging cursor token of the last successfully read resource will be returned as the `paging.next.after` JSON property of a paged response containing more results. required: false style: form explode: true schema: type: string - name: defaultPageLength in: query description: '' required: false style: form explode: true schema: type: integer format: int32 - name: limit in: query description: The maximum number of results to display per page. required: false style: form explode: true schema: type: integer format: int32 - name: sort in: query description: '' required: false style: form explode: true schema: type: array items: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CollectionResponseWithTotalPublicChannelIntegrationChannel' default: description: '' $ref: '#/components/responses/Error' security: [] post: tags: - Basic operationId: post-/conversations/custom-channels/2026-09_/conversations/custom-channels/v3 parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicChannelIntegrationChannelCreate' 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/PublicChannelIntegrationChannel' default: description: '' $ref: '#/components/responses/Error' security: [] /conversations/custom-channels/2026-09/{channelId}: get: tags: - Channels summary: Get a custom channel description: Retrieve the details about a custom channel. This API allows you to see a custom channel's current capabilties and other configuration metadata operationId: get-/conversations/custom-channels/2026-09/{channelId} parameters: - name: channelId in: path description: '' required: true style: simple explode: false schema: type: integer format: int32 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/PublicChannelIntegrationChannel' default: description: '' $ref: '#/components/responses/Error' security: [] delete: tags: - Channels summary: Archive a custom channel description: Archive an existing registered custom channel operationId: delete-/conversations/custom-channels/2026-09/{channelId} parameters: - name: channelId in: path description: '' required: true style: simple explode: false schema: type: integer format: int32 responses: '204': description: No content content: {} default: description: '' $ref: '#/components/responses/Error' security: [] patch: tags: - Channels summary: Update a custom channel description: Update the capabilities for an existing. You can also use it to update the channel's webhookUri and its channelAccountConnectionRedirectUrl. operationId: patch-/conversations/custom-channels/2026-09/{channelId} parameters: - name: channelId in: path description: '' required: true style: simple explode: false schema: type: integer format: int32 requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicChannelIntegrationChannelPatch' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/PublicChannelIntegrationChannel' default: description: '' $ref: '#/components/responses/Error' security: [] /conversations/custom-channels/2026-09/{channelId}/channel-account-staging-tokens/{accountToken}: patch: tags: - Channel accounts summary: Update a channel account staging token description: Update a channel account staging token's account name and delivery identifier. This information will be applied to the channel account created from this staging token. This is used for public apps. operationId: patch-/conversations/custom-channels/2026-09/{channelId}/channel-account-staging-tokens/{accountToken} parameters: - name: accountToken in: path description: '' required: true style: simple explode: false schema: type: string - name: channelId in: path description: '' required: true style: simple explode: false schema: type: integer format: int32 requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicChannelAccountStagingTokenUpdateRequest' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/PublicChannelAccountStagingToken' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - conversations.custom_channels.read - oauth2: - conversations.custom_channels.write /conversations/custom-channels/2026-09/{channelId}/channel-accounts: get: tags: - Channel accounts summary: Get accounts for a channel description: Retrieve a list of accounts for a custom channel. operationId: get-/conversations/custom-channels/2026-09/{channelId}/channel-accounts parameters: - name: channelId in: path description: '' required: true style: simple explode: false schema: type: integer format: int32 - name: after in: query description: The paging cursor token of the last successfully read resource will be returned as the `paging.next.after` JSON property of a paged response containing more results. required: false style: form explode: true 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 - name: defaultPageLength in: query description: '' required: false style: form explode: true schema: type: integer format: int32 - name: deliveryIdentifierType in: query description: '' required: false style: form explode: true schema: type: array items: type: string enum: - HS_EMAIL_ADDRESS - HS_PHONE_NUMBER - HS_SHORT_CODE - CHANNEL_SPECIFIC_OPAQUE_ID - name: deliveryIdentifierValue in: query description: '' required: false style: form explode: true schema: type: array items: type: string - name: limit in: query description: The maximum number of results to display per page. required: false style: form explode: true schema: type: integer format: int32 - name: sort in: query description: '' required: false style: form explode: true schema: type: array items: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CollectionResponseWithTotalPublicChannelAccount' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - conversations.custom_channels.read - oauth2: - conversations.custom_channels.write post: tags: - Channel accounts summary: Create a channel account description: Create a new account for a channel. Multiple accounts can communicate over a single channel using different delivery identifiers. operationId: post-/conversations/custom-channels/2026-09/{channelId}/channel-accounts parameters: - name: channelId in: path description: '' required: true style: simple explode: false schema: type: integer format: int32 requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicChannelAccountEgg' 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/PublicChannelAccount' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - conversations.custom_channels.read - oauth2: - conversations.custom_channels.write /conversations/custom-channels/2026-09/{channelId}/channel-accounts/{channelAccountId}: get: tags: - Channels summary: Get a channel account by id description: Retrieve the details for a specific channel account. This contains all the metadata about your channel account, including its channel, associated inbox id, and delivery identifier information. operationId: get-/conversations/custom-channels/2026-09/{channelId}/channel-accounts/{channelAccountId} parameters: - name: channelAccountId in: path description: '' required: true style: simple explode: false schema: type: integer format: int64 - name: channelId in: path description: '' required: true style: simple explode: false schema: type: integer format: int32 - 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 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/PublicChannelAccount' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - conversations.custom_channels.read - oauth2: - conversations.custom_channels.write patch: tags: - Channel accounts summary: Update a channel account description: This API is used to update the name of the channel account and it's isAuthorized status. Setting to isAuthorized flag to False disables the channel account. operationId: patch-/conversations/custom-channels/2026-09/{channelId}/channel-accounts/{channelAccountId} parameters: - name: channelAccountId in: path description: '' required: true style: simple explode: false schema: type: integer format: int64 - name: channelId in: path description: '' required: true style: simple explode: false schema: type: integer format: int32 requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicChannelAccountUpdateRequest' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/PublicChannelAccount' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - conversations.custom_channels.read - oauth2: - conversations.custom_channels.write /conversations/custom-channels/2026-09/{channelId}/messages: post: tags: - Messages summary: Publish a message description: Publish a message over your custom channel operationId: post-/conversations/custom-channels/2026-09/{channelId}/messages parameters: - name: channelId in: path description: '' required: true style: simple explode: false schema: type: integer format: int32 requestBody: content: application/json: schema: $ref: '#/components/schemas/ChannelIntegrationMessageEgg' 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/PublicConversationsMessage' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - conversations.custom_channels.write /conversations/custom-channels/2026-09/{channelId}/messages/{messageId}: get: tags: - Messages summary: Get a message description: Get the details for a specific message sent over a custom channel operationId: get-/conversations/custom-channels/2026-09/{channelId}/messages/{messageId} parameters: - name: channelId in: path description: '' required: true style: simple explode: false schema: type: integer format: int32 - name: messageId in: path description: '' required: true style: simple explode: false schema: type: string responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/PublicConversationsMessage' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - conversations.custom_channels.read patch: tags: - Messages summary: 'Update a message ' description: Update a message's status to indicate if it was successfully sent, failed to send, or was read. For failed messages, this can also include the error message for the failure. operationId: patch-/conversations/custom-channels/2026-09/{channelId}/messages/{messageId} parameters: - name: channelId in: path description: '' required: true style: simple explode: false schema: type: integer format: int32 - name: messageId in: path description: '' required: true style: simple explode: false schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicChannelIntegrationMessageUpdateRequest' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/PublicConversationsMessage' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - conversations.custom_channels.write components: schemas: ChannelIntegrationMessageEgg: required: - attachments - channelAccountId - messageDirection - recipients - senders - text - timestamp type: object properties: associateWithContactId: type: integer format: int64 attachments: type: array items: oneOf: - $ref: '#/components/schemas/FileAttachment' - $ref: '#/components/schemas/LocationAttachment' - $ref: '#/components/schemas/ContactAttachment' - $ref: '#/components/schemas/UnsupportedContentAttachment' - $ref: '#/components/schemas/MessageHeaderAttachment' - $ref: '#/components/schemas/QuickRepliesAttachment' - $ref: '#/components/schemas/SocialMetadataIntegrationAttachment' channelAccountId: type: string inReplyToId: type: string integrationIdempotencyId: type: string integrationThreadId: type: string messageDirection: type: string enum: - INCOMING - OUTGOING preResolvedContacts: $ref: '#/components/schemas/PreResolvedContacts' recipients: type: array items: $ref: '#/components/schemas/ChannelIntegrationParticipant' richText: type: string senders: type: array items: $ref: '#/components/schemas/ChannelIntegrationParticipant' text: type: string timestamp: type: string format: date-time ChannelIntegrationParticipant: required: - deliveryIdentifier type: object properties: deliveryIdentifier: $ref: '#/components/schemas/PublicDeliveryIdentifier' name: type: string senderActorId: type: string CollectionResponseWithTotalPublicChannelAccount: required: - results - total type: object properties: paging: $ref: '#/components/schemas/Paging' results: type: array items: $ref: '#/components/schemas/PublicChannelAccount' total: type: integer format: int32 CollectionResponseWithTotalPublicChannelIntegrationChannel: required: - results - total type: object properties: paging: $ref: '#/components/schemas/Paging' results: type: array items: $ref: '#/components/schemas/PublicChannelIntegrationChannel' total: type: integer format: int32 ContactAddress: type: object properties: city: type: string country: type: string countryCode: type: string state: type: string street: type: string type: type: string enum: - HOME - WORK zip: type: string ContactAttachment: title: CONTACT required: - contactProfile - type type: object properties: contactProfile: $ref: '#/components/schemas/ContactProfile' type: type: string default: CONTACT enum: - CONTACT x-hubspot-sub-type-impl: true ContactEmail: required: - email type: object properties: email: type: string type: type: string enum: - HOME - WORK ContactName: type: object properties: firstName: type: string lastName: type: string middleName: type: string prefix: type: string suffix: type: string ContactOrg: type: object properties: company: type: string department: type: string title: type: string ContactPhone: required: - phone type: object properties: phone: type: string type: type: string enum: - CELL - HOME - MAIN - WORK ContactProfile: required: - addresses - emails - phones - urls type: object properties: addresses: type: array items: $ref: '#/components/schemas/ContactAddress' emails: type: array items: $ref: '#/components/schemas/ContactEmail' name: $ref: '#/components/schemas/ContactName' org: $ref: '#/components/schemas/ContactOrg' phones: type: array items: $ref: '#/components/schemas/ContactPhone' urls: type: array items: $ref: '#/components/schemas/ContactUrl' ContactUrl: required: - url type: object properties: type: type: string enum: - HOME - WORK url: type: string 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. FileAttachment: title: FILE required: - fileId - type type: object properties: fileId: type: string fileUsageType: type: string enum: - AUDIO - IMAGE - OTHER - STICKER - VOICE_RECORDING type: type: string default: FILE enum: - FILE x-hubspot-sub-type-impl: true LocationAttachment: title: LOCATION required: - latitude - longitude - type type: object properties: address: type: string latitude: type: number longitude: type: number name: type: string type: type: string default: LOCATION enum: - LOCATION url: type: string x-hubspot-sub-type-impl: true MessageHeaderAttachment: title: MESSAGE_HEADER required: - type type: object properties: fileId: type: integer format: int64 text: type: string type: type: string default: MESSAGE_HEADER enum: - MESSAGE_HEADER x-hubspot-sub-type-impl: true NextPage: required: - after type: object properties: after: type: string description: A paging cursor token for retrieving subsequent pages. link: type: string description: A URL that can be used to retrieve the next page results. description: Specifies the paging information needed to retrieve the next set of results in a paginated API response Paging: type: object properties: next: $ref: '#/components/schemas/NextPage' prev: $ref: '#/components/schemas/PreviousPage' PreResolvedContact: required: - contactPropertiesLeadingToMatch - contactVid type: object properties: contactPropertiesLeadingToMatch: type: array items: type: string enum: - address - annualrevenue - associatedcompanyid - associatedcompanylastupdated - city - closedate - company - company_size - country - createdate - currentlyinworkflow - date_of_birth - days_to_close - degree - email - engagements_last_meeting_booked - engagements_last_meeting_booked_campaign - engagements_last_meeting_booked_medium - engagements_last_meeting_booked_source - fax - field_of_study - first_conversion_date - first_conversion_event_name - first_deal_created_date - firstname - followercount - gender - graduation_date - hs_active_contracts_arr - hs_active_contracts_mrr - hs_active_contracts_tcv - hs_additional_emails - hs_all_contact_vids - hs_analytics_average_page_views - hs_analytics_first_referrer - hs_analytics_first_timestamp - hs_analytics_first_touch_converting_campaign - hs_analytics_first_url - hs_analytics_first_visit_timestamp - hs_analytics_last_referrer - hs_analytics_last_timestamp - hs_analytics_last_touch_converting_campaign - hs_analytics_last_url - hs_analytics_last_visit_timestamp - hs_analytics_num_event_completions - hs_analytics_num_page_views - hs_analytics_num_visits - hs_analytics_revenue - hs_analytics_source - hs_analytics_source_composite_data - hs_analytics_source_data_1 - hs_analytics_source_data_2 - hs_associated_target_accounts - hs_avatar_filemanager_key - hs_bing_ad_clicked - hs_bing_click_id - hs_buying_role - hs_calculated_form_submissions - hs_calculated_merged_vids - hs_calculated_mobile_number - hs_calculated_phone_number - hs_calculated_phone_number_area_code - hs_calculated_phone_number_country_code - hs_calculated_phone_number_region_code - hs_chat_assistant_iql_date - hs_chat_assistant_source - hs_chat_assistant_summary - hs_chatgpt_ad_clicked - hs_chatgpt_click_id - hs_clicked_linkedin_ad - hs_consent_to_email_tracking - hs_contact_creation_legal_basis_source_instance_id - hs_contact_enrichment_opt_out - hs_contact_enrichment_opt_out_timestamp - hs_content_membership_email - hs_content_membership_email_confirmed - hs_content_membership_follow_up_enqueued_at - hs_content_membership_notes - hs_content_membership_registered_at - hs_content_membership_registration_domain_sent_to - hs_content_membership_registration_email_sent_at - hs_content_membership_status - hs_conversations_visitor_email - hs_count_is_unworked - hs_count_is_worked - hs_country_region_code - hs_created_by_conversations - hs_cross_account_note - hs_cross_sell_opportunity - hs_current_customer - hs_currently_enrolled_in_prospecting_agent - hs_customer_agent_lead_status - hs_data_privacy_ads_consent - hs_date_entered_customer - hs_date_entered_evangelist - hs_date_entered_lead - hs_date_entered_marketingqualifiedlead - hs_date_entered_opportunity - hs_date_entered_other - hs_date_entered_salesqualifiedlead - hs_date_entered_subscriber - hs_date_exited_customer - hs_date_exited_evangelist - hs_date_exited_lead - hs_date_exited_marketingqualifiedlead - hs_date_exited_opportunity - hs_date_exited_other - hs_date_exited_salesqualifiedlead - hs_date_exited_subscriber - hs_document_last_revisited - hs_email_bad_address - hs_email_bounce - hs_email_click - hs_email_communication_subscriptions_opted_in - hs_email_communication_subscriptions_opted_out - hs_email_customer_quarantined_reason - hs_email_delivered - hs_email_domain - hs_email_engagement_likelihood_category - hs_email_first_click_date - hs_email_first_open_date - hs_email_first_reply_date - hs_email_first_send_date - hs_email_hard_bounce_reason - hs_email_hard_bounce_reason_enum - hs_email_is_ineligible - hs_email_last_click_date - hs_email_last_email_name - hs_email_last_open_date - hs_email_last_reply_date - hs_email_last_send_date - hs_email_live_sourcing_restricted - hs_email_open - hs_email_optimal_send_day_of_week - hs_email_optimal_send_time_of_day - hs_email_optout - hs_email_optout_survey_reason - hs_email_quarantined - hs_email_quarantined_reason - hs_email_recipient_fatigue_recovery_time - hs_email_replied - hs_email_sends_since_last_engagement - hs_email_type - hs_emailconfirmationstatus - hs_employment_change_detected_date - hs_enforce_double_opt_in - hs_enriched_email_bounce_detected - hs_excluded_from_cross_account_data_mirroring - hs_facebook_ad_clicked - hs_facebook_click_id - hs_facebookid - hs_feedback_last_ces_survey_date - hs_feedback_last_ces_survey_follow_up - hs_feedback_last_ces_survey_rating - hs_feedback_last_csat_survey_date - hs_feedback_last_csat_survey_follow_up - hs_feedback_last_csat_survey_rating - hs_feedback_last_nps_follow_up - hs_feedback_last_nps_rating - hs_feedback_last_nps_rating_number - hs_feedback_last_survey_date - hs_feedback_show_nps_web_survey - hs_first_closed_order_id - hs_first_engagement_object_id - hs_first_order_closed_date - hs_first_outreach_date - hs_first_subscription_create_date - hs_full_name_or_email - hs_geohash_1 - hs_geohash_2 - hs_geohash_3 - hs_geohash_4 - hs_geohash_5 - hs_geohash_6 - hs_google_click_id - hs_googleplusid - hs_gps_coordinates - hs_gps_error - hs_gps_latitude - hs_gps_longitude - hs_has_active_subscription - hs_inferred_language_codes - hs_intent_paid_up_to_date - hs_intent_signals_enabled - hs_ip_timezone - hs_is_contact - hs_is_enriched - hs_is_mass_marketing_activation_disallowed - hs_is_merge_revertible - hs_is_unworked - hs_job_change_detected_date - hs_journey_stage - hs_language - hs_last_metered_enrichment_timestamp - hs_last_sales_activity_date - hs_last_sales_activity_timestamp - hs_last_sales_activity_type - hs_last_sms_send_date - hs_last_sms_send_name - hs_latest_disqualified_lead_date - hs_latest_meeting_activity - hs_latest_open_lead_date - hs_latest_qualified_lead_date - hs_latest_sequence_ended_date - hs_latest_sequence_enrolled - hs_latest_sequence_enrolled_date - hs_latest_sequence_finished_date - hs_latest_sequence_unenrolled_date - hs_latest_source - hs_latest_source_composite_data - hs_latest_source_data_1 - hs_latest_source_data_2 - hs_latest_source_timestamp - hs_latest_subscription_create_date - hs_latitude - hs_lead_status - hs_legal_basis - hs_lifecyclestage_customer_date - hs_lifecyclestage_evangelist_date - hs_lifecyclestage_lead_date - hs_lifecyclestage_marketingqualifiedlead_date - hs_lifecyclestage_opportunity_date - hs_lifecyclestage_other_date - hs_lifecyclestage_salesqualifiedlead_date - hs_lifecyclestage_subscriber_date - hs_linkedin_ad_clicked - hs_linkedin_click_id - hs_linkedin_url - hs_linkedinid - hs_live_enrichment_deadline - hs_longitude - hs_manual_campaign_ids - hs_marketable_reason_id - hs_marketable_reason_type - hs_marketable_status - hs_marketable_until_renewal - hs_membership_has_accessed_private_content - hs_membership_last_private_content_access_date - hs_messaging_engagement_score - hs_mobile_sdk_push_tokens - hs_next_renewal_date - hs_notes_last_activity - hs_notes_next_activity - hs_notes_next_activity_type - hs_num_active_contracts - hs_num_associated_open_deals - hs_persona - hs_pinned_engagement_id - hs_pipeline - hs_predictivecontactscore - hs_predictivecontactscore_tmp - hs_predictivecontactscore_v2 - hs_predictivecontactscorebucket - hs_predictivescoringtier - hs_predictivescoringtier_tmp - hs_prospecting_agent_activation_email_id - hs_prospecting_agent_activation_status - hs_prospecting_agent_actively_enrolled_count - hs_prospecting_agent_enrollment_status - hs_prospecting_agent_enrollment_status_raw - hs_prospecting_agent_last_enrolled - hs_prospecting_agent_sender - hs_prospecting_agent_total_enrolled_count - hs_quarantined_emails - hs_recent_closed_order_date - hs_reddit_ad_clicked - hs_reddit_click_id - hs_registered_member - hs_registration_method - hs_returning_to_office_detected_date - hs_role - hs_sa_first_engagement_date - hs_sa_first_engagement_descr - hs_sa_first_engagement_object_type - hs_sales_email_last_clicked - hs_sales_email_last_opened - hs_sales_email_last_replied - hs_searchable_calculated_international_mobile_number - hs_searchable_calculated_international_phone_number - hs_searchable_calculated_mobile_number - hs_searchable_calculated_phone_number - hs_seniority - hs_sequences_actively_enrolled_count - hs_sequences_enrolled_count - hs_sequences_is_enrolled - hs_social_facebook_clicks - hs_social_google_plus_clicks - hs_social_last_engagement - hs_social_linkedin_clicks - hs_social_num_broadcast_clicks - hs_social_twitter_clicks - hs_source_object_id - hs_source_portal_id - hs_sourced_contact_origin - hs_state_code - hs_sub_role - hs_testpurge - hs_testrollback - hs_tiktok_ad_clicked - hs_tiktok_click_id - hs_time_between_contact_creation_and_deal_close - hs_time_between_contact_creation_and_deal_creation - hs_time_in_customer - hs_time_in_evangelist - hs_time_in_lead - hs_time_in_marketingqualifiedlead - hs_time_in_opportunity - hs_time_in_other - hs_time_in_salesqualifiedlead - hs_time_in_subscriber - hs_time_to_first_engagement - hs_time_to_move_from_lead_to_customer - hs_time_to_move_from_marketingqualifiedlead_to_customer - hs_time_to_move_from_opportunity_to_customer - hs_time_to_move_from_salesqualifiedlead_to_customer - hs_time_to_move_from_subscriber_to_customer - hs_timezone - hs_twitterid - hs_user_ids_of_all_notification_recipients - hs_v2_cumulative_time_in_customer - hs_v2_cumulative_time_in_evangelist - hs_v2_cumulative_time_in_lead - hs_v2_cumulative_time_in_marketingqualifiedlead - hs_v2_cumulative_time_in_opportunity - hs_v2_cumulative_time_in_other - hs_v2_cumulative_time_in_salesqualifiedlead - hs_v2_cumulative_time_in_subscriber - hs_v2_date_entered_current_stage - hs_v2_date_entered_customer - hs_v2_date_entered_evangelist - hs_v2_date_entered_lead - hs_v2_date_entered_marketingqualifiedlead - hs_v2_date_entered_opportunity - hs_v2_date_entered_other - hs_v2_date_entered_salesqualifiedlead - hs_v2_date_entered_subscriber - hs_v2_date_exited_customer - hs_v2_date_exited_evangelist - hs_v2_date_exited_lead - hs_v2_date_exited_marketingqualifiedlead - hs_v2_date_exited_opportunity - hs_v2_date_exited_other - hs_v2_date_exited_salesqualifiedlead - hs_v2_date_exited_subscriber - hs_v2_latest_time_in_customer - hs_v2_latest_time_in_evangelist - hs_v2_latest_time_in_lead - hs_v2_latest_time_in_marketingqualifiedlead - hs_v2_latest_time_in_opportunity - hs_v2_latest_time_in_other - hs_v2_latest_time_in_salesqualifiedlead - hs_v2_latest_time_in_subscriber - hs_v2_time_in_current_stage - hs_whatsapp_bsuids - hs_whatsapp_phone_number - hs_why_this_contact - hubspot_owner_id - hubspotscore - industry - ip_city - ip_country - ip_country_code - ip_latlon - ip_state - ip_state_code - ip_zipcode - job_function - jobtitle - kloutscoregeneral - lastmodifieddate - lastname - lifecyclestage - linkedinbio - linkedinconnections - marital_status - message - military_status - mobilephone - notes_last_contacted - notes_last_updated - notes_next_activity_date - num_associated_deals - num_contacted_notes - num_conversion_events - num_notes - num_unique_conversion_events - numemployees - owneremail - ownername - phone - photo - recent_conversion_date - recent_conversion_event_name - recent_deal_amount - recent_deal_close_date - relationship_status - salutation - school - seniority - start_date - state - surveymonkeyeventlastupdated - total_revenue - twitterbio - twitterhandle - twitterprofilephoto - webinareventlastupdated - website - work_email - zip contactVid: type: integer format: int64 PreResolvedContacts: required: - contacts type: object properties: contacts: type: array items: $ref: '#/components/schemas/PreResolvedContact' PreviousPage: required: - before type: object properties: before: type: string description: A paging cursor token for retrieving previous pages. link: type: string description: A URL that can be used to retrieve the previous pages' results. description: specifies the paging information needed to retrieve the previous set of results in a paginated API response PublicChannelAccount: required: - active - archived - authorized - channelId - createdAt - id - inboxId - name type: object properties: active: type: boolean archived: type: boolean archivedAt: type: string format: date-time authorized: type: boolean channelId: type: string createdAt: type: string format: date-time deliveryIdentifier: $ref: '#/components/schemas/PublicDeliveryIdentifier' id: type: string inboxId: type: string name: type: string PublicChannelAccountEgg: required: - authorized - inboxId - name type: object properties: authorized: type: boolean deliveryIdentifier: $ref: '#/components/schemas/PublicDeliveryIdentifier' inboxId: type: string name: type: string PublicChannelAccountStagingToken: required: - accountToken - createdAt - genericChannelId - inboxId - userId type: object properties: accountName: type: string accountToken: type: string createdAt: type: string format: date-time deliveryIdentifier: $ref: '#/components/schemas/PublicDeliveryIdentifier' genericChannelId: type: integer format: int32 inboxId: type: integer format: int32 userId: type: integer format: int32 PublicChannelAccountStagingTokenUpdateRequest: type: object properties: accountName: type: string deliveryIdentifier: $ref: '#/components/schemas/PublicDeliveryIdentifier' PublicChannelAccountUpdateRequest: type: object properties: authorized: type: boolean name: type: string PublicChannelIntegrationChannel: required: - capabilities - createdAt - id - name type: object properties: capabilities: type: object additionalProperties: type: object properties: {} channelAccountConnectionRedirectUrl: type: string channelDescription: type: string channelLogoUrl: type: string createdAt: type: string format: date-time id: type: string name: type: string webhookUrl: type: string PublicChannelIntegrationChannelCreate: required: - capabilities - name type: object properties: capabilities: type: object additionalProperties: type: object properties: {} channelAccountConnectionRedirectUrl: type: string channelDescription: type: string channelLogoUrl: type: string name: type: string webhookUrl: type: string PublicChannelIntegrationChannelPatch: required: - capabilities - channelAccountConnectionRedirectUrl - channelDescription - channelLogoUrl - name - webhookUrl type: object properties: capabilities: type: object additionalProperties: type: object properties: {} channelAccountConnectionRedirectUrl: type: object properties: {} channelDescription: type: object properties: {} channelLogoUrl: type: object properties: {} name: type: object properties: {} webhookUrl: type: object properties: {} PublicChannelIntegrationMessageUpdateRequest: required: - statusType type: object properties: errorMessage: type: string statusType: type: string description: Valid status are SENT, FAILED, and READ enum: - FAILED - READ - SENT PublicClient: required: - clientType type: object properties: clientType: type: string enum: - HUBSPOT - INTEGRATION - SYSTEM - UNKNOWN integrationAppId: type: integer format: int32 PublicContact: title: CONTACT required: - contactProfile - type type: object properties: contactProfile: $ref: '#/components/schemas/ContactProfile' type: type: string default: CONTACT enum: - CONTACT x-hubspot-sub-type-impl: true PublicConversationsMessage: required: - archived - attachments - channelAccountId - channelId - client - conversationsThreadId - createdAt - createdBy - direction - id - recipients - senders - text - truncationStatus - type type: object properties: archived: type: boolean attachments: type: array items: oneOf: - $ref: '#/components/schemas/PublicFile' - $ref: '#/components/schemas/PublicLocation' - $ref: '#/components/schemas/PublicContact' - $ref: '#/components/schemas/PublicUnsupportedContent' - $ref: '#/components/schemas/PublicMessageHeader' - $ref: '#/components/schemas/PublicQuickReplies' - $ref: '#/components/schemas/PublicWhatsAppTemplateMetadata' - $ref: '#/components/schemas/PublicSocialMetadataAttachment' channelAccountId: type: string channelId: type: string client: $ref: '#/components/schemas/PublicClient' conversationsThreadId: type: string createdAt: type: string format: date-time createdBy: type: string direction: type: string enum: - INCOMING - OUTGOING id: type: string inReplyToId: type: string recipients: type: array items: $ref: '#/components/schemas/PublicRecipient' richText: type: string senders: type: array items: $ref: '#/components/schemas/PublicSender' status: $ref: '#/components/schemas/PublicMessageStatus' subject: type: string text: type: string truncationStatus: type: string enum: - NOT_TRUNCATED - TRUNCATED - TRUNCATED_TO_MOST_RECENT_REPLY type: type: string default: MESSAGE enum: - MESSAGE updatedAt: type: string format: date-time x-hubspot-sub-type-impl: true PublicDeliveryIdentifier: required: - type - value type: object properties: type: type: string enum: - CHANNEL_SPECIFIC_OPAQUE_ID - HS_EMAIL_ADDRESS - HS_PHONE_NUMBER - HS_SHORT_CODE value: type: string PublicFile: title: FILE required: - fileId - fileUsageType - type type: object properties: fileId: type: string fileUsageType: type: string enum: - AUDIO - IMAGE - OTHER - STICKER - VOICE_RECORDING name: type: string type: type: string default: FILE enum: - FILE url: type: string x-hubspot-sub-type-impl: true PublicLocation: title: LOCATION required: - latitude - longitude - type type: object properties: address: type: string latitude: type: number longitude: type: number name: type: string type: type: string default: LOCATION enum: - LOCATION url: type: string x-hubspot-sub-type-impl: true PublicMessageFailureDetails: required: - errorMessageTokens type: object properties: errorMessage: type: string errorMessageTokens: type: object additionalProperties: type: string PublicMessageHeader: title: MESSAGE_HEADER required: - type type: object properties: fileId: type: integer format: int64 text: type: string type: type: string default: MESSAGE_HEADER enum: - MESSAGE_HEADER x-hubspot-sub-type-impl: true PublicMessageStatus: required: - statusType type: object properties: failureDetails: $ref: '#/components/schemas/PublicMessageFailureDetails' statusType: type: string enum: - FAILED - READ - RECEIVED - SENT PublicQuickReplies: title: QUICK_REPLIES required: - allowMultiSelect - allowUserInput - quickReplies - type type: object properties: allowMultiSelect: type: boolean allowUserInput: type: boolean quickReplies: type: array items: $ref: '#/components/schemas/QuickReply' type: type: string default: QUICK_REPLIES enum: - QUICK_REPLIES x-hubspot-sub-type-impl: true PublicRecipient: required: - deliveryIdentifier type: object properties: actorId: type: string deliveryIdentifier: $ref: '#/components/schemas/PublicDeliveryIdentifier' name: type: string recipientField: type: string PublicSender: type: object properties: actorId: type: string deliveryIdentifier: $ref: '#/components/schemas/PublicDeliveryIdentifier' name: type: string senderField: type: string PublicSocialMetadataAttachment: title: SOCIAL_MEDIA_METADATA required: - socialMetadata - type type: object properties: socialMetadata: $ref: '#/components/schemas/SocialMetadata' type: type: string default: SOCIAL_MEDIA_METADATA enum: - SOCIAL_MEDIA_METADATA x-hubspot-sub-type-impl: true PublicUnsupportedContent: title: UNSUPPORTED_CONTENT required: - type type: object properties: type: type: string default: UNSUPPORTED_CONTENT enum: - UNSUPPORTED_CONTENT x-hubspot-sub-type-impl: true PublicWhatsAppTemplateMetadata: title: WHATSAPP_TEMPLATE_METADATA required: - crmObjectIds - parameters - type type: object properties: contentId: type: integer format: int64 crmObjectIds: type: object additionalProperties: type: integer format: int64 mappedTemplateId: type: integer format: int64 parameters: type: object additionalProperties: type: string rootMicId: type: integer format: int64 type: type: string default: WHATSAPP_TEMPLATE_METADATA enum: - WHATSAPP_TEMPLATE_METADATA x-hubspot-sub-type-impl: true QuickRepliesAttachment: title: QUICK_REPLIES required: - quickReplies - type type: object properties: quickReplies: type: array items: $ref: '#/components/schemas/QuickReply' type: type: string default: QUICK_REPLIES enum: - QUICK_REPLIES x-hubspot-sub-type-impl: true QuickReply: required: - value - valueType type: object properties: label: type: string value: type: string valueType: type: string enum: - TEXT - URL SocialMetadata: required: - mediaType type: object properties: description: type: string id: type: string mediaTitle: type: string mediaType: type: string enum: - ARTICLE - AUDIO - CAROUSEL - DOCUMENT - GIF - LINK - NONE - PHOTO - POLL - STORY - VIDEO mediaUrl: type: string mediaUrlString: type: string thumbnailUrl: type: string SocialMetadataIntegrationAttachment: title: SOCIAL_MEDIA_METADATA required: - socialMetadata - type type: object properties: socialMetadata: $ref: '#/components/schemas/SocialMetadata' type: type: string default: SOCIAL_MEDIA_METADATA enum: - SOCIAL_MEDIA_METADATA x-hubspot-sub-type-impl: true UnsupportedContentAttachment: title: UNSUPPORTED_CONTENT required: - type type: object properties: type: type: string default: UNSUPPORTED_CONTENT enum: - UNSUPPORTED_CONTENT x-hubspot-sub-type-impl: true 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: conversations.custom_channels.read: '' conversations.custom_channels.write: '' private_apps: type: apiKey name: private-app in: header private_apps_legacy: type: apiKey name: private-app-legacy in: header x-hubspot-product-tier-requirements: marketing: FREE sales: PROFESSIONAL service: PROFESSIONAL cms: FREE commerce: FREE crmHub: FREE dataHub: FREE