SEO Vendor APIDeveloper Referencev1
All systems operational
Article Topic Planning

Topical Authority

Plan topical authority by generating the article topics and supporting content a site needs to own a subject.

POSThttps://ai.seovendor.co/api/topical-authority/
Authenticate every request by passing your secret key as k in the JSON body. Requests are POST with Content-Type: application/json.

01Request parameters

FieldTypeRequiredDescription
actionstringoptional
topics Find topical authority topics.content Generate topical authority content.
kwstringrequiredKeyword text, 4 to 300 characters.
brandstringoptionalBrand text, max 60 characters.
webstringoptionalWebsite URL, max 300 characters.
urlstringoptionalFallback website URL used when web is not sent, max 300 characters.
topicmodestringoptional
seo Find SEO topicsgeo Find GEO topics
brandpersonastringoptionalBrand persona text, max 2000 characters.
langintegeroptional
0 US English1 UK English2 Australian English3 Spanish4 Italian5 French6 German7 Portuguese8 Dutch9 Bulgarian10 Czech11 Danish12 Estonian13 Finnish
+26 more options
14 Greek15 Hungarian16 Polish17 Norwegian18 Romanian19 Swedish20 Brazilian Portuguese21 Mexican Spanish22 Colombian Spanish23 Argentine Spanish24 Peruvian Spanish25 Canadian English26 Chilean Spanish27 Bolivian Spanish28 Catalan29 Austrian German30 Canadian French31 Belgian Dutch (Flemish)32 Belgian French33 Scottish English34 Slovak35 New Zealand English36 Irish English37 Swiss German38 Croatian39 Turkish
topicsizeintegeroptional
0 101 202 30
kstringrequiredAPI key sent as k in query string, POST body, JSON body; api_key is also accepted, 11 to 120 characters.

02Response

Every response uses the standard envelope (success, application, action, data, meta, error). The data field for this endpoint is documented below.

successaction: topics · HTTP 200

200 response example
{
  "success": true,
  "application": "topical-authority",
  "action": "topics",
  "data": [
    {
      "subheading": "string"
    }
  ],
  "meta": {
    "request_id": "req_3f9a7c2e8b41",
    "duration_ms": 1284,
    "upstream_http_code": 200
  },
  "error": null
}
Response schema
successboolean= true
applicationstring= "topical-authority"
actionstring= "topics"
dataarraySuggested article topics and subtopics for the given keyword.
└─subheadingstringSuggested topic or subtopic title.
metaobject
└─request_idstring
└─duration_msinteger
└─upstream_http_codeinteger
errornull

successaction: content · HTTP 200

200 response example
{
  "success": true,
  "application": "topical-authority",
  "action": "content",
  "data": [
    {
      "Topic": "string",
      "Source": 0,
      "Length": 0,
      "Date": "2026-06-24",
      "subheading": "string"
    }
  ],
  "meta": {
    "request_id": "req_3f9a7c2e8b41",
    "duration_ms": 1284,
    "upstream_http_code": 200
  },
  "error": null
}
Response schema
successboolean= true
applicationstring= "topical-authority"
actionstring= "content"
dataarrayContent plan entries. Structure varies by topicmode: seo mode returns full content plan items; geo mode returns subheading entries.
└─TopicstringArticle topic title. Present in seo topicmode.
└─SourceintegerTopic origin: 0=AI-generated, 1=Related Questions, 2=Related Searches. Present in seo topicmode.
└─LengthintegerRecommended word count for the article. Present in seo topicmode.
└─DatestringSuggested publish date. Present in seo topicmode.
└─subheadingstringSubtopic heading. Present in geo topicmode.
metaobject
└─request_idstring
└─duration_msinteger
└─upstream_http_codeinteger
errornull

errorHTTP 400, 401, 502, 503, or 504

error response example
{
  "success": false,
  "application": "topical-authority",
  "action": "string",
  "data": null,
  "meta": {
    "request_id": "req_3f9a7c2e8b41"
  },
  "error": {
    "code": "invalid_request",
    "message": "The kw field is required.",
    "field": "kw",
    "details": [],
    "apidefinitions": "https://ai.seovendor.co/api/topical-authority/definitions"
  }
}
Response schema
successboolean= false
applicationstring= "topical-authority"
actionstring
datanull
metaobject
└─request_idstring
errorobject
└─codestringError code returned by the API.
└─messagestringHuman-readable error message.
└─fieldstringInput field associated with the error.
└─detailsarrayAdditional error details.
└─apidefinitionsstringPublic API definitions URL.
POST /api/topical-authority/
curl -X POST "https://ai.seovendor.co/api/topical-authority/" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
  "k": "[API KEY]",
  "action": "topics",
  "kw": "white label seo",
  "web": "https://seovendor.co",
  "brand": "SEO Vendor"
}'
<?php
$ch = curl_init("https://ai.seovendor.co/api/topical-authority/");

$payload = [
    "k" => "[API KEY]",
    "action" => "topics",
    "kw" => "white label seo",
    "web" => "https://seovendor.co",
    "brand" => "SEO Vendor",
];

curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_HTTPHEADER => [
        "Content-Type: application/json",
        "Accept: application/json",
    ],
    CURLOPT_POSTFIELDS => json_encode($payload),
]);

$response = curl_exec($ch);
curl_close($ch);

$data = json_decode($response, true);
print_r($data);
const response = await fetch("https://ai.seovendor.co/api/topical-authority/", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Accept": "application/json"
  },
  body: JSON.stringify({
    k: "[API KEY]",
    action: "topics",
    kw: "white label seo",
    web: "https://seovendor.co",
    brand: "SEO Vendor",
  })
});

const data = await response.json();
console.log(data);
import requests

url = "https://ai.seovendor.co/api/topical-authority/"

payload = {
    "k": "[API KEY]",
    "action": "topics",
    "kw": "white label seo",
    "web": "https://seovendor.co",
    "brand": "SEO Vendor",
}

headers = {
    "Content-Type": "application/json",
    "Accept": "application/json"
}

response = requests.post(url, json=payload, headers=headers)
data = response.json()
print(data)
SEO Vendor API
Base URL https://ai.seovendor.co/api  ·  All requests are POST · JSON in, JSON out · © 2026 SEO Vendor. Built for agencies since 2004.