Skip to main content

Changelog

This page lists the notable changes to the Jobs API and the x402 API, which ship together. The format is based on Keep a Changelog, and the versions follow Semantic Versioning. Changes to Upload appear under the release they shipped with, marked with the Upload version. The Edge API has its own changelog.

[2.25.1] - 2026-10-26​

Fixed​

  • Accept POST /v2/jobs and POST /v2/x402/jobs without a trailing slash, and answer /v1/jobs without one with 410 Gone. Before, these requests failed with 522 or 404.
  • Deliver x402 webhooks. Before, the API failed to send them.

[2.25.0] - 2026-10-24​

Removed​

Fixed​

  • Return 404 Not Found when an API key cancels another customer's job. See Cancel a Job.
  • Show https://speechischeap.com/redacted instead of a private job's input_url in error messages and failure webhooks.
  • Retry the removal of a private job's segments after 12 hours when the first attempt fails.
  • Report x402 refunds of USDC payments as succeeded once the USDC returns. Before, some stayed pending.
  • Reject an upload that arrives incomplete. Before, Upload could create a job from a file with missing bytes. An x402 upload that arrives incomplete is refunded. (Upload 1.3.0)
  • Fail an empty x402 upload as shorter than six seconds, and refund it in full. Before, the request never answered. (Upload 1.3.0)

[2.24.0] - 2026-10-24​

Added​

  • The x402 API. Pay for a job with USDC from a wallet instead of an API key. POST /v2/x402/jobs/ quotes and pays, DELETE /v2/x402/jobs/:job_id cancels with the paying wallet, and GET /v2/jobs/:job_id returns the result.
  • POST https://upload.speechischeap.com/v2/x402/jobs/ to upload a file for an x402 job. See x402 Upload a File. (Upload 1.2.0)

Fixed​

  • Accept M4A, FLAC, and Ogg Opus uploads. Before, Upload rejected them. (Upload 1.2.0)
  • Transcribe uploaded M4A and MP4 files that keep their metadata at the end of the file, and Ogg files, in full. (Upload 1.2.0)

[2.23.0] - 2026-09-22​

Changed​

  • Fail a job whose audio is shorter than six seconds or longer than 24 hours. Before, the API processed it. See Input Requirements.

[2.22.1] - 2026-07-15​

Fixed​

  • Restore periodic progress and chronological segment streaming.

[2.21.0] - 2026-07-07​

Added​

  • GET /v2/jobs/health/inference reports whether transcription is running normally. See API Health.

[2.18.0] - 2026-05-21​

Added​

  • is_split_channel parameter for multi-channel audio speaker parsing.

[2.15.0] - 2026-03-13​

Added​

  • Job ID in the initial and progress events of a stream.

[2.14.0] - 2026-03-10​

Added​

  • Billing check for API keys. A key whose billing isn't active gets 402 Payment Required.

[2.13.1] - 2026-02-26​

Fixed​

  • Fall back from HEAD to GET when the API checks input_url, so pre-signed URLs work.

[2.13.0] - 2026-02-25​

Added​

  • The user_agent parameter applies to the check of input_url.

[2.12.0] - 2026-02-25​

Added​

  • Check that input_url is reachable before creating the job. An unreachable URL returns 400 Bad Request.

[2.11.0] - 2026-02-01​

Added​

  • Say how to get an API key in the 401 Unauthorized message.

[2.9.0] - 2025-11-16​

Added​

  • output_format parameter to specify output as SRT, VTT, or WebVTT.
  • Upload a file with input_file instead of a URL. See Upload a File. (Upload 1.0.0)

Removed​

  • The event: line from stream events, and the nested output object from their payload.

[2.8.0] - 2025-11-11​

Added​

  • Support for the can_stream_output flag.
  • Redaction of transcriptions flagged as is_private after 12 hours.

Removed​

  • hotwords and prompt input parameters.

[2.7.0] - 2025-06-16​

Added​

  • is_private parameter.
  • user_agent parameter.

Removed​

  • audio from the output.request response. Use input_url instead.

[2.5.0] - 2025-05-15​

Added​

  • GET /v2/jobs/auth endpoint to test an API key.

[2.4.0] - 2025-05-05​

Added​

  • can_parse_speakers parameter.
  • minimum_confidence parameter.

[2.3.0] - 2025-04-04​

Added​

  • can_label_audio parameter.

Removed​

  • is_multilingual parameter, because the API applies it when you don't set language.

[2.2.1] - 2025-02-11​

Fixed​

  • Call back with a FAILED status when the transcription job fails to start.
  • Return 400 Bad Request when the request has no JSON body.

Removed​

  • Requirement for webhook_url.

[2.2.0] - 2025-01-29​

Fixed​

  • Issue where the API ignored every job parameter except input_url and webhook_url.

[2.1.1] - 2025-01-10​

Fixed​

  • Canceled jobs return the expected job ID.

[2.1.0] - 2025-01-10​

Added​

  • FAILED job status to indicate a failed job.
  • A webhook callback when a job is canceled.
  • Retry for jobs whose audio URL answered 403 Forbidden.

Changed​

  • BREAKING: Re-running the same job incurs a charge.
  • BREAKING: Failed jobs return a FAILED status.

[2.0.0] - 2024-12-26​

Added​

  • New /v2/ endpoint.
  • GET /v2/jobs/health endpoint to check the health of the service.

Changed​

  • BREAKING: webhook_url is now required because jobs are asynchronous.
  • BREAKING: Downloading an unsuccessful transcription with GET /v2/jobs/:job_id returns 404 Not Found.
  • BREAKING: Successful job requests return 202 Accepted instead of 201 Created.
  • The job ID suffix is now -sic.