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

Ave Public Captioning API

Base URL

https://api.el.ai/v1
Production

Authentication

Send a workspace API key as a bearer token on every request: Authorization: Bearer el_live_…. Read-only keys can read jobs, captions and the account; full keys can also upload and order. More on keys.

Endpoints

Objects

The shapes the API sends and receives. Each endpoint page shows the ones it uses.

CreateJob

Provide exactly one source: media_url OR upload_id. Sending both or neither is invalid. Choose the Media URL or Uploaded file variant below.

  • media_url string

    Public HTTP(S) video/audio URL, including supported YouTube links. Required only for the Media URL variant; omit when using upload_id.

    ≥ 1 chars
  • upload_id string · uuid

    ID returned by POST /uploads, after uploading the file. Required only for the Uploaded file variant; omit when using media_url.

  • title string

    Dashboard title and download filename. Defaults to the generated job ID. Default maximum: 300 characters, configurable per workspace.

    ≥ 1 chars
  • style string

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

    One of
    clean
    verbatim
    Default
    clean
  • model string

    Captioning model. Only ave-base is supported.

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

    Identify speaker turns. Set false for dialogue without labels.

    Default
    true
  • speaker_label_style string

    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

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

    Default
    true
  • profanity string

    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

    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

    Names and terms with preferred spelling, used where the audio supports them. Defaults to at most 200 terms of 100 characters each; configurable per workspace.

    Default
    []
  • webhook_url string · uri

    Public HTTPS callback. Redirects are not followed.

    ≤ 2048 chars
    matches ^https://
  • metadata map of string

    Your string key–value pairs, returned on the job and in webhook events. Defaults: 20 keys of 1–40 characters, values up to 500 characters. These maxima are configurable per workspace.

Job

  • id string · uuid
  • object string
    One of
    job
  • status string
    One of
    queued
    processing
    completed
    cancelled
  • progress integer · nullable
    0–100
  • eta string · date-time · nullable
  • title string
  • media object
    • type string
      One of
      url
      upload
    • url string · nullable
    • upload_id string · uuid · nullable
    • duration_seconds number
  • language string · nullable
  • options object
    • style string

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

      One of
      clean
      verbatim
      Default
      clean
    • model string

      Captioning model. Only ave-base is supported.

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

      Identify speaker turns. Set false for dialogue without labels.

      Default
      true
    • speaker_label_style string

      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

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

      Default
      true
    • profanity string

      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

      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
    • webhook_url string · nullable
  • cost object · nullable
    • amount string

      Decimal amount in USD, net of refunds.

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

    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
  • completed_at string · date-time · nullable

Error

  • error object
    • code string
    • message string
    • param string

Upload

  • id string · uuid
  • object string
    One of
    upload
  • upload_url string · uri

    Presigned URL for uploading raw file bytes with PUT. No Authorization or storage-specific headers are needed.

  • method string
    One of
    PUT
  • max_size_bytes integer
    One of
    5242880000
  • expires_at string · date-time

Account

  • object string
    One of
    account
  • workspace object
    • id string · uuid
    • name string
  • key object
    • id string · uuid
    • name string
    • access string
      One of
      full
      read_only
  • billing object
    • mode string · nullable
      One of
      prepaid
      invoiced
    • balance string · nullable
    • currency string
      One of
      usd
    • rate_per_minute string · nullable

Event

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

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

        One of
        clean
        verbatim
        Default
        clean
      • model string

        Captioning model. Only ave-base is supported.

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

        Identify speaker turns. Set false for dialogue without labels.

        Default
        true
      • speaker_label_style string

        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

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

        Default
        true
      • profanity string

        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

        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
      • webhook_url string · nullable
    • cost object · nullable
      • amount string

        Decimal amount in USD, net of refunds.

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

      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
    • completed_at string · date-time · nullable

Redactions

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

  • 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