Keywords
Research, enrich, star, and group keywords.
Backlinks
Run campaigns and generate outreach.
Content
Plan, generate, and publish articles.
AI Visibility
Track your brand across LLM answers.
Analytics
Traffic, Search Console, and bot data.
Account
Verify keys and connect a CMS.
Base URL
All resources are served under a single versioned prefix:Authentication
Every request must include your API key as a Bearer token:- Belongs to a single user and is bound to one website by default (configurable in the dashboard).
- Requires a paid subscription tier with API access enabled.
- Only sees websites within your organization(s).
Make your first request
1
Grab your API key
Open Account → API Keys in the dashboard and copy a key.
2
Verify it works
Call
GET /me — it works on any valid key regardless of subscription tier, so it’s the fastest way to confirm authentication.3
Fetch some data
List your keywords. Use the API Explorer on any endpoint page to try it live and copy the generated code.
Scoping to a specific website
If your key is bound to a website, every request defaults to that website. To target a different website you own, passwebsite_id as a query parameter:
403.
Common parameters
Most list endpoints accept pagination, and analytics endpoints accept a date range.uuid
Override the target website. Defaults to the API key’s website.
integer
Number of results to return. Default varies per endpoint.
integer
default:"1"
Page number for paginated endpoints.
string
default:"30d"
Analytics only. Preset date range — one of
7d, 30d, 90d.string
Analytics only. Start date (
YYYY-MM-DD).string
Analytics only. End date (
YYYY-MM-DD).When both
from and to are provided, range is ignored.Response format
All responses are JSON and follow a consistent envelope.data and add a meta object for pagination. Single-resource endpoints return the object directly under data.
HTTP status codes
Rate limits & usage
Each API call counts against your plan’s limits the same way in-app actions do. When a limit is reached the API responds with402 Payment Required. Enable metered billing in Account → Billing → Usage to allow overage.
Handling errors
401 — Invalid or missing API key
401 — Invalid or missing API key
Confirm the
Authorization: Bearer <key> header is present and the key is active. Test with GET /me, which bypasses the paid-tier check.402 — Usage limit reached
402 — Usage limit reached
You’ve exhausted a credit bucket (keyword research, backlink research, or AI credits). Enable metered billing under Account → Billing → Usage to allow overage, or wait for the next cycle.
403 — Forbidden
403 — Forbidden
Either your plan doesn’t include Public API access, the key is inactive, or the
website_id you passed isn’t in one of your organizations.Long-running jobs (202)
Long-running jobs (202)
POST /keywords/research returns a job_id. Poll GET /keywords/research/{jobId} until status is completed or failed. Avoid sync: true in production — it’s subject to gateway timeouts.CORS
All endpoints respond withAccess-Control-Allow-Origin: *, so they can be called from any origin — but never ship a key in a browser. Always proxy requests through your own backend.