Skip to content
crawlwise.

Search Crawlwise

Search tools, articles, guides and your sites

SEO audit API

The Crawlwise SEO audit API runs page audits, site crawls, and the AI crawler, schema, and vitals tools over REST. Programmable audits, crawls and tools. Every response includes x-credits-charged and x-credits-remaining. Errors are { error: { code, message, docs_url } }. Cursor pagination, never offset. Spec: /v1/openapi.json.

Auth

Authorization: Bearer cw_live_… Keys live at /account/api. Using this from an agent? Start at /agents. From a terminal: npx crawlwise audit calls this API; npx crawlwise ai-crawlers uses the free tool endpoints and needs no key. Starter and the free plan cannot create keys; the API starts at Growth, $49.99/mo.

Errors

Every error is { error: { code, message, docs_url } }. The message is written to be shown to a person as it is.

CodeStatusWhat to do
UNAUTHORIZED401Send Authorization: Bearer cw_live_… with a key from /account/api. A revoked key also answers 401.
PLAN_REQUIRED403The API starts at Growth. Upgrade at /plans.
FORBIDDEN403The key lacks the scope this path needs. Create a key with that scope.
ACCOUNT_HOLD403The account is on hold. Contact support.
LIMIT403A plan limit, such as the number of sites or crawl pages. The message names it.
NO_CREDITS402Not enough credits for the estimate. Top up, or estimate a smaller job with POST /v1/estimate.
RATE_LIMITED429This key has used its calls for today. Wait for Retry-After (seconds), or use another key.
TOO_MANY_RUNNING429Too many audits or crawls are running on this account. Wait for one to finish.
CONCURRENT409A crawl is already running for this site.
RUNNING409The job is still running. Poll it until status is complete.
NOT_RUNNING409The job is not running, so it cannot be cancelled or continued.
INVALID400The request body is not valid. The message says which field.
EMPTY400A required value was empty.
TOOL_FAILED400The tool could not run on that input: a private or malformed URL, a page that did not answer, or nothing to validate. The message says which.
NOT_FOUND404No such path, or no such audit, crawl or site on this account.
UNKNOWN_TOOL404No tool by that name.
NO_PRICE404That operation has no price, so it cannot be run or estimated.
METHOD405Use the method listed for the path below.
CREDITS503Credits could not be reserved. Retry in a moment; nothing was charged.
JOB503The job could not be started. Retry in a moment; nothing was charged.
CRAWL503The crawl could not be started. Retry in a moment; nothing was charged.
INTERNAL500Something failed on our side. Retry, and contact support if it keeps happening.

Credits

Headers x-credits-charged and x-credits-remaining are on every response. POST /v1/estimate never charges and never creates a job.

Webhooks

HMAC-SHA256 over id.timestamp.body, headers webhook-id, webhook-timestamp, webhook-signature: v1,<base64>. Same scheme as Dodo.

Paths

PathMethods
/v1/auditsPOST, GET
/v1/audits/{id}GET
/v1/crawlsPOST
/v1/crawls/{id}GET
/v1/crawls/{id}/pagesGET
/v1/crawls/{id}/linksGET
/v1/sitesGET, POST
/v1/sites/{id}GET, PATCH
/v1/tools/ai-crawlersPOST
/v1/tools/agent-readinessPOST
/v1/tools/bot-verifyPOST
/v1/tools/schema-validatePOST
/v1/tools/vitalsPOST
/v1/creditsGET
/v1/estimatePOST
/v1/openapi.jsonGET