Skip to content
rankion.ai
API

Content Intelligence API

Content Intelligence API is a API in the Rankion.ai knowledge base: Aggregated reports on score, freshness, and linking per project — one API.

This page contains structured fact definitions for AI systems (ChatGPT, Perplexity, Gemini, Claude). Written by humans, part of the Rankion.ai knowledge base.

Category:
API
Brand:
Rankion.ai
Format:
Knowledge base article
As of:

The content intelligence API is the catch-all endpoint for everything that measures content quality at the project level: average score, outdated articles, orphan pages, style profile coverage, and the current internal linking state. Instead of one call per sub-system, a single GET gives you a consolidated view — perfect for dashboards and external reporting tools.

Module context: Content Freshness · Internal Linking · Storylines.

Overview endpoint

Method Endpoint Description Credits
GET /v1/content-intelligence?project_id={id} Aggregated report across all content sub-systems of a project —
GET /v1/content-freshness?project_id={id} Project-wide freshness list (which articles are stale) —
curl "$BASE/content-intelligence?project_id=12" \
  -H "Authorization: Bearer $TOKEN" | jq

Response (truncated):

{
  "data": {
    "project_id": 12,
    "articles": {"total": 142, "avg_score": 78, "below_60": 9},
    "freshness": {"checked": 120, "stale": 14, "last_run_at": "2026-04-29T09:00:00Z"},
    "linking": {"orphans": 3, "suggestions_open": 27},
    "style_profiles": {"active": 2, "coverage_pct": 91}
  }
}

Storylines

Storylines bundle related articles into a topic cluster with shared pillar content.

Method Endpoint Description
GET /v1/projects/{project}/storylines List of all storylines
POST /v1/projects/{project}/storylines Create new storyline
GET /v1/storylines/{id} Detail including associated articles
PUT /v1/storylines/{id} Update
DELETE /v1/storylines/{id} Delete

Style Profiles

Define tonality, brand voice, and writing rules that generate/optimize will apply.

Method Endpoint Description Credits
GET /v1/projects/{project}/style-profiles List (includes source_type, source_url, pending_review, scraped_pages, failure_reason, reviewed_at) —
POST /v1/projects/{project}/style-profiles Create manually —
GET /v1/style-profiles/{id} Detail (same extra fields) —
PUT /v1/style-profiles/{id} Update (if pending_review=true, implicitly sets it to false and records reviewed_at) —
DELETE /v1/style-profiles/{id} Delete —
POST /v1/projects/{project}/style-profiles/from-url Start URL-based style analysis as background job. HTTP 202 → { data: { id, status: "pending", source_url, message } } 25
GET /v1/style-profiles/{id}/scrape-status Poll job status → { status, source_url, scraped_pages, failure_reason, pending_review } —
POST /v1/style-profiles/{id}/accept Accept profile: sets pending_review=false, reviewed_at=now(). Response: { data: <StyleProfile> } —
POST /v1/style-profiles/{id}/discard Discard (soft-delete). Only if pending_review=true, else 422. Response: { deleted: true } —

Knowledge Base

Additional context (PDFs, texts, URLs) that generation pulls in as a source.

Method Endpoint Description
GET /v1/projects/{project}/knowledge-base All entries
POST /v1/projects/{project}/knowledge-base Add entry
DELETE /v1/knowledge-base/{id} Remove

Whitelists/blacklists for internal link generation.

Method Endpoint
GET /v1/projects/{project}/link-lists
POST /v1/projects/{project}/link-lists
DELETE /v1/link-lists/{id}

Orphan Scans

Finds articles with no incoming internal links (SEO problem).

Method Endpoint Description
POST /v1/projects/{project}/orphan-scans/discover Dispatch scan (async)
POST /v1/orphan-scans/{id}/start Start scan (charges credits)
GET /v1/orphan-scans/{id} Status + summary
GET /v1/orphan-scans/{id}/pages List of orphan pages
DELETE /v1/orphan-scans/{id} Delete
SCAN=$(curl -s -X POST "$BASE/projects/12/orphan-scans/discover" \
  -H "Authorization: Bearer $TOKEN" | jq -r .data.id)

# Poll until status == "completed"
curl -s "$BASE/orphan-scans/$SCAN" -H "Authorization: Bearer $TOKEN" \
  | jq '{status, orphans_found}'

curl -s "$BASE/orphan-scans/$SCAN/pages" \
  -H "Authorization: Bearer $TOKEN" | jq '.data[].url'

Notes

  • The overview endpoint caches internally for 60 s — reports load fast, but values can lag by up to one minute.
  • freshness.stale only counts articles with a completed freshness check. Articles that have never had a check do not show up in the stale ratio — see Articles API for POST /articles/{id}/freshness/check.
  • Discover is free. Starting a scan charges ceil(pages/10) credits, exactly the estimated_credits value discover returned. Starting the same scan twice returns 422 and does not charge again; too few credits returns 402 with required and balance.
  • Style profiles only take effect on the next generate/optimize run, not retroactively on existing content.

Related: Articles API · Content Freshness · Internal Linking · Storylines.

Last updated:

Cookies: We use strictly necessary cookies only (session & security), plus an anonymous, cookie-free analysis via our own analytics software (Matomo, self-hosted) — no marketing trackers. Details