Authentication
Create an API key in your dashboard under App → API keys. Keys are shown once, stored only as a hash, and carry the analyze scope. Send it as a bearer token. The base URL is https://scrollproof.io.
Authorization: Bearer sp_live_xxxxxxxxxxxxxxxxRate limits
Limits are per key, per rolling minute, by plan. Exceeding them returns 429 with a Retry-After header.
- Free — no API access
- Creator — 10 requests / min
- Pro — 30 requests / min
Create a scan
POST /api/v1/analyze — submit a public http(s) video URL. Costs 1 credit. Returns a job_id you can poll.
curl -X POST https://scrollproof.io/api/v1/analyze \
-H "Authorization: Bearer sp_live_xxxx" \
-H "Content-Type: application/json" \
-d '{"video_url": "https://example.com/clip.mp4"}'
# 202 Accepted
{ "job_id": "a1b2c3d4-…", "status": "queued" }List scans
GET /api/v1/jobs — your most recent scans and their status.
curl https://scrollproof.io/api/v1/jobs \
-H "Authorization: Bearer sp_live_xxxx"Get a scan
GET /api/v1/jobs/{job_id} — status and, once complete, the full scores.
curl https://scrollproof.io/api/v1/jobs/a1b2c3d4-… \
-H "Authorization: Bearer sp_live_xxxx"
# 200 OK
{
"job_id": "a1b2c3d4-…",
"status": "complete",
"scores": {
"virality_index": 71,
"hook_strength": 78,
"hold_rate": 64,
"peak_hook_t": 1.2,
"attention_curve": [ … ],
"channels": { "vision": 80, "sound": 62, "pacing": 70 }
}
}Errors
- 401 — missing or invalid API key
- 403 — key lacks the analyze scope
- 402 — out of credits
- 429 — rate limit reached (see Retry-After)
- 400 — missing or non-public video_url
Ready to integrate? Create an account, upgrade to Pro, and mint a key from your dashboard.