---
title: "The caller’s bubbles, newest first — the bubbles they participate in (same completeness as the product home screen; public-but-unjoined bubbles do not list but are fetchable by id). Excludes archived, draft, template, and expired-hidden bubbles. Each row includes the bubble’s AI meeting-notes/summary text (summary, capped at 1000 characters; null when there are no notes) — the same text GET /v1/bubbles/{id} returns. Unknown query parameters are ignored; malformed values yield 400 invalid_request."
method: GET
path: "/v1/bubbles"
---

# The caller’s bubbles, newest first — the bubbles they participate in (same completeness as the product home screen; public-but-unjoined bubbles do not list but are fetchable by id). Excludes archived, draft, template, and expired-hidden bubbles. Each row includes the bubble’s AI meeting-notes/summary text (summary, capped at 1000 characters; null when there are no notes) — the same text GET /v1/bubbles/{id} returns. Unknown query parameters are ignored; malformed values yield 400 invalid_request.

`GET /v1/bubbles`

## Request

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

## Query parameters

- `team_id` string
- `space_id` string
- `type` string
- `created_after` string
- `created_before` string
- `limit` string
- `cursor` string

## Response `200`

Success.

- BubblesList: GET /v1/bubbles — cursor-paginated list of bubble summaries.
  - `data` BubblesSummary[], required: The page of bubbles.
    - `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.
    - `team_id` string, nullable, required: Owning team id, or null.
    - `channel_id` string, nullable, required: Owning channel id, or null.
    - `author_id` string, nullable, required: Raw creator id (no name — list is unhydrated), or null.
    - `thumbnail_url` string, nullable, required: The thumbnail image URL, or null.
    - `duration_seconds` number, nullable, required: Media duration in seconds, or null.
    - `comment_count` integer, required: Number of comments on the bubble.
    - `expires_at` string, nullable, required: Expiry instant (ISO-8601 UTC), or null.
    - `has_summary` boolean, required: Whether an AI meeting-notes summary exists (see summary).
    - `summary` string, nullable, required: The AI-generated meeting notes/summary text (the same text GET /v1/bubbles/{id} returns as summary), or null when there are no notes. Capped at 1000 characters for row size — a truncated value ends with an ellipsis; fetch the bubble by id for the full text.
  - `has_more` boolean, required: Whether another page exists.
  - `next_cursor` string, nullable, required: Opaque cursor for the next page, or null when exhausted.

## Other responses

- `400`: A query parameter or request body was malformed (invalid_request).
- `401`: Missing, malformed, or wrong-kind credential (unauthorized / token_revoked / account_deleted).
- `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)
