Release announcements API
Release announcements are product-release notices with ordered slides and an optional call-to-action button. The release announcements API lets an authenticated user fetch the current active release they have not yet dismissed, and record a per-user dismissal so it is not shown again.
Authentication
Both endpoints require an authenticated user and use OAuth 2.0. The requesting user is identified from the access token, and all eligibility and dismissal behaviour is scoped to that user. Unauthenticated requests are rejected.
Get the current release
GET /accounts/announcements/release/ returns the active release announcement the requesting user has not dismissed, or a null release when none is eligible.
An announcement is eligible when it is a release announcement, is active, falls within its configured start and end dates, and has no dismissal recorded for the requesting user. When several releases qualify, the one with the most recent start date is returned.
A successful response returns HTTP 200 with a release object:
{
"release": {
"id": 123,
"title": "Release title",
"description": "Release description",
"ctaLabel": "Explore plans",
"ctaUrl": "/plans",
"slides": [
{
"id": 1,
"title": "Slide title",
"body": "Slide body",
"image": "https://example.com/media/slide.png"
}
]
}
}Release fields:
Field | Type | Description |
|---|---|---|
id | integer | Announcement identifier. |
title | string | Release title. |
description | string | Release description. |
ctaLabel | string | Label for the optional call-to-action button. Present when a CTA is configured. |
ctaUrl | string | URL the call-to-action button links to. Present when a CTA is configured. |
slides | array | Ordered slides. |
Each slide contains id (integer), title (string), body (string), and image (image URL, nullable). Slides are returned in their configured order.
No eligible release
When no release is active, in date, or undismissed for the user, the endpoint still returns HTTP 200 with {"release": null}. This is a successful response, not an error.
Dismiss a release
POST /accounts/announcements/{announcement_id}/dismiss/ records a dismissal of the announcement for the requesting user, so it is no longer returned to that user.
A successful dismissal returns HTTP 204 No Content with no response body. The dismissal is per user, and repeating the request is safe: the announcement stays dismissed and the endpoint returns the same success.
Errors
The dismissal endpoint returns HTTP 404 with the message "Announcement not found" when the announcement does not exist, is not a release announcement, is inactive, or is outside its start and end dates. A release cannot be dismissed outside its active window.