Skip to content
AI Detector

AI Video Detection

POST https://api.copyleaks.com/v1/ai-video-detector/{scanId}/submit

Submit a video URL for AI-generated content detection. This endpoint is asynchronous — it returns 201 Created immediately, and the detection results are delivered to your webhook URL once processing is complete.

Authentication Required

You need to login with a user and API key in order to access this method. Add this HTTP header to your request:

Authorization: Bearer < Your-Login-Token >

scanId string Required

A unique scan id provided by you. We recommend you use the same id in your database to represent the scan in the Copyleaks database. This will help you to debug incidents. Using the same ID for the same file will help you to avoid network problems that may lead to multiple scans for the same file. Learn more about the criteria for creating a Scan ID.

>= 3 characters <= 36 characters

Match pattern: [a-z0-9] !@$^&-+%=_(){}<>';:/.",~|

Content-Type: application/json
Authorization: Bearer YOUR_LOGIN_TOKEN
url string Required

Publicly accessible URL of the video file to analyze.


Example: "https://example.com/my-video.mp4"

headers array

Optional custom headers to include when Copyleaks fetches the video from the provided url. Each entry is a two-element array: ["Header-Name", "Header-Value"].


Example: [["X-Custom-Auth", "my-token"]]

verb string

Describes the HTTP method that is going to be executed on the specified url. Supported values: GET, POST, PUT

filename string Required

The name of the video file including its extension.


Requirements:

  • Must include a supported video extension
  • <= 255 characters

Supported extensions: .mp4, .avi, .mov, .mkv, .webm, .flv, .wmv, .mpg, .m4v, .3gp, .mxf


Example: "my-video.mp4"

model string Required

The AI detection model to use for analysis:


  • AI Video 1 Pro: "ai-video-1-pro"

Example: "ai-video-1-pro"

webhooks object Required

Webhook configuration for receiving the async results.

url string Required

The URL that Copyleaks will POST the detection results to when processing is complete.


Example: "https://your-server.com/webhook/receive-results"

headers array

Optional custom headers to include in the webhook request. Each entry is a two-element array: ["Header-Name", "Header-Value"].


Example: [["Authorization", "Bearer my-webhook-token"]]

sandbox boolean default: "false"

Use sandbox mode to test your integration with the Copyleaks API without consuming any credits.

Submit videos for AI detection and get returned mock results, simulating Copyleaks’ API functionality to ensure you have successfully integrated the API.

This feature is intended to be used for development purposes only.

developerPayload string

An optional string payload that Copyleaks will include in the webhook response, allowing you to correlate the callback with your internal data.


Example: "order-id-12345"

Returned as 400 Bad Request at submit (synchronous):

  • Missing or invalid scanId, filename, url, model, or webhooks
  • Unsupported file extension
  • Filename longer than 255 characters
  • Invalid verb value

Delivered to your webhook as an error result (asynchronous, after download):

  • Duration outside 2 seconds–1 hour → video_too_short (67) / video_too_long (68)
  • File larger than 512 MiB → file_too_large (6)
  • Resolution below 360×360 → video_resolution_too_low (65)
  • Frame rate below 16 FPS → fps_too_low (66)
  • Undecodable codec → unsupported_video_codec (71)
  • Corrupt or truncated file → video_truncated (70)
  • Generic decode failure → video_load_failed (72)
201 Created

The video was successfully submitted for analysis. Results will be delivered to your webhook URL when processing completes.

400 Bad Request

Invalid request parameters.

When processing completes, Copyleaks sends a POST request to your webhook URL with the detection results. See AI Video Detection Response for the complete field reference.

{
"model": "ai-video-1-pro",
"audioResult": {
"starts": [13000, 45000, 47000],
"lengths": [14000, 1000, 8700],
"exclude": {
"starts": [0, 3250, 5400, 7600, 10500],
"lengths": [2950, 1500, 1200, 650, 1050]
}
},
"visualResult": {
"starts": [11566, 29433],
"lengths": [6134, 26267],
"exclude": {
"starts": [],
"lengths": []
}
},
"summary": {
"audioAIRatio": 0.4902,
"visualAIRatio": 0.5817,
"overallAIRatio": 0.7487
},
"videoInfo": {
"metadata": {
"issuedTime": "2026-03-17T13:14:57+00:00",
"issuedBy": "OpenAI",
"appOrDeviceUsed": "Sora",
"contentSummary": "Created using generative AI"
},
"duration": 55.7
},
"scannedVideo": {
"scanId": "my-video-scan-1",
"actualCredits": 1,
"expectedCredits": 1,
"creationTime": "2026-05-05T12:37:50Z"
}
}
POST https://api.copyleaks.com/v1/ai-video-detector/my-video-scan-1/submit
Content-Type: application/json
Authorization: Bearer YOUR_LOGIN_TOKEN
{
"url": "https://example.com/my-video.mp4",
"filename": "my-video.mp4",
"model": "ai-video-1-pro",
"sandbox": true,
"webhooks": {
"url": "https://your-server.com/webhook/receive-results"
}
}