SightRadardocs

Migrate from AWS Rekognition

What is drop-in, what changes, the one step nobody can skip, and a six-step runbook for cutting over without a big-bang switch.

Last updated

Each Rekognition face operation has a SightRadar equivalent. On Python, the Rekognition shim keeps your boto3 calls and Rekognition-shaped responses with a two-line change. Pointing boto3 itself at a new endpoint_url does not work, and other AWS SDKs have no shim, so from other languages you call the native endpoints mapped below. Every per-photo rate is below Rekognition's first-tier US price ($0.0010 per image); see pricing.

Operation mapping

RekognitionSightRadar
CreateCollectionPOST /v1/collections
ListCollectionsGET /v1/collections
DescribeCollectionGET /v1/collections/{id}
DeleteCollectionDELETE /v1/collections/{id}
IndexFacesPOST /v1/collections/{id}/index
IndexFaces with MaxFaces=1POST /v1/collections/{id}/selfies
SearchFacesByImagePOST /v1/collections/{id}/search
SearchFaces (by FaceId)POST /v1/collections/{id}/search-by-id
CompareFacesPOST /v1/compare
DetectFacesPOST /v1/detect
DeleteFaces (faces from one image)DELETE /v1/collections/{id}/photos/{photoId} (per photo, not per face)
DeleteFaces (a registered selfie)DELETE /v1/collections/{id}/selfies/{selfieId}
DeleteUserDELETE /v1/collections/{id}/users/{userId} (removes that user's selfies)

Label detection, text detection, celebrity recognition and video are out of scope. SightRadar does face recognition only.

What changes

  • Endpoint and auth. https://api.sightradar.com with Authorization: Bearer frs_… instead of a regional endpoint with SigV4. No IAM users, roles or policies.
  • Scores. Cosine similarity 0 to 1 instead of 0 to 100. The Python shim converts both ways; on raw REST you divide.
  • Bounding boxes. The same ratio convention as Rekognition (left, top, width, height in 0 to 1), just lower-cased keys.
  • Image input. URL, GCS key, multipart or raw bytes. S3Object becomes a URL you make fetchable.
  • Photos, not faces. Results group to photo_id; the finest delete for indexed photos is per photo. Registered selfies are deleted by selfieId or by userId, always immediately (deleting data).

Python: the two-line change

from sightradar_rekognition_shim import client   # 1. swap the import

rek = client(api_key="frs_...")                    # 2. swap the 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"])

The shim maps method names, argument shapes and response dictionaries (FaceRecords, FaceMatches, Similarity). Details and honest differences are on the shim page. On JavaScript, Java, Go or .NET there is no shim: call the REST endpoints (or the Node SDK) and map requests and responses yourself using the table above.

The runbook

One call against a scratch collection

Prove credentials, network path and image handling before touching your application. Costs one photo.

Point a copy of your integration at SightRadar

In a branch, not production. On Python and boto3, swap in the shim. On raw REST, budget for mapping each call.

Re-index your existing faces

The one unavoidable step. Faceprints are model-specific vectors and are not portable between engines, so no provider can import another's. Re-run indexing over the source images with batch at the batch rate.

Dual-write, then compare on live traffic

Index into both systems and send each search to both. Compare ranked photo ids, not raw scores; the scales differ. Ranking agreement is the signal.

Re-calibrate your threshold on your own data

Do not carry the Rekognition number across. Follow choosing a threshold. This is the step teams skip and then blame on accuracy.

Cut over reads, keep the old collection

Rollback stays a config change until you delete the old data.

Questions teams ask

Side-by-side before and after code is on the migration page.

On this page