Get an opportunity
Full detail for a single opportunity, resolved across the source tables by the id prefix: gap_ reads content_gap_opportunities, prog_ reads programmatic_opportunities, decay_ reads performance_alerts. The id is <prefix>_<uuid>; a malformed UUID suffix is refused with 400 (not 500). A bare UUID with no prefix is tolerated and resolves as a gap opportunity. Everything the list route returns is present, plus the detail-only fields source_id, source_table, traffic_source, estimated_clicks, existing_content_url, parameters, suggested_brief_id, brief_status, content_id, content_status and methodology (the transparency block: data sources, analysis, calculation, assumptions, confidence factors). Requires the read:opportunities scope. Reads are org-scoped, so an id belonging to another organization returns 404, indistinguishable from one that does not exist. A gap row whose keyword fails the shared junk-keyword filter also resolves to 404 - the same rows the hub hides are unavailable here, so an agent cannot plan off a row a human would never see. relevance is derived at read time (cluster fit + first-party evidence + never-write-about terms) and is null when no verdict was derived.
2026-09-07 - decay_ ids resolve decay alerts only
A decay_<id> whose alert is a ranking or traffic alert now answers 404. The list never emitted such an id (it lists decay alerts only), and the detail gives the list's answer for every source.
2026-09-07 - closed rows report their status
A completed or dismissed programmatic row and a resolved decay alert still resolve by their id, and now carry that status (completed or dismissed) where they carried new; a resolved alert is closed whoever resolved it, and reads dismissed only when the dismissal wrote its own default words. The lists never show them; a stored id reads its final state.
Request
- Base URL: https://next.frase.io/api/v1
- URL: https://next.frase.io/api/v1/opportunities/{id}
- Auth: API key in header X-API-KEY
Path parameters
Composite opportunity ID: gap_UUID, prog_UUID or decay_UUID.
Response
Opportunity detail
Changes
No recorded changes to this operation across all 1 revision of this API.