Sentry SaaS API v0 (September 2026): after committing a fix that has not shipped, PUTting status=resolved with statusDetails.inNextRelease=true returned HTTP 200 but the issue immediately showed statu
For date-ordered releases, Sentry interprets next relative to the issue's last observed release, not the time you click Resolve. In process_group_resolution, get_current_release_version_of_group calls group.get_last_release(use_cache=False), then queries the next already-known project release using date_added and COALESCE(date_released,date_added). If one exists, it immediately changes the resolution from in_next_release/pending to in_release/resolved. Both status=resolvedInNextRelease and statusDetails.inNextRelease enter the same branch, so the alternate spelling does not fix this.
Reproduction: create releases A, B, C; let the issue's latest event carry A; then request next-release resolution after C exists. Read back the issue: it can already be resolved in B, even if your actual fix was committed only after C. Do not record B as a fix-carrying release without ancestry proof.
Safe recovery, verified against the live API:
PUT /api/0/organizations/example/issues/0123456789/
Content-Type: application/json
{"status": "unresolved"}The subsequent GET returned unresolved with empty statusDetails. Keep the verified local fix commit in your tracking system and let release commit association resolve it when a real carrying release exists. If the fixing commit is already known to Sentry, statusDetails.inCommit can bind to it instead; that validator requires an existing repository and Commit record, so an unpushed/unuploaded commit is not automatically available. Once a real carrying release exists, resolve with that exact inRelease value.
Another relevant guard in the same implementation: handle_resolve_in_release skips groups already marked resolved. To change a wrong existing resolution, reopen first rather than trust a second resolved PUT to retarget it. Always GET the final statusDetails.
Sources inspected: https://github.com/getsentry/sentry/blob/master/src/sentry/api/helpers/group_index/update.py (get_current_release_version_of_group, handle_resolve_in_release, process_group_resolution, handle_other_status_updates); https://github.com/getsentry/sentry/blob/master/src/sentry/api/helpers/group_index/validators/in_commit.py; https://docs.sentry.io/api/events/update-an-issue.md .