Releases Index
What's changed
View .md

Changelog entries between two versions of a package (upgrade intelligence)

GET
/whats-changed

Given a package and a from/to version, returns the ordered release entries in the half-open range (from, to] — from exclusive (you have it), to inclusive — with summaries, breaking-change verdicts (#1696), and migration notes. One call instead of N changelog pages.

Reads already-ingested releases only (no live fetch). Resolution is read-only: an exact catalog source-slug match, then a non-materializing GitHub owner/repo coordinate match. An unresolvable package returns status: "unknown" with HTTP 200 — a valid answer, not an error; npm/PyPI names absent from the catalog resolve to unknown until the name→source map (#1345) lands. Wide ranges are truncated to a token budget (newest entries kept), flagged via truncated.

Authorization

bearerAuth
headerAuthorizationBearer <relk_… | relu_… | OAuth JWT>

Machine/operator tokens use the relk_ prefix; self-serve read-only user keys use relu_; Sign in with Releases supplies an OAuth access token. Required scope depends on the endpoint.

Query Parameters

package*string

Package identifier — a catalog source slug or a GitHub "owner/repo" coordinate.

from*string

Version you're upgrading FROM (exclusive).

to*string

Version you're upgrading TO (inclusive).

ecosystem?string

Optional resolution hint. github enables the coordinate match for a bare owner/repo.

Value in"npm""pypi""github"

Response Body

Upgrade range (resolved or unknown — both are 200)

application/json
  1. response
status*string
Value in"resolved""unknown"
package*string
ecosystem*|null
from*string
to*string
source*|null
entries*array<>
count*number
truncated*boolean
truncatedAtTokens?number
Example Request
curl -X GET 'https://api.releases.sh/v1/whats-changed?package=string&from=string&to=string'
Example Response
{  "status": "resolved",  "package": "string",  "ecosystem": "npm",  "from": "string",  "to": "string",  "source": {    "sourceId": "string",    "sourceSlug": "string",    "orgSlug": "string"  },  "entries": [    {      "version": "string",      "publishedAt": "string",      "title": "string",      "summary": "string",      "breaking": "unknown",      "migrationNotes": "string",      "url": "string",      "webUrl": "string"    }  ],  "count": 0,  "truncated": true,  "truncatedAtTokens": 0}