Skip to main content

Syntonym Public API (0.6.0)

Download OpenAPI specification:Download

Syntonym Public API for anonymization of faces and license plates in images and videos.

There are two ways to upload files for processing: via direct upload /direct_upload or by creating an upload session /create_upload_session and uploading the file to the session_uri.

A job id will be associated with each file upload. Use the job_id to approve the job /approve_job for processing.

You can subscribe to a webhook to receive updates on the job status. Use /notify_on_job_status to register a callback url.

Once the job has been completed, credits will be deducted from api_key's balance.

Full report can be obtained from /get_job_result. Each video/image will have a download link for the processed file.

Direct Upload

This endpoint redirects to a Azure blob with SAS token for direct upload.

Recommended for small files that can be uploaded in one request. Use /create_upload_session for larger files to upload in chunks.

Requires a valid api_key as parameter access_token in the header.

Model name as a query parameter 'model' is required to specify the model to use for processing. Supported models are: syn, blur

Model parameters can be passed as query parameters. For example: &enable_lp=True&blur_threshold=0.5&lp_track=True&slicing=True&mask_blur=True

Requires "x-ms-blob-type" header to be set to "BlockBlob".

Supported video formats are: .mp4, .mkv, .webm, .ts, .mov, .avi, .mts

Supported image formats are: .jpg, .png, .jpeg, .bmp

Supported archive formats are: .zip, .rar, .7z

Nesting of archives is not supported. Files inside archives must be on the root level. Max upload size is 4294967295 bytes.

Job_id will be returned in the header.

Refer to Azure Blob Storage documentation for more information on supported upload methods.

The session_uri will expire after 7 days.

Authorizations:
APIKeyHeader
path Parameters
file_name
required
string (The name of the file you want to upload)

Responses

Response samples

Content type
application/json
{
  • "url": "string",
  • "status_code": 307,
  • "headers": {
    }
}

Create Upload Session

This endpoint returns a session_uri that can be used to upload files to Azure Blob storage. Requires a valid api_key as parameter access_token in the header.

On successful upload, the backend will fetch the file and process it.

Model parameters are sent via body in ProcessJobInputModel object.

Set ProcessJobInputModel.model to specify the model to use for processing. Supported models are: syn, blur

Model config dictionary can be used to set the following parameters:

blur_face: bool=True (Blur faces)
enable_lp: bool=True (Enable license plate blur)
blur_threshold: float=0.5, ge=0.0, le=1.0 (Blur threshold)
slicing: bool=False (Enable slicing for large images)
mask_blur: bool=False (Enable mask blur instead of circle blur)
lp_track: bool=False (Enable license plate tracking)

Supported video formats are: .mp4, .mkv, .webm, .ts, .mov, .avi, .mts

Supported image formats are: .jpg, .png, .jpeg, .bmp

Supported archive formats are: .zip, .rar, .7z

Nesting of archives is not supported. Files inside archive must be on the root level. Max upload size is 4294967295 bytes.

The session_uri will expire after 7 days.

Use BlockBlob upload method from Azure Blob Storage documentation to upload the file.

AppendBlob uploads are not supported.

Authorizations:
APIKeyHeader
Request Body schema: application/json
required
file_name
string (File Name) [ 5 .. 255 ] characters
Default: "video_to_process.mp4"

File name

file_size
integer (File Size) [ 1000 .. 4294967295 ]
Default: 10000

file size in bytes

content_type
string (Content Type)
Default: "multipart/form-data"

Content type for upload

model
required
string (Model)
required
BlurConfig (object) or SynConfig (object) (Model Config)

Responses

Request samples

Content type
application/json
{
  • "file_name": "video_files.zip",
  • "file_size": 48439402,
  • "model": "blur",
  • "content_type": "application/octet-stream",
  • "model_config": {
    }
}

Response samples

Content type
application/json
{
  • "session_uri": "string",
  • "job_id": "string",
  • "upload_status": "waiting for upload",
  • "job_status": 0,
  • "job_status_description": "initialized",
  • "file_name": "string",
  • "total_credit_cost": 0,
  • "file_size": 0,
  • "model": "syn",
  • "model_config": {
    }
}

Notification Subscription

Use this endpoint to register a callback url to be notified when a job has an update.

The callback will trigger in two cases:

  1. When an upload operation is complete via the /create_upload_session endpoint and the job needs to approved to start processing.

  2. When a job has completed processing and the results are ready to be downloaded.

The callback will be a POST request with body as a JobReport object.

Note: This endpoint is optional. You can use /job_result endpoint to receive the same information.

Authorizations:
APIKeyHeader
query Parameters
job_id
required
string (The job_id of the job you want to get the result for in uuid4 format) = 36 characters
callback_url
required
string <uri> (The url to POST to with JobReport when the job has an update) [ 1 .. 65536 ] characters

Responses

Callbacks

Response samples

Content type
application/json
{
  • "detail": "string"
}

Callback payload samples

Callback
POST: Job Status Notification
Content type
application/json
{
  • "job_id": "string",
  • "job_status": 0,
  • "job_status_description": "string",
  • "job_total_credit_cost": 0,
  • "tasks": [ ]
}

Approve Job

Use this endpoint to approve a job to start processing.

Requires api-key with enough credits to process the file. You can view the cost of the job in the total_credit_cost

The cost will be deducted from the api-key's balance.

Response codes: 200: Job approved, 201: Job does not need approval, 202: Job already approved, 302: Job not ready for approval, 4??: Error approving job

Authorizations:
APIKeyHeader
path Parameters
job_id
required
string (The job_id of the job you want to approve in uuid4 format) = 36 characters

Responses

Response samples

Content type
application/json
{
  • "detail": "string"
}

Get Job Result

Use this endpoint to get status of a job.

If the job is completed, the response will include a list of Tasks for each file in the job and a download_link field for each task.

Refer to Azure Storage Documentation for supported download methods.

Authorizations:
APIKeyHeader
path Parameters
job_id
required
string (Job Id) = 36 characters

The job_id of the job you want to get the result for in uuid4 format

Responses

Response samples

Content type
application/json
{
  • "job_id": "string",
  • "job_status": 0,
  • "job_status_description": "string",
  • "job_total_credit_cost": 0,
  • "tasks": [ ]
}

Delete Job

Use this endpoint to delete a job and its associated files from the server and cloud storage. Rate limited to 100 requests per minute

Authorizations:
APIKeyHeader
path Parameters
job_id
required
string (Job Id) = 36 characters

The job_id of the job you want to get the result for in uuid4 format

Responses

Response samples

Content type
application/json
{
  • "detail": "string"
}