---
title: "A single bubble by full uuid or by the short id used in app URLs. Nonexistent, archived, and unreadable bubbles are indistinguishable: all answer the identical 404 not_found envelope."
method: GET
path: "/v1/bubbles/{id}"
---

# A single bubble by full uuid or by the short id used in app URLs. Nonexistent, archived, and unreadable bubbles are indistinguishable: all answer the identical 404 not_found envelope.

`GET /v1/bubbles/{id}`

## Request

- Base URL: `https://api.usebubbles.com`
- URL: `https://api.usebubbles.com/v1/bubbles/{id}`
- Auth: HTTP bearer

## Path parameters

- `id` string, required

## Response `200`

Success.

- Bubble: A single bubble (GET /v1/bubbles/{id}). Every field is always present; "unset" is null.
  - `id` string, required: The bubble uuid.
  - `type` 'meeting_recording' | 'screen_recording' | 'custom_image', required: The bubble classification.
  - `title` string, nullable, required: The bubble title, or null.
  - `url` string, required: The app deep link to the bubble.
  - `created_at` string, nullable, required: Creation instant (ISO-8601 UTC), or null for legacy bubbles.
  - `team_id` string, nullable, required: Owning team id, or null.
  - `channel_id` string, nullable, required: Owning channel (product: space) id, or null.
  - `channel_name` string, nullable, required: Owning channel name, or null.
  - `author` BubblesPerson, required: A person on a bubble (author or participant).
    - `id` string, required: The Bubbles user id.
    - `name` string, nullable, required: Display name, or null when unknown.
    - `email` string, nullable, required: Email, or null when unknown/withheld.
  - `participants` BubblesPerson[], required: People who participated in the bubble.
    - `id` string, required: The Bubbles user id.
    - `name` string, nullable, required: Display name, or null when unknown.
    - `email` string, nullable, required: Email, or null when unknown/withheld.
  - `media` BubblesMedia, required: The bubble's media assets. Absolute https URLs; unset assets are null.
    - `video_url` string, nullable, required: The processed video URL, or null (e.g. an image bubble).
    - `thumbnail_url` string, nullable, required: The thumbnail/preview image URL, or null.
    - `screenshot_url` string, nullable, required: The screenshot/still-image URL, or null.
    - `url_expires_at` string, nullable, required: ISO-8601 instant at which video_url and screenshot_url stop working, or null when media is served unsigned. Read the bubble again for fresh URLs; thumbnail_url does not expire.
    - `duration_seconds` number, nullable, required: Media duration in seconds, or null.
    - `is_processed` boolean, nullable, required: Whether media processing finished, or null when unknown.
  - `summary` string, nullable, required: The AI-generated summary text, when generated, else null.
  - `action_items` string, nullable, required: The AI-generated action items as plain text (v1), when generated, else null.
  - `has_transcript` boolean, required: Whether a transcript is available for this bubble.
  - `comment_count` integer, required: Number of comments on the bubble.
  - `is_public` boolean, required: Whether the bubble is shared via a public link.
  - `embed_code` string, nullable, required: HTML embed snippet, or null when not embeddable.
  - `expires_at` string, nullable, required: Expiry instant (ISO-8601 UTC), or null when it does not expire.
  - `archived` boolean, required: Whether the bubble is archived.
  - `creator_id` string, nullable, required: The raw creator user id, or null.
  - `response_required` boolean, required: Whether the bubble requests a response from viewers.
  - `has_external_participants` boolean, required: Whether anyone outside the team participated.
  - `external_participant_email_domains` string[], required: Email domains of external participants.
  - `meeting` BubblesMeeting, required: Meeting metadata, present only for meeting_recording bubbles (else null).
    - `platform` string, nullable, required: The meeting platform (e.g. google_meet, zoom), or null.
    - `start_time` string, nullable, required: Scheduled/actual meeting start (ISO-8601 UTC), or null.

## Other responses

- `401`: Missing, malformed, or wrong-kind credential (unauthorized / token_revoked / account_deleted).
- `404`: The resource does not exist or is not readable by the caller (not_found).
- `429`: Rate limit exceeded (rate_limited); see the Retry-After header.
- `500`: An unexpected server error occurred (internal_error).

---

[API](https://skmtc.dev/usebubbles/apis/bubbles-public-api.md) - [All operations](https://skmtc.dev/usebubbles/apis/bubbles-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/usebubbles/apis/bubbles-public-api/revisions/31570f5d4b05?raw)
