---
title: "Sources semantically similar to an anchor source"
method: GET
path: "/related/sources"
tags: ["Related"]
---

# 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.

## Query parameters

- `source` string, required
- `scope` 'org' | 'global'
- `limit` integer

## Response `200`

Successful or degraded neighbor list.

- union
  - object
    - `scope` 'org' | 'global', required
    - `items` object[], required
      - `id` string, required
      - `slug` string, required
      - `name` string, required
      - `type` string, required
      - `url` string, nullable, required
      - `score` number, required
      - `orgSlug` string, nullable, required
      - `orgName` string, nullable, required
      - `orgAvatarUrl` string, nullable, required
      - `releaseCount` integer, required
      - `latestDate` string, nullable, required
      - `latestTitle` string, nullable, required
      - `latestVersion` string, nullable, required
      - `recentCount` integer, required
  - object
    - `degraded` true, required
    - `degradedReason` string, required
    - `items` object[], required
      - `id` string, required
      - `slug` string, required
      - `name` string, required
      - `type` string, required
      - `url` string, nullable, required
      - `score` number, required
      - `orgSlug` string, nullable, required
      - `orgName` string, nullable, required
      - `orgAvatarUrl` string, nullable, required
      - `releaseCount` integer, required
      - `latestDate` string, nullable, required
      - `latestTitle` string, nullable, required
      - `latestVersion` string, nullable, required
      - `recentCount` integer, required

## Other responses

- `400` — Missing `source` query parameter.
- `404` — No source matches the supplied identifier.

## Changes

- **2026-08-25** `c3a92b6b6909` — 2 warning
  - added the new `too_large` enum value to the `error/type` response property for the response status `400`
  - added the new `too_large` enum value to the `error/type` response property for the response status `404`

[Change history](https://skmtc.dev/releases/apis/releases-api/changes/related/sources/get.md)

---

[API](https://skmtc.dev/releases/apis/releases-api.md) · [All operations](https://skmtc.dev/releases/apis/releases-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/releases/releases-api/revisions/ef21361a36e6/schema)
