Releases Index
Related sources
View .md

Sources semantically similar to an anchor source

GET
/related/sources

Pulls the anchor source's vector from the polymorphic ENTITIES_INDEX (orgs + products + sources) via getByIds, then runs query restricted to type=source so the candidate pool isn't wasted on parent orgs/products that would be filtered out post-hydration anyway. scope=org adds an org_id filter; scope=global (default) keeps the source filter only.

Degrades gracefully the same way /v1/related/releases does — missing binding, unembedded anchor, or query error returns { degraded: true, degradedReason, items: [] } with HTTP 200.

Each surviving row carries its source basics plus an org rollup and a recent-release window-function stat block (releaseCount, latestDate, latestTitle, latestVersion, recentCount) so a rail card can render without follow-up requests.

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

source*string

Anchor source id (src_…) or slug.

scope?string

Restrict candidates to the anchor's org, or run unscoped.

Default"global"
Value in"org""global"
limit?integer

Max neighbors to return. Clamped to 1–25.

Range1 <= value <= 25
Default6

Response Body

Successful or degraded neighbor list.

application/json
  1. response
scope*string
Value in"org""global"
items*array<>
Example Request
curl -X GET 'https://api.releases.sh/v1/related/sources?source=string'
Example Response
{  "scope": "org",  "items": [    {      "id": "string",      "slug": "string",      "name": "string",      "type": "string",      "url": "string",      "score": 0,      "orgSlug": "string",      "orgName": "string",      "orgAvatarUrl": "string",      "releaseCount": 0,      "latestDate": "string",      "latestTitle": "string",      "latestVersion": "string",      "recentCount": 0    }  ]}