Docs API

API quickstart

Create a key and run your first check from your own system. The API is part of the Enterprise plan.

Updated November 2026

What you can do

Upload videos, run the same checks as the Agency workspace, read the findings and download the PDF report. A check made through the API appears in your workspace, uses your plan's checks and follows your clients' brand rules.

The address for every request is https://complyvideochecker.in.

1. Create a key

  1. Open API keysIn the Agency workspace, open API keys. Only the account owner can manage keys.
  2. Create the keyName it after the system that will use it, and choose read only, or read and write. A system that uploads videos needs read and write.
  3. Copy itYou see the full key only once. Store it in a secret manager or an environment variable on your server.
Treat a key like a password. Anyone who has it can use your account's checks, so never put it in a website, a mobile app or a code repository.

2. Check your key

Send the key with every request, then ask for your account:

curl https://complyvideochecker.in/v1/account \
  -H "Authorization: Bearer $COMPLY_API_KEY"

3. Upload a video

Ask for an upload address, then send the file straight to it. Keep the video_uri from the reply.

curl -X POST https://complyvideochecker.in/v1/uploads \
  -H "Authorization: Bearer $COMPLY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"content_type": "video/mp4", "file_size_bytes": 10485760}'

# Then, using upload_url from the reply:
curl -X PUT "$UPLOAD_URL" -H "Content-Type: video/mp4" --upload-file reel.mp4

4. Start the check

The reply comes back straight away with the check's ID. The check itself runs in the background.

curl -X POST https://complyvideochecker.in/v1/checks \
  -H "Authorization: Bearer $COMPLY_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: reel-2026-11-02" \
  -d '{
    "video_uri": "'"$VIDEO_URI"'",
    "kinds": ["organic"],
    "organic_platforms": ["instagram"],
    "title": "November launch reel"
  }'

5. Get the result

Ask for the check every 15 seconds or so until its status is complete or failed, then download the report if you want it. There are no webhooks yet.

curl https://complyvideochecker.in/v1/checks/$CHECK_ID \
  -H "Authorization: Bearer $COMPLY_API_KEY"

curl https://complyvideochecker.in/v1/checks/$CHECK_ID/report \
  -H "Authorization: Bearer $COMPLY_API_KEY" -o report.pdf

The same thing in Python

import os, pathlib, time, uuid, requests

api = "https://complyvideochecker.in/v1"
auth = {"Authorization": f"Bearer {os.environ['COMPLY_API_KEY']}"}
video = pathlib.Path("reel.mp4")

up = requests.post(f"{api}/uploads", headers=auth, json={
    "content_type": "video/mp4", "file_size_bytes": video.stat().st_size}).json()
requests.put(up["upload_url"], data=video.read_bytes(), headers={"Content-Type": "video/mp4"}).raise_for_status()

check = requests.post(f"{api}/checks", headers={**auth, "Idempotency-Key": str(uuid.uuid4())}, json={
    "video_uri": up["video_uri"], "kinds": ["organic"], "organic_platforms": ["instagram"]}).json()

while True:
    result = requests.get(f"{api}/checks/{check['id']}", headers=auth).json()
    if result["status"] in ("complete", "failed"):
        break
    time.sleep(15)

print(result["status"], (result["result"] or {}).get("verdict"), result["error"])
Was this page helpful?