---
title: "Activate AEO for a site"
method: POST
path: "/api/sites/multiscreen/{site_name}/aeo"
tags: ["AEO Projects"]
---

# Activate AEO for a site

`POST /api/sites/multiscreen/{site_name}/aeo`

## Request

- Base URL: `https://api.duda.co`
- URL: `https://api.duda.co/api/sites/multiscreen/{site_name}/aeo`
- Auth: HTTP basic

Creates the site's AEO project and starts activation. Activation runs in the background and takes several minutes, so the call returns `202 Accepted` with an empty body. Poll Get AEO project status until `status` is `ACTIVATION_COMPLETED`.

- `country_code` is required and sets the project's primary market.
- The site's own brand is named from `brand_name`, or from the site's domain when it is omitted.
- `brands` adds up to 5 competitor brands, and `cities` up to 5 target cities.
- New projects track ChatGPT and Gemini. Change this with Update AI models.

The site counts toward the plan's site allowance. On custom (contract) plans, it reserves one full scan per billing cycle from the plan's run pool instead.

If the site already has a project, the call returns `202` again and ignores the request body.

## Path parameters

- `site_name` string, required

## Request body

- ApiAeoCreateProjectReq
  - `brand_name` string: Name of the site's own brand. Defaults to a name derived from the site's domain.
  - `brands` ApiAeoBrandSeedReq[]: Up to 5 competitor brands to track from the start. Don't include the site's own brand.
    - `domains` string[], required: The competitor's domains. At least one is required.
    - `name` string, required: Competitor brand name, used as given.
  - `cities` string[]: Up to 5 cities to target for local visibility.
  - `country_code` string, required: The project's primary market, as an ISO 3166-1 alpha-2 country code. Case-insensitive.

## Response `202`

Accepted

## Other responses

- `400`: Bad request. `error_code` is `InvalidInput` and `errors` is empty. - `country_code` is missing or unsupported, or `brands` or `cities` is invalid.
- `401`: Unauthorized. The credentials are missing or invalid.
- `403`: Forbidden. `error_code` is `AccessForbidden`, and `errors[0].code` names the cause: - No code (`errors` is empty): the caller can't access the site. - `AeoPlanNotFound`: the account has no active AEO plan. - `AeoSitesLimitExceeded`: the plan's site limit is reached. - `AeoUpgradeRequired`: the site limit is reached and a higher plan is available. The body adds `current_plan_uuid`, `current_tier` and `max_sites`. - `AeoRunsLimitExceeded`: a custom plan's run pool can't fund another site.
- `409`: Conflict. `error_code` is `InvalidState`, and `errors[0].code` names the cause: - `AeoActivationInProgress`: another activation for this site or account is in progress. Retry later.
- `429`: Too many requests. The rate limit was exceeded.

---

[API](https://skmtc.dev/duda/apis/duda-partner-api.md) - [All operations](https://skmtc.dev/duda/apis/duda-partner-api/llms.txt) - [OpenAPI document](https://skmtc.dev/duda/apis/duda-partner-api/revisions/52be4d41cb12?raw)
