moving off AWS Rekognition

Keep your code. Change two lines.

SightRadar speaks the AWS Rekognition API surface you already wrote against. Our official Python shim mirrors Rekognition's methods and response shapes, so a migration is a find-and-replace — not a rewrite.

Before & after

The same workflow — create a collection, index faces, search by selfie. The only lines that change are the import and the client. Method names, arguments, and the response keys you read (FaceMatches, Similarity, ExternalImageId) stay the same.

AWS Rekognition (boto3)

rekognition.py
import boto3

rek = boto3.client("rekognition", region_name="us-east-1")

rek.create_collection(CollectionId="event-2026")

rek.index_faces(
    CollectionId="event-2026",
    Image={"S3Object": {"Bucket": "my-bucket", "Name": "guest.jpg"}},
    ExternalImageId="guest-1",
)

res = rek.search_faces_by_image(
    CollectionId="event-2026",
    Image={"Bytes": open("selfie.jpg", "rb").read()},
    FaceMatchThreshold=90,
    MaxFaces=5,
)
for m in res["FaceMatches"]:
    print(m["Face"]["ExternalImageId"], m["Similarity"])

SightRadar (drop-in shim)

sightradar.py
from sightradar_rekognition_shim import client   # 1. swap import

rek = client(api_key="frs_...")                  # 2. swap constructor

rek.create_collection(CollectionId="event-2026")

rek.index_faces(
    CollectionId="event-2026",
    Image={"URL": "https://cdn.example.com/guest.jpg"},
    ExternalImageId="guest-1",
)

res = rek.search_faces_by_image(
    CollectionId="event-2026",
    Image={"Bytes": open("selfie.jpg", "rb").read()},
    FaceMatchThreshold=90,
    MaxFaces=5,
)
for m in res["FaceMatches"]:
    print(m["Face"]["ExternalImageId"], m["Similarity"])

Install the shim

pip install sightradar-rekognition-shim

Prefer no extra dependency? Call the REST API directly:

# Or call the REST API directly — same Bearer-key pattern as any modern API:
curl https://api.sightradar.com/v1/collections/event-2026/search \
  -H "Authorization: Bearer frs_..." \
  -F file=@selfie.jpg -F threshold=0.9 -F limit=5

Method mapping

The Rekognition operations SightRadar supports, and the endpoint each maps to. Two conventions are translated for you: scores convert between Rekognition's 0–100 scale and SightRadar's 0–1, and image inputs accept Bytes, S3Object, or a URL.

AWS RekognitionSightRadar
CreateCollectionPOST /v1/collections
DeleteCollectionDELETE /v1/collections/{id}
ListCollectionsGET /v1/collections
DescribeCollectionGET /v1/collections/{id}
IndexFacesPOST /v1/collections/{id}/index
SearchFacesByImagePOST /v1/collections/{id}/search
SearchFaces (by id)POST /v1/collections/{id}/search-by-id
DetectFacesPOST /v1/detect
CompareFacesPOST /v1/compare

Operations SightRadar doesn't offer (label/text detection, celebrity recognition, async video) raise a clear error in the shim rather than silently doing nothing — so you know exactly what to adjust.

Why teams switch

  • Drop-in compatible

    Keep your Rekognition-shaped code. The shim or a two-line REST swap is the whole migration.

  • Accuracy you can verify

    Run your own selfie against your own collection in the playground before you commit a line of code.

  • No subscription, no minimums

    Prepaid credits, billed per photo processed. Spend nothing until you call the API.

  • Lower cost than Rekognition

    Real-time recognition runs about 26% below AWS Rekognition Group-1, with batch lower still.