Skip to main content
GET
/
api
/
public
/
v1
/
jobs
curl -sS "https://app.opentrain.ai/api/public/v1/jobs?q=audio%20annotation&payType=PAY_PER_HOUR&limit=10"
{
  "jobs": [
    {
      "id": "<JOB_ID>",
      "slug": "spanish-audio-annotation",
      "title": "Spanish Audio Annotation",
      "companyName": "Acme AI",
      "descriptionText": "Transcribe and annotate Spanish call-center audio...",
      "descriptionHtml": "<p>Transcribe and annotate Spanish call-center audio...</p>",
      "seoTitle": null,
      "summary": null,
      "status": "OPEN",
      "datePosted": "2026-06-01T12:00:00.000Z",
      "validThrough": "2026-07-27T12:00:00.000Z",
      "updatedAt": "2026-06-10T09:30:00.000Z",
      "employmentTypes": ["CONTRACTOR"],
      "countries": [],
      "languages": ["Spanish"],
      "category": "Audio Annotation",
      "dataType": "Audio",
      "labelTypes": ["Transcription"],
      "labelingSoftware": null,
      "experienceLevel": "Intermediate",
      "skills": ["Transcription"],
      "pay": {
        "paymentType": "PAY_PER_HOUR",
        "currency": "USD",
        "hourlyRate": 12,
        "hourlyMin": null,
        "hourlyMax": null,
        "fixedPrice": null,
        "perLabelRate": null
      },
      "url": "https://app.opentrain.ai/jobs/spanish-audio-annotation-<JOB_ID>",
      "applyUrl": "https://app.opentrain.ai/api/out?job=<JOB_ID>&src=www_seo"
    }
  ],
  "nextCursor": null,
  "generatedAt": "2026-06-12T08:00:00.000Z"
}
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.

Request

q
string
Free-text search across job titles and descriptions.
category
string
Filter by job category (use values from facets).
language
string
Filter by required language.
country
string
Filter by allowed country.
payType
string
PAY_PER_HOUR, FIXED_PRICE, or PAY_PER_LABEL. Any other value returns 400.
limit
number
default:"50"
Page size, max 100.
cursor
string
Opaque pagination cursor from a previous response’s nextCursor.
OPTIONS on this path returns 204 with the CORS headers (preflight support).

Response

jobs
object[]
Matching public jobs, each a full job object.
nextCursor
string | null
Pass back as cursor for the next page; null when there are no more results.
generatedAt
string
ISO timestamp when the response was generated (responses are edge-cached up to 5 minutes).

Errors

StatuscodeMeaning
400BAD_REQUESTInvalid payType or malformed parameters
429RATE_LIMITEDOver 120 requests/minute from one IP
curl -sS "https://app.opentrain.ai/api/public/v1/jobs?q=audio%20annotation&payType=PAY_PER_HOUR&limit=10"
{
  "jobs": [
    {
      "id": "<JOB_ID>",
      "slug": "spanish-audio-annotation",
      "title": "Spanish Audio Annotation",
      "companyName": "Acme AI",
      "descriptionText": "Transcribe and annotate Spanish call-center audio...",
      "descriptionHtml": "<p>Transcribe and annotate Spanish call-center audio...</p>",
      "seoTitle": null,
      "summary": null,
      "status": "OPEN",
      "datePosted": "2026-06-01T12:00:00.000Z",
      "validThrough": "2026-07-27T12:00:00.000Z",
      "updatedAt": "2026-06-10T09:30:00.000Z",
      "employmentTypes": ["CONTRACTOR"],
      "countries": [],
      "languages": ["Spanish"],
      "category": "Audio Annotation",
      "dataType": "Audio",
      "labelTypes": ["Transcription"],
      "labelingSoftware": null,
      "experienceLevel": "Intermediate",
      "skills": ["Transcription"],
      "pay": {
        "paymentType": "PAY_PER_HOUR",
        "currency": "USD",
        "hourlyRate": 12,
        "hourlyMin": null,
        "hourlyMax": null,
        "fixedPrice": null,
        "perLabelRate": null
      },
      "url": "https://app.opentrain.ai/jobs/spanish-audio-annotation-<JOB_ID>",
      "applyUrl": "https://app.opentrain.ai/api/out?job=<JOB_ID>&src=www_seo"
    }
  ],
  "nextCursor": null,
  "generatedAt": "2026-06-12T08:00:00.000Z"
}