canonical: https://jentic.com/apis/hubspot.com/hubspot-cms-domains

# HubSpot Domains

The HubSpot CMS Domains API exposes the domains connected to a HubSpot CMS account. It returns the canonical domain name, the type of content it serves (blog, site pages, landing pages), SSL status, and primary-language flag. Use it when an agent needs to confirm which domain to publish to before creating CMS content, or to audit which domains a portal currently uses for marketing assets.

## For AI agents

List or fetch HubSpot CMS-connected domains and their content roles, so an agent can pick the right domain before publishing pages or posts.

## Scope

Does not connect, modify, or remove domains, and does not expose DNS or certificate details - use for reading existing HubSpot-connected CMS domains only.

## Capabilities

- List every domain connected to a HubSpot CMS account in one call
- Retrieve the configuration for a specific domain by domainId
- Confirm whether SSL is enabled before publishing content to a domain
- Identify which domain serves blog posts versus landing pages before routing a publish action
- Detect the primary language of a domain to choose between locale-specific publish flows

## Use cases

### Pre-Publish Domain Selection

Before an agent or integration publishes a landing page or blog post, it must select the correct connected domain. The Domains API returns the list of available domains with their content type and language so the publishing flow can pick the right destination automatically. This prevents content being scheduled on a staging or stale domain.

Example prompt: Call GET /cms/v3/domains/, filter for type='LANDING_PAGE' and language='en', and pass the returned domainId into the next CMS Pages create call.

### SSL and Configuration Audit

Marketing operations teams sometimes inherit HubSpot portals with mixed SSL configurations across connected domains. A single GET on the Domains endpoint returns the SSL status and other configuration flags for every domain, supporting a remediation report without portal access. Failing entries can be flagged for HubSpot Support follow-up.

Example prompt: Fetch /cms/v3/domains/, write a CSV of domain, sslEnabled, primaryLanguage, and contentType, and flag any row where sslEnabled is false.

### Multi-Brand Domain Inventory

Agencies running several brands on one HubSpot portal need to know which domains belong to which Business Unit before scheduling content. Pairing this API's full domain list with the Business Units API yields an inventory mapping each brand to its public-facing domains, useful for governance dashboards and onboarding playbooks.

Example prompt: Call /cms/v3/domains/, then for each domain attach the Business Unit ID returned by the Business Units API, producing one row per (brand, domain) pair.

### Agent-Driven Domain Lookup

An AI agent that publishes content needs a deterministic way to choose between, say, blog.example.com and pages.example.com. Through Jentic the agent searches for the domain list operation, loads the schema, and executes it without seeing raw OAuth tokens. The structured response is small enough to embed directly into the agent's planning context.

Example prompt: Use Jentic to search 'list hubspot cms domains', load the schema, execute it, and store the resulting (domainId, contentType) pairs in the agent state for later publish steps.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /cms/v3/domains/ | List all connected domains |
| GET | /cms/v3/domains/{domainId} | Retrieve a single domain by ID |

## Key resources

- **Domain** — Read access to HubSpot-connected domains, their content types, SSL status, and primary language

## Why Jentic

- **Setup:** Wiring HubSpot Domains by hand means registering an OAuth app or minting a private app token, targeting api.hubapi.com, and coding the list and by-id reads plus auth headers yourself. Through Jentic you install once, import Domains from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** Domains puts the domain id in the URL path (/cms/v3/domains/{domainId}), so a rule can pin your agent to reading one connected domain. Both operations are read-only, so nothing your agent calls connects, modifies, or removes a domain.
- **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 'list HubSpot CMS domains', and Jentic returns the matching Domains operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **CMS Pages** — Publishes the pages that live on the domains returned by this API
- **Blog Settings** — Configures the blogs hosted on these domains
- **URL Redirects** — Manages redirects across the same connected domains

## FAQ

### What authentication does the HubSpot CMS Domains API use?

It accepts HubSpot OAuth 2.0 access tokens or Private App tokens in the Authorization header with the content scope. Through Jentic, those credentials are stored encrypted and only a scoped execution token is exposed to the agent.

### Can I add or remove a connected domain via this API?

No. The two endpoints in this spec are both GET - connecting a new domain or detaching one must be done from the HubSpot UI. Once connected, the API can read its configuration.

### What are the rate limits for the HubSpot Domains API?

It uses HubSpot's standard public API caps: 100 requests per 10 seconds for OAuth apps and 110 per 10 seconds for Private Apps on Pro and Enterprise. Domain lists are short, so a single GET typically suffices instead of polling.

### How do I pick the right domain to publish a blog post through Jentic?

After pip install jentic, search 'list hubspot cms domains', load the schema, and execute it. Filter the response for contentType matching BLOG_POST and the desired primaryLanguage, then pass the domainId into the CMS Posts create call.

### Does the API expose DNS records or certificate details?

Not directly. It surfaces high-level fields like sslEnabled and the canonical domain name, but raw DNS records and certificate metadata must be inspected from the registrar or HubSpot's domain settings UI.

### Can I limit what my agent is allowed to do with the HubSpot CMS Domains API?

Yes. Because you run Jentic One yourself, your own rules decide which operations and credentials the agent may use, and both endpoints here are read-only, so an agent can list or fetch connected domains but can never connect, modify, or remove one. Since the retrieve operation puts the domain in the URL path (/cms/v3/domains/{domainId}), you can write a rule that pins the agent to reading a single connected domain rather than listing them all. Your HubSpot OAuth or private app token is held by your own instance and injected only at execution time, so the agent never sees the raw credential.
