For Agents
Register and manage HubSpot CRM sidebar cards that surface external data on contact, company, and deal records inside the HubSpot UI.
Jentic One is a self-hosted execution layer for AI agents. It lets your agent call the CRM cards, or any other public or private API you need. You set the rules, the agent never sees your credentials, and every call is logged.
# On the machine that will host your Jentic One instance:
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh# On the machine where your agent runs (keep this separate from the instance):
curl -fsSL https://raw.githubusercontent.com/jentic/jentic-one/main/tools/install.sh | sh
jentic register # connects your agent to your Jentic One instanceJentic One is in public beta. The setup above keeps your agent separate from the instance, which is what you want before using real credentials: an agent running as the same OS user as Jentic One can read its stored keys directly. Just evaluating? A single local install is fine to start. See the secure deployment guide for the tiers.
What an agent can do with CRM cards API.
Register a new sidebar card for a HubSpot app via POST /crm/v3/extensions/cards/{appId}
List every card configured under an app with GET /crm/v3/extensions/cards/{appId}
Inspect a single card's configuration through GET /crm/v3/extensions/cards/{appId}/{cardId}
Update a card's display label, fetch URL, or object types via PATCH /crm/v3/extensions/cards/{appId}/{cardId}
GET STARTED
Use for: I need to register a new CRM card for my app, List all cards configured for HubSpot app 12345, Update the data fetch URL on an existing CRM card, Retrieve the sample response format for a CRM card
Not supported: Does not read or write CRM record data, manage contacts, or send emails — use only for registering and managing CRM sidebar cards.
Jentic publishes the only available OpenAPI document for CRM cards, keeping it validated and agent-ready.
Jentic publishes the only available OpenAPI specification for CRM cards, keeping it validated and agent-ready. The HubSpot CRM cards API lets developer apps extend the CRM record sidebar by registering custom cards that pull data from external systems when a user opens a contact, company, or deal record. Cards are configured up-front per app and populated at view time by an external data fetch URL the app exposes. This is the building block for embedding third-party context — order history, support tickets, billing — directly in the HubSpot CRM UI.
Remove an obsolete card with DELETE /crm/v3/extensions/cards/{appId}/{cardId}
Inspect the expected card detail response shape via GET /crm/v3/extensions/cards/sample-response
Patterns agents use CRM cards API for, with concrete tasks.
★ Embed External Order History in HubSpot Records
Surface a customer's recent orders from an internal e-commerce database directly on the HubSpot contact record. Register a card with POST /crm/v3/extensions/cards/{appId} pointing at an external fetch URL; HubSpot calls that URL when a sales rep opens the record and renders the returned tiles in the sidebar.
POST a new card with title Recent Orders and a fetch URL pointing at the orders service, scoped to the contact and deal object types.
Manage Card Lifecycle Across Environments
Promote a card configuration from staging to production by listing all cards under an app, inspecting the relevant one, and updating the fetch URL. PATCH /crm/v3/extensions/cards/{appId}/{cardId} accepts partial updates so the card label and URL can move between environments without re-registering.
GET all cards on app 12345, find the one titled Subscriptions, and PATCH its fetchUrl to the production endpoint.
Validate Card Response Shape Before Deploy
Before publishing a card, hit GET /crm/v3/extensions/cards/sample-response to retrieve the canonical response shape HubSpot expects, then compare it to the JSON the external service is returning. This eliminates the most common cause of cards rendering empty: shape mismatches.
GET /crm/v3/extensions/cards/sample-response and run a JSON-schema diff against the external service's actual response.
AI Agent Card Provisioning via Jentic
An AI agent rolling out a new HubSpot integration can call Jentic to discover and execute the CRM cards endpoints — registering, configuring, or removing cards programmatically as part of an app's onboarding flow.
Search Jentic for create a hubspot crm card, load POST /crm/v3/extensions/cards/{appId}, and execute with the card title and fetch URL.
6 endpoints — jentic publishes the only available openapi specification for crm cards, keeping it validated and agent-ready.
METHOD
PATH
DESCRIPTION
/crm/v3/extensions/cards/{appId}
Create a new card for an app
/crm/v3/extensions/cards/{appId}
List all cards for an app
/crm/v3/extensions/cards/{appId}/{cardId}
Get a single card
/crm/v3/extensions/cards/{appId}/{cardId}
Update a card
/crm/v3/extensions/cards/{appId}/{cardId}
Delete a card
/crm/v3/extensions/cards/sample-response
Get the sample card detail response shape
/crm/v3/extensions/cards/{appId}
Create a new card for an app
/crm/v3/extensions/cards/{appId}
List all cards for an app
/crm/v3/extensions/cards/{appId}/{cardId}
Get a single card
/crm/v3/extensions/cards/{appId}/{cardId}
Update a card
/crm/v3/extensions/cards/{appId}/{cardId}
Delete a card
Three things that make agents converge on Jentic-routed access.
Credential isolation
HubSpot developer hapikeys are stored encrypted in the Jentic vault and injected as the hapikey query parameter at execution time. Agents never see the raw key.
Intent-based discovery
Agents search Jentic with intents like create a hubspot crm card and Jentic returns the matching CRM cards operations with their input schemas, so the agent can execute without browsing HubSpot docs.
Time to first call
Direct integration: 4-8 hours including app registration, scope configuration, and card response shape work. Through Jentic: under 1 hour for the API calls themselves once the developer app exists.
Alternatives and complements available in the Jentic catalogue.
HubSpot CRM API
Underlying HubSpot CRM objects (contacts, companies, deals) that cards are surfaced on
Pair with the CRM API when the agent needs to read or write the underlying records the card is rendered against.
HubSpot Custom Workflow Actions
Another HubSpot extension surface for embedding app logic, but in workflows rather than record sidebars
Use Custom Workflow Actions when the integration needs to fire on events rather than appear visually in the CRM UI.
HubSpot Webhooks API
Subscribe to CRM record events instead of pulling on view via cards
Choose Webhooks when the integration needs to react to changes asynchronously rather than show data on the record page.
Specific to using CRM cards API through Jentic.
Why is there no official OpenAPI spec for CRM cards?
HubSpot does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call CRM cards via structured tooling. It is validated against the live API and kept up to date. Get started at https://app.jentic.com/sign-up.
What authentication does the CRM cards API use?
The CRM cards API uses HubSpot developer hapikey authentication, passed as a query parameter named hapikey. Through Jentic, the key is held in the encrypted vault and injected at execution time so it never enters the agent context.
Can I register a new sidebar card programmatically?
Yes. POST a card definition to /crm/v3/extensions/cards/{appId} with the card title, the fetch URL HubSpot should call when rendering, and the object types (contact, company, deal) the card should appear on.
What are the rate limits for the CRM cards API?
HubSpot applies the standard developer-key rate limits across CRM extensions endpoints. Limits depend on app tier and are not in the spec — consult the HubSpot developer dashboard for current per-app limits before bulk card operations.
How do I update a CRM card's fetch URL through Jentic?
Search Jentic for update a hubspot crm card, load PATCH /crm/v3/extensions/cards/{appId}/{cardId}, and execute with the new fetchUrl in the request body. Jentic injects the developer hapikey from the vault.
How do I know what JSON shape my fetch URL should return?
Call GET /crm/v3/extensions/cards/sample-response. It returns the canonical response shape HubSpot expects, which is the most reliable reference when building or debugging a card's data service.
/crm/v3/extensions/cards/sample-response
Get the sample card detail response shape