Developers

Scrollproof API

Score short-form video from your own pipeline. Submit a public video URL, get the same signals as the dashboard — Hook Strength, Hold Rate, attention curve, virality index — back as JSON. Available on the Pro plan.

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_xxxxxxxxxxxxxxxx

Rate 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.