onrup

Docs

Long-running operations

How do I track a long-running job on the Onrup API?

Every long job is a durable operation with an append-only event log. Stream it with server-sent events, or poll the log from a cursor — both give the same history. Cancel, resume and retry-from-checkpoint are all idempotent.

One contract, six job types

Uploads, validation, dataset generation, training, evaluation, publishing and endpoint warm-up all behave identically from a client’s point of view. Learn the operation contract once and every long-running thing in the product follows it.

The event log is the source of truth

State lives in an append-only log rather than in a streaming connection. That means a client that disconnects has lost nothing: it reconnects, says which event it last saw, and continues.

It also means polling and streaming are equivalent. Ask what happened after a given event and get exactly what a live subscriber would have received.

# Live
curl -N https://api.onrup.com/v1/operations/$OP/stream \
  -H "Authorization: Bearer $ONRUP_API_KEY" \
  -H "Last-Event-ID: 1183"

# Or catch up
curl "https://api.onrup.com/v1/operations/$OP/events?after=1183" \
  -H "Authorization: Bearer $ONRUP_API_KEY"

Percentages are a display convenience

Progress percentages are projections, not commitments. The authoritative information is the state and the events; a percentage that goes backwards is the projection being corrected, not the job regressing.

Everything is idempotent

Cancel, resume and retry-from-checkpoint can all be called more than once without doing the thing twice. That matters because these calls are made exactly when the network is behaving badly and a client cannot tell whether the first attempt landed.

Start with the free tier

A magic link creates your account, your tenant and your first API key. No card until you ask for compute.