{"openapi":"3.1.0","info":{"title":"Zutrix API","version":"1.0.0","description":"The Zutrix Everything API: rank tracking, keyword research, site audits, backlinks, competitors, AI search visibility, content tools and more. Designed to be used directly by AI models and agents — stable error codes with hints, cursor pagination, ISO-8601 dates, and a request id on every response.","contact":{"url":"https://api-docs.zutrix.com"}},"servers":[{"url":"https://api.zutrix.com/v1"}],"externalDocs":{"url":"https://api-docs.zutrix.com","description":"Guides and reference"},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Zutrix API key, e.g. \"Authorization: Bearer zutrix_live_...\". Create keys in the dashboard under Settings → API."}},"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string","description":"Stable machine-readable error code","examples":["INVALID_INPUT","VALIDATION_ERROR","UNAUTHORIZED","FORBIDDEN","NOT_FOUND","FEATURE_NOT_ENABLED","NO_DATA","RATE_LIMITED","QUOTA_EXCEEDED","PLAN_UPGRADE_REQUIRED","UPSTREAM_ERROR","INTERNAL"]},"request_id":{"type":"string"},"hint":{"type":"string"},"setup_url":{"type":"string"},"details":{}},"required":["error","code","request_id"]}},"parameters":{}},"paths":{"/":{"get":{"summary":"API discovery index","description":"Unauthenticated. Lists the API version, documentation links and authentication instructions so an agent can bootstrap from a single GET.","tags":["Meta"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}}}},"/openapi.json":{"get":{"summary":"This OpenAPI 3.1 document","tags":["Meta"],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}}}}},"/me":{"get":{"summary":"The authenticated account","tags":["Meta"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/usage":{"get":{"summary":"Plan usage and limits","description":"All plan dimensions with used/limit pairs. Check before running metered operations.","tags":["Meta"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects":{"get":{"summary":"List projects","tags":["Projects"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":500,"description":"Page size, default 100, max 500"},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"next_cursor from a previous response"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"summary":"Create a project","tags":["Projects"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":1,"maxLength":1024},"name":{"type":"string","minLength":1,"maxLength":1024},"parent_id":{"type":"string"}},"required":["domain"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Plan quota exhausted or feature unavailable on the plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Request validation failed (details lists the fields)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}":{"get":{"summary":"Get a project","tags":["Projects"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"summary":"Update a project (name, tags)","tags":["Projects"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":1024},"tags":{"type":"array","items":{"type":"string","maxLength":256},"maxItems":100}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient project permission or subscription required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Request validation failed (details lists the fields)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"summary":"Delete a project","description":"Permanent. Also removes tracked keywords, AI-visibility data and scheduled reports, and releases plan quota.","tags":["Projects"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient project permission or subscription required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/keywords":{"get":{"summary":"List tracked keywords with latest positions","tags":["Rank tracking"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":500,"description":"Page size, default 100, max 500"},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"next_cursor from a previous response"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"summary":"Add keywords to track","description":"Simple items ({\"keyword\": \"...\"}) are tracked across the project's configured SERP targets; explicit target objects are also accepted. Consumes rank-tracker quota for net-new keywords.","tags":["Rank tracking"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"keywords":{"type":"array","items":{"type":"object","properties":{"keyword":{"type":"string","minLength":1,"maxLength":512},"tags":{"type":"array","items":{"type":"string","maxLength":256},"maxItems":50,"default":[]},"target":{"type":"object","properties":{"device":{"type":"string","enum":["desktop","mobile"]},"language":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"value":{"type":"string"}},"required":["id","label","value"]},"country":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"value":{"type":"string"}},"required":["id","label","value"]},"location":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"value":{"type":"string"},"type":{"type":"string"}},"required":["id","label","value"]},"search_engine":{"type":"string","default":"google"}},"required":["device","language","country"]}},"required":["keyword"]},"minItems":1,"maxItems":500}},"required":["keywords"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Plan quota exhausted or feature unavailable on the plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient project permission or subscription required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Request validation failed (details lists the fields)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/keywords/{keywordId}":{"delete":{"summary":"Stop tracking a keyword","tags":["Rank tracking"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"},{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Tracked keyword id"},"required":true,"name":"keywordId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient project permission or subscription required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/keywords/{keywordId}":{"get":{"summary":"Get a tracked keyword","tags":["Rank tracking"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Tracked keyword id"},"required":true,"name":"keywordId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/keywords/{keywordId}/history":{"get":{"summary":"Ranking history for a keyword","tags":["Rank tracking"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Tracked keyword id"},"required":true,"name":"keywordId","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":365,"description":"Window in days, default 30"},"required":false,"name":"days","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/rankings":{"get":{"summary":"Rankings table (filter/sort/paginate)","tags":["Rank tracking"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"},{"schema":{"type":"integer","exclusiveMinimum":0,"default":1},"required":false,"name":"page","in":"query"},{"schema":{"type":"integer","exclusiveMinimum":0,"maximum":500,"default":50},"required":false,"name":"per_page","in":"query"},{"schema":{"type":"string","enum":["desktop","mobile"]},"required":false,"name":"device","in":"query"},{"schema":{"anyOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"required":false,"name":"tags","in":"query"},{"schema":{"type":"string","maxLength":512},"required":false,"name":"search","in":"query"},{"schema":{"type":"string","maxLength":64},"required":false,"name":"sort_by","in":"query"},{"schema":{"type":"string","enum":["asc","desc"]},"required":false,"name":"sort_order","in":"query"},{"schema":{"type":"string","maxLength":32},"required":false,"name":"location_id","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Request validation failed (details lists the fields)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/rankings/distribution":{"get":{"summary":"Ranking distribution (top3/top10/top100)","tags":["Rank tracking"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":365},"required":false,"name":"days","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/serp":{"get":{"summary":"Latest SERP snapshot for a tracked keyword","tags":["Rank tracking"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"keyword","in":"query"},{"schema":{"type":"string"},"required":true,"name":"project_id","in":"query"},{"schema":{"type":"string"},"required":false,"name":"country","in":"query"},{"schema":{"type":"string"},"required":false,"name":"language","in":"query"},{"schema":{"type":"string","enum":["desktop","mobile"]},"required":false,"name":"device","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/refresh":{"post":{"summary":"Trigger an on-demand rank refresh","tags":["Rank tracking"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"keyword_ids":{"type":"array","items":{"type":"string","pattern":"^[a-f0-9]{24}$"},"maxItems":5000}}}}}},"responses":{"202":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient project permission or subscription required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Request validation failed (details lists the fields)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"summary":"On-demand refresh status","tags":["Rank tracking"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/keywords/suggestions":{"post":{"summary":"Keyword suggestions from a seed keyword","description":"Consumes planner quota on success.","tags":["Keyword research"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"keyword":{"type":"string","minLength":1,"maxLength":512},"country":{"type":"string","maxLength":128},"language":{"type":"string","maxLength":128}},"required":["keyword"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Plan quota exhausted or feature unavailable on the plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Request validation failed (details lists the fields)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/keywords/site-keywords":{"post":{"summary":"Keywords a domain ranks for","description":"Consumes planner quota on success.","tags":["Keyword research"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","minLength":3,"maxLength":512},"country":{"type":"string","maxLength":128}},"required":["domain"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Plan quota exhausted or feature unavailable on the plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Request validation failed (details lists the fields)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/keywords/metrics":{"get":{"summary":"Search volume / CPC / competition for a keyword","tags":["Keyword research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"keyword","in":"query"},{"schema":{"type":"string"},"required":false,"name":"country","in":"query"},{"schema":{"type":"string"},"required":false,"name":"language","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/explorer/domain":{"get":{"summary":"Domain overview (backlinks, rank, history)","description":"Consumes explorer quota on success.","tags":["Explorer"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"domain","in":"query"},{"schema":{"type":"string"},"required":false,"name":"country","in":"query"},{"schema":{"type":"string"},"required":false,"name":"language","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Plan quota exhausted or feature unavailable on the plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/explorer/history":{"get":{"summary":"Past explorer lookups","tags":["Explorer"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/audits":{"post":{"summary":"Run a site audit","description":"Consumes audit quota on success.","tags":["Site audit"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"}},"required":["url"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Plan quota exhausted or feature unavailable on the plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Request validation failed (details lists the fields)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"summary":"List past audits","tags":["Site audit"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/audits/{taskId}":{"get":{"summary":"Get an audit result","tags":["Site audit"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"taskId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/backlinks":{"get":{"summary":"List backlinks","tags":["Backlinks"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":500,"description":"Page size, default 100, max 500"},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"next_cursor from a previous response"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"is_new","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"is_lost","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"is_broken","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/backlinks/summary":{"get":{"summary":"Backlink summary counts","tags":["Backlinks"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/competitors":{"get":{"summary":"Competitor overview with gap headlines","tags":["Competitors"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"summary":"Replace the competitor list","tags":["Competitors"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"competitors":{"type":"array","items":{"type":"string","minLength":1,"maxLength":512},"maxItems":50}},"required":["competitors"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Plan quota exhausted or feature unavailable on the plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient project permission or subscription required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Request validation failed (details lists the fields)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/competitors/rankings":{"get":{"summary":"Competitor positions for tracked keywords","tags":["Competitors"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"},{"schema":{"type":"string","enum":["desktop","mobile"]},"required":false,"name":"device","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/keyword-gaps":{"get":{"summary":"Keyword gap items vs a competitor","tags":["Competitors"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":500,"description":"Page size, default 100, max 500"},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"next_cursor from a previous response"},"required":false,"name":"cursor","in":"query"},{"schema":{"type":"string"},"required":false,"name":"competitor","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/backlink-gaps":{"get":{"summary":"Backlink gap items vs competitors","tags":["Competitors"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":500,"description":"Page size, default 100, max 500"},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","description":"next_cursor from a previous response"},"required":false,"name":"cursor","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/ai-visibility":{"get":{"summary":"AI search visibility summary","tags":["AI visibility"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/ai-visibility/keywords":{"get":{"summary":"Tracked AI-visibility keywords","tags":["AI visibility"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/ai-visibility/history":{"get":{"summary":"AI visibility history","tags":["AI visibility"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":365},"required":false,"name":"days","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ai-visibility/keywords/{keywordId}/results":{"get":{"summary":"Per-model results for an AI-visibility keyword","tags":["AI visibility"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"AI-visibility keyword id"},"required":true,"name":"keywordId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/content":{"get":{"summary":"List Magic Content documents","tags":["Content"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"summary":"Create a Magic Content document","description":"Consumes Magic Content quota. Analysis (competitors, NLP terms, brief) runs asynchronously — poll GET /content/{contentId}.","tags":["Content"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"keyword":{"type":"string","minLength":1,"maxLength":512},"location":{"type":"object","properties":{"id":{"anyOf":[{"type":"string"},{"type":"number"}]},"label":{"type":"string"},"value":{"type":"string"}},"required":["id"]},"language":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"value":{"type":"string"}},"required":["id"]},"device":{"type":"string","enum":["desktop","mobile"]},"selected_competitors":{"type":"array","items":{"type":"string"},"maxItems":20}},"required":["keyword"]}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Plan quota exhausted or feature unavailable on the plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Request validation failed (details lists the fields)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/content/{contentId}":{"get":{"summary":"Get a Magic Content document","tags":["Content"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"contentId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/content-tracker":{"get":{"summary":"Content tracker overview","tags":["Content"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/content-tracker/stats":{"get":{"summary":"Content tracker stats","tags":["Content"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/content-tracker/audit-page":{"post":{"summary":"Audit a single page","tags":["Content"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"page_id":{"type":"string","maxLength":128}},"required":["url"]}}}},"responses":{"202":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient project permission or subscription required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Request validation failed (details lists the fields)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/traffic":{"get":{"summary":"Daily analytics series (GA4)","tags":["Traffic"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":365,"default":30},"required":false,"name":"days","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Request validation failed (details lists the fields)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/gsc/keywords":{"get":{"summary":"Search Console query data","tags":["Traffic"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/projects/{projectId}/reports":{"get":{"summary":"List scheduled reports","tags":["Reports"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Project id (from GET /projects)"},"required":true,"name":"projectId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/reports/{reportId}/history":{"get":{"summary":"Report delivery history","tags":["Reports"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Report id"},"required":true,"name":"reportId","in":"path"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/reports/{reportId}/send":{"post":{"summary":"Send a report now","tags":["Reports"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","pattern":"^[a-f0-9]{24}$","description":"Report id"},"required":true,"name":"reportId","in":"path"}],"responses":{"202":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient project permission or subscription required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found (or no data available yet)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/team":{"get":{"summary":"Team members and workspace memberships","tags":["Account"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/notifications":{"get":{"summary":"List notifications","tags":["Account"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":["integer","null"]},"required":false,"name":"page","in":"query"},{"schema":{"type":["integer","null"],"maximum":100},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/countries":{"get":{"summary":"Supported countries","tags":["Reference"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/languages":{"get":{"summary":"Supported languages","tags":["Reference"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"country","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/locations":{"get":{"summary":"Search locations within a country","tags":["Reference"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"country","in":"query"},{"schema":{"type":"string"},"required":false,"name":"q","in":"query"}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{}}}}},"400":{"description":"Invalid input or feature not enabled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded — respect Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"webhooks":{}}