Product

Topic Engine Content Engine Code-to-Docs AEO Rank Research-Driven Content Autopilot Visibility Tracking Website & Migration Content Factory Pricing

Resources

Browse all resources → Case Studies Blog FAQ Use Cases Knowledge Base Research Docs

API Reference

List Domains

The domains this API key can read, and whether each has Google Analytics connected.

GET/api/v1/domains

The first call an integration makes: every domain on the Business plan or higher that the key's account owns or is a member of, with whether Google Analytics is connected and the last day of data received.

Code Examples

curl:

bash
curl "https:">//studio.aeocontent.ai/api/v1/domains" \
  -H "Authorization: Bearer $AEO_API_KEY"

JavaScript:

javascript
const res = await fetch(
  class="code-string">"https:class="code-commentclass="code-string">">//studio.aeocontent.ai/api/v1/domains",
  { headers: { Authorization: class="code-string">`Bearer ${process.env.AEO_API_KEY}` } },
);
const { data } = await res.json();
console.log(data.domains.map((d) => d.domain));

Try it

Response

200Domains
json
{
  class="code-string">"data": {
    class="code-string">"domains": [
      {
        class="code-string">"domain": class="code-string">"example.com",
        class="code-string">"analytics_connected": true,
        class="code-string">"data_through": class="code-string">"2026-10-07"
      }
    ]
  },
  class="code-string">"meta": {
    class="code-string">"request_id": class="code-string">"a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    class="code-string">"timestamp": class="code-string">"2026-10-10T12:00:00.000Z"
  }
}
403No domain on the Business plan
json
{
  class="code-string">"error": {
    class="code-string">"code": class="code-string">"plan_required",
    class="code-string">"message": class="code-string">"API access is included with the Business plan. None of the domains this key can read is on the Business plan or higher. Upgrade on the Billing page in Studio."
  }
}

Sent with a Retry-After header: the seconds until the next request is allowed.

429Rate limit exceeded
json
{
  class="code-string">"error": {
    class="code-string">"code": class="code-string">"rate_limit_exceeded",
    class="code-string">"message": class="code-string">"Rate limit exceeded. Limits: 60 requests a minute, 2000 a day."
  }
}
When the key can read exactly one domain, every report endpoint may omit domain.