Authenticity Verification: start task
POST/api/technology/experimental/authenticity-verification
Please note that Authenticity Verification is an experimental feature.
It is under development and may change in the future.
Start an Authenticity Verification task for a media file.
Authenticity Verification features
The Authenticity Verification endpoint supports the following independent operations:
- Deepfake Detection
- Audio Manipulation Detection
- Replay Attack Detection
Be default, all operations are performed, and they are billed together as one Authenticity
Verification task. It is possible to specify the list of requested operations (deepfake_detection
,
audio_manipulation_detection
, replay_attack_detection
) to save computational resources.
Features of all the operations
- Multi-channel media files are supported.
- For each channel an independent operation's result is produced.
- Processing can be limited to a specific time segment in the media file with query parameters.
Deepfake Detection specific features
- If there is less than 3 seconds of audio in a processed channel (or time segment), the score will
be empty (i.e.
null
).
Audio Manipulation Detection specific features
- Under the hood, the technology analyzes overlapping segments of 400 ms. By default, additional
logic is applied to the raw segments, joining adjacent suspicious segments into one to improve the
usability of the results. To obtain the raw segmentation instead, use the
raw_segmentation=True
query parameter.
Request
Query Parameters
Possible values: [split
, mix
]
A string enumeration value representing the channel mode for conversion. This value indicates how the audio channels should be processed during conversion. Only the channels with the specified indices (channels
parameter) will be processed, and others will be ignored.
split
A string of integers separated by comma (without spaces), representing the channels that should be kept during conversion. If specified, only the channels with the specified indices will be processed, and others will be ignored. If empty, all channels in the audio data will be processed. Note that channels
is 0-based.
Possible values: >= 0
Specifies the time in the input file where processing starts. If the parameter equals 0
(the default value), the recording is processed from the beginning. Time is given in seconds.
0
Possible values: >= 0
Specifies the time in the file where processing ends. If the parameter is not specified, the input file is processed to the end. Time is given in seconds.
Possible values: [deepfake_detection
, replay_attack_detection
, audio_manipulation_detection
]
Requested operations to perform.
Header Parameters
Correlation ID is a special type of request ID which is unique over a series of requests and responses, identifying a transaction in a distributed system. Correlation ID will be generated if not provided.
In distributed system architecture (microservices architecture) it is a unique ID of request and response combination throughout all components of a distributed system. Request ID will be generated if not provided.
- multipart/form-data
Bodyrequired
Input media file.
config object
Responses
- 202
- 400
- 403
- 413
- 422
- 429
- 507
Authenticity Verification task was accepted. Follow the Location
header to poll for the task state.
Response Headers
- application/json
- Schema
- Example (auto)
Schema
task objectrequired
{
"task": {
"task_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"state": "pending"
}
}
Request payload data was invalid and could not be parsed.
- application/json
- Schema
- Example (auto)
- request.invalid
Schema
Machine-readable error type.
Possible values: [internal
, resource.not-found
, method.invalid
, request.conflict
, request.forbidden
, request.invalid
, request.validation-error
, request.rate-limit-exceeded
, request.size-limit-exceeded
, storage.capacity-exceeded
]
Human-readable summary of the error.
detail object[]
{
"type": "internal",
"message": "string",
"detail": [
{
"location": [
0,
"string"
],
"message": "string",
"type": "string",
"context": {}
}
]
}
Invalid request.
{
"type": "request.invalid",
"message": "Invalid request.",
"detail": []
}
Request is forbidden.
- application/json
- Schema
- Example (auto)
- request.forbidden
Schema
Machine-readable error type.
Possible values: [internal
, resource.not-found
, method.invalid
, request.conflict
, request.forbidden
, request.invalid
, request.validation-error
, request.rate-limit-exceeded
, request.size-limit-exceeded
, storage.capacity-exceeded
]
Human-readable summary of the error.
detail object[]
{
"type": "internal",
"message": "string",
"detail": [
{
"location": [
0,
"string"
],
"message": "string",
"type": "string",
"context": {}
}
]
}
Processing capacity allowed for the operation was exceeded.
{
"type": "request.forbidden",
"message": "Request is forbidden.",
"detail": [
{
"location": [
"license"
],
"message": "Licensed processing capacity exceeded.",
"type": "licensing.capacity-exceeded",
"context": {}
}
]
}
The request entity (payload) size exceeds the allowed limit.
- application/json
- Schema
- Example (auto)
- request.size-limit-exceeded
Schema
Machine-readable error type.
Possible values: [internal
, resource.not-found
, method.invalid
, request.conflict
, request.forbidden
, request.invalid
, request.validation-error
, request.rate-limit-exceeded
, request.size-limit-exceeded
, storage.capacity-exceeded
]
Human-readable summary of the error.
detail object[]
{
"type": "internal",
"message": "string",
"detail": [
{
"location": [
0,
"string"
],
"message": "string",
"type": "string",
"context": {}
}
]
}
Request size limit exceeded.
{
"type": "request.size-limit-exceeded",
"message": "Request size limit exceeded.",
"detail": [
{
"location": [
"body",
"file"
],
"message": "Input media file too large.",
"type": "media.too-large",
"context": {
"file_size": 1048576000,
"max_file_size": 524288000,
"size_unit": "bytes"
}
}
]
}
Error during validation of request payload data occurred.
- application/json
- Schema
- Example (auto)
- request validation error
Schema
Machine-readable error type.
Possible values: [internal
, resource.not-found
, method.invalid
, request.conflict
, request.forbidden
, request.invalid
, request.validation-error
, request.rate-limit-exceeded
, request.size-limit-exceeded
, storage.capacity-exceeded
]
Human-readable summary of the error.
detail object[]
{
"type": "internal",
"message": "string",
"detail": [
{
"location": [
0,
"string"
],
"message": "string",
"type": "string",
"context": {}
}
]
}
Request validation error.
{
"type": "request.validation-error",
"message": "Request validation error.",
"detail": []
}
Request rate limit exceeded.
The request may be retried after a while. The following response headers may be checked for details: retry-after
, x-ratelimit-limit
, x-ratelimit-remaining
, x-ratelimit-reset
.
Response Headers
- application/json
- Schema
- Example (auto)
- request.rate-limit-exceeded
Schema
Machine-readable error type.
Possible values: [internal
, resource.not-found
, method.invalid
, request.conflict
, request.forbidden
, request.invalid
, request.validation-error
, request.rate-limit-exceeded
, request.size-limit-exceeded
, storage.capacity-exceeded
]
Human-readable summary of the error.
detail object[]
{
"type": "internal",
"message": "string",
"detail": [
{
"location": [
0,
"string"
],
"message": "string",
"type": "string",
"context": {}
}
]
}
Rate limit exceeded.
{
"type": "request.rate-limit-exceeded",
"message": "Rate limit exceeded: 1 per 5 second.",
"detail": []
}
The storage is full and cannot accept any data.
- application/json
- Schema
- Example (auto)
- insufficient storage
Schema
Machine-readable error type.
Possible values: [internal
, resource.not-found
, method.invalid
, request.conflict
, request.forbidden
, request.invalid
, request.validation-error
, request.rate-limit-exceeded
, request.size-limit-exceeded
, storage.capacity-exceeded
]
Human-readable summary of the error.
detail object[]
{
"type": "internal",
"message": "string",
"detail": [
{
"location": [
0,
"string"
],
"message": "string",
"type": "string",
"context": {}
}
]
}
Storage capacity exceeded.
{
"type": "storage.capacity-exceeded",
"message": "Storage capacity exceeded.",
"detail": []
}
- csharp
- curl
- dart
- go
- http
- java
- javascript
- kotlin
- c
- nodejs
- objective-c
- ocaml
- php
- powershell
- python
- r
- ruby
- rust
- shell
- swift
- HTTPCLIENT
- RESTSHARP