For Agents
Register and manage the custom CRM cards that a HubSpot public app surfaces on contact, company, deal, and ticket record pages.
Get started with Public App Crm Cards 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:
"register a hubspot crm card"
# → Jentic returns the GET /events tool with parameter schema, agent executes.What an agent can do with Public App Crm Cards API.
Register a new CRM card definition under a public app ID
Read a single CRM card definition by app and card ID
Update a card's fetch URL, target object type, or property layout
Delete a card definition that is no longer in use
List every CRM card defined for a given app
GET STARTED
Use for: I need to register a CRM sidebar card for our HubSpot app, List all CRM cards defined under a specific app ID, Update the fetch URL on a CRM card after a redeploy, Delete a CRM card that is no longer in the product
Not supported: Does not render the card UI itself, host the fetch handler, or manage app installation — use for declaring HubSpot CRM card definitions on a public app only.
The HubSpot Public App CRM Cards API lets a public HubSpot app declare and manage the custom cards it surfaces in the sidebar of CRM record pages. Each card is registered up-front against an app ID with a target object type, a fetch URL HubSpot calls when a record is opened, and a definition of the actions and properties to render. Endpoints cover create, read, update, and delete of cards under a given app, plus a sample response endpoint that returns a representative payload so app developers can build a matching fetch handler. Use it to build product integrations that show external data — open invoices, ticket counts, account health — directly inside the HubSpot CRM UI.
Retrieve a sample fetch response payload to scaffold a card handler
Patterns agents use Public App Crm Cards API for, with concrete tasks.
★ Register a CRM sidebar card
Register a new card so a public HubSpot app can render data inside the sidebar of contact, company, deal, or ticket record pages. POST /crm/v3/extensions/cards-dev/{appId} with the card's title, target object types, fetch URL, and property layout. HubSpot calls the fetch URL each time a record is opened and renders the response.
POST /crm/v3/extensions/cards-dev/{appId} with title='Account Health', objectTypes=[contacts], fetch.targetUrl set to a public endpoint, and a properties layout.
Card lifecycle management
Manage cards across a release cycle: list every card on the app, update fetch URLs after a deployment, and delete cards that have been retired. GET, PATCH, and DELETE under /crm/v3/extensions/cards-dev/{appId}/{cardId} provide the per-card operations and GET on /crm/v3/extensions/cards-dev/{appId} returns the full set.
PATCH /crm/v3/extensions/cards-dev/{appId}/{cardId} setting fetch.targetUrl to the new staging URL, then GET to verify the update applied.
Bootstrap a card handler from sample response
Use the sample response endpoint to scaffold a card fetch handler. GET /crm/v3/extensions/cards-dev/sample-response returns a representative payload that the app's backend can mimic when responding to HubSpot's card fetch calls, removing guesswork about the expected schema.
GET /crm/v3/extensions/cards-dev/sample-response and use the returned JSON as the contract for the app's card endpoint.
AI agent execution through Jentic
An agent that needs to register or manage CRM cards for a public app discovers this API via Jentic's intent search using a query like 'register a hubspot crm card', loads the input schema for the chosen operation, and executes the call with credentials supplied from the Jentic vault. The same flow handles list, update, delete, and sample lookups.
Search Jentic for 'register a hubspot crm card', load POST /crm/v3/extensions/cards-dev/{appId}, and execute it with a card definition payload.
6 endpoints — the hubspot public app crm cards api lets a public hubspot app declare and manage the custom cards it surfaces in the sidebar of crm record pages.
METHOD
PATH
DESCRIPTION
/crm/v3/extensions/cards-dev/{appId}
List all CRM cards for an app
/crm/v3/extensions/cards-dev/{appId}
Register a new CRM card under an app
/crm/v3/extensions/cards-dev/{appId}/{cardId}
Read a single card definition by ID
/crm/v3/extensions/cards-dev/{appId}/{cardId}
Update a card's fetch URL or layout
/crm/v3/extensions/cards-dev/{appId}/{cardId}
Delete a card definition
/crm/v3/extensions/cards-dev/sample-response
Retrieve a sample fetch response payload
/crm/v3/extensions/cards-dev/{appId}
List all CRM cards for an app
/crm/v3/extensions/cards-dev/{appId}
Register a new CRM card under an app
/crm/v3/extensions/cards-dev/{appId}/{cardId}
Read a single card definition by ID
/crm/v3/extensions/cards-dev/{appId}/{cardId}
Update a card's fetch URL or layout
/crm/v3/extensions/cards-dev/{appId}/{cardId}
Delete a card definition
Three things that make agents converge on Jentic-routed access.
Credential isolation
HubSpot developer API keys are stored encrypted in the Jentic vault. Jentic attaches the hapikey query parameter at execution time so the developer credential never appears in agent prompts, transcripts, or logs.
Intent-based discovery
Agents search by intent (e.g. 'register a hubspot crm card' or 'list hubspot app cards') and Jentic returns the matching Cards operation with its JSON Schema, including the appId path parameter and card definition shape.
Time to first call
Direct integration: 1-2 days to wire developer key auth, card payload definition, and fetch handler scaffolding. Through Jentic: under 1 hour — search, load schema, execute.
Alternatives and complements available in the Jentic catalogue.
HubSpot CRM Objects
Reads the records that cards render against in the sidebar
Use inside a card fetch handler to look up the record HubSpot is asking the card to render.
HubSpot CRM Properties
Manages the properties cards can include in their fetch payload
Use to introspect the field schema before deciding which properties a card should request.
HubSpot CRM Objects
Generic CRM record API for embedding HubSpot data in external UIs instead of in-app cards
Pick this when you want to render HubSpot data in your own product UI rather than HubSpot's record sidebar.
Specific to using Public App Crm Cards API through Jentic.
What authentication does the HubSpot CRM Cards API use?
It requires a HubSpot developer API key (hapikey) — the developer-account credential rather than a per-portal OAuth token, because card definitions live at the public app level. Through Jentic, the developer key is stored encrypted in the credential vault and attached at request time.
Can I create cards for any object type?
You declare the target object types in the card definition's objectTypes array. Standard CRM objects — contacts, companies, deals, tickets — are supported, plus any custom object configured for sidebar rendering on the portal.
What are the rate limits for the HubSpot CRM Cards API?
Card management is governed by the developer-account-level rate limits (typically 100 requests per 10 seconds). The runtime fetch URL HubSpot calls per record view is subject to its own per-portal limits and timeouts.
How do I register a card through Jentic?
Search Jentic with 'register a hubspot crm card', load POST /crm/v3/extensions/cards-dev/{appId}, and execute with the card payload. Jentic returns the new card ID; store it so you can PATCH or DELETE the card later.
Is the HubSpot CRM Cards API free?
It is part of HubSpot's developer programme and free to call. The cards themselves only render for portals that have installed the public app, and HubSpot's app submission process applies before broad distribution.
What does HubSpot send to my fetch URL?
When a record is opened, HubSpot POSTs a payload containing the portal ID, object type, object ID, and request signature to the URL configured on the card. GET /crm/v3/extensions/cards-dev/sample-response returns a representative payload to scaffold the handler against.
/crm/v3/extensions/cards-dev/sample-response
Retrieve a sample fetch response payload