Free API for agents
Detect and compare faces with no API key. Free to test under fair use; for regular use, sign up and use an API key.
The two free tools on sightradar.com/tools are also a public HTTP API. AI agents, scripts and quick tests can call them without a key.
Free to test under a fair-use policy. For regular or production use, sign up and use an API key: there is no free-tier cap on a key, and usage is billed per photo on prepaid credits (pricing).
| Endpoint | Body (multipart/form-data) | Result |
|---|---|---|
POST https://sightradar.com/api/free/detect | file | faces found, quality-gated count, a box per face |
POST https://sightradar.com/api/free/compare | source, target | similarity 0 to 1, match, threshold |
Images must be JPG, PNG or WebP, up to 10 MB each. They are processed in memory and never stored.
Detect
curl -X POST https://sightradar.com/api/free/detect -F "file=@photo.jpg"{
"data": {
"detected_face_count": 1,
"gated_face_count": 1,
"faces": [
{ "det_score": 0.86, "min_px": 305.8, "quality_passed": true,
"bbox": { "left": 0.29, "top": 0.19, "width": 0.38, "height": 0.53 } }
]
},
"usage": "Free to test under a fair-use policy. ..."
}Compare
curl -X POST https://sightradar.com/api/free/compare -F "source=@a.jpg" -F "target=@b.jpg"{
"data": { "face_found": true, "similarity": 0.66, "match": true, "threshold": 0.42,
"source_bbox": null, "target_bbox": null },
"usage": "Free to test under a fair-use policy. ..."
}When a photo holds several faces, the largest, most confident one is compared. Choose your own threshold for real decisions: see Choosing a similarity threshold.
When you reach the fair-use limit
The free API answers 429 with a pointer to an API key:
{
"error": "You have reached the free fair-use limit. Sign up at https://sightradar.com and use an API key to keep going; there is no free-tier cap on a key.",
"code": "free_limit_reached",
"signup_url": "https://sightradar.com/login?next=%2Fdashboard%2Fkeys",
"paid_endpoint": "https://api.sightradar.com/v1/detect",
"how_to_continue": "Sign up at https://sightradar.com, create an API key, then call POST https://api.sightradar.com/v1/detect with the header \"Authorization: Bearer <your-api-key>\" and the same multipart \"file\" field. Same result."
}To keep going, create an API key and call the paid endpoints. Detect takes the same file upload:
curl -X POST https://api.sightradar.com/v1/detect \
-H "Authorization: Bearer $SR_API_KEY" \
-F "file=@photo.jpg"Paid compare takes image URLs (sourceUrl, targetUrl) or precomputed embeddings. See Compare two faces and Detect faces. Pricing is per photo processed: pricing.
Errors
| Status | code | Meaning |
|---|---|---|
| 400, 411, 415 | bad_request | Missing field, no Content-Length, not multipart, or not a JPG/PNG/WebP |
| 413 | too_large | Image over 10 MB |
| 422 | unreadable | The image could not be decoded |
| 429 | rate_limited | More than a few requests a minute; wait Retry-After seconds |
| 429 | free_limit_reached | Free fair-use limit reached; sign up and use an API key |
| 429 | free_capacity_reached | The free API is at capacity right now; use an API key |
| 503 | busy / unavailable | Try again shortly, or use an API key |
Each endpoint also answers GET with a short JSON description of itself, so an agent that finds the URL can learn how to call it.