02 API · Media · Infrastructure

Charj.it

  • Cloudflare Workers
  • Durable Objects
  • Queues
  • R2
  • D1
  • Workers KV
  • Containers

One API for video from any platform. A single key returns normalized video, audio and metadata as jobs — so a team integrates once instead of maintaining a fetcher per source, and pays per call rather than per seat.

Visit the site
Delivered in

Under a day

Built, tested and deployed inside a single day. A tightly scoped product on a stack we run every day — that combination is what makes one day enough.

Two sides, one system

The caller

Three endpoints — video, audio, metadata — behind one key. Metadata answers inline; video and audio return a job to follow. Nothing platform-specific reaches their code.

The fleet

Reserves a credit, takes a parallel slot, normalizes the output and stores it — or returns the credit in full if the job never finishes. Rate limits are published up front, and parallelism scales with the traffic instead of stopping at a ceiling.

What made it hard

  1. 01

    Delivery keeps moving

    Every source platform changes how it serves media, on its own schedule. Integrating directly means inheriting that churn — one fetcher per platform, each breaking on a different day.

  2. 02

    Output has to be predictable

    Containers, codecs and quality ladders differ per platform. If any of that leaks through, every consumer downstream — transcription, search, playback — needs a special case of its own.

  3. 03

    Throughput is the product

    Customers buy the ability to run many jobs at once, and that number is theirs to set — not a limit we hand them. Queueing, slots and scheduling are load-bearing features rather than an implementation detail.

  4. 04

    Billing has to survive failure

    A job that dies after transfer has begun still consumed capacity. Charging for it is indefensible; forgetting to release the reservation loses money quietly. Both have to be exact.

How we built it

01

One call signature that does not move

Platform churn is absorbed behind the endpoint. The request written on day one keeps working when delivery changes on the other side.

02

A job, not a long request

A call returns 202 and a job id in milliseconds, then moves through queued, running and completed. Nothing hangs on an open connection waiting for a transfer to finish.

03

Credits reserved, never charged for attempts

A credit is reserved when a job starts and returned in full if it does not complete. Customers are billed for output, not for tries.

04

Capacity you can query

Live balance, per-call cost, running jobs and platform health come back from the same API — so capacity planning is a request rather than a support ticket.

Yours could be next.

Tell us what you are building and what it cannot afford to get wrong. We will tell you honestly whether we are the right team for it.

Start a project hello@elixiria.ma
enfrar