SEO Vendor APIDeveloper Referencev1
All systems operational
Essential Technical Report

Preliminary Audit

Generate an essential technical SEO and GEO health report for any URL in a single call.

POSThttps://ai.seovendor.co/api/preliminaryaudit/
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
analyze Run a preliminary SEO audit.
URLstringrequiredTarget URL to audit.
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: analyze · HTTP 200

200 response example
{
  "success": true,
  "application": "preliminaryaudit",
  "action": "analyze",
  "data": {
    "overallscore": 0,
    "maxscore": 0,
    "providedurl": {
      "URL": "https://seovendor.co",
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    },
    "effectiveurl": {
      "URL": "https://seovendor.co",
      "retcode": 0,
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    },
    "apiscore": {
      "percent": 0,
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    },
    "blockingmetatags": {
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    },
    "canonical": {
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    },
    "LoadSpeed": {
      "time": 0.0,
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    },
    "NoSSL": {
      "checkedurl": "string",
      "redirectedurl": "string",
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    },
    "NoSSLwww": {
      "checkedurl": "string",
      "redirectedurl": "string",
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    },
    "SSL": {
      "checkedurl": "string",
      "redirectedurl": "string",
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    },
    "SSLwww": {
      "checkedurl": "string",
      "redirectedurl": "string",
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    },
    "matchurl": {
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    },
    "consistenturl": {
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    },
    "homeurl": {
      "URL": "https://seovendor.co",
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    },
    "robots": {
      "URL": "https://seovendor.co",
      "retcode": 0,
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    },
    "crawl": {
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    },
    "sitemap": {
      "URL": "https://seovendor.co",
      "retcode": 0,
      "score": 0.92,
      "maxscore": 0,
      "message": "The kw field is required.",
      "label": "string",
      "help": "string"
    }
  },
  "meta": {
    "request_id": "req_3f9a7c2e8b41",
    "duration_ms": 1284,
    "upstream_http_code": 200
  },
  "error": null
}
Response schema
successboolean= true
applicationstring= "preliminaryaudit"
actionstring= "analyze"
dataobjectPreliminary SEO audit results.
└─overallscoreintegerTotal score earned across all audit checks.
└─maxscoreintegerMaximum achievable score across all checks.
└─providedurlobject
└─URLstringThe normalized URL that was validated.
└─scoreintegerPoints earned for this check.
└─maxscoreintegerMaximum points available for this check.
└─messagestringHuman-readable result message for this check.
└─labelstringURL Validation
└─helpstringValidates that the submitted URL is properly formatted and reachable.
└─effectiveurlobject
└─URLstringFinal destination URL after following redirects.
└─retcodeintegerHTTP response code from the effective URL.
└─scoreintegerPoints earned.
└─maxscoreintegerMaximum points available.
└─messagestringResult message.
└─labelstringEffective URL
└─helpstringStores the final destination URL after following redirects so you can verify where the request actually landed.
└─apiscoreobject
└─percentintegerCrawl difficulty percentage score.
└─scoreintegerPoints earned.
└─maxscoreintegerMaximum points available.
└─messagestringResult message.
└─labelstringCrawl/Index Difficulty
└─helpstringAssesses how easily search engines can crawl or index the site.
└─blockingmetatagsobject
└─scoreintegerPoints earned for this check.
└─maxscoreintegerMaximum points available for this check.
└─messagestringHuman-readable result message for this check.
└─labelstringBlocking Meta Tags
└─helpstringChecks for meta tags like noindex or nofollow that prevent indexing.
└─canonicalobject
└─scoreintegerPoints earned for this check.
└─maxscoreintegerMaximum points available for this check.
└─messagestringHuman-readable result message for this check.
└─labelstringCanonical Tags
└─helpstringChecks for canonical tags, duplicates, and alignment with the effective URL.
└─LoadSpeedobject
└─timenumberPage load time in seconds.
└─scoreintegerPoints earned.
└─maxscoreintegerMaximum points available.
└─messagestringResult message.
└─labelstringRaw Load Speed
└─helpstringMeasures page load time without images or JS.
└─NoSSLobject
└─checkedurlstringURL that was checked.
└─redirectedurlstringFinal URL after redirect.
└─scoreintegerPoints earned for this check.
└─maxscoreintegerMaximum points available for this check.
└─messagestringHuman-readable result message for this check.
└─labelstringHTTP/non-SSL
└─helpstringTests accessibility over HTTP without SSL.
└─NoSSLwwwobject
└─checkedurlstringURL that was checked.
└─redirectedurlstringFinal URL after redirect.
└─scoreintegerPoints earned for this check.
└─maxscoreintegerMaximum points available for this check.
└─messagestringHuman-readable result message for this check.
└─labelstringHTTP/non-SSL WWW
└─helpstringSame HTTP non-SSL test on the www subdomain.
└─SSLobject
└─checkedurlstringURL that was checked.
└─redirectedurlstringFinal URL after redirect.
└─scoreintegerPoints earned for this check.
└─maxscoreintegerMaximum points available for this check.
└─messagestringHuman-readable result message for this check.
└─labelstringHTTPS/SSL
└─helpstringChecks HTTPS accessibility and SSL configuration.
└─SSLwwwobject
└─checkedurlstringURL that was checked.
└─redirectedurlstringFinal URL after redirect.
└─scoreintegerPoints earned for this check.
└─maxscoreintegerMaximum points available for this check.
└─messagestringHuman-readable result message for this check.
└─labelstringHTTPS/SSL WWW
└─helpstringValidates HTTPS on the www subdomain.
└─matchurlobject
└─scoreintegerPoints earned for this check.
└─maxscoreintegerMaximum points available for this check.
└─messagestringHuman-readable result message for this check.
└─labelstringURL Match
└─helpstringCompares the input URL to the effective destination URL.
└─consistenturlobject
└─scoreintegerPoints earned for this check.
└─maxscoreintegerMaximum points available for this check.
└─messagestringHuman-readable result message for this check.
└─labelstringHTTP Redirect Consistency
└─helpstringEnsures all URL variants consistently redirect.
└─homeurlobject
└─URLstringThe discovered homepage URL.
└─scoreintegerPoints earned for this check.
└─maxscoreintegerMaximum points available for this check.
└─messagestringHuman-readable result message for this check.
└─labelstringHomepage URL Validation
└─helpstringVerifies the homepage URL is reachable.
└─robotsobject
└─URLstringRobots.txt URL found.
└─retcodeintegerHTTP response code for robots.txt.
└─scoreintegerPoints earned.
└─maxscoreintegerMaximum points available.
└─messagestringResult message.
└─labelstringRobots.txt
└─helpstringLocates and reads robots.txt to check crawl directives.
└─crawlobject
└─scoreintegerPoints earned for this check.
└─maxscoreintegerMaximum points available for this check.
└─messagestringHuman-readable result message for this check.
└─labelstringCrawlability
└─helpstringChecks robots.txt for blocked search engines, directories or files.
└─sitemapobject
└─URLstringSitemap URL found.
└─retcodeintegerHTTP response code for the sitemap.
└─scoreintegerPoints earned.
└─maxscoreintegerMaximum points available.
└─messagestringResult message.
└─labelstringSitemap
└─helpstringFinds the sitemap file to list all pages for efficient crawling and indexing.
metaobject
└─request_idstring
└─duration_msinteger
└─upstream_http_codeinteger
errornull

errorHTTP 400, 401, 502, 503, or 504

error response example
{
  "success": false,
  "application": "preliminaryaudit",
  "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/preliminaryaudit/definitions"
  }
}
Response schema
successboolean= false
applicationstring= "preliminaryaudit"
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/preliminaryaudit/
curl -X POST "https://ai.seovendor.co/api/preliminaryaudit/" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -d '{
  "k": "[API KEY]",
  "action": "analyze",
  "URL": "https://seovendor.co"
}'
<?php
$ch = curl_init("https://ai.seovendor.co/api/preliminaryaudit/");

$payload = [
    "k" => "[API KEY]",
    "action" => "analyze",
    "URL" => "https://seovendor.co",
];

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/preliminaryaudit/", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "Accept": "application/json"
  },
  body: JSON.stringify({
    k: "[API KEY]",
    action: "analyze",
    URL: "https://seovendor.co",
  })
});

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

url = "https://ai.seovendor.co/api/preliminaryaudit/"

payload = {
    "k": "[API KEY]",
    "action": "analyze",
    "URL": "https://seovendor.co",
}

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.