Skip to content

REST API

The HTTP API behind the CLI and MCP server, with scopes, rate limits, and the dry-run pattern.

Base URL: https://api.rctrl.com. Authenticate with a Bearer key from Settings → API (or one minted by rankcontrol login).

curl -s https://api.rctrl.com/api/v1/overview/funnel \
  -H "Authorization: Bearer rctrl_pk_..."

Conventions

  • Successful responses wrap the payload: { "data": ... }.
  • Errors return a JSON body { "error": "message" } with a matching HTTP status: 400 bad input, 401 bad key, 403 missing scope, 404 not yours or not found, 429 rate limited.
  • POST bodies are JSON with Content-Type: application/json.
  • The API evolves additively. Fields and optional arguments get added; existing ones are never renamed or repurposed.

Scopes

Scope Grants
read:citations Visibility scores, trends, citation checks, sentiment, sources
read:content Content pages, ideas, backlinks, social threads, brand data
read:leads Captured leads
read:analytics Traffic, engagement, reports, jobs, crawler access
write:content Plan, generate, archive, ideas, outreach drafts, brand writes, support
write:queries Tracked-query management
write:publish Publishing to the connected CMS
write:backlinks Outreach status, Link Network membership and placements
write:social Repurpose generation and pushes, social thread actions
manage:org Article policy, team management

Rate limits

Two layers apply on every request: a per-key plan limit, and a per-route cap on costly or side-effect routes (the Cap/min column below). Exceeding either returns 429 with a retryAfterMs hint. The caps are sized so normal use never hits them; they exist to stop runaway loops.

The dry-run pattern

Publicly visible side effects (publishing, social pushes, outreach sends, Link Network changes, team invites) return a preview by default:

{ "data": { "dryRun": true, "note": "Repeat with confirm: true." } }

Send the same request again with "confirm": true to execute. Design agent workflows so a human sees the dry-run output before the confirm call.

Endpoints

Endpoint Scope Cap/min Purpose
GET /api/v1/overview/funnel read:analytics plan AI pipeline: crawls, AI visits, AI leads
GET /api/v1/visibility/score read:citations plan Composite visibility score
GET /api/v1/visibility/trend read:citations plan Daily visibility series
GET /api/v1/visibility/share-of-voice read:citations plan You vs competitors
GET /api/v1/visibility/sources read:citations plan Domains AI answers cite
GET /api/v1/visibility/sentiment read:citations plan Citation framing
GET /api/v1/citations read:citations plan Recent citation checks
GET /api/v1/queries read:citations plan Tracked-query pool
POST /api/v1/queries write:content 10 Add a tracked query
GET /api/v1/crawler-access read:analytics plan AI-crawler reachability probe
GET /api/v1/content read:content plan Content pages
GET /api/v1/content/ideas read:content 30 Scored idea backlog
POST /api/v1/content/ideas/plan write:content 10 Plan an idea onto the calendar
GET /api/v1/content/optimizer read:content plan Citability report
GET /api/v1/content/planning-capacity read:content plan Remaining plan slots
POST /api/v1/content/plan write:content 5 Generate candidate titles
POST /api/v1/content/plan/commit write:content 10 Commit approved titles
POST /api/v1/content/generate write:content 5 Write a planned article now
POST /api/v1/content/publish write:publish 10 Publish to the CMS (dry run)
POST /api/v1/content/reschedule write:content 20 Move a planned article
POST /api/v1/content/archive write:content 30 Archive an article
GET /api/v1/content/internal-links read:content plan Link graph for an article
GET /api/v1/settings/articles manage:org plan Article policy
POST /api/v1/settings/articles manage:org 10 Patch the policy
GET /api/v1/links/pages read:content plan Site pages for internal links
POST /api/v1/links/pages write:content 10 Add site pages
POST /api/v1/links/detect write:content 3 Scan a sitemap or blog root
GET /api/v1/analytics/traffic read:analytics plan Traffic overview (null until Analytics is activated)
GET /api/v1/analytics/engagement read:analytics 30 Per-page views and citations
GET /api/v1/analytics/sources read:analytics plan Source selections, qualified options, install state
POST /api/v1/analytics/sources manage:org 10 Select the writer for a data type
POST /api/v1/analytics/activate manage:org 10 Turn on the Analytics or Reports screen
POST /api/v1/integrations/cloudflare/connect-url manage:org 10 Cloudflare OAuth URL (crawler data source)
GET /api/v1/integrations/cloudflare/zones manage:org 10 Zones visible to the grant
POST /api/v1/integrations/cloudflare/zone manage:org 10 Pick the polled zone, start first sync
POST /api/v1/integrations/framer/install-embed manage:org 5 Site-wide tracking on Framer (dry run; confirm publishes their site)
POST /api/v1/integrations/webflow/custom-code manage:org 5 Tracking loader via Webflow custom code (dry run)
GET /api/v1/reports/summary read:analytics 30 Executive summary (null until Reports is activated)
GET /api/v1/reports/wins read:analytics 30 Top wins (null until Reports is activated)
GET /api/v1/reports/agent-activity read:analytics 60 Runs per agent lane
GET /api/v1/jobs read:analytics plan Recent agent runs
GET /api/v1/leads read:leads plan Captured leads
GET /api/v1/repurpose read:content plan Repurpose queue or drafts
GET /api/v1/repurpose/channels write:social 3 Postiz channels
POST /api/v1/repurpose/generate write:social 5 Draft social posts (dry run)
POST /api/v1/repurpose/draft write:social plan Edit a draft
POST /api/v1/repurpose/push write:social 5 Push to Postiz (dry run)
POST /api/v1/repurpose/mark-posted write:social plan Mark posted
GET /api/v1/backlinks read:content 60 Backlink table
GET /api/v1/backlinks/stats read:content 60 Backlink and pipeline stats
GET /api/v1/outreach/prospects read:content plan Outreach pipeline
POST /api/v1/outreach/find-contact write:content 5 Find a prospect contact
POST /api/v1/outreach/draft-reply write:content 5 AI-draft a reply
POST /api/v1/outreach/queue write:content 10 Queue a send (dry run)
POST /api/v1/outreach/status write:backlinks 30 Move a prospect
GET /api/v1/link-network read:content 30 Credits, membership, placements
POST /api/v1/link-network/opt-in write:backlinks 5 Join or leave (dry run)
POST /api/v1/link-network/remove-placement write:backlinks 10 Retire a placement (dry run)
GET /api/v1/social read:content 30 Social thread prospects
GET /api/v1/social/stats read:content 60 Thread pipeline counts
POST /api/v1/social/status write:social 30 Move a thread
POST /api/v1/social/draft-reply write:social 5 AI-draft a reply
GET /api/v1/brand read:content 60 Brand profile, products, ICPs
POST /api/v1/brand/profile write:content 20 Patch voice and style
POST /api/v1/brand/product write:content 20 Upsert or delete a product
POST /api/v1/brand/icp write:content 20 Upsert or delete a buyer profile
GET /api/v1/team manage:org plan Members and invites
POST /api/v1/team/invite manage:org 5 Invite (dry run)
POST /api/v1/team/revoke manage:org plan Revoke an invite
POST /api/v1/team/remove manage:org 5 Remove a member (confirm)
POST /api/v1/support write:content 3 File a support message
GET /api/v1/articles read:content plan Content API for headless sites
Navigation

Type to search…

↑↓ navigate↵ selectEsc close