Agency plan
API Reference
Integrate ScanYour.Site into your workflow. Trigger scans programmatically, pull results, and monitor domains — all via REST.
Base URL: https://scanyour.site
Authentication
All API requests require a valid API key passed in the x-api-key header. Generate your key from the dashboard under Settings → API Keys.
$ curl https://scanyour.site/api/v1/scans \
-H "x-api-key: sys_your_api_key_here"
-H "x-api-key: sys_your_api_key_here"
!
API access requires a Pro or Agency plan. Requests with a free plan key return 403 Forbidden.
Endpoints
GET
/api/v1/scansList all scans for your account.
Response
{
"scans": [
{
"id": "clx1...",
"domain": "example.com",
"status": "completed",
"progress": 100,
"createdAt": "2024-01-15T10:00:00Z",
"completedAt": "2024-01-15T10:01:02Z",
"reportUrl": "https://scanyour.site/dashboard/scans/clx1..."
}
]
}POST
/api/v1/scansCreate and enqueue a new scan.
Request body
{
"domain": "example.com"
}Response
{
"scanId": "clx1...",
"status": "queued"
}GET
/api/v1/scans/:idGet a scan result by ID. Poll until status is completed.
Response
{
"scan": {
"id": "clx1...",
"domain": "example.com",
"status": "completed",
"progress": 100,
"createdAt": "2024-01-15T10:00:00Z",
"completedAt": "2024-01-15T10:01:02Z",
"reportUrl": "https://scanyour.site/dashboard/scans/clx1...",
"results": {
"riskScore": 42,
"findings": [
{
"id": "uuid",
"title": "Missing Strict-Transport-Security header",
"severity": "medium",
"category": "Headers",
"description": "...",
"remediation": "..."
}
],
"sslExpiresAt": "2025-03-01T00:00:00Z"
}
}
}GET
/api/v1/domainsList monitored domains with their latest scan score.
Response
{
"domains": [
{
"id": "dom1...",
"url": "example.com",
"verified": true,
"lastScan": {
"id": "clx1...",
"completedAt": "2024-01-15T10:01:02Z",
"score": 58,
"findingsTotal": 12
}
}
]
}Quickstart
Trigger a scan and wait for results in three steps.
1 — Create a scan
$ curl -X POST https://scanyour.site/api/v1/scans \ -H "x-api-key: sys_your_key" \ -H "Content-Type: application/json" \ -d '{"domain":"example.com"}'
2 — Poll until completed
# Poll every 5s until status === "completed"
curl https://scanyour.site/api/v1/scans/{scanId} \
-H "x-api-key: sys_your_key"3 — Read results
{
"scan": {
"status": "completed",
"results": {
"riskScore": 42, // 0 = worst, 100 = best
"findings": [...], // array of issues with severity + remediation
"sslExpiresAt": "..." // ISO date or null
}
}
}Status codes
200OKRequest succeeded.201CreatedScan created and queued.400Bad RequestInvalid domain or payload.401UnauthorizedMissing or invalid API key.403ForbiddenPlan does not include API access.404Not FoundScan not found or does not belong to your account.500Server ErrorSomething went wrong on our end.