canonical: https://jentic.com/apis/hubspot.com/hubspot-crm-calling-extensions

# HubSpot CRM Calling Extensions

The HubSpot CRM Calling Extensions API lets calling app developers register and configure their integration so HubSpot users can place and receive calls from inside the CRM. It manages per-app calling settings, recording configuration, channel connections, and notifies HubSpot when call recordings are ready for ingestion. Settings are scoped per HubSpot app id, allowing multi-tenant calling providers to control the experience for each installation.

## For AI agents

Register, configure, and manage HubSpot calling app extensions - including settings, recording readiness callbacks, and channel-connection metadata for embedded CRM calling experiences.

## Scope

Does not place calls, transcribe audio, or store call recordings - use only to register and configure HubSpot calling extensions.

## Capabilities

- Register calling app settings against a HubSpot appId so the CRM exposes the dialer integration
- Update recording settings for a calling app to control how recordings are ingested by HubSpot
- Notify HubSpot that a call recording is ready via the recordings/ready endpoint for retrieval
- Configure channel-connection settings that map a calling provider channel to a HubSpot inbox
- Retrieve current calling extension settings for a given appId to verify configuration
- Delete calling extension settings to deregister the calling provider from a HubSpot account

## Use cases

### Calling App Onboarding

A telephony vendor onboards a new HubSpot customer by calling the settings endpoint to register the app's calling URL, recording mode, and supported features against the customer's appId. HubSpot then renders the in-CRM dialer using these settings, eliminating manual setup.

Example prompt: POST settings to /crm/v3/extensions/calling/{appId}/settings with the provider's calling URL, name, and supported features (recording, transferring) for the new tenant.

### Recording Ready Notification

After a call ends and the recording finishes processing on the provider side, the provider notifies HubSpot using the recordings/ready endpoint so HubSpot pulls the recording into the call timeline. This avoids HubSpot polling the provider for completion.

Example prompt: POST to /crm/v3/extensions/calling/recordings/ready with the engagement id and recording URL once the provider has finalised the recording.

### Channel Connection Configuration

Map a provider channel - for example a queue or a number pool - to a HubSpot inbox so inbound calls route correctly. This is the bridge between the calling provider's routing and HubSpot's conversations inbox.

Example prompt: PUT /crm/v3/extensions/calling/{appId}/settings/channel-connection with channel id, inbox id, and provider metadata to bind the channel.

### AI Agent Telephony Provisioning

An AI agent provisions HubSpot calling for a fleet of new tenants by reading provider configuration from a sheet and registering the calling extension settings for each appId. Jentic exposes the operation with a typed schema so the agent does not need to parse HubSpot API docs.

Example prompt: Iterate the tenant list and call POST /crm/v3/extensions/calling/{appId}/settings via Jentic for each appId, logging successes and surfacing 4xx errors to the human reviewer.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /crm/v3/extensions/calling/{appId}/settings | Retrieve calling extension settings for an app |
| POST | /crm/v3/extensions/calling/{appId}/settings | Register or replace calling extension settings |
| PATCH | /crm/v3/extensions/calling/{appId}/settings | Partially update calling extension settings |
| DELETE | /crm/v3/extensions/calling/{appId}/settings | Deregister a calling extension |
| PATCH | /crm/v3/extensions/calling/{appId}/settings/recording | Update recording settings for a calling app |
| POST | /crm/v3/extensions/calling/recordings/ready | Notify HubSpot that a call recording is ready |

## Key resources

- **Calling Settings** — Per-appId configuration for the calling extension - name, URL, supported features.
- **Recording Settings** — Recording mode and storage configuration for a calling app.
- **Recordings Ready** — Endpoint to notify HubSpot when a call recording has finished processing.
- **Channel Connection** — Mapping between a provider channel and a HubSpot conversations inbox.

## Why Jentic

- **Setup:** Wiring HubSpot CRM Calling Extensions by hand means registering an OAuth app or minting a private app token, targeting api.hubapi.com, and coding the per-app settings and recording-ready calls yourself. Through Jentic you install once, import CRM Calling Extensions from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Calling Extensions puts the app id in the URL path (/crm/v3/extensions/calling/{appId}/settings), so a rule can pin your agent to configuring one calling app: it can read and update that app's settings. You choose the operations it may call, so deleting the settings is not included unless you add it.
- **Credential handling:** Your HubSpot OAuth token or private app token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'register a HubSpot calling app' or 'update calling recording settings', and Jentic returns the matching Calling Extensions operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Calls** — Manages the CRM call engagement records that the calling extension creates and updates.
- **Twilio** — Twilio Voice provides the underlying telephony that many HubSpot calling extensions are built on.
- **Conversations Inbox Messages** — Manages messages in the HubSpot conversations inbox that channel connections route into.

## FAQ

### What authentication does the HubSpot Calling Extensions API use?

It supports OAuth 2.0, HubSpot private apps, and the legacy developer hapikey for partner-side calls. Through Jentic, the developer key or OAuth token is held in the vault and a scoped token is injected per request, keeping raw credentials out of the agent context.

### Can I update recording settings with the HubSpot Calling Extensions API?

Yes - PATCH /crm/v3/extensions/calling/{appId}/settings/recording lets you change the recording mode and storage URL pattern for a given calling app without re-registering the rest of the settings.

### What are the rate limits for the HubSpot Calling Extensions API?

It uses HubSpot's standard CRM API limits - 100 requests per 10 seconds for OAuth apps and 110 per 10 seconds for private apps. Settings endpoints are usually called rarely (on install or update), so limits are not typically a constraint here.

### How do I notify HubSpot of a recording through Jentic?

Run the Jentic search "notify hubspot call recording ready" to find the operation backed by POST /crm/v3/extensions/calling/recordings/ready, load its schema, and execute with the engagementId and recording URL. Authentication is handled by Jentic.

### Is the HubSpot Calling Extensions API free?

Yes, the calling extensions endpoints are free for registered HubSpot app developers. You must publish a HubSpot app and use its appId as the path parameter. Customer-side calling features may require a paid HubSpot tier on the customer account.

### Can multiple calling channels be connected for one app?

Yes. Use the channel-connection endpoint repeatedly to bind different channels (queues, numbers, agents) to different HubSpot inboxes under the same appId. Each binding is independent and can be deleted without affecting others.

### Can I limit what my agent is allowed to do with the HubSpot CRM Calling Extensions API?

Yes. Because Jentic One runs self-hosted, your own rules decide which Calling Extensions operations and credentials the agent may use. Since the app id sits in the URL path (/crm/v3/extensions/calling/{appId}/settings), you can pin the agent to one calling app and grant only the operations you want, such as reading and updating that app's settings while leaving out DELETE unless you add it. The stored HubSpot token is injected at execution time, so the agent can call only the endpoints you allow.
