https://api.surnex.io/v1. Everything the dashboard does, it does through this API.
Base URL
Authentication
Send an API key in theX-API-Key header:
Response format
Every successful response is wrapped:success: false:
success rather than inferring from the presence of data — a successful DELETE returns data: null.
Resources
The API covers the full platform:
The API Reference section of these docs is generated from the live OpenAPI schema at
https://api.surnex.io/openapi.json, so it’s always current.
Path shape
Only listing and creating projects is nested under an organization. Every other project resource is addressed by project id, with the organization derived from it:org_id query parameter; an API key infers it.
Anything you can’t reach answers 404, not 403. See Organizations and scoping.
Stored data, not live lookups
Most endpoints return data collected in the background, not fetched at request time. A rankings endpoint returns the last completed rank check. Endpoints that start work — audits, backlink refreshes, web vitals — return immediately with a job, and you poll for the result. See Jobs and polling. Getting this wrong is the most common source of confusion: an endpoint returning yesterday’s numbers isn’t broken, it’s returning what was last collected.Rate limits
Requests are limited per credential, per minute — 120 for an API key, 60 for a user session. Lower than you might assume, so raiseper_page when paginating. See Rate limits.
Next
Quickstart
Your first authenticated request.
Authentication
Keys, JWTs, and scope.
Jobs and polling
How background work is reported.
Errors
Every error code and what to do about it.