rankion.ai
API

Content Intelligence API

Aggregated reports on score, freshness, and linking per project — one API.

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

Link Lists

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 Restart
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.
  • Orphan scans are async, but cheap (no credit cost) and idempotent per project — parallel discovers are deduplicated server-side.
  • Style profiles only take effect on the next generate/optimize run, not retroactively on existing content.

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

Letzte Aktualisierung: May 7, 2026

Cookies: We use necessary cookies for functionality and optional ones for improvements. Details

Necessary
Active
Analytics
Marketing