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
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/
filebinaryThe image or video to check.
urlstringA 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"{
"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
curl https://ajnasiou-authini-api.hf.space/detect/history \
-H "Authorization: Bearer $AUTHINI_TOKEN"
# returns the 10 most recent reports, newest firstErrors
Errors return a JSON body with a detail message.
| Status | Meaning |
|---|---|
| 400 | No file or URL was sent, or the link isn't a public TikTok video. |
| 401 | The token is missing, malformed or expired. Sign in again. |
| 403 | The account has no checks left this month. |
| 422 | A form field has the wrong type. |
| 500 | The file couldn't be decoded or analyzed. Check it opens locally, then retry. |