Echo Labs Docs
Search the docs
Find a guide, an endpoint or a section

Job outcome

Job completed or cancelled

POST {webhook_url}

HMAC-SHA256 signed with the submitting API key’s webhook signing secret over <unix seconds>.<raw body>. Verify timestamp freshness and compare signatures in constant time. Deduplicate by event id. Return any 2xx within 10 seconds. Failed attempts retry after 1m, 5m, 15m, 1h, 3h, 6h, 12h (eight attempts total). Redirects are failures. Delivery is at least once while retries remain; it is not guaranteed after exhaustion.

Sent to the job's webhook_url. See Webhooks for signature verification code.

Headers

  • Echo-Event-Id string Required
  • Echo-Event-Type string Required
    One of
    job.completed
    job.cancelled
  • Echo-Signature string Required

Payload

application/json
  • id string Required
    matches ^evt_
  • object string Required
    One of
    event
  • type string Required
    One of
    job.completed
    job.cancelled
  • created_at string · date-time Required
  • data Job Required
    • id string · uuid Required
    • object string Required
      One of
      job
    • status string Required
      One of
      queued
      processing
      completed
      cancelled
    • progress integer · nullable Required
      0–100
    • eta string · date-time · nullable Required
    • title string Required
    • media object Required
      • type string Required
        One of
        url
        upload
      • url string · nullable Required
      • upload_id string · uuid · nullable Required
      • duration_seconds number Required
    • language string · nullable Required
    • options object Required
      • style string Required

        clean removes fillers, false starts, and stutters; verbatim keeps every spoken word.

        One of
        clean
        verbatim
        Default
        clean
      • model string Required

        Captioning model. Only ave-base is supported.

        One of
        ave-base
        Default
        ave-base
      • speaker_labels boolean Required

        Identify speaker turns. Set false for dialogue without labels.

        Default
        true
      • speaker_label_style string Required

        SRT/VTT labels: >> NAME:, [NAME], NAME:, or dashes without names. Ignored when speaker_labels is false. Transcripts use their native speaker headings; JSON has a separate speaker field.

        One of
        gt_name
        brackets
        colon
        dashes
        Default
        gt_name
      • atmospherics boolean Required

        Include meaningful non-speech sounds. Uses the same add-on pricing as dashboard checkout.

        Default
        true
      • profanity string Required

        Keep profanity, mask it (f***), replace it with [expletive], or omit it. Does not alter source audio.

        One of
        as_spoken
        mask
        label
        omit
        Default
        as_spoken
      • redactions Redactions Required

        Privacy controls for caption text, using the same redaction pricing as checkout. Source audio and video are unchanged.

        Accepts one of:
        • Standard replacement
        • Custom replacement requires replacement, custom_replacement
        • pii boolean

          Redact personal data such as emails and phone numbers.

          Default
          false
        • names boolean

          Redact named individuals.

          Default
          false
        • organizations boolean

          Redact organization names.

          Default
          false
        • terms array of string

          Custom terms to redact, one term per item; each must be a nonblank single line.

          Default
          []
          ≤ 200 items
        • replacement string

          Replace with [REDACTED], a category such as [EMAIL], nothing, or custom_replacement.

          One of
          redacted
          category_label
          silent
          custom_string
          Default
          category_label
        • custom_replacement string

          Required when replacement is custom_string. Nonblank, single-line text.

          1–120 chars
      • glossary array of string Required
      • webhook_url string · nullable Required
    • cost object · nullable Required
      • amount string Required

        Decimal amount in USD, net of refunds.

      • currency string Required
        One of
        usd
    • cancellation object · nullable Required
      • reason string Required
        One of
        unsupported_language
        unsupported_media
        unusable_media
        media_unavailable
        deleted
        not_started
      • message string Required
    • captions object · nullable Required
      • srt string · uri Required
      • vtt string · uri Required
      • txt string · uri Required
      • docx string · uri Required
      • json string · uri Required
    • metadata map of string Required

      String values. Defaults: 20 keys of 1–40 characters, values up to 500 characters. These maxima are configurable per workspace.

    • created_at string · date-time Required
    • completed_at string · date-time · nullable Required

Your response

Acknowledged.