For Agents
Create, read, update, archive, search, and upsert HubSpot CRM call engagement records, with batch endpoints for high-volume telephony logging.
Get started with Calls in minutes using your preferred integration method.
# Add to your MCP client config (Claude Desktop, Cursor, Windsurf)
{
"jentic": {
"url": "https://api.jentic.com/mcp",
"auth": "oauth"
}
}
# Then ask your agent:
"log a call engagement in hubspot"
# → Jentic returns the GET /events tool with parameter schema, agent executes.What an agent can do with Calls API.
Create call engagement records with direction, duration, recording URL, and outcome properties
Batch upsert call records by an idempotency key to avoid duplicates from retried telephony events
Search call records by contact, company, date range, or call outcome using filter groups
Retrieve a call engagement by ID with associated contacts, companies, and deals
GET STARTED
Use for: I need to log a new call engagement in HubSpot CRM, Retrieve a call record by its engagement ID, Search for all calls made to a specific contact in the last 30 days, Update the outcome and notes on a completed call
Not supported: Does not place calls, host recordings, or transcribe audio — use only for managing HubSpot CRM call engagement records.
The HubSpot Calls API manages call engagement records in the CRM — the structured log of inbound and outbound calls associated with contacts, companies, and deals. It exposes batch CRUD plus search and upsert against the calls object using the standard CRM v3 object pattern. Each call record can carry properties such as duration, call direction, recording URL, notes, and outcome, and can be associated with other CRM objects.
Update call properties (notes, disposition) after the call ends
Archive call records in batch when removing them from active CRM views
Page through all call records with cursor-based pagination for export jobs
Patterns agents use Calls API for, with concrete tasks.
★ Telephony Activity Logging
When a sales rep finishes a call in their dialer, the integration logs it as a call engagement in HubSpot so the rep's manager can see activity against the contact and deal. Batch create handles up to 100 calls per request, suitable for daily reconciliation jobs from the telephony platform.
POST 50 call records to /crm/v3/objects/calls/batch/create with hs_call_direction, hs_call_duration, and contact associations from the dialer export.
Call Outcome Reporting
Search call records filtered by outcome and date range to drive a weekly sales effectiveness dashboard. The search endpoint supports paging, sorting, and property selection, so the report only pulls the columns it needs.
Search /crm/v3/objects/calls/search with filterGroups for hs_call_disposition equals "Connected" and hs_timestamp in the last 7 days, returning hs_call_duration and ownerId.
Idempotent Call Upsert
Use batch upsert with an external telephony id as the idempotency key so retried webhooks from the telephony provider do not create duplicate call engagements. This pattern is critical when the provider retries on network failures.
POST to /crm/v3/objects/calls/batch/upsert with idProperty set to hs_unique_creation_key and 100 call payloads from the provider's queue.
AI Agent Call Enrichment
An AI agent reads the latest call recordings, summarises them with an LLM, and writes the summary plus disposition back to the HubSpot call record. Jentic exposes the search and update operations with typed schemas, so the agent updates the right field without consulting docs.
Search calls in the last 24h missing hs_call_body, fetch each recording, generate a summary, then PATCH /crm/v3/objects/calls/{callId} with the summary and disposition.
11 endpoints — the hubspot calls api manages call engagement records in the crm — the structured log of inbound and outbound calls associated with contacts, companies, and deals.
METHOD
PATH
DESCRIPTION
/crm/v3/objects/calls/batch/create
Create call engagements in batch
/crm/v3/objects/calls/batch/upsert
Idempotent upsert by external id
/crm/v3/objects/calls/batch/read
Read calls in batch by ID
/crm/v3/objects/calls/batch/update
Update call properties in batch
/crm/v3/objects/calls/search
Search calls by filter groups
/crm/v3/objects/calls/{callId}
Retrieve a single call engagement
/crm/v3/objects/calls
List calls with pagination
/crm/v3/objects/calls/batch/create
Create call engagements in batch
/crm/v3/objects/calls/batch/upsert
Idempotent upsert by external id
/crm/v3/objects/calls/batch/read
Read calls in batch by ID
/crm/v3/objects/calls/batch/update
Update call properties in batch
/crm/v3/objects/calls/search
Search calls by filter groups
Three things that make agents converge on Jentic-routed access.
Credential isolation
HubSpot OAuth and private app tokens are encrypted in the Jentic vault. Scoped tokens are injected at execution — raw credentials never enter the agent's context.
Intent-based discovery
Agents search Jentic by intent (e.g. 'log a call in hubspot') and Jentic returns the matching calls operation with its typed input schema, so the agent calls the right endpoint without browsing docs.
Time to first call
Direct integration: 1-2 days for OAuth, batch error handling, and idempotency. Through Jentic: under 1 hour — search, load schema, execute.
Alternatives and complements available in the Jentic catalogue.
CRM Calling Extensions
Registers the calling app that creates these call engagement records inside HubSpot.
Use Calling Extensions to register the dialer app, then use Calls to write engagement records during and after calls.
Contacts
Standard CRM contact object that calls are typically associated with.
Use Contacts to look up or update the contact a call should be associated with before creating the call engagement.
Twilio
Twilio Voice exposes raw call records and recordings without the CRM activity layer.
Choose Twilio when the agent only needs the telephony record and is not maintaining a CRM activity timeline.
Specific to using Calls API through Jentic.
What authentication does the HubSpot Calls API use?
The Calls API supports OAuth 2.0 (oauth2 and oauth2_legacy) and HubSpot private app tokens. Through Jentic, tokens are stored in the vault and a scoped token is injected per request, so raw credentials never enter the agent context.
Can I attach a call recording URL with the HubSpot Calls API?
Yes — set the hs_call_recording_url property on create or update. HubSpot stores the URL on the engagement and surfaces a player in the CRM timeline. The recording itself is hosted by your telephony provider; HubSpot does not re-upload the audio.
What are the rate limits for the HubSpot Calls API?
Standard CRM API limits apply — 100 requests per 10 seconds for OAuth apps and 110 per 10 seconds for private apps. Use /crm/v3/objects/calls/batch/create or /batch/upsert (up to 100 records per request) to stay under the limit during bulk syncs.
How do I upsert calls through Jentic?
Run the Jentic search "upsert hubspot call records" to find POST /crm/v3/objects/calls/batch/upsert, load its schema, and execute with idProperty set to a unique external id. Jentic handles authentication and returns per-record success or error.
Is the HubSpot Calls API free?
The Calls API is included with any HubSpot account that has Sales Hub or Service Hub enabled. There is no per-call API charge from HubSpot beyond the underlying tier subscription.
Can I associate a call with multiple contacts?
Yes — pass an associations array on create, or use the CRM Associations API afterwards, to link a single call engagement to multiple contacts, companies, and deals. The single-record GET supports an associations parameter to return linked IDs in one call.
/crm/v3/objects/calls/{callId}
Retrieve a single call engagement
/crm/v3/objects/calls
List calls with pagination