Changelog

Every change that reaches a caller — behaviour, speed, reliability — newest first, taken from the engineering log written as the work happened. Known issues are listed alongside fixes rather than left out. Breaking changes get a version bump and a month of overlap.

6 Sept 2026Changed

The status page now reports measurements instead of a fixed picture

Every figure on /status is computed from health checks the API runs against itself on a timer: the database, the job queue, the webhook delivery backlog, and the caption-fetch service where it is reachable from the API process. Uptime is the share of due checks that passed, incidents are runs of failed checks, and a component with no history says so rather than showing a number. Anything that cannot be measured is left off the page instead of being assumed healthy. The same readings are available at GET /status, which needs no API key.

2 Sept 2026Changed

Caption fetches are batched across queued videos

Videos waiting in the queue now have their caption tracks fetched together in one call rather than one at a time, which removes a per-video start-up cost that was dominating the work. Measured on the same 100-video batch as before: about 15.7 seconds per video against 30 to 40 seconds, and roughly 26 minutes end to end where the previous path projected 50 to 65. Extraction itself is unchanged, and results were byte-identical to the earlier run.

No pricing change: a batch is still charged one credit per video.

2 Sept 2026Changed

Caption fetching moved to a managed transcript service

Fetching captions directly from YouTube kept running into IP-level rate limiting that persisted for minutes at a time and did not clear under retry. Caption fetching now goes through a managed provider built for this, with the direct path kept as a fallback. The output is identical — same segments, same timings, same distinction between real captions and auto-generated ones — so nothing about a schema or a result changes.

2 Sept 2026Fixed

Rate limiting no longer fails a whole batch in seconds

When YouTube rate-limited caption fetching, every remaining video in the queue failed almost instantly: one load test lost 137 of 150 jobs that way. Rate limiting is now told apart from a video genuinely having no captions, and a rate-limited job backs off and retries — up to six attempts over about five minutes — instead of being marked failed. A job stays in processing throughout, and only fails if the limit outlasts every retry.

2 Sept 2026Fixed

Extractions that took 45 to 90 seconds now finish in normal time

Some videos took five to six times longer than they should and returned nothing for the affected sections, because the extraction model could get stuck repeating itself until it hit its output ceiling. That repetition is now detected and cut short. On the video this was traced with, total extraction time went from 91.4 seconds to 15.3. Sections that already worked are unaffected and return byte-identical results.

2 Sept 2026Known issue

Dense passages naming several subjects at once can return nothing

Where a transcript covers several subjects back-to-back in one passage, the model can fail to separate them into distinct records and the section returns no rows rather than partial ones. Smaller chunks and overlapping chunk boundaries were both tested and neither fixed it; overlap made it worse. Salvaging the malformed output was rejected because it would have produced one confidently wrong record in place of an empty result. It is reported as empty, and it costs the same as any other video.