---
title: "Get episode embed code"
method: GET
path: "/v1/embed/episodes/{episode_id}/code"
tags: ["Embed", "tier:free"]
---

# Get episode embed code

`GET /v1/embed/episodes/{episode_id}/code`

## Request

- Base URL: `https://api.particle.pro`
- URL: `https://api.particle.pro/v1/embed/episodes/{episode_id}/code`
- Auth: none required

Returns a paste-ready <particle-podcast-clip> HTML snippet for an existing clip or a custom timestamp range within an episode. Either clip_id or start (with optional end) must be supplied; the two modes are mutually exclusive.

For slices: when end is omitted, it defaults to start + 120 seconds. The embed widget caps slice length at 120 seconds, so any end value beyond start + 120s is silently clamped to start + 120s. End is also clamped to the episode duration. The actual range used is encoded in the returned script_url.

## Path parameters

- `episode_id` string, required: Episode slug or ID

## Query parameters

- `clip_id` string: Clip ID. Mutually exclusive with start/end.
- `start` number, double: Slice start in seconds. Mutually exclusive with clip_id.
- `end` number, double: Slice end in seconds. Optional: when omitted, defaults to start + 120s. The widget caps slices at 120s, so end values further than 120s past start are silently clamped to start + 120s.
- `theme` 'light' | 'dark' | 'color-light' | 'color-dark': Widget theme
- `size` 'regular' | 'compact': Widget size

## Response `200`

OK

- EpisodeEmbedCode
  - `embed_html` string, required: Full <particle-podcast-clip> HTML snippet ready to paste
  - `script_url` string, required: Inner widget script URL (the <script src> value)
  - `variant` 'clip' | 'episode-clip', required: Which embed variant was generated

## Other responses

- `default`: Error

---

[API](https://skmtc.dev/particle/apis/particle-api.md) · [All operations](https://skmtc.dev/particle/apis/particle-api/llms.txt) · [OpenAPI document](https://skmtc.dev/particle/apis/particle-api/revisions/416ba82ab9d7?raw)
