Skip to content
OpenTrain AIOpenTrain AIOpenTrain AIDocs

Ask OpenTrain

Answers from the documentation, with sources.

What would you like to do with OpenTrain?

AI answers can be mistaken. Check the linked sources. Don’t include private account information.

Open app

DEVELOPER DOCUMENTATION

List Job Changes

Poll for marketplace job changes since a cursor.

GET/api/public/v1/jobs/changes

Incremental change feed for the public marketplace: which jobs were published, updated, or closed since a timestamp. Designed for keeping an external job index in sync without re-fetching everything — store the response’s until and pass it back as the next since.

Only the latest event per job is returned (a job published then updated in the window appears once, as UPDATED). The feed is capped at 5,000 events per call; if you hit the cap, advance since to the returned until and poll again.

Tokenless, CORS-enabled, and edge-cached the same way as search. This feed covers public marketplace listings only — for events about your own account (proposals, messages, contracts), use GET /updates.

Requirements: none — no token, no scope, no feature flag. Rate limited to 120 requests/minute per IP.

sincestringqueryrequired

ISO 8601 timestamp. Changes at or after this instant are returned. Missing or invalid → 400.

sincestring

Echo of the requested window start.

untilstring

Window end (now). Persist this and pass it as the next call’s since.

changesobject[]

One entry per changed job — the latest event in the window.

change entry
jobIdstring

The job that changed — fetch details with GET /jobs/{id}.

eventTypestring

PUBLISHED, UPDATED, or CLOSED.

occurredAtstring

ISO timestamp of the event.

generatedAtstring

ISO timestamp when the response was generated.

StatuscodeMeaning
400BAD_REQUESTMissing or unparseable since
429RATE_LIMITEDOver 120 requests/minute from one IP