Get started
API reference
Read the current edition, filter its jobs, and connect your own application.
Use https://api.jobchop.co for these API, feed, export, and MCP endpoints. The OpenAPI specification describes the JSON schemas.
| Endpoint | Use it for |
|---|---|
GET/api/v1/edition | The current edition and its jobs. |
GET/api/v1/jobs/{id} | One job from the current edition. |
GET/openapi.json | The OpenAPI 3.1 specification. |
MCP/mcp | The remote MCP server. Connect with an MCP client. |
GET/rss.xml · /atom.xml · /feed.json | Feeds with one item per daily edition. |
GET/jobs.csv · /edition.md | CSV and Markdown exports. |
GET/embed · /embed.js | Interactive website embeds. |
GET/healthz | Service health. |
Filter the current selection
Pass q for a text search, work_mode for the work arrangement, or tag for an exact tag. Filters can be combined.
curl "https://api.jobchop.co/api/v1/edition?work_mode=remote"Work modes: remote, hybrid, onsite, and unspecified. A matching edition can have an empty jobs array.
A role summary and original source URL may be absent. apply_url is the supplied application URL or null when none was supplied. source_url is the original hiring announcement. The two fields stay separate.
Email signup
Sign up on the website to receive up to three jobs from each fresh daily edition. Email requires explicit confirmation; public reads still need no account or API key.
For a custom form, read GET /api/subscriptions/config for enabled and the public Turnstile sitekey. When enabled, render the widget with action email_signup.
Send JSON to POST /api/subscriptions with email, a fresh turnstile_token, and an optional empty website honeypot. The body limit is 4 KiB. Email addresses are trimmed and normalized to lowercase. Reset the widget after every submission attempt.
A generic 202 response does not activate a subscription. The reader must confirm using the emailed link within 48 hours. Handle 400 for invalid fields, 403 for rejected verification, 413 for oversized bodies, 429 for limits, and 503 for unavailable signup or delivery services. Exact field bounds are in OpenAPI.
Handle freshness and errors
| Status | Expected handling |
|---|---|
200 | Read the edition or requested resource. |
400 | Correct invalid parameters, such as an unsupported work_mode. |
404 · job_not_found | The job ID does not belong to the current edition. |
410 · edition_expired | The edition expired. Clear the current selection and fetch a new edition later. |
503 · no_edition | No edition has been published yet. Show an empty state and try again later. |
Errors return an error code and message. The /api/v1/* JSON endpoints allow cross-origin reads. Responses use Cache-Control: no-store. Public reads do not require authentication. Keep expiry information when redisplaying the data.
Open the interactive website embed. See the embedding guides to add jobs to your site.
Connect an assistant with the MCP setup guide →