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

Search Jobs

Search the public job marketplace. No authentication required.

GET/api/public/v1/jobs

Full-text search over the public OpenTrain job marketplace. This endpoint is tokenless — no Authorization header needed — and CORS-enabled (Access-Control-Allow-Origin: *), so it works from browsers, scripts, and agents without any onboarding. Responses are cached at the edge (Cache-Control: public, s-maxage=300, stale-while-revalidate=3600).

For filter values to offer in a UI, fetch GET /jobs/facets first. To track marketplace changes incrementally, poll GET /jobs/changes.

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

qstringquery

Free-text search across job titles and descriptions.

categorystringquery

Filter by job category (use values from facets).

languagestringquery

Filter by required language.

countrystringquery

Filter by allowed country.

payTypestringquery

PAY_PER_HOUR, FIXED_PRICE, or PAY_PER_LABEL. Any other value returns 400.

limitnumberquery
Default: 50

Page size, max 100.

cursorstringquery

Opaque pagination cursor from a previous response’s nextCursor.

OPTIONS on this path returns 204 with the CORS headers (preflight support).

jobsobject[]

Matching public jobs, each a full job object.

job object
idstring

Job ID — usable with GET /jobs/{id}.

slugstring

URL slug.

titlestring

Job title.

companyNamestring

Hiring company’s display name.

descriptionTextstring

Plain-text description.

descriptionHtmlstring

HTML description.

seoTitlestring | null

Standardized title when available.

summarystring | null

Short standardized summary when available.

statusstring | null

Marketplace status (open jobs only appear here).

datePostedstring

ISO timestamp of the original posting date.

validThroughstring

ISO timestamp — rolling listing expiry.

updatedAtstring

ISO timestamp of the last update.

employmentTypesstring[]

schema.org employmentType values (e.g. CONTRACTOR).

countriesstring[]

ISO country codes; empty array means worldwide.

languagesstring[]

Required languages.

categorystring | null

Job category.

dataTypestring | null

Data type being labeled (e.g. Text, Audio).

labelTypesstring[]

Label/annotation types.

labelingSoftwarestring | null

Required labeling tool, when specified.

experienceLevelstring | null

Human-readable level (e.g. Expert), null when unspecified.

skillsstring[]

Employer-tagged skills.

payobject

Pay details. paymentType is PAY_PER_HOUR, FIXED_PRICE, PAY_PER_LABEL, or null; currency is always USD. Rate fields (hourlyRate, hourlyMin, hourlyMax, fixedPrice, perLabelRate) are numbers or null depending on the payment type.

urlstring

Canonical public listing URL.

applyUrlstring

Tracked apply redirect. Always use this URL to send applicants — never construct apply links yourself.

nextCursorstring | null

Pass back as cursor for the next page; null when there are no more results.

generatedAtstring

ISO timestamp when the response was generated (responses are edge-cached up to 5 minutes).

StatuscodeMeaning
400BAD_REQUESTInvalid payType or malformed parameters
429RATE_LIMITEDOver 120 requests/minute from one IP