Skip to main content

SightRadar — Face Recognition API

SightRadar — Face Recognition API for Python

A high-accuracy face recognition API and a drop-in AWS Rekognition alternative.
Official Python client for the SightRadar facial recognition API — face detection, 1:1 verification, and 1:N face search with zero runtime dependencies.

PyPI version Python versions License: MIT Documentation


What is SightRadar?

SightRadar is a fast, accurate, and affordable face recognition API for developers. This is the official Python SDK — a thin, fully-typed wrapper over the SightRadar facial recognition API that lets you add face detection, face matching, 1:1 face verification, and 1:N face search to any application in minutes.

If you are looking for an AWS Rekognition alternative with high-accuracy face recognition, simpler pricing, and a cleaner API, SightRadar is built for you. The SDK has zero runtime dependencies (built entirely on the Python standard library), supports Python 3.8+, and ships typed responses for every endpoint.

  • 🎯 High-accuracy facial recognition — state-of-the-art embeddings with quality gating for reliable matches
  • ⚡ Fast face search — index millions of faces and search a collection with a single selfie
  • 🔁 Drop-in AWS Rekognition alternative — familiar index / search / detect / compare operations
  • 💸 Transparent, usage-based pricing — pay per call, no minimums (see pricing)
  • 🪶 Zero dependencies — pure standard-library client, easy to audit and vendor

Get a free API key at sightradar.com and start building.

SightRadar vs. AWS Rekognition

Already wrote code against AWS Rekognition? SightRadar mirrors the operations you know — IndexFaces, SearchFacesByImage, DetectFaces, CompareFaces — so migrating is mostly a find-and-replace, not a rewrite. See the migration guide.

SightRadar AWS Rekognition
Face detection API ✅ ✅
1:1 face verification (compare) ✅ ✅
1:N face search (collections) ✅ ✅
Selfie / liveness-style registration ✅ ⚠️ limited
Zero-dependency SDK ✅ ❌ (boto3)
Transparent per-call pricing ✅ ⚠️ complex tiers
Free API key to start ✅ ⚠️ AWS account required

Install

pip install sightradar

Authenticate

Create an API key in the console, then pass it directly or via the SIGHTRADAR_API_KEY environment variable.

from sightradar import SightRadar

sr = SightRadar(api_key="frs_...")   # or: SightRadar() with SIGHTRADAR_API_KEY set

Core workflow — index and search faces

# 1. Create a collection to hold faces.
sr.create_collection("event-2026")

# 2. Index faces from photos (URL, GCS key, or a local file).
sr.index("event-2026", url="https://example.com/group.jpg")
sr.index("event-2026", file="/path/to/photo.jpg", photo_id="img-42")

# 3. Search the collection with one selfie.
result = sr.search("event-2026", url="https://example.com/selfie.jpg")
if result.found:
    for m in result.matches:
        print(m.photo_id, round(m.score, 3))
else:
    print("no match:", result.reason)

Stateless operations (nothing stored)

# Detect + quality-gate faces in an image.
det = sr.detect(url="https://example.com/photo.jpg")
print(det.detected_face_count, det.gated_face_count)

# 1:1 face verification between two faces.
cmp = sr.compare(
    source_url="https://example.com/a.jpg",
    target_url="https://example.com/b.jpg",
)
print(cmp.match, cmp.similarity)

Selfies and search by id

Register one selfie per person, then search with the returned point_id instead of re-uploading an image (cheaper: the search-by-id tier).

reg = sr.register_selfie("event-2026", "user-42", url="https://example.com/selfie.jpg")
hits = sr.search_by_id("event-2026", reg.point_id, limit=20)

Deleting (soft by default, restorable)

# Soft delete: stops serving now, erased after the grace window. Undo with restore.
receipt = sr.delete_collection("event-2026")     # receipt.restorable is True
sr.restore_collection("event-2026")

# Immediate / compliance (GDPR / BIPA) erasure — NOT restorable.
sr.delete_collection("event-2026", compliance=True)
status = sr.deletion_status("event-2026")        # status.erased -> phase completed + verified_zero

# One photo's faces only.
sr.delete_photo("event-2026", "img-42")
sr.restore_photo("event-2026", "img-42")

Batches and webhooks

wh = sr.register_webhook("https://your.app/sightradar")
# wh.secret is returned ONCE — store it.

batch = sr.submit_batch(
    "event-2026", "index",                       # or "match"
    [{"url": "https://example.com/1.jpg", "external_id": "img-1"}],
    webhook_endpoint_id=wh.webhook_endpoint_id,
)
status = sr.get_batch(batch.batch_id)            # .succeeded / .failed / .pending / .done
page = sr.get_batch_photos(batch.batch_id)       # per-photo results, paginated

# In your webhook handler (raw body, not parsed JSON):
from sightradar import verify_webhook_signature
ok = verify_webhook_signature(
    stored_secret,
    request.headers["X-SightRadar-Timestamp"],
    request.get_data(),                          # raw bytes
    request.headers["X-SightRadar-Signature"],
)

Retries and idempotency

Retries are off by default. Pass max_retries to retry 429/502/503 with backoff. Pass idempotency_key on billable calls so a retry can never double-charge you.

sr = SightRadar(api_key="frs_...", max_retries=3)
sr.index("event-2026", url="https://example.com/a.jpg", idempotency_key="photo-a-v1")

Account

print(sr.wallet().balance_credits)
print(sr.usage(days=30))

Errors

Every non-2xx response raises a typed exception:

from sightradar import (
    SightRadarError,            # base
    AuthenticationError,        # 401
    InsufficientCreditsError,   # 402
    NotFoundError,              # 404
    RateLimitError,             # 429
)

try:
    sr.describe_collection("missing")
except NotFoundError as e:
    print(e.status_code, e.message)

Image inputs

Index / search / detect / register_selfie accept exactly one image source (register_selfie also needs user_id):

  • url= — a public image URL
  • gcs_key= — a Google Cloud Storage object key
  • file= — a local path, bytes, or a file-like object (uploaded as multipart)

search additionally accepts embedding= (a 512-d vector).

Resources

License

MIT © SightRadar


SightRadar — high-accuracy face recognition API and AWS Rekognition alternative. Face detection, facial recognition, 1:1 verification, and 1:N face search for developers.

Release files for sightradar 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sightradar 1.1.0
File Size Uploaded
sightradar-1.1.0.tar.gz 17.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sightradar 1.1.0
File Interpreter ABI Platform
sightradar-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 34.1 kB

Release files / sightradar-1.1.0.tar.gz

Download URL sightradar-1.1.0.tar.gz
Size 17.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ba732f432ff095e43c8fbe2253dd218c6e3a0cd0ba4ba61ef26a755f7471c4b0
BLAKE2b-256 checksum
How to use checksums
ff71db533fa5e1554007893038c9dbcf174441c83fedbda90e356416d31319cc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / sightradar-1.1.0-py3-none-any.whl

Download URL sightradar-1.1.0-py3-none-any.whl
Size 16.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
578100fc74baf26ca12144910ae486f84485802a3e3d49d4b18c38ff04cb357a
BLAKE2b-256 checksum
How to use checksums
efaabd094829680e1d6a90dcb3dec278b768dc2a84c362068d78240126eaddee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page