---
title: "List or search meetings"
method: GET
path: "/meetings"
tags: ["Meetings"]
---

# List or search meetings

`GET /meetings`

## Request

- Base URL: `https://app.pencil.ink/api/v1`
- URL: `https://app.pencil.ink/api/v1/meetings`
- Auth: HTTP bearer

Requires a `read` (or `write`) key. Raw transcripts are never included in list responses.

## Query parameters

- `query` string
- `source` 'fireflies' | 'tldv' | 'google_meet' | 'microsoft_teams' | 'recall' | 'email' | 'manual'
- `projectId` string
- `objectKind` 'task' | 'project' | 'product' | 'company' | 'initiative' | 'goal' | 'epic' | 'feature' | 'component' | 'requirement' | 'persona' | 'stakeholder' | 'feedback' | 'idea' | 'deliverable' | 'sprint' | 'iteration' | 'bug' | 'milestone' | 'repo'
- `objectId` string
- `summaryStatus` 'none' | 'pending' | 'ready' | 'error'
- `from` union
  - integer
  - string
- `to` union
  - integer
  - string
- `limit` integer
- `cursor` string

## Response `200`

A page of meetings.

- object
  - `data` Meeting[]
    - `id` string
    - `noteId` string
    - `title` string
    - `source` 'fireflies' | 'tldv' | 'google_meet' | 'microsoft_teams' | 'recall' | 'email' | 'manual'
    - `externalId` string, nullable
    - `meetingAt` integer, nullable: Epoch ms.
    - `durationSec` integer, nullable
    - `participants` MeetingParticipant[]
      - `name` string
      - `email` string
    - `organizerEmail` string, nullable
    - `summary` string, nullable
    - `summaryStatus` 'none' | 'pending' | 'ready' | 'error'
    - `summaryError` string, nullable
    - `decisions` string[]
    - `actionItems` MeetingActionItem[]
      - `text` string
      - `ownerHint` string, nullable
      - `status` 'suggested' | 'dismissed' | 'converted'
      - `taskId` string, nullable
    - `actionItemCount` integer
    - `openActionItemCount` integer
    - `sourceUrl` string, nullable
    - `recordingUrl` string, nullable
    - `projectId` string, nullable
    - `projectName` string, nullable
    - `relatedObjects` MeetingRelatedObject[]
      - `kind` 'task' | 'project' | 'product' | 'company' | 'initiative' | 'goal' | 'epic' | 'feature' | 'component' | 'requirement' | 'persona' | 'stakeholder' | 'feedback' | 'idea' | 'deliverable' | 'sprint' | 'iteration' | 'bug' | 'milestone' | 'repo', required
      - `objectId` string, required
      - `title` string, nullable: Resolved title in responses.
      - `globalId` string, nullable
    - `tags` string[]
    - `transcript` string, nullable: Only present on `GET /meetings/{id}?includeTranscript=true`.
    - `createdAt` integer: Epoch ms.
    - `updatedAt` integer, nullable: Epoch ms.
  - `pagination` Pagination
    - `nextCursor` string, nullable: Cursor for the next page, or null when there are no more results.
    - `hasMore` boolean

## Other responses

- `400`: Malformed request or invalid field (`validation_error`).
- `401`: Missing or invalid API key (`unauthorized`).
- `429`: Rate limit exceeded (`rate_limited`).

---

[API](https://skmtc.dev/pencil/apis/pencil-public-api.md) · [All operations](https://skmtc.dev/pencil/apis/pencil-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pencil/apis/pencil-public-api/revisions/2b842698b76d?raw)
