Skip to main content

There’s no version in the path

Every route is /api/{resource}/api/jobs, /api/jobs/feed, /api/companies/{id}. There is no /v1/ or /v2/ segment, and there never has been. Don’t construct URLs expecting one. The OpenAPI document that describes the API carries a date-style info.version — currently 2026-07-21. It tracks the spec, not a set of breaking releases; a new date doesn’t imply an incompatible change.

The one exception: Auto Apply

Auto Apply is the only surface with an explicit contract version. Every request and response — including error bodies — carries an api_version field, currently 2026-07-21. Auto Apply is a preview: application creation isn’t enabled yet and returns 503 auto_apply_coming_soon. If the callback-driven contract changes before general availability, api_version is how you’ll tell.

The compatibility contract

Outside that one field, changes to the API are additive:
  • New fields may appear on any response at any time.
  • New optional request parameters may be added at any time.
  • sources grows as platforms are added — see Sources — so treat it as an open set, not a closed enum, and don’t validate against a hardcoded list.
A client that fails on an unrecognized field or an unfamiliar source value is broken by design, not by our mistake. The following count as breaking, and are announced ahead of time via the Changelog:
  • Removing or renaming a response field.
  • Removing an endpoint.
  • Tightening request validation that previously succeeded.
  • Changing a default value.

Writing a client that survives change

1

Ignore unknown fields

Deserialize permissively. A new field appearing on Job or JobCompany tomorrow should not raise an exception today.
2

Don't depend on field order

JSON object key order is not part of the contract.
3

Branch on error code, not prose

Match on the code field, not title or detail — those are human-readable strings and may be reworded without notice. See Errors.
4

Treat sources as an open set

New ATS platforms are added to the catalogue over time. Don’t hardcode an enum of valid source values or reject jobs from one you don’t recognize.
5

Pin your SDK version

Pin the client library version in your dependency file and upgrade deliberately, rather than always taking latest. See Client libraries.