---
title: "Generate Angles Ep"
method: POST
path: "/sites/{site_id}/angles"
tags: ["sites"]
---

# Generate Angles Ep

`POST /sites/{site_id}/angles`

## Request

- Base URL: `https://api.xeorank.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.xeorank.com/sites/{site_id}/angles`
- Auth: API key in header `X-Agent-Key`

Angle Engine v0: scored, gain-gated content briefs for this site.

Reads the citation-gap matrix (who AI engines cite instead of us, per prompt),
unanswered GSC demand, the site's competitor consensus/void and first-party
crawl-corpus stats; every brief carries a mandatory unique ingredient and an
information-gain check. Briefs without an ingredient, or whose ingredient a
rival already covers, are REJECTED (and kept, so rejects are countable).

`index_competitors=true` (re)embeds the site's competitor pages for the gain
check first — one Gemini embedding call per ~50 chunks. `explain=true` adds a
Flash-Lite "why they win" reason per competitor (no credits: internal op).

## Path parameters

- `site_id` string, required

## Query parameters

- `email` string, nullable
- `limit` integer
- `save` boolean
- `explain` boolean
- `index_competitors` boolean

## Response `200`

Successful Response

- object

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/xeorank/apis/seo-intelligence-engine.md) · [All operations](https://skmtc.dev/xeorank/apis/seo-intelligence-engine/llms.txt) · [OpenAPI document](https://skmtc.dev/xeorank/apis/seo-intelligence-engine/revisions/449a3fd73454?raw)
