Skip to content

DocsAPI referenceOperations

Detect silence

A bounded JSON list of amplitude-based silent intervals on the source clock. Creates the same Job as POST /v1/jobs, with operation set. A scoped API key needs the jobs:run scope (full keys may call it).

POST /v1/detect_silence

Needs an API key: Authorization: Bearer $VIDEXO_API_KEY.

Parameters

Parameters
NameInTypeDescription
idempotency-key headerstring, up to 255 charactersMakes retries safe for 24 hours. Up to 255 printable ASCII characters. One key space per account across every endpoint that creates a job.

Body DetectSilenceRequest

Body fields
NameTypeDescription
input requiredstring or objectAn http or https URL, videxo://uploads/<upload_id>, { "url" } or { "upload_id" }.
filename string, up to 105 charactersThe stored file name, <name>.<format> by default; one extension, matching format.
thresholdDb number, -60 to -20
minSilenceSeconds number, 0.1 to 10
speechPaddingSeconds number, 0.05 to 1
webhook_url string, URL, up to 2,048 characters or nullAn https URL that gets the job when it ends (M4).
metadata map of string to string, up to 500 charactersYour own string pairs, returned with the job and its webhook: at most 20 keys of up to 40 characters, values up to 500.

Request

bash
curl "$VIDEXO_API_URL/v1/detect_silence" \
  -H "Authorization: Bearer $VIDEXO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "input": "https://videxo.io/samples/talk.mp4",
  "thresholdDb": -40,
  "minSilenceSeconds": 0.5
}'

Response

202 JSON
{
  "id": "job_3k9x0c2mfq8w1n7r5t4b6v2z",
  "state": "queued",
  "kind": "operations",
  "operation": "detect_silence",
  "spec": {
    "inputs": {
      "source": {
        "url": "https://videxo.io/samples/talk.mp4"
      }
    },
    "outputs": [
      {
        "silence": {
          "mode": "detect",
          "thresholdDb": -40,
          "minSilenceSeconds": 0.5,
          "speechPaddingSeconds": 0.15
        },
        "name": "metadata",
        "type": "metadata",
        "input": "source",
        "filename": "metadata.json",
        "format": "json"
      }
    ]
  },
  "command": null,
  "input_files": null,
  "output_files": null,
  "ffmpeg_command": null,
  "steps": [
    {
      "tool": "silence",
      "inputs": [
        "source"
      ],
      "outputs": [
        "metadata"
      ],
      "command": null
    }
  ],
  "notices": [],
  "webhook_url": null,
  "metadata": {},
  "progress": null,
  "error": null,
  "outputs": [],
  "usage": null,
  "created_at": "2026-11-04T12:00:00.000Z",
  "started_at": null,
  "finished_at": null
}

Responses

Responses
StatusBodyWhen
200JobThe job this Idempotency-Key made earlier (same endpoint and body).
202JobThe job, queued.
400Probleminvalid_request (with errors) or command_invalid (with problems)
401Problemauthentication_failed (missing_api_key, invalid_api_key, api_key_revoked, api_key_expired)
402Problemout_of_credits
403Problempermission_denied (account_disabled, token_scope); permission_denied (key_scope): a scoped API key without jobs:run
404Problemnot_found (upload)
409Problemconflict (idempotency_key_reused)
413Problemlimit_exceeded (request_body_size): the body is larger than 512 KB
415Probleminvalid_request (not_json): the body is not sent as application/json
429Problemrate_limited, with Retry-After in seconds: requests over the limit, or waiting_jobs for an account at its limit of jobs waiting
500Probleminternal_error
503Problemservice_unavailable (temporary): the account's free credits are still being granted, or a part of the service did not answer