For Agents
Toggle and query HubSpot public app feature flags per portal so an agent can roll a feature out to specific accounts, batch-update many portals, or check whether a feature is enabled for a given customer.
Get started with Public App Feature Flags V3 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:
"enable a hubspot app feature flag for a portal"
# → Jentic returns the GET /events tool with parameter schema, agent executes.What an agent can do with Public App Feature Flags V3 API.
Set a feature flag state for a single HubSpot portal using PUT /feature-flags/v3/{appId}/flags/{flagName}/portals/{portalId}
Roll out a feature to many accounts in one call with POST /feature-flags/v3/{appId}/flags/{flagName}/portals/batch/upsert
Roll back a feature for many portals at once via POST /feature-flags/v3/{appId}/flags/{flagName}/portals/batch/delete
Look up which portals currently have a feature flag set via GET /feature-flags/v3/{appId}/flags/{flagName}/portals
GET STARTED
Use for: I need to enable a beta feature for a specific HubSpot customer portal, Roll out a new app feature to a list of HubSpot account IDs, Check whether a feature flag is enabled for portal 12345, List all HubSpot portals where the new dashboard flag is currently on
Not supported: Does not handle CRM records, marketing campaigns, or end-user feature targeting rules — use for per-portal app feature flag toggling only.
The HubSpot Public App Feature Flags V3 API lets developers of HubSpot public apps roll out features gradually by toggling per-account flag states. Developers define a feature flag at the app level and then enable, disable, or query the flag state for individual HubSpot portals (accounts) using the app. The API supports single-portal updates, batch upserts, batch deletes, and lookups across all portals where a flag has been set, making it suitable for staged rollouts, A/B experiments, and emergency feature kill switches.
Check whether a specific portal has a flag enabled before serving feature-gated functionality
Create or remove an app-level feature flag definition using PUT and DELETE on /feature-flags/v3/{appId}/flags/{flagName}
Inspect the current configuration of an app feature flag with GET /feature-flags/v3/{appId}/flags/{flagName}
Patterns agents use Public App Feature Flags V3 API for, with concrete tasks.
★ Staged Feature Rollout for HubSpot App
Gradually expose a new feature in a HubSpot public app to a controlled subset of customer portals before enabling it for everyone. Developers create a flag at the app level, then use the batch upsert endpoint to enable it for an initial cohort of portal IDs and expand the cohort over time. Feature gating happens server-side by checking the flag state for the calling portal on each request, so customers in the cohort see the feature immediately while others continue with the existing experience.
Call POST /feature-flags/v3/{appId}/flags/new_dashboard/portals/batch/upsert with portal IDs [12345,67890,11111] and enabled=true, then verify each via GET /feature-flags/v3/{appId}/flags/new_dashboard/portals/{portalId}.
Emergency Feature Kill Switch
When a newly released feature causes problems for a subset of customers, support engineers need to disable it quickly without redeploying the app. The Public App Feature Flags V3 API makes this possible via the batch delete endpoint, which removes the flag state for many portals in one call so they fall back to the default behaviour. The same flag can later be re-enabled selectively after a fix ships.
Call POST /feature-flags/v3/{appId}/flags/risky_feature/portals/batch/delete with the list of impacted portal IDs to immediately revert them to default behaviour.
Per-Portal Feature Gating Lookup
On every inbound webhook or API call from a HubSpot portal, a public app needs to know whether to serve the new code path or the legacy one. By calling the per-portal flag state endpoint (cached locally), the app can route the request appropriately. The flag store is the single source of truth for which portals are in which experiment, removing the need for ad-hoc allowlists in app code.
Call GET /feature-flags/v3/{appId}/flags/new_dashboard/portals/{portalId} for portal 12345 and branch the request handler based on the returned enabled state.
AI Agent Coordinated Rollout
An AI agent managing a HubSpot app release workflow uses Jentic to discover the Public App Feature Flags V3 operations, then orchestrates a multi-day rollout: enable the flag for 10 portals on day one, query their support tickets, decide whether to expand the cohort, and either grow it or roll back. Jentic handles the developer hapikey credential, scopes access tokens, and gives the agent typed inputs for each call so the agent never sees the raw key.
Search Jentic for 'enable hubspot feature flag for portal', load the upsert operation schema, and execute a batch upsert for the day-one cohort, then schedule a follow-up check after 24 hours.
9 endpoints — the hubspot public app feature flags v3 api lets developers of hubspot public apps roll out features gradually by toggling per-account flag states.
METHOD
PATH
DESCRIPTION
/feature-flags/v3/{appId}/flags/{flagName}/portals/{portalId}
Enable or disable a flag for a single portal
/feature-flags/v3/{appId}/flags/{flagName}/portals/batch/upsert
Batch upsert flag state for many portals
/feature-flags/v3/{appId}/flags/{flagName}/portals/batch/delete
Batch remove flag state from many portals
/feature-flags/v3/{appId}/flags/{flagName}/portals
List all portals with a state set for a flag
/feature-flags/v3/{appId}/flags/{flagName}/portals/{portalId}
Read the flag state for one portal
/feature-flags/v3/{appId}/flags/{flagName}
Create or update an app-level flag definition
/feature-flags/v3/{appId}/flags/{flagName}
Delete an app-level flag definition
/feature-flags/v3/{appId}/flags/{flagName}/portals/{portalId}
Enable or disable a flag for a single portal
/feature-flags/v3/{appId}/flags/{flagName}/portals/batch/upsert
Batch upsert flag state for many portals
/feature-flags/v3/{appId}/flags/{flagName}/portals/batch/delete
Batch remove flag state from many portals
/feature-flags/v3/{appId}/flags/{flagName}/portals
List all portals with a state set for a flag
/feature-flags/v3/{appId}/flags/{flagName}/portals/{portalId}
Read the flag state for one portal
Three things that make agents converge on Jentic-routed access.
Credential isolation
The HubSpot developer hapikey is stored encrypted in the Jentic vault. Agents receive scoped execution tokens — the raw hapikey never enters agent context or logs.
Intent-based discovery
Agents search Jentic with intents like 'enable hubspot feature flag for portal' and Jentic returns the matching feature flag operations with typed input schemas, so the agent can call the right endpoint without browsing HubSpot's docs.
Time to first call
Direct HubSpot integration with auth, batch handling, and error retries: 1-2 days. Through Jentic: under 30 minutes — search, load schema, execute.
Alternatives and complements available in the Jentic catalogue.
LaunchDarkly API
Dedicated feature flag platform with richer targeting, experimentation, and analytics than HubSpot's app-scoped flags.
Choose LaunchDarkly when you need feature flagging across applications beyond a HubSpot public app, with percentage rollouts, user targeting rules, and experiment metrics.
Optimizely API
Experimentation and feature management platform with A/B testing on top of feature flags.
Choose Optimizely when the rollout is part of a broader experimentation programme that needs statistical analysis and variation management beyond a per-portal toggle.
HubSpot OAuth
Manages OAuth tokens for HubSpot public apps that consume feature flag decisions.
Use alongside the feature flags API when the same public app authenticates customer requests with OAuth and gates behaviour on flag state.
Specific to using Public App Feature Flags V3 API through Jentic.
What authentication does the HubSpot Public App Feature Flags V3 API use?
It authenticates with a developer hapikey passed as the hapikey query parameter, scoped to the app account that owns the appId. Through Jentic, the developer hapikey is stored in the encrypted vault and never enters the agent's context — Jentic injects it server-side when executing the call.
Can I roll out a feature flag to many HubSpot portals in one call with this API?
Yes. POST /feature-flags/v3/{appId}/flags/{flagName}/portals/batch/upsert accepts a list of portal IDs and their desired flag states in a single request, and POST /feature-flags/v3/{appId}/flags/{flagName}/portals/batch/delete removes flag state from many portals at once.
What are the rate limits for the Public App Feature Flags V3 API?
HubSpot applies its standard public app rate limits (100 requests per 10 seconds per app, plus daily quotas). Batch endpoints count as a single request, so prefer batch upsert and batch delete over per-portal calls for large rollouts.
How do I check a feature flag for a specific portal through Jentic?
Search Jentic with the query 'check hubspot feature flag for portal', load the GET /feature-flags/v3/{appId}/flags/{flagName}/portals/{portalId} operation, and execute it with your appId, flagName, and portalId. Jentic returns the typed response so your agent can branch on the enabled field.
Is the Public App Feature Flags V3 API free to use?
Access is included with a HubSpot developer account; there is no separate charge for the feature flags endpoints. Standard public app rate limits and any plan-tier limits on the apps consuming the flags still apply.
Can I define a feature flag programmatically before assigning portal states?
Yes. PUT /feature-flags/v3/{appId}/flags/{flagName} creates or updates the flag definition at the app level, and DELETE on the same path removes it. You typically create the flag once during release prep, then manage portal states with the per-portal and batch endpoints.
/feature-flags/v3/{appId}/flags/{flagName}
Create or update an app-level flag definition
/feature-flags/v3/{appId}/flags/{flagName}
Delete an app-level flag definition