Threat Intelligence API
Expose Veyon's biometric detection capabilities to your own platform. Scan faces, voices, and videos across 25+ platforms. Initiate automated DMCA takedowns. Monitor identity threats in real time.
Overview
The Veyon API is available on Pro tier and above. Base URL:
https://www.veyon.ai/api/v1
All requests and responses use JSON. Generate your API key from the dashboard under Settings → API Keys.
Authentication
Pass your API key as a Bearer token in the Authorization header:
Authorization: Bearer vyn_your_api_key_here
Rate Limits
Rate limits reset every 24 hours. When exceeded, you receive a 429 response with a resets_at timestamp.
Error Format
All errors return JSON with an error field and an optional hint:
{
"error": "Daily rate limit exceeded",
"limit": 100,
"used": 100,
"resets_at": "2026-05-11T08:00:00.000Z"
}
| Status | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad request — missing or invalid parameters |
| 401 | Invalid or missing API key |
| 403 | Insufficient scope or tier |
| 404 | Resource not found |
| 429 | Rate limit exceeded |
| 500 | Server error |
POST /scan/face
Submit a face image and receive matches across 25+ indexed platforms including social media, dating apps, and adult content sites.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| image_base64 | string | Yes | Base64-encoded image (JPEG/PNG/WebP) |
| image_mime | string | No | MIME type, default: image/jpeg |
Example Request
curl -X POST https://www.veyon.ai/api/v1/scan/face \
-H "Authorization: Bearer vyn_..." \
-H "Content-Type: application/json" \
-d '{
"image_base64": "/9j/4AAQSkZ...",
"image_mime": "image/jpeg"
}'
Example Response
{
"scan_id": "a1b2c3d4e5f6a7b8",
"status": "completed",
"match_count": 3,
"highest_confidence": 94,
"matches": [
{
"url": "https://instagram.com/...",
"confidence": 94,
"platform": "Instagram",
"thumbnail": null
}
],
"demo_mode": false,
"platforms_searched": 25
}
POST /scan/voice
Submit an audio sample and queue a voice clone scan across 10 audio platforms. Returns a job_id for polling.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| audio_base64 | string | Yes | Base64-encoded audio (WAV/MP3/OGG, min 5s) |
| mime_type | string | No | MIME type, default: audio/wav |
Example Request
curl -X POST https://www.veyon.ai/api/v1/scan/voice \
-H "Authorization: Bearer vyn_..." \
-H "Content-Type: application/json" \
-d '{ "audio_base64": "UklGRiQ...", "mime_type": "audio/wav" }'
Example Response
{
"job_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "queued",
"platforms_scanning": 10,
"poll_url": "/api/v1/scan/voice/status/550e8400-..."
}
POST /scan/video
Submit a video URL and get back face matches and deepfake classification across 10 video platforms.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| video_url | string | Yes | URL of the video to analyze |
Example Response
{
"job_id": "...",
"status": "queued",
"platforms_scanning": 10,
"includes_deepfake_analysis": true,
"poll_url": "/api/v1/scan/video/status/..."
}
GET /matches/:identity_id
Retrieve all detected matches for a registered identity.
Query Parameters
| Param | Type | Description |
|---|---|---|
| limit | integer | Max results (default: 50, max: 200) |
| offset | integer | Pagination offset |
| type | string | Filter by face or voice |
| min_confidence | number | Minimum confidence score (0–100) |
Example Response
{
"identity_id": 42,
"matches": [
{
"id": 123,
"platform": "Instagram",
"source_url": "https://...",
"confidence_score": 92,
"match_type": "face",
"is_deepfake": false,
"detected_at": "2026-05-10T08:00:00Z"
}
],
"total": 1,
"limit": 50,
"offset": 0
}
GET /takedowns/:identity_id
Get takedown history and per-status summary for an identity.
Example Response
{
"identity_id": 42,
"takedowns": [...],
"total": 5,
"status_summary": {
"submitted": 2,
"completed": 2,
"rejected": 1
}
}
POST /takedowns
Initiate an automated DMCA takedown for a detected match. Requires the takedown scope.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| match_id | integer | Yes | ID of the match to take down |
| dmca_type | string | No | face_likeness | voice_likeness | deepfake | profile_image | other |
Example Response
{
"takedown_id": "uuid-...",
"status": "submitted",
"match_id": 123,
"dmca_type": "face_likeness",
"platform": "Instagram",
"created_at": "2026-05-10T08:00:00Z"
}
GET /monitoring/:identity_id/status
Current monitoring health, threat level, and summary statistics for an identity.
Example Response
{
"identity_id": 42,
"threat_level": "medium",
"monitoring_active": true,
"identity": {
"face_registered": true,
"voice_registered": true,
"certificate_issued": true,
"id_verified": false
},
"matches": {
"total": 7,
"high_confidence": 2,
"deepfakes_confirmed": 0,
"active_threats": 2,
"last_detected_at": "2026-05-10T07:30:00Z"
},
"takedowns": {
"total": 3,
"active": 1,
"resolved": 2
},
"platforms_monitored": 25
}
Threat Levels
| Level | Condition |
|---|---|
| none | No active threats detected |
| low | 1–2 active threats, low confidence |
| medium | 1+ high-confidence matches or 3–9 active threats |
| high | 5+ high-confidence matches or 10+ active threats |
| critical | Confirmed deepfake detected |
GET /ping
Verify your API key and check rate limit quota without consuming a usage credit.
curl https://www.veyon.ai/api/v1/ping \
-H "Authorization: Bearer vyn_..."
# Response:
{
"ok": true,
"key_prefix": "vyn_abc12345",
"tier": "pro",
"scopes": ["read"],
"rate_limit_per_day": 100
}
Need Enterprise access?
Custom rate limits, SLA guarantees, and dedicated support. Contact help@veyon.ai or view pricing.