APIBreak

What Sentry changed, 1 May 2026 to 29 October 2026

219 operations became 273. 22 were removed, 2 were newly deprecated, 76 were added, and 49 request fields became required.

Read from getsentry/sentry-api-schema at 529d3f9 and b26b2fc (version v0). Generated 31 October 2026 by the specification parser the APIBreak Action uses, applied to Sentry's published specification.

Sentry publishes its public API description in getsentry/sentry-api-schema. This page reads openapi-derefed.json from that repository. Version policy and shutdown dates are not in the specification, so this page does not state them; it reads the deprecated flag on each operation.

Removed from the specification

  • DELETE /api/0/organizations/{organization_id_or_slug}/alert-rules/{alert_rule_id}/
  • DELETE /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/files/dsyms/
  • DELETE /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/rules/{rule_id}/
  • GET /api/0/organizations/{organization_id_or_slug}/alert-rules/
  • GET /api/0/organizations/{organization_id_or_slug}/alert-rules/{alert_rule_id}/
  • GET /api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repositories/
  • GET /api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repositories/sync/
  • GET /api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repositories/tokens/
  • GET /api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repository/{repository}/
  • GET /api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repository/{repository}/branches/
  • GET /api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repository/{repository}/test-results-aggregates/
  • GET /api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repository/{repository}/test-results/
  • GET /api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repository/{repository}/test-suites/
  • GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/rules/
  • GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/rules/{rule_id}/
  • POST /api/0/organizations/{organization_id_or_slug}/alert-rules/
  • POST /api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repositories/sync/
  • POST /api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repository/{repository}/token/regenerate/
  • POST /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/files/dsyms/
  • POST /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/rules/
  • PUT /api/0/organizations/{organization_id_or_slug}/alert-rules/{alert_rule_id}/
  • PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/rules/{rule_id}/

Newly deprecated in this window

A deprecation is the notice period. It is the cheapest moment to act and the easiest one to miss. This list compares operations present at the baseline.

  • GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/issues/
  • POST /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/user-feedback/

Deprecated as of the current specification (2)

Everything the vendor currently marks deprecated, whether or not it changed recently. The vendor has flagged each of these for possible removal, with or without a date attached.

  • GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/issues/
  • POST /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/user-feedback/

Request fields removed from the specification

The current specification no longer lists these request fields, which the baseline did. A caller that still sends one is sending a parameter the new version does not define; whether Sentry rejects or ignores it at runtime is not something a specification diff can show, and what it means for an integration depends on how Sentry versions — see the note at the top of this page.

  • POST /api/0/organizations/{organization_id_or_slug}/dashboards/ no longer lists widgets[].layout.min_h (application/json)
  • POST /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/autofix/ no longer lists event_id (application/json)
  • POST /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/autofix/ no longer lists instruction (application/json)
  • POST /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/autofix/ no longer lists pr_to_comment_on_url (application/json)
  • PUT /api/0/organizations/{organization_id_or_slug}/ no longer lists codecovAccess (application/json)
  • PUT /api/0/organizations/{organization_id_or_slug}/releases/{version}/files/{file_id}/ no longer lists dist (application/json)
  • PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/files/{file_id}/ no longer lists dist (application/json)

Request fields that became required

Only JSON request bodies are compared. A top-level field applies whenever the operation is sent a JSON body. A nested field applies only inside each object containing it that is sent (for an array, each element), so a caller that never sends that object, or sends an empty array, is not affected.

  • PATCH /api/0/organizations/{organization_id_or_slug}/scim/v2/Groups/{team_id_or_slug} — now requires schemas
  • POST /api/0/organizations/{organization_id_or_slug}/releases/ — now requires commits[].id in each element of commits sent
  • POST /api/0/organizations/{organization_id_or_slug}/releases/ — now requires refs[].commit in each element of refs sent
  • POST /api/0/organizations/{organization_id_or_slug}/releases/ — now requires refs[].repository in each element of refs sent
  • POST /api/0/organizations/{organization_id_or_slug}/workflows/ — now requires action_filters[].actions in each element of action_filters sent
  • POST /api/0/organizations/{organization_id_or_slug}/workflows/ — now requires action_filters[].logic_type in each element of action_filters sent
  • POST /api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/external-teams/ — now requires team_id
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/ — now requires ignoreCount
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/ — now requires ignoreDuration
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/ — now requires ignoreUserCount
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/ — now requires ignoreUserWindow
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/ — now requires ignoreWindow
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/ — now requires snoozeDuration
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires assignedTo
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires discard
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires hasSeen
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires ignoreCount
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires ignoreDuration
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires ignoreUserCount
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires ignoreUserWindow
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires ignoreWindow
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires inbox
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires isBookmarked
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires isPublic
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires isSubscribed
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires merge
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires priority
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires snoozeDuration
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires status
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires statusDetails
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires statusDetails.ignoreCount when statusDetails is sent
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires statusDetails.ignoreDuration when statusDetails is sent
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires statusDetails.ignoreUserCount when statusDetails is sent
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires statusDetails.ignoreUserWindow when statusDetails is sent
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires statusDetails.ignoreWindow when statusDetails is sent
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires statusDetails.inCommit.commit when statusDetails.inCommit is sent
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires statusDetails.inCommit.repository when statusDetails.inCommit is sent
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires statusDetails.inNextRelease when statusDetails is sent
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires statusDetails.inRelease when statusDetails is sent
  • PUT /api/0/organizations/{organization_id_or_slug}/issues/{issue_id}/ — now requires substatus
  • PUT /api/0/organizations/{organization_id_or_slug}/releases/{version}/files/{file_id}/ — now requires name
  • PUT /api/0/organizations/{organization_id_or_slug}/workflows/{workflow_id}/ — now requires action_filters[].actions in each element of action_filters sent
  • PUT /api/0/organizations/{organization_id_or_slug}/workflows/{workflow_id}/ — now requires action_filters[].logic_type in each element of action_filters sent
  • PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/ — now requires digestsMaxDelay
  • PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/ — now requires digestsMinDelay
  • PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/ — now requires securityToken
  • PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/ — now requires securityTokenHeader
  • PUT /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/releases/{version}/files/{file_id}/ — now requires name
  • PUT /api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/external-teams/{external_team_id}/ — now requires team_id

Sentry API questions

Every answer below is computed from the snapshot above, and each links to the Sentry specification it was read from.

Which Sentry API endpoints were removed recently?
22 operations were removed from openapi-derefed.json in getsentry/sentry-api-schema between 1 May 2026 and 29 October 2026: DELETE /api/0/organizations/{organization_id_or_slug}/alert-rules/{alert_rule_id}/, DELETE /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/files/dsyms/, DELETE /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/rules/{rule_id}/, GET /api/0/organizations/{organization_id_or_slug}/alert-rules/, GET /api/0/organizations/{organization_id_or_slug}/alert-rules/{alert_rule_id}/, GET /api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repositories/, GET /api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repositories/sync/, GET /api/0/organizations/{organization_id_or_slug}/prevent/owner/{owner}/repositories/tokens/ and 14 more (all listed above). The file went from 219 to 273 operations.
Source: getsentry/sentry-api-schema, the two commits compared
Which Sentry API endpoints are deprecated?
As of 29 October 2026, openapi-derefed.json in getsentry/sentry-api-schema marks 2 operations deprecated: GET /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/issues/ and POST /api/0/projects/{organization_id_or_slug}/{project_id_or_slug}/user-feedback/. 2 compared operations (paired with a baseline operation) gained the deprecated flag between 1 May 2026 and 29 October 2026.
Source: getsentry/sentry-api-schema, the two commits compared
Did any Sentry API request fields become required?
49 JSON request fields became required between 1 May 2026 and 29 October 2026: schemas on PATCH /api/0/organizations/{organization_id_or_slug}/scim/v2/Groups/{team_id_or_slug}, commits[].id on POST /api/0/organizations/{organization_id_or_slug}/releases/, refs[].commit on POST /api/0/organizations/{organization_id_or_slug}/releases/, refs[].repository on POST /api/0/organizations/{organization_id_or_slug}/releases/, action_filters[].actions on POST /api/0/organizations/{organization_id_or_slug}/workflows/, action_filters[].logic_type on POST /api/0/organizations/{organization_id_or_slug}/workflows/, team_id on POST /api/0/teams/{organization_id_or_slug}/{team_id_or_slug}/external-teams/, ignoreCount on PUT /api/0/organizations/{organization_id_or_slug}/issues/ and 41 more (all listed above). 33 are top-level fields of the JSON request body, which apply whenever a JSON body is sent; 16 are nested and apply only inside each object containing the field that the body sends (for an array, each element). A JSON body that leaves one out where it applies no longer matches the current specification.
Source: getsentry/sentry-api-schema, the two commits compared
Where is the Sentry OpenAPI specification?
In the getsentry/sentry-api-schema repository on GitHub. This page reads openapi-derefed.json at commit b26b2fc (version v0), dated 29 October 2026.
Source: getsentry/sentry-api-schema on GitHub

The Action does not check Sentry yet

It checks GitHub REST and Stripe. If you want your CI to check the Sentry endpoints you call, say so in an issue, because requests like that decide which vendor the Action should support next.

a real report

API changes at other vendors

See every vendor