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 anapi_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.
sourcesgrows 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.
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.

