Skip to content

The Authini API

The web app and the API are the same service. Sign in for a token, post a file or a TikTok link, and read the result as JSON.

Overview

Requests are multipart or form-encoded; responses are JSON. Every account, the free one included, can call the API. Each call uses one check from the same monthly allowance as the web app.

Base URL

https://ajnasiou-authini-api.hf.space

Formats
JPG, PNG, WEBP, MP4, MOV or WEBM, up to 50 MB
Video
15 evenly spaced frames, averaged
Result values
Real, Sora2 or Veo3
Links
Public TikTok videos only

Authentication

Exchange your username and password for a bearer token, then send it in the Authorization header. Keep tokens server-side and out of version control.

POST/auth/login

Request
curl -X POST https://ajnasiou-authini-api.hf.space/auth/login \
  -d "username=$USER&password=$PASSWORD"

# returns { "access_token": "…", "token_type": "bearer" }

No account yet? Create one. Need more checks? Email us.

Check a file

Send exactly one of file or url. Stills are routed by extension (.jpg, .jpeg, .png, .webp); anything else is decoded as video.

POST/detect/

filebinary

The image or video to check.

urlstring

A public TikTok video link, fetched on the server.

curl -X POST https://ajnasiou-authini-api.hf.space/detect/ \
  -H "Authorization: Bearer $AUTHINI_TOKEN" \
  -F "file=@clip.mp4"
Response, 200 OK
{
  "id": integer,
  "type": "file" | "video",   // "file" for uploads, "video" for TikTok links
  "result": "Real" | "Sora2" | "Veo3",
  "confidence": number,    // 0–1, probability of "result"
  "probabilities": {       // all three classes, 0–1, summing to 1
    "Real": number, "Sora2": number, "Veo3": number
  },
  "frames_analyzed": integer,  // 15 for video, 1 for a still
  "timestamp": string,     // ISO 8601, UTC
  "user_id": integer
}

confidence is the classifier's probability for result. The web app shows values under 0.6 as inconclusive.probabilities has all three classes, and frames_analyzed says how many frames were read. History entries carry only the result and its confidence.

History

Returns your ten most recent reports in the same shape.

GET/detect/history

Request
curl https://ajnasiou-authini-api.hf.space/detect/history \
  -H "Authorization: Bearer $AUTHINI_TOKEN"

# returns the 10 most recent reports, newest first

Errors

Errors return a JSON body with a detail message.

StatusMeaning
400No file or URL was sent, or the link isn't a public TikTok video.
401The token is missing, malformed or expired. Sign in again.
403The account has no checks left this month.
422A form field has the wrong type.
500The file couldn't be decoded or analyzed. Check it opens locally, then retry.