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

# Get a podcast's latest brand suitability assessment

> Returns the most recent brand suitability assessment for a podcast against the IAB Tech Lab Content Taxonomy 3.x Brand Safety & Suitability Framework (the industry-standard 12-category taxonomy formerly stewarded by GARM): overall tier, per-category prevalence and treatment, evidence excerpts from sampled episodes, and the methodology that produced the rating. Pass include=trend for a deterministically-derived comparison against the prior assessment, or include=history for the list of prior assessments. Returns 404 when the podcast is not found or has not yet been analyzed.



## OpenAPI

````yaml /openapi.json get /v1/podcasts/{id}/suitability
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}/suitability:
    get:
      tags:
        - Podcasts
        - tier:premium
      summary: Get a podcast's latest brand suitability assessment
      description: >-
        Returns the most recent brand suitability assessment for a podcast
        against the IAB Tech Lab Content Taxonomy 3.x Brand Safety & Suitability
        Framework (the industry-standard 12-category taxonomy formerly stewarded
        by GARM): overall tier, per-category prevalence and treatment, evidence
        excerpts from sampled episodes, and the methodology that produced the
        rating. Pass include=trend for a deterministically-derived comparison
        against the prior assessment, or include=history for the list of prior
        assessments. Returns 404 when the podcast is not found or has not yet
        been analyzed.
      operationId: get-podcast-suitability
      parameters:
        - 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=trend for a
            deterministically-derived comparison against the prior assessment,
            include=history for the list of prior assessments, or
            include=trend,history for both.
          explode: false
          in: query
          name: include
          schema:
            description: >-
              Optional response sections. Pass include=trend for a
              deterministically-derived comparison against the prior assessment,
              include=history for the list of prior assessments, or
              include=trend,history for both.
            items:
              enum:
                - trend
                - history
              type: string
            type:
              - array
              - 'null'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PodcastSuitabilityAnalysis'
          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}/suitability"
components:
  schemas:
    PodcastSuitabilityAnalysis:
      additionalProperties: false
      properties:
        categories:
          description: >-
            Per-category breakdown across all 12 brand-safety categories. Always
            12 entries even when prevalence is NONE — the assessment records
            that every category was actively considered.
          items:
            $ref: '#/components/schemas/PodcastSuitabilityCategory'
          type:
            - array
            - 'null'
        confidence:
          description: 'Agent confidence in the verdict: LOW, MEDIUM, or HIGH.'
          type: string
        episodes_analyzed:
          description: Number of episodes that informed the assessment.
          format: int64
          type: integer
        evaluated_at:
          description: When the assessment was performed.
          format: date-time
          type: string
        history:
          description: >-
            Prior assessments ordered most-recent first. Present when
            include=history.
          items:
            $ref: '#/components/schemas/PodcastSuitabilityHistoryEntry'
          type:
            - array
            - 'null'
        methodology:
          description: >-
            Note on what the agent sampled (segments + transcripts read, sponsor
            cross-checks).
          type: string
        overall_tier:
          description: >-
            Suitability verdict: SAFE (Low Risk), LIMITED (Medium), SENSITIVE
            (High), or UNSAFE (Brand Safety Floor).
          type: string
        sample_episode_ids:
          description: Episode IDs in the contiguous window the agent analyzed.
          items:
            type: string
          type:
            - array
            - 'null'
        sample_window_end_at:
          description: Published-at of the newest episode in the assessment window.
          format: date-time
          type: string
        sample_window_start_at:
          description: Published-at of the oldest episode in the assessment window.
          format: date-time
          type: string
        summary:
          description: Customer-facing 2-4 sentence explanation of the verdict.
          type: string
        trend:
          $ref: '#/components/schemas/PodcastSuitabilityTrend'
          description: >-
            Deterministic comparison against the prior assessment. Present when
            include=trend; INSUFFICIENT_HISTORY before a second assessment
            exists.
      required:
        - overall_tier
        - confidence
        - summary
        - methodology
        - categories
        - sample_window_start_at
        - sample_window_end_at
        - evaluated_at
      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
    PodcastSuitabilityCategory:
      additionalProperties: false
      properties:
        code:
          description: >-
            Brand-safety category code (IAB Tech Lab Content Taxonomy 3.x):
            adult_sexual, arms_ammunition, crime_harmful_acts,
            death_injury_military_conflict, online_piracy,
            hate_speech_aggression, obscenity_profanity,
            illegal_drugs_alcohol_tobacco, spam_harmful, terrorism,
            debated_social_issues, misinformation.
          type: string
        description:
          description: Human-readable description of the category.
          type: string
        evidence:
          description: >-
            Episode-grounded evidence excerpts. Present when prevalence is
            anything other than NONE.
          items:
            $ref: '#/components/schemas/PodcastSuitabilityEvidence'
          type:
            - array
            - 'null'
        prevalence:
          description: >-
            How often the category appears in the analyzed window: NONE,
            INCIDENTAL, OCCASIONAL, FREQUENT, PERVASIVE.
          type: string
        reasoning:
          description: >-
            Customer-facing justification for the prevalence + treatment
            finding.
          type: string
        risk_level:
          description: >-
            Risk level derived deterministically from prevalence, treatment, and
            category. NONE, LOW, MEDIUM, HIGH, or FLOOR (violates the Brand
            Safety Floor).
          type: string
        treatment:
          description: >-
            How the category is framed: ABSENT, DOCUMENTARY (neutral
            journalism), EDITORIAL (opinion or comedy), PROMOTIONAL (endorsement
            without celebration), or GLAMORIZING (celebrating/normalizing).
          type: string
        verdict_basis:
          description: >-
            Source of signal for this finding: 'content' means the show's
            editorial substance surfaces the category (host monologue,
            narrative, journalism, opinion, comedy); 'advertising' means only
            the show's sponsor ad-reads surface it; 'both' means both editorial
            and advertising signals are present. Use this to filter findings
            driven by editorial content separately from findings driven by
            sponsor adjacency. Omitted when the category was not observed
            (prevalence is NONE).
          type: string
      required:
        - code
        - description
        - prevalence
        - treatment
        - risk_level
        - reasoning
      type: object
    PodcastSuitabilityHistoryEntry:
      additionalProperties: false
      properties:
        confidence:
          type: string
        episodes_analyzed:
          format: int64
          type: integer
        evaluated_at:
          format: date-time
          type: string
        overall_tier:
          type: string
        sample_window_end_at:
          format: date-time
          type: string
        sample_window_start_at:
          format: date-time
          type: string
      required:
        - overall_tier
        - confidence
        - episodes_analyzed
        - sample_window_start_at
        - sample_window_end_at
        - evaluated_at
      type: object
    PodcastSuitabilityTrend:
      additionalProperties: false
      properties:
        changed_categories:
          description: >-
            Categories whose prevalence or treatment changed between
            assessments.
          items:
            $ref: '#/components/schemas/PodcastSuitabilityTrendChange'
          type:
            - array
            - 'null'
        direction:
          description: >-
            INSUFFICIENT_HISTORY (fewer than two assessments), STABLE,
            IMPROVING, or DECLINING.
          type: string
        prior_evaluated_at:
          description: >-
            When the prior assessment was performed. Omitted when there is no
            prior.
          format: date-time
          type: string
      required:
        - direction
      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
    PodcastSuitabilityEvidence:
      additionalProperties: false
      properties:
        episode_id:
          description: Episode the excerpt is drawn from.
          type: string
        episode_slug:
          description: Episode slug.
          type: string
        episode_title:
          description: Episode title.
          type: string
        excerpt:
          description: Verbatim excerpt or paraphrase grounding the finding.
          type: string
      required:
        - episode_id
        - episode_title
        - excerpt
      type: object
    PodcastSuitabilityTrendChange:
      additionalProperties: false
      properties:
        code:
          type: string
        new_prevalence:
          type: string
        new_risk_level:
          type: string
        new_treatment:
          type: string
        prior_prevalence:
          type: string
        prior_risk_level:
          type: string
        prior_treatment:
          type: string
      required:
        - code
        - prior_prevalence
        - new_prevalence
        - prior_treatment
        - new_treatment
        - prior_risk_level
        - new_risk_level
      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

````