Versioning + deprecation policy

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.

Current version

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.

What we call a breaking change

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.

What we DON'T call a breaking change

Deprecation windows

Every breaking change goes through the same lifecycle:

StageDurationWhat happens
AnnounceDay 0Public 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 deprecation90 days minimumEndpoint 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 sunsetAfter sunset dateEndpoint 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.

How we communicate deprecations

v1 stability commitment

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.

What's deprecated right now

Current deprecation list (always current; this section is generated from the live policy):

Suggested customer practices

The honest commitment. We've never sunset a v1 endpoint with less than 90 days notice. We don't plan to start. If a breaking change is unavoidable (security, legal scope, upstream restructure), the timeline shrinks but the communication doesn't; we'd ship a public runbook the same hour the change went live.