Ad Campaigns API
Two distinct surfaces share the /ads namespace: AI-generated ad copy + ROI simulation (Ad Assistant) and the read-only ad intelligence library.
Ad Assistant
| Method | Path | Description |
|---|---|---|
| POST | `/api/v1/ads/generate-copy` | Generate ad copy |
| POST | `/api/v1/ads/audience-suggest` | Audience targeting suggestions |
| POST | `/api/v1/ads/landing-copy` | Landing-page copy |
| POST | `/api/v1/ads/roi-simulate` | ROI simulation |
Campaign CRUD
| Method | Path | Description |
|---|---|---|
| GET | `/api/v1/ad-campaigns` | List |
| POST | `/api/v1/ad-campaigns` | Create draft |
| GET | `/api/v1/ad-campaigns/:id` | Get |
| PATCH | `/api/v1/ad-campaigns/:id` | Update |
| GET | `/api/v1/ad-campaigns/:id/export.csv` | CSV export |
Ad Intelligence
| Method | Path | Description |
|---|---|---|
| GET | `/api/v1/ads/trending` | Trending ads |
| POST | `/api/v1/ads/analyze` | Analyze a single ad URL |
| GET | `/api/v1/ads/advertiser/:id` | Advertiser profile |
| POST | `/api/v1/ads/search` | Filtered ad library search |
Every response uses the standard envelope:
{
"success": true,
"data": { /* resource or array */ },
"meta": { "total": 100, "cursor": "...", "hasMore": true },
"error": { "code": "ERROR_CODE", "message": "Human readable" }
}error is omitted on success; meta is omitted when not paginating.
Rate Limits
Subject to the standard 200 req/min/tenant authenticated limit. See [Rate Limits](/docs/api-reference/rate-limits) for full details and the per-endpoint overrides.