> ## 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 guests a podcast could plausibly book

> Returns people who have guested on the podcast's related shows but never on this one, ranked by how related those venues are and how many distinct publishers among them chose the person — a booking pipeline, not a prediction. Recurring on any one show does not count, and a publisher's sibling feeds count once, so an outlet's own correspondents do not outrank guests several independent shows chose. Guests who appear everywhere (circuit regulars) are excluded, since recommending them says nothing about this show. Each row carries the person, a score, a band, how many related shows booked them, and with include=via which shows. For the show's existing roster use GET /v1/podcasts/{id}/guests; for shows like this one use GET /v1/podcasts/{id}/related.



## OpenAPI

````yaml /openapi.json get /v1/podcasts/{id}/recommendations/guests
openapi: 3.1.0
info:
  description: Public API for Particle — news intelligence, financial data, and analysis.
  title: Particle API
  version: 0.1.0
  x-guidance: >-
    Podcast, people, company and topic intelligence. Authenticate with a pp_ API
    key (X-API-Key header) or pay per request with x402: a keyless call to a
    billable endpoint returns 402 with the payment requirements in the
    PAYMENT-REQUIRED header; sign the USDC transfer and repeat the request with
    PAYMENT-SIGNATURE. Start with GET /v1/podcasts/search?q=<show name>; the
    slugs in responses are the inputs to the other endpoints. Docs:
    https://docs.particle.pro; setup playbook:
    https://api.particle.pro/agents.md; endpoint and tool map with prices:
    https://api.particle.pro/llms.txt; credential recipe:
    https://api.particle.pro/auth.md.
servers:
  - url: https://api.particle.pro
security:
  - ApiKeyHeader: []
  - BearerAuth: []
paths:
  /v1/podcasts/{id}/recommendations/guests:
    get:
      tags:
        - Podcast Guests
        - tier:standard
      summary: List guests a podcast could plausibly book
      description: >-
        Returns people who have guested on the podcast's related shows but never
        on this one, ranked by how related those venues are and how many
        distinct publishers among them chose the person — a booking pipeline,
        not a prediction. Recurring on any one show does not count, and a
        publisher's sibling feeds count once, so an outlet's own correspondents
        do not outrank guests several independent shows chose. Guests who appear
        everywhere (circuit regulars) are excluded, since recommending them says
        nothing about this show. Each row carries the person, a score, a band,
        how many related shows booked them, and with include=via which shows.
        For the show's existing roster use GET /v1/podcasts/{id}/guests; for
        shows like this one use GET /v1/podcasts/{id}/related.
      operationId: list-podcast-recommended-guests
      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=via to attach, for each
            recommended guest, the related shows that booked them.
          explode: false
          in: query
          name: include
          schema:
            description: >-
              Optional response sections. Pass include=via to attach, for each
              recommended guest, the related shows that booked them.
            items:
              enum:
                - via
              type: string
            type:
              - array
              - 'null'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PageRecommendedGuest'
          description: OK
        '402':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/PlatformError'
          description: >-
            Payment Required. Read error_code. payment_required is the x402
            path: either a keyless request being challenged — pay $0.03 in USDC
            per request (requirements in the PAYMENT-REQUIRED header) or send a
            pp_ API key — or a supplied payment that failed settlement (details
            in the PAYMENT-RESPONSE header; retry the same signature before
            signing a new one). See https://docs.particle.pro/x402. Any other
            code means the credential was accepted but does not cover this
            request (a plan or session gate such as premium_required or
            paid_plan_confirmation_required); its resolve says how to obtain
            access, and no payment header is sent.
        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}/recommendations/guests?limit=25"
components:
  schemas:
    PageRecommendedGuest:
      additionalProperties: false
      properties:
        cursor:
          description: Pass to next request for more results
          type: string
        data:
          description: List of results
          items:
            $ref: '#/components/schemas/RecommendedGuest'
          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
    RecommendedGuest:
      additionalProperties: false
      properties:
        band:
          description: Coarse class of the score.
          enum:
            - strong
            - moderate
            - weak
          type: string
        person:
          $ref: '#/components/schemas/PersonCompact'
          description: The recommended guest.
        score:
          description: >-
            Strength of the recommendation in (0,1): how related the shows that
            booked this person are, counted once per publisher and damped for
            how widely the person already circulates. Recurring on any one show
            does not raise it, and circuit regulars who appear everywhere are
            excluded.
          format: double
          type: number
        shared_show_count:
          description: How many of the show's related shows have booked this person.
          format: int64
          type: integer
        via:
          description: The related shows that booked this person, strongest first.
          items:
            $ref: '#/components/schemas/PodcastCompact'
          type:
            - array
            - 'null'
      required:
        - person
        - score
        - band
        - shared_show_count
      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
    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
    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
    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

````