How we version the API, what counts as a breaking change, how long deprecation windows are, and how we communicate. Written policy so customers integrating us today can plan around our future moves.
The API is path-versioned at /v1. Every public route lives under that prefix:
https://parlay-api.com/v1/sports/baseball_mlb/odds
https://parlay-api.com/v1/meta/changelog
https://parlay-api.com/v1/clv/history
The platform release version is published on every response in the X-API-Version header (current: 3.2.0) and the X-API-Release-Date header.
A change is breaking if it could plausibly break an existing integration written against the documented behavior. Specifically:
We will not make a breaking change to /v1 without a written deprecation notice, a migration path, and a fixed sunset date. See below.
SPORT_KEY_ALIASES to keep old keys working; you don't need to migrate).Every breaking change goes through the same lifecycle:
| Stage | Duration | What happens |
|---|---|---|
| Announce | Day 0 | Public changelog entry + Deprecation response header on the affected endpoint + email to affected customers (we identify them by API-key usage of the deprecated surface). |
| Soft deprecation | 90 days minimum | Endpoint still works; response includes Deprecation: true header and Sunset: <rfc-1123 date> header. SDK changelog updated. New customers are nudged to the new shape. |
| Hard sunset | After sunset date | Endpoint returns 410 Gone with a structured body pointing at the replacement. Or, where backward-compatible, the old shape continues working with the new behavior. |
90 days is a floor, not a ceiling. We've extended several deprecations to 180 days when a customer cohort needed more migration time. Enterprise contracts can negotiate longer; ask before you commit.
deprecation on /changelog on day 0./v1/meta/changelog with tags: ["deprecation"]. SDK boot logic can poll for new deprecations.Deprecation: true, Sunset: <rfc-1123>, and Link: <replacement-url>; rel="successor-version".
The /v1 namespace is committed to backward compatibility through 2027. We don't plan to ship /v2 before then. If we do, /v1 will continue to work in parallel for at least 12 months after /v2 GA.
Internal experiments that we're not ready to commit to live under /v1/experimental/* and explicitly opt out of this stability commitment. The header X-Experimental: true appears on every response. Expect breakage there; don't build production integrations on experimental routes.
Current deprecation list (always current; this section is generated from the live policy):
?event_ids= alias accepted alongside the canonical ?eventIds=) ended at end-of-life on 2026-04-30; the alias is now permanent at no cost to the customer./v1/meta/changelog for tags: ["deprecation"] entries.Deprecation and Sunset response headers in your SDK error / warning layer. Surface them to your operators.X-API-Version in your logs so you can audit what version was running during any historical period.