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

# Particle: List Episode Ads

> List every detected ad read in one episode (sponsor, product, offer, host-read, placement, timestamps) from an episode ID.

List every detected ad read in one episode (sponsor, product, offer, host-read, placement, timestamps) from an episode ID.

> [!NOTE]
>
> Tool ID: `particle_list_episode_ads`

## Run this action

Use the TypeScript SDK for one call. Use `ctx.tools.execute(...)` inside a Play for durable calls, scheduled calls, or CSV processing.

```ts theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
import { Deepline } from 'deepline';

const deepline = await Deepline.connect();
const result = await deepline.tools.execute(
  'particle_list_episode_ads',
  {
    "id": "id_123"
  },
);

console.log(result.toolResponse.raw);
```

### CLI

```bash theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
deepline tools execute particle_list_episode_ads --input '{
  "id": "id_123"
}' --json
```

## Example response

The SDK returns this shape at `result.toolResponse.raw`. The example values illustrate the response.

```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
{
  "data": {
    "data": [
      {
        "created_at": "2026-01-15T12:00:00Z",
        "duration_seconds": 123,
        "end_seconds": 123,
        "id": "id_123",
        "read_type": "example",
        "sponsor_name": "Example",
        "start_seconds": 123
      }
    ],
    "has_more": true
  }
}
```

Use `deepline describe particle_list_episode_ads --json` for the latest machine-readable contract.

## Input reference

Returns the advertising spots detected in a specific episode, including the sponsor, the linked company in the knowledge graph, the advertised product or offer, the read type (HOST\_READ vs PRE\_RECORDED), and the placement (PRE\_ROLL/MID\_ROLL/POST\_ROLL). Network promos are excluded.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `payload.id` | `string` | Yes | — | Episode slug or ID |

<details>
  <summary>Show raw input schema</summary>

  ### Input JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Returns the advertising spots detected in a specific episode, including the sponsor, the linked company in the knowledge graph, the advertised product or offer, the read type (HOST_READ vs PRE_RECORDED), and the placement (PRE_ROLL/MID_ROLL/POST_ROLL). Network promos are excluded.",
    "properties": {
      "id": {
        "type": "string",
        "description": "Episode slug or ID"
      }
    },
    "required": [
      "id"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Output reference

Standard tool result payload.

| Name | Type | Required | Default | Details |
| - | - | - | - | - |
| `result.data` | `object` | Yes | — | Provider response payload. |
| `result.data.cursor` | `string` | No | — | Pass to next request for more results |
| `result.data.data` | `array` | Yes | — | List of results |
| `result.data.data[].company` | `object` | No | — | — |
| `result.data.data[].company.description` | `string` | No | — | Short company description, when known. |
| `result.data.data[].company.domain` | `string` | No | — | Primary website domain (e.g. 'nvidia.com'), when known. |
| `result.data.data[].company.id` | `string` | Yes | — | Company identifier (domain, slug, or encoded ID) |
| `result.data.data[].company.image_url` | `string` | No | — | Company logo or image URL |
| `result.data.data[].company.name` | `string` | Yes | — | Company name |
| `result.data.data[].company.slug` | `string` | No | — | Stable human-readable handle (the linked knowledge-graph slug, e.g. 'nvidia'), when known. Companies have no slug of their own. prefer this for display and pass it (or id) to /v1/companies. |
| `result.data.data[].company.ticker` | `string` | No | — | Primary stock ticker symbol, when listed. |
| `result.data.data[].created_at` | `string` | Yes | — | When the ad was first detected Format: `date-time`. |
| `result.data.data[].duration_seconds` | `number` | Yes | — | Ad duration in seconds Format: `double`. |
| `result.data.data[].end_seconds` | `number` | Yes | — | Ad end offset within the episode, in seconds Format: `double`. |
| `result.data.data[].id` | `string` | Yes | — | Unique identifier |
| `result.data.data[].offer_description` | `string` | No | — | Promotional offer details |
| `result.data.data[].placement_type` | `string` | No | — | Where the ad appeared in the episode (PRE\_ROLL, MID\_ROLL, POST\_ROLL) |
| `result.data.data[].podcast` | `object` | No | — | — |
| `result.data.data[].podcast.best_rank` | `object` | No | — | — |
| `result.data.data[].podcast.best_rank.captured_at` | `string` | Yes | — | Format: `date-time`. |
| `result.data.data[].podcast.best_rank.category_slug` | `string` | No | — | — |
| `result.data.data[].podcast.best_rank.chart_type` | `"top_podcasts"` | Yes | — | Allowed: `top_podcasts`. |
| `result.data.data[].podcast.best_rank.country` | `string` | No | — | — |
| `result.data.data[].podcast.best_rank.rank` | `integer` | Yes | — | Format: `int64`. |
| `result.data.data[].podcast.best_rank.source` | `"apple" \| "spotify"` | Yes | — | Allowed: `apple`, `spotify`. |
| `result.data.data[].podcast.id` | `string` | Yes | — | Podcast ID |
| `result.data.data[].podcast.image_url` | `string` | No | — | Cover image URL |
| `result.data.data[].podcast.popularity` | `number` | No | — | 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, on endpoints that build this resource from a projection rather than the full podcast row, and in episode stream, feed and archive payloads, which are stored and replayed: read it live from the podcast endpoints. Format: `double`. |
| `result.data.data[].podcast.publisher` | `object` | No | — | — |
| `result.data.data[].podcast.publisher.id` | `string` | Yes | — | Publisher ID |
| `result.data.data[].podcast.publisher.name` | `string` | Yes | — | Publisher name |
| `result.data.data[].podcast.publisher.slug` | `string` | No | — | 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). |
| `result.data.data[].podcast.slug` | `string` | No | — | Human-readable slug identifier |
| `result.data.data[].podcast.title` | `string` | Yes | — | Podcast title |
| `result.data.data[].product` | `string` | No | — | Advertised product or service |
| `result.data.data[].read_type` | `string` | Yes | — | How the ad was delivered (HOST\_READ, PRE\_RECORDED) |
| `result.data.data[].sponsor_id` | `string` | No | — | Linked sponsor ID, when known. Works as the \{id} of /v1/podcasts/advertising/sponsors/\{id} and its sub-resources, including when the ad has no linked company. |
| `result.data.data[].sponsor_name` | `string` | Yes | — | Name of the advertising sponsor |
| `result.data.data[].sponsor_url` | `string` | No | — | Sponsor website URL |
| `result.data.data[].start_seconds` | `number` | Yes | — | Ad start offset within the episode, in seconds Format: `double`. |
| `result.data.data[].url` | `string` | No | — | Moment link that plays the ad in its episode on Radar, at start\_seconds. Omitted when the episode is not known. |
| `result.data.has_more` | `boolean` | Yes | — | Whether more results exist |
| `result.meta` | `object` | No | — | Additional response metadata (status, paging). |

<details>
  <summary>Show raw output schema</summary>

  ### Output JSON Schema

  ```json theme={"languages":{"custom":["/languages/deepline-prompt.json"]}}
  {
    "type": "object",
    "description": "Standard tool result payload.",
    "properties": {
      "data": {
        "type": "object",
        "description": "Provider response payload.",
        "properties": {
          "cursor": {
            "type": "string",
            "description": "Pass to next request for more results"
          },
          "data": {
            "type": "array",
            "description": "List of results",
            "items": {
              "type": "object",
              "properties": {
                "company": {
                  "type": "object",
                  "properties": {
                    "description": {
                      "type": "string",
                      "description": "Short company description, when known."
                    },
                    "domain": {
                      "type": "string",
                      "description": "Primary website domain (e.g. 'nvidia.com'), when known."
                    },
                    "id": {
                      "type": "string",
                      "description": "Company identifier (domain, slug, or encoded ID)"
                    },
                    "image_url": {
                      "type": "string",
                      "description": "Company logo or image URL"
                    },
                    "name": {
                      "type": "string",
                      "description": "Company name"
                    },
                    "slug": {
                      "type": "string",
                      "description": "Stable human-readable handle (the linked knowledge-graph slug, e.g. 'nvidia'), when known. Companies have no slug of their own; prefer this for display and pass it (or id) to /v1/companies."
                    },
                    "ticker": {
                      "type": "string",
                      "description": "Primary stock ticker symbol, when listed."
                    }
                  },
                  "required": [
                    "id",
                    "name"
                  ],
                  "additionalProperties": false
                },
                "created_at": {
                  "type": "string",
                  "description": "When the ad was first detected",
                  "format": "date-time"
                },
                "duration_seconds": {
                  "type": "number",
                  "description": "Ad duration in seconds",
                  "format": "double"
                },
                "end_seconds": {
                  "type": "number",
                  "description": "Ad end offset within the episode, in seconds",
                  "format": "double"
                },
                "id": {
                  "type": "string",
                  "description": "Unique identifier"
                },
                "offer_description": {
                  "type": "string",
                  "description": "Promotional offer details"
                },
                "placement_type": {
                  "type": "string",
                  "description": "Where the ad appeared in the episode (PRE_ROLL, MID_ROLL, POST_ROLL)"
                },
                "podcast": {
                  "type": "object",
                  "properties": {
                    "best_rank": {
                      "type": "object",
                      "properties": {
                        "captured_at": {
                          "type": "string",
                          "format": "date-time"
                        },
                        "category_slug": {
                          "type": "string"
                        },
                        "chart_type": {
                          "type": "string",
                          "enum": [
                            "top_podcasts"
                          ]
                        },
                        "country": {
                          "type": "string"
                        },
                        "rank": {
                          "type": "integer",
                          "format": "int64"
                        },
                        "source": {
                          "type": "string",
                          "enum": [
                            "apple",
                            "spotify"
                          ]
                        }
                      },
                      "required": [
                        "source",
                        "chart_type",
                        "rank",
                        "captured_at"
                      ],
                      "additionalProperties": false
                    },
                    "id": {
                      "type": "string",
                      "description": "Podcast ID"
                    },
                    "image_url": {
                      "type": "string",
                      "description": "Cover image URL"
                    },
                    "popularity": {
                      "type": "number",
                      "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, on endpoints that build this resource from a projection rather than the full podcast row, and in episode stream, feed and archive payloads, which are stored and replayed: read it live from the podcast endpoints.",
                      "format": "double"
                    },
                    "publisher": {
                      "type": "object",
                      "properties": {
                        "id": {
                          "type": "string",
                          "description": "Publisher ID"
                        },
                        "name": {
                          "type": "string",
                          "description": "Publisher name"
                        },
                        "slug": {
                          "type": "string",
                          "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)."
                        }
                      },
                      "required": [
                        "id",
                        "name"
                      ],
                      "additionalProperties": false
                    },
                    "slug": {
                      "type": "string",
                      "description": "Human-readable slug identifier"
                    },
                    "title": {
                      "type": "string",
                      "description": "Podcast title"
                    }
                  },
                  "required": [
                    "id",
                    "title"
                  ],
                  "additionalProperties": false
                },
                "product": {
                  "type": "string",
                  "description": "Advertised product or service"
                },
                "read_type": {
                  "type": "string",
                  "description": "How the ad was delivered (HOST_READ, PRE_RECORDED)"
                },
                "sponsor_id": {
                  "type": "string",
                  "description": "Linked sponsor ID, when known. Works as the {id} of /v1/podcasts/advertising/sponsors/{id} and its sub-resources, including when the ad has no linked company."
                },
                "sponsor_name": {
                  "type": "string",
                  "description": "Name of the advertising sponsor"
                },
                "sponsor_url": {
                  "type": "string",
                  "description": "Sponsor website URL"
                },
                "start_seconds": {
                  "type": "number",
                  "description": "Ad start offset within the episode, in seconds",
                  "format": "double"
                },
                "url": {
                  "type": "string",
                  "description": "Moment link that plays the ad in its episode on Radar, at start_seconds. Omitted when the episode is not known."
                }
              },
              "required": [
                "id",
                "sponsor_name",
                "read_type",
                "start_seconds",
                "end_seconds",
                "duration_seconds",
                "created_at"
              ],
              "additionalProperties": false
            }
          },
          "has_more": {
            "type": "boolean",
            "description": "Whether more results exist"
          }
        },
        "required": [
          "data",
          "has_more"
        ],
        "additionalProperties": false
      },
      "meta": {
        "type": "object",
        "description": "Additional response metadata (status, paging).",
        "additionalProperties": true
      }
    },
    "required": [
      "data"
    ],
    "additionalProperties": false
  }
  ```
</details>

## Deepline cost

* Pricing model: `fixed` (per call).
* Estimated Deepline credits: `0` per pricing unit.
* Provider-native pricing may still exist outside Deepline credit billing.

## Related documentation

* [Particle provider guide](https://deepline.com/docs/providers/particle/guide.md)
* [SDK V2 quickstart](https://deepline.com/docs/sdk-v2/quickstart.md)
* [SDK reference](https://deepline.com/docs/sdk-v2/sdk-reference.md)
* [Run tools across a CSV](https://deepline.com/docs/sdk-v2/batch-csv.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.