Lifecycle stages
Every supported version of the API is in one of six stages at any given time.| Stage | Badge | SLA | Support | Breaking changes | Minimum notice before next stage |
|---|---|---|---|---|---|
| Beta | BETA | None — use at own risk. | Best-effort support for design partners. | Allowed, documented in the changelog. | — |
| Release Candidate | RC | None — near-final quality. | Priority support for testers. | Unlikely, but possible. | 30 days before GA. |
| Generally Available | GA | Full production SLA. | Full support: bug fixes, security patches, and new features. | Avoided. A migration path is provided when one is required. | 12 months before deprecation. |
| Supported | Supported | Reduced — security only. | Critical security patches only. No new features. | None — the version is frozen. | 12 months before end of life. |
| Deprecated | Deprecated | None. | None. The version still serves traffic and emits deprecation signals. | None. | 12 months before end of life. |
| End of Life | EOL | None. | None. Calls return 410 Gone. | — | — |
How versions move between stages
The lifecycle is time-driven, with explicit minimum notice periods at each transition. Notice periods are floors, not targets — Primer can stay in any stage for longer than the minimum, but cannot shorten it.- A version in
RCreachesGAno sooner than 30 days after enteringRC. - A version in
GAis given at least 12 months of notice before being deprecated. - A version in
Deprecatedremains there for at least 12 months before reachingEOL.
Current status
| Version | Stage | Deprecation | End of life |
|---|---|---|---|
v2.4 | GA | — | — |
v2.3 | Supported | 2026-06-01 | 2027-06-01 |
v2.2 | Supported | 2026-06-01 | 2027-06-01 |
v2.1 | Supported | 2026-06-01 | 2027-06-01 |
v2 | Supported | 2026-06-01 | 2027-06-01 |
Machine-readable signals
Three HTTP signals communicate the lifecycle state of each request and response:X-Api-Versionrequest header. Pin every request to a specific API version. If the header is omitted, requests default to the earliest supported version — which means an unpinned client may silently start hitting an older version as new versions ship. Pinning is strongly recommended.Deprecationresponse header. Emitted fromDeprecatedversions. Carries the date the version was deprecated. Standardised in RFC 8594.Sunsetresponse header. Companion toDeprecation. Carries the planned end-of-life date. Standardised in the same RFC.
Deprecation and Sunset headers are scheduled for rollout alongside this policy.
End of life behaviour
When a version reachesEOL, calls to that version return 410 Gone:
X-Api-Version header rather than relying on the default.
Vocabulary
Supported is a specific lifecycle stage on this page, not a general adjective. A version in GA is actively supported but is not in the Supported stage. When referring to a version’s state, prefer the badges — GA, Supported, Deprecated, EOL — over prose.
Deprecated and EOL are distinct stages. A Deprecated version still serves traffic, with deprecation signals attached to every response. An EOL version no longer serves traffic and returns 410 Gone.
Related
- API changelog
- SDK lifecycle — the same model applied to the Primer SDKs.