> ## Documentation Index
> Fetch the complete documentation index at: https://docs.particle.pro/llms.txt
> Use this file to discover all available pages before exploring further.

# List related podcasts

> Returns the shows most related to a podcast, best first, each with a calibrated `score`, a coarse `band` (strong, moderate, weak) to branch on, and — with `include=basis` — the signals behind the pairing: content similarity of recent episodes, shared topics, shared guests (named), same publisher, and shared sponsors. Related sets are precomputed per show from its embedded transcripts, topic profile, guest roster, network, and advertisers, restricted to the show's language, and refreshed as new episodes land; the endpoint is a fast page read. A show whose set has not been computed yet returns 200 with an empty `data` array, not 404. Use this for "shows like this show" — media planning around a known show, PR pitch lists, and agent traversal from one resolved slug to its neighbours. It is not a topic browser (use `GET /v1/podcasts?topic_id=…` for shows that cover a topic), not a guest lookup (`GET /v1/podcasts/guests/{id}/podcasts` lists where a guest has appeared), and not advertiser co-occurrence (`GET /v1/podcasts/advertising/co-occurrence`). Every result carries the related show's `slug`, which every other podcast endpoint accepts as `{id}`; person slugs in the basis feed the guest endpoints and topic slugs feed `topic_id`. Identify the podcast by slug (e.g., 'all-in'), internal ID, or numeric iTunes ID.



## OpenAPI

````yaml /openapi.json get /v1/podcasts/{id}/related
openapi: 3.1.0
info:
  description: Public API for Particle — news intelligence, financial data, and analysis.
  title: Particle API
  version: 0.1.0
servers:
  - url: https://api.particle.pro
security:
  - ApiKeyHeader: []
  - BearerAuth: []
paths:
  /v1/podcasts/{id}/related:
    get:
      tags:
        - Podcasts
        - tier:standard
      summary: List related podcasts
      description: >-
        Returns the shows most related to a podcast, best first, each with a
        calibrated `score`, a coarse `band` (strong, moderate, weak) to branch
        on, and — with `include=basis` — the signals behind the pairing: content
        similarity of recent episodes, shared topics, shared guests (named),
        same publisher, and shared sponsors. Related sets are precomputed per
        show from its embedded transcripts, topic profile, guest roster,
        network, and advertisers, restricted to the show's language, and
        refreshed as new episodes land; the endpoint is a fast page read. A show
        whose set has not been computed yet returns 200 with an empty `data`
        array, not 404. Use this for "shows like this show" — media planning
        around a known show, PR pitch lists, and agent traversal from one
        resolved slug to its neighbours. It is not a topic browser (use `GET
        /v1/podcasts?topic_id=…` for shows that cover a topic), not a guest
        lookup (`GET /v1/podcasts/guests/{id}/podcasts` lists where a guest has
        appeared), and not advertiser co-occurrence (`GET
        /v1/podcasts/advertising/co-occurrence`). Every result carries the
        related show's `slug`, which every other podcast endpoint accepts as
        `{id}`; person slugs in the basis feed the guest endpoints and topic
        slugs feed `topic_id`. Identify the podcast by slug (e.g., 'all-in'),
        internal ID, or numeric iTunes ID.
      operationId: list-related-podcasts
      parameters:
        - description: Results per page
          explode: false
          in: query
          name: limit
          schema:
            default: 25
            description: Results per page
            format: int64
            maximum: 100
            minimum: 1
            type: integer
        - description: Opaque pagination cursor from previous response
          explode: false
          in: query
          name: cursor
          schema:
            description: Opaque pagination cursor from previous response
            type: string
        - description: Podcast slug (e.g., 'all-in'), internal ID, or numeric iTunes ID
          in: path
          name: id
          required: true
          schema:
            description: Podcast slug (e.g., 'all-in'), internal ID, or numeric iTunes ID
            type: string
        - description: >-
            Optional response sections. Pass include=basis to attach, for every
            result, the signals that make the two shows related: content
            similarity, shared topics, shared guests (with names), same
            publisher, shared sponsors.
          explode: false
          in: query
          name: include
          schema:
            description: >-
              Optional response sections. Pass include=basis to attach, for
              every result, the signals that make the two shows related: content
              similarity, shared topics, shared guests (with names), same
              publisher, shared sponsors.
            items:
              enum:
                - basis
              type: string
            type:
              - array
              - 'null'
        - description: >-
            Only results with a fused score at or above this value. Omit (or 0)
            to return every stored neighbour; the band field is the recommended
            way to filter by strength.
          explode: false
          in: query
          name: min_score
          schema:
            description: >-
              Only results with a fused score at or above this value. Omit (or
              0) to return every stored neighbour; the band field is the
              recommended way to filter by strength.
            format: double
            maximum: 1
            minimum: 0
            type: number
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageRelatedPodcast'
          description: OK
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/PlatformError'
          description: Error
      x-codeSamples:
        - label: cURL
          lang: curl
          source: |-
            curl -H "X-API-Key: $PARTICLE_API_KEY" \
              "https://api.particle.pro/v1/podcasts/{id}/related?limit=25"
components:
  schemas:
    PageRelatedPodcast:
      additionalProperties: false
      properties:
        cursor:
          description: Pass to next request for more results
          type: string
        data:
          description: List of results
          items:
            $ref: '#/components/schemas/RelatedPodcast'
          type:
            - array
            - 'null'
        has_more:
          description: Whether more results exist
          type: boolean
      required:
        - data
        - has_more
      type: object
    PlatformError:
      additionalProperties: false
      properties:
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        error_code:
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        resolve:
          $ref: '#/components/schemas/ErrorResolve'
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
      type: object
    RelatedPodcast:
      additionalProperties: false
      properties:
        band:
          description: >-
            Coarse class of the score: strong (same beat and audience), moderate
            (overlapping subject or audience), weak (a loose connection). Branch
            on this rather than on exact score thresholds.
          enum:
            - strong
            - moderate
            - weak
          type: string
        basis:
          $ref: '#/components/schemas/RelatedPodcastBasis'
          description: Why the shows are related. Present only with include=basis.
        podcast:
          $ref: '#/components/schemas/PodcastCompact'
          description: The related podcast.
        score:
          description: >-
            Fused relatedness in (0,1], calibrated so that higher values are
            more likely to be judged related. Comparable across shows.
          format: double
          type: number
      required:
        - podcast
        - score
        - band
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
    ErrorResolve:
      additionalProperties: false
      properties:
        action:
          type: string
        endpoint:
          type: string
        message:
          type: string
        method:
          type: string
        url:
          type: string
      required:
        - message
      type: object
    RelatedPodcastBasis:
      additionalProperties: false
      properties:
        content_similarity:
          description: >-
            Cosine similarity of the two shows' content centroids in [0,1];
            omitted when either show has too few embedded episodes.
          format: double
          type: number
        same_publisher:
          description: Both shows belong to the same multi-show publisher (network).
          type: boolean
        shared_category_count:
          description: Number of directory categories the shows share.
          format: int64
          type: integer
        shared_guest_count:
          description: Number of guests who appeared on both shows.
          format: int64
          type: integer
        shared_guests:
          description: Up to three of the shared guests, most significant first.
          items:
            $ref: '#/components/schemas/PersonCompact'
          type:
            - array
            - 'null'
        shared_sponsor_count:
          description: Number of advertisers both shows have carried.
          format: int64
          type: integer
        shared_topics:
          description: Up to three topics that contribute most to the overlap.
          items:
            $ref: '#/components/schemas/Topic'
          type:
            - array
            - 'null'
        topic_overlap:
          description: Overlap of the shows' topic profiles in [0,1].
          format: double
          type: number
      required:
        - shared_guest_count
        - same_publisher
        - shared_sponsor_count
        - shared_category_count
      type: object
    PodcastCompact:
      additionalProperties: false
      properties:
        best_rank:
          $ref: '#/components/schemas/PodcastRankingHandle'
          description: >-
            The single best (lowest-numbered) chart position this podcast
            currently holds across all charts. Omitted when the podcast holds no
            current chart appearances, and on endpoints that do not attach it.
            Reading a full chart (with country/category/source filters and
            history) remains premium; a single show's own placement is available
            on every plan.
        id:
          description: Podcast ID
          type: string
        image_url:
          description: Cover image URL
          type: string
        popularity:
          description: >-
            Global popularity percentile in (0,1], a cume_dist ranking over all
            currently-charting podcasts (Apple Podcasts charts). Higher is more
            popular. Omitted when the podcast is not currently charting, and on
            endpoints that build this resource from a projection rather than the
            full podcast row.
          format: double
          type: number
        publisher:
          $ref: '#/components/schemas/PodcastPublisherCompact'
          description: >-
            Publisher (network) attributed to this podcast. Present only when
            the embedding endpoint preloads publisher attribution and the
            podcast's publisher is known.
        slug:
          description: Human-readable slug identifier
          type: string
        title:
          description: Podcast title
          type: string
      required:
        - id
        - title
      type: object
    PersonCompact:
      additionalProperties: false
      properties:
        description:
          description: Short description (e.g. current role), when known.
          type: string
        id:
          description: Encoded Person identifier
          type: string
        image_url:
          description: Canonical headshot URL when one is known for the Person
          type: string
        name:
          description: Display name
          type: string
        slug:
          description: >-
            Stable human-readable handle (e.g. 'satya-nadella'). Recommended
            canonical identifier on every Particle Pro person surface.
          type: string
      required:
        - id
        - name
      type: object
    Topic:
      additionalProperties: false
      properties:
        ancestry:
          description: Human-readable breadcrumb path (e.g. Business > Technology > AI)
          type: string
        ancestry_path:
          description: Hash-based ancestry path for programmatic filtering
          type: string
        episode_count:
          description: >-
            Number of episodes in this podcast that cover this topic (only
            populated for /v1/podcasts/{id} topic lists)
          format: int64
          type: integer
        id:
          description: Unique identifier
          type: string
        name:
          description: Topic name
          type: string
        slug:
          description: >-
            Ancestry-based slug (e.g., technology/artificial-intelligence). Can
            be used as topic_id.
          type: string
      required:
        - id
        - name
        - slug
      type: object
    PodcastRankingHandle:
      additionalProperties: false
      properties:
        captured_at:
          format: date-time
          type: string
        category_slug:
          type: string
        chart_type:
          enum:
            - top_podcasts
          type: string
        country:
          type: string
        rank:
          format: int64
          type: integer
        source:
          enum:
            - apple
            - spotify
          type: string
      required:
        - source
        - chart_type
        - rank
        - captured_at
      type: object
    PodcastPublisherCompact:
      additionalProperties: false
      properties:
        id:
          description: Publisher ID
          type: string
        name:
          description: Publisher name
          type: string
        slug:
          description: >-
            Human-readable slug identifier (e.g., 'goalhanger',
            'iheartpodcasts'). When present, accepted in place of the ID
            anywhere a publisher reference is taken in the API. Occasionally
            absent on publishers whose name doesn't slugify (e.g., scripts not
            representable in ASCII URL slugs).
          type: string
      required:
        - id
        - name
      type: object
  securitySchemes:
    ApiKeyHeader:
      description: Pass your API key in the X-API-Key header (recommended).
      in: header
      name: X-API-Key
      type: apiKey
    BearerAuth:
      description: Pass your API key as a Bearer token in the Authorization header.
      scheme: bearer
      type: http

````