---
title: "Get citation-formula coaching for the org's vertical"
method: GET
path: "/ai-visibility/citation-formula"
tags: ["AI Visibility"]
---

# Get citation-formula coaching for the org's vertical

`GET /ai-visibility/citation-formula`

## Request

- Base URL: `https://next.frase.io/api/v1`
- URL: `https://next.frase.io/api/v1/ai-visibility/citation-formula`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-KEY`

Return the top content moves that correlate with higher AI search citation rates in the caller's industry. flavor=active (default) returns a single top recommendation; flavor=full returns the ranked list of all positive correlates above the sample-size floor. Methodology fields (raw correlation coefficients, p-values, sample sizes) are intentionally absent from the wire shape. Cookie/session auth is intentionally not supported.

## Query parameters

- `flavor` 'active' | 'full'

## Response `200`

Citation-formula payload. Wire shape is single-object: when flavor=active the formulas field is null; when flavor=full the active field is null and formulas may be empty.

- CitationFormulaPayload: Single-shape payload for the citation-formula endpoint. Methodology fields (correlationCoef, pValue, sampleSize, id, per-row computedAt) are intentionally absent from the wire shape and stripped at the route's stitch boundary regardless of helper-return drift. The flavor query param controls which fields are populated: flavor=active populates `active` (or null) and leaves `formulas` null; flavor=full populates `formulas` (possibly empty) and leaves `active` null.
  - `context` object, required
    - `vertical` string, nullable, required: Resolved industry vertical, or null when no vertical can be resolved for the org.
    - `computedAt` string, date-time, nullable, required: ISO timestamp of the underlying correlate snapshot. For flavor=full, the most-recent row across the returned set.
  - `active` object, nullable, required: Single top recommendation, populated when flavor=active and a positive correlate clears the threshold. Always null when flavor=full.
    - `platform` string, required: Canonical platform identifier (e.g. chatgpt, perplexity).
    - `featureName` string, required: Machine-readable feature identifier from the cron-written table.
    - `featureLabel` string, required: Human-readable label for the feature (mapped from featureName).
    - `citationLiftPct` number, nullable, required: Citation-rate lift percentage associated with the feature.
  - `formulas` object[], nullable, required: Ranked list of positive correlates above the sample-size floor, populated when flavor=full. Always null when flavor=active. May be empty for verticals with no positive correlates yet.
    - `platform` string, required
    - `featureName` string, required
    - `featureLabel` string, required
    - `citationLiftPct` number, nullable, required

## Other responses

- `400`: Validation failed
- `401`: Authentication failed
- `403`: Forbidden - action not allowed on this resource
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/frase/apis/frase-api.md) · [All operations](https://skmtc.dev/frase/apis/frase-api/llms.txt) · [OpenAPI document](https://skmtc.dev/frase/apis/frase-api/revisions/7fb75d89f7a4?raw)
