SEO Audit API

SEO API documentation for REST and MCP, generated from the implemented API contract.

API selector
Website & On-Page SEO

API overview

Website audit summary with explicit observation scope and missing evidence. Uses a fixed bounded plan. Source and image facts retain their observation time; a screenshot does not prove current indexing or complete website coverage.

Try this API
Endpoint
/api/skill-api/v1/skills/website-audit-summary/run
MCP method
nexscope_website_audit_summary

Authentication

All run endpoints require a user API key. Send it as a bearer token in the Authorization header.

Authorization: Bearer nk_xxxxxxxxxxxxxxxxx
Missing or invalid API keys return an authentication error. Manage keys from .
POST/api/skill-api/v1/skills/website-audit-summary/run

Run an API

Send a JSON request body using the parameters described below.

Slugwebsite-audit-summary
HeadersAuthorization: Bearer nk_...
Content-Type: application/json
Request bodyAPI-specific JSON object.
Response bodyComplete HTTP envelope, including code and data.

Status codes

CodeDescription
200API executed successfully. Body is the direct response payload.
400Request JSON or required API parameters are invalid.
401API key is missing, invalid, or cannot be matched to a user.
5xxAPI execution or upstream service failed.

Example request

curl -X POST https://api.nexscope.ai/api/skill-api/v1/skills/website-audit-summary/run \
  -H "Authorization: Bearer nk_xxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{   "profile": "BASE",   "target": "example" }'
All categories/ Website & On-Page SEO
POST/api/skill-api/v1/skills/website-audit-summary/run

Run this API

Send a JSON request to execute this API and receive the documented response payload.

Endpoint

MethodPOST
Path/api/skill-api/v1/skills/website-audit-summary/run
AuthBearer API key
Content-Typeapplication/json

Request body

NameTypeRequiredDescription
profilestringoptional
Profile value used by this API operation.
Allowed: BASE, ENRICHED
Default: BASE
targetstringrequired
Target value used by this API operation.
Maximum length: 253

Request example

{
  "profile": "BASE",
  "target": "example"
}

Response body

NameTypeRequiredDescription
codeintegerrequired
0 is a successful envelope; inspect data.status separately.
Allowed: 0, 42008, 42009
coststringrequired
Elapsed processing milliseconds; not price. -1 for non-web context.
dataobjectrequired
Data value used by this API operation.
data.callIdstring | nulloptional
Call id value used by this API operation.
data.completedAtinteger | nulloptional
Completed at value used by this API operation.
data.coverageobjectoptional
Coverage value used by this API operation.
data.coverage.missingarrayoptional
Missing value used by this API operation.
data.coverage.missing[]objectrequired
Item in data coverage missing.
data.coverage.missing[].fieldstringoptional
Field value used by this API operation.
data.coverage.missing[].reasonstringoptional
Reason value used by this API operation.
data.coverage.statusstringoptional
Status value used by this API operation.
data.requestedAtinteger | nulloptional
Requested at value used by this API operation.
data.resultobject | nullrequired
Result value used by this API operation.
data.result.coverageobjectrequired
Coverage value used by this API operation.
data.result.coverage.invalidItemCountintegerrequired
Invalid item count value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.coverage.limitintegerrequired
Limit value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.coverage.maxCrawlPagesinteger | nullrequired
Max crawl pages value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.coverage.offsetintegerrequired
Offset value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.coverage.pagesCrawledinteger | nullrequired
Pages crawled value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.coverage.providerTotalinteger | nullrequired
Provider total value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.coverage.returnedCountintegerrequired
Returned count value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.coverage.sampledbooleanrequired
Sampled value used by this API operation.
Constant: true
data.result.coverage.stopReasonstring | nullrequired
Stop reason value used by this API operation.
data.result.coverage.truncatedbooleanrequired
Truncated value used by this API operation.
data.result.itemsarrayrequired
Items value used by this API operation.
Maximum items: 1
data.result.items[]objectrequired
Item in data result items.
data.result.items[].brokenLinksinteger | nullrequired
Broken links value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.items[].brokenResourcesinteger | nullrequired
Broken resources value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.items[].crawlEndedAtinteger | nullrequired
Crawl ended at value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.items[].crawlStartedAtinteger | nullrequired
Crawl started at value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.items[].duplicateContentsinteger | nullrequired
Duplicate contents value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.items[].duplicateDescriptionsinteger | nullrequired
Duplicate descriptions value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.items[].duplicateTitlesinteger | nullrequired
Duplicate titles value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.items[].externalLinksinteger | nullrequired
External links value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.items[].internalLinksinteger | nullrequired
Internal links value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.items[].nonIndexableinteger | nullrequired
Non indexable value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.items[].onpageScorenumber | nullrequired
Onpage score value used by this API operation.
Minimum: 0
Maximum: 100
data.result.items[].pagesCrawledinteger | nullrequired
Pages crawled value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.items[].profilestringrequired
Profile value used by this API operation.
Allowed: BASE, ENRICHED
data.result.items[].stopReasonstring | nullrequired
Stop reason value used by this API operation.
data.result.items[].targetstringrequired
Target value used by this API operation.
data.result.missingFieldsarrayrequired
Missing fields value used by this API operation.
Maximum items: 10000
data.result.missingFields[]objectrequired
Item in data result missingFields.
data.result.missingFields[].fieldstringrequired
Field value used by this API operation.
data.result.missingFields[].reasonstringrequired
Reason value used by this API operation.
data.result.sourceobjectrequired
Source value used by this API operation.
data.result.source.candidateIdstringrequired
Candidate id value used by this API operation.
Constant: MD-PW-02
data.result.source.collectedAtinteger | nullrequired
Collected at value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.source.observationKindstringrequired
Observation kind value used by this API operation.
Constant: CRAWL_SAMPLE
data.result.source.productstringrequired
Product value used by this API operation.
Constant: on_page
data.result.source.providerstringrequired
Provider value used by this API operation.
Constant: DATAFORSEO
data.result.source.queriedAtintegerrequired
Queried at value used by this API operation.
Minimum: 0
Maximum: 9007199254740991
data.result.source.sourceCallIdstring | nullrequired
Source call id value used by this API operation.
data.result.source.sourcePlanVersionstring | nullrequired
Source plan version value used by this API operation.
data.result.source.sourceSchemaVersionstring | nullrequired
Source schema version value used by this API operation.
data.result.warningsarrayrequired
Warnings value used by this API operation.
Maximum items: 1000
data.result.warnings[]stringrequired
Item in data result warnings.
data.schemaVersionstring | nulloptional
Schema version value used by this API operation.
data.sourcestring | nulloptional
Source value used by this API operation.
data.statusstringoptional
Status value used by this API operation.
Allowed: SUCCESS, PARTIAL, EMPTY, PROCESSING, UNKNOWN, FAILED
data.usageobjectoptional
Usage value used by this API operation.
data.usage.billingStatusstringoptional
Billing status value used by this API operation.
data.usage.chargedCreditsinteger | nulloptional
Charged credits value used by this API operation.
data.usage.providerCostStatusstringoptional
Provider cost status value used by this API operation.
data.usage.providerCostUsdstring | nulloptional
Provider cost usd value used by this API operation.
data.usage.providerRequestsintegeroptional
Provider requests value used by this API operation.
msgstring | nullrequired
Msg value used by this API operation.
timestringrequired
yyyy-MM-dd HH:mm:ss
traceIdstring | nullrequired
Trace id value used by this API operation.
tsstringrequired
Epoch milliseconds; global long serializer.

Response example

Example response envelope from the documented SEO API contract.

{
  "code": 0,
  "cost": "-1",
  "data": {
    "callId": "synthetic-call",
    "completedAt": null,
    "coverage": {
      "missing": [
        {
          "field": "synthetic",
          "reason": "UPSTREAM_FIELD_MISSING"
        }
      ],
      "status": "PARTIAL"
    },
    "requestedAt": 123,
    "result": {
      "coverage": {
        "invalidItemCount": 1,
        "limit": 1,
        "maxCrawlPages": 9007199254740992,
        "offset": 1,
        "pagesCrawled": 9007199254740992,
        "providerTotal": 9007199254740992,
        "returnedCount": 1,
        "sampled": false,
        "stopReason": "synthetic",
        "truncated": false
      },
      "items": [
        {
          "brokenLinks": 9007199254740992,
          "brokenResources": 9007199254740992,
          "crawlEndedAt": 9007199254740992,
          "crawlStartedAt": 9007199254740992,
          "duplicateContents": 9007199254740992,
          "duplicateDescriptions": 9007199254740992,
          "duplicateTitles": 9007199254740992,
          "externalLinks": 9007199254740992,
          "internalLinks": 9007199254740992,
          "nonIndexable": 9007199254740992,
          "onpageScore": 1.25,
          "pagesCrawled": 9007199254740992,
          "profile": "synthetic",
          "stopReason": "synthetic",
          "target": "synthetic"
        }
      ],
      "missingFields": [
        {
          "field": "synthetic",
          "reason": "synthetic"
        }
      ],
      "source": {
        "candidateId": "synthetic",
        "collectedAt": 9007199254740992,
        "observationKind": "synthetic",
        "product": "synthetic",
        "provider": "synthetic",
        "queriedAt": 9007199254740992,
        "sourceCallId": "synthetic",
        "sourcePlanVersion": "synthetic",
        "sourceSchemaVersion": "synthetic"
      },
      "warnings": [
        "synthetic"
      ]
    },
    "schemaVersion": "synthetic",
    "source": "synthetic",
    "status": "PARTIAL",
    "usage": {
      "billingStatus": "UNAPPROVED",
      "chargedCredits": 0,
      "providerCostStatus": "UNAPPROVED",
      "providerCostUsd": null,
      "providerRequests": 0
    }
  },
  "msg": null,
  "time": "2026-01-01 00:00:00",
  "traceId": null,
  "ts": "9007199254740993"
}

Responses

CodeDescription
200API executed successfully. Body is the direct response payload.
400Request JSON or required API parameters are invalid.
401API key is missing, invalid, or cannot be matched to a user.
5xxAPI execution or upstream service failed.

Data source, freshness, and limitations

Source, freshness, coverage, rate limits, and estimation notes are not specified in this API definition unless they appear in the request or response field documentation above. Do not assume official marketplace data or real-time freshness when it is not explicitly documented.

MCP

Use the MCP endpoint when an agent needs to discover and call API tools with JSON-RPC.

GET /api/skill-api/v1/mcp
POST /api/skill-api/v1/mcp
Authorization: Bearer nk_xxxxxxxxxxxxxxxxx
Content-Type: application/json

Call a tool

{
  "jsonrpc": "2.0",
  "id": "tool-call-1",
  "method": "tools/call",
  "params": {
    "name": "nexscope_website_audit_summary",
    "arguments": {
      "profile": "BASE",
      "target": "example"
    }
  }
}

Online test

Execute the current API with your API key and JSON payload.

Try it

Send a real request with the same contract shown in the reference.

Endpoint
/api/skill-api/v1/skills/website-audit-summary/run
Task result endpoint
https://api.nexscope.ai/api/skill-api/v1/skills/website-audit-summary/tasks/{taskId}
MCP method
nexscope_website_audit_summary
cURL
curl -X POST \
  https://api.nexscope.ai/api/skill-api/v1/skills/website-audit-summary/run \
  -H "Authorization: Bearer nk-..." \
  -H "Content-Type: application/json" \
  -d '{ "profile": "BASE", "target": "example" }'
Response
No response yet. Run the request to see the response here.
Task result

Results are checked automatically after Run API. You can also enter a task ID and check it manually; completed resources use Nexscope URLs and show actual charged credits.

Result response
No task result yet. Query the task to see the generated output here.