Rank Tracking
Create, update, and delete rank-tracker configs and their tracked keywords.
Rank-tracker configs pair a domain with a location, language, device set, and check schedule. Reads return latest keyword positions; writes manage configs and their keyword lists. All endpoints are workspace-scoped via SSO.
Read positions
GET https://api.misar.io/seo/rank-tracking/keywords?projectId=...&trackerId=...
Without trackerId: lists trackers in the project. With trackerId: returns the
config plus the latest position snapshot per keyword. Free — charges no credits.
Create a config
POST https://api.misar.io/seo/rank-tracking/configs
| Field | Type | Notes |
|---|---|---|
projectId | string (uuid) | Required. |
domain | string | Domain to track. |
serpDepth | number | 10–100. |
locationCode | number | DataForSEO location (default 2840 = US). |
languageCode | string | Default en. |
devices | desktop | mobile | both | Default both. |
scheduleInterval | daily | weekly | manual | Default weekly. |
Returns { "configId": "..." } with HTTP 201.
Update a config
PATCH https://api.misar.io/seo/rank-tracking/configs
Body: { projectId, configId, ...partial fields } (any of domain, serpDepth,
locationCode, languageCode, devices, scheduleInterval, isActive).
Returns { "success": true }.
Delete a config
DELETE https://api.misar.io/seo/rank-tracking/configs
Body: { projectId, configId }. Returns { "success": true }.
Deleting a config cascades to its tracked keywords, check runs, and position snapshots. This cannot be undone.
Add keywords
POST https://api.misar.io/seo/rank-tracking/keywords
Body: { projectId, configId, keywords: string[] }. Returns
{ "added": n, "addedIds": [...] } with HTTP 201.
Remove keywords
DELETE https://api.misar.io/seo/rank-tracking/keywords
Body: { projectId, configId, keywordIds: string[] }. Returns
{ "removed": n }.