# tl;dv

> Work with your tl;dv meeting recordings: search past meetings, read a meeting's full transcript with speakers and timestamps, pull the AI notes as topics or ready-to-post markdown, and import recordings from elsewhere for tl;dv to transcribe.

App · Meeting Notes · 5 actions. Web page: https://docs.lodol.com/docs/integrations/tldv

## Actions

### Get tl;dv meeting

Get one meeting's details: its title, when it happened, how long it ran, who organised it, and who was invited.

**Inputs**

- Meeting ID (`meeting_id`, text, required): The meeting's tl;dv id. You can get this from the List tl;dv meetings action, or from the end of a tldv.io meeting URL.

**Outputs**

- `meeting` (object)

**Example output**

```json
{
  "meeting": {
    "conference_id": "abc-defg-hij",
    "duration": 1832,
    "happened_at": "2026-01-28T14:00:00.000Z",
    "id": "65a1b2c3d4e5f6a7b8c9d0e1",
    "invitees": [
      {
        "email": "ada@example.com",
        "name": "Ada Lovelace"
      },
      {
        "email": "grace@example.com",
        "name": "Grace Hopper"
      }
    ],
    "name": "Weekly product sync",
    "organizer": {
      "email": "ada@example.com",
      "name": "Ada Lovelace"
    },
    "template": "Product sync",
    "url": "https://tldv.io/app/meetings/65a1b2c3d4e5f6a7b8c9d0e1"
  }
}
```

### Get tl;dv meeting notes

Get a meeting's AI notes: the topics tl;dv identified with a summary each, the individual note lines with timestamps, and the whole thing already rendered as markdown.

**Inputs**

- Meeting ID (`meeting_id`, text, required): The meeting's tl;dv id. You can get this from the List tl;dv meetings action, or from the end of a tldv.io meeting URL.

**Outputs**

- `count` (number): Number of individual notes.
- `markdown` (text): The same notes already formatted as markdown, which is usually what you forward to Slack, Notion, or an email.
- `notes` (list): Individual note lines, in order.
- `topics` (list): The topics tl;dv split the meeting into, each with its own summary.

**Example output**

```json
{
  "count": 1,
  "markdown": "## Billing bug\n- Ship the billing fix before Friday.",
  "notes": [
    {
      "segment_id": "s14",
      "text": "Ship the billing fix before Friday.",
      "timestamp": 421.0,
      "topic_id": "t1"
    }
  ],
  "topics": [
    {
      "id": "t1",
      "order": 1,
      "summary": "The team agreed to ship the fix this week.",
      "title": "Billing bug"
    }
  ]
}
```

### Get tl;dv transcript

Get a meeting's full transcript as a list of segments, each with the speaker, what they said, and where it falls in the recording.

**Inputs**

- Meeting ID (`meeting_id`, text, required): The meeting's tl;dv id. You can get this from the List tl;dv meetings action, or from the end of a tldv.io meeting URL.

**Outputs**

- `count` (number): Number of transcript segments.
- `meeting_id` (text): The meeting the transcript belongs to.
- `segments` (list): The transcript in order, one entry per turn.
- `transcript_id` (text): tl;dv's id for this transcript.

**Example output**

```json
{
  "count": 1,
  "meeting_id": "65a1b2c3d4e5f6a7b8c9d0e1",
  "segments": [
    {
      "end_time": 15.1,
      "speaker": "Ada Lovelace",
      "start_time": 12.4,
      "text": "Let's start with last week's numbers."
    }
  ],
  "transcript_id": "65a1b2c3d4e5f6a7b8c9d0e2"
}
```

### Import recording into tl;dv

Import a recording from a public URL so tl;dv transcribes it and writes notes. Use this to get recordings from somewhere else into tl;dv. Transcription happens in the background, so this returns a job id rather than a finished meeting.

**Inputs**

- Name (`name`, text, required): What to call the meeting in tl;dv.
- URL (`url`, text, required): Publicly reachable link to the media file. tl;dv supports .mp3, .mp4, .wav, .m4a, .mkv, .mov, .avi, .wma, and .flac.
- Happened at (`happened_at`, date and time): When the meeting took place, ISO 8601. Defaults to now, so set this when importing something older.
- Participants (`participants`, text): Comma-separated email addresses of who was on the call.
- Dry run (`dry_run`, true/false): Validate the request without actually importing anything. Useful for checking a URL is reachable.

**Outputs**

- `job_id` (text): The background job tl;dv queued for the import. The meeting appears in List tl;dv meetings once it finishes processing.

**Example output**

```json
{
  "job_id": "65a1b2c3d4e5f6a7b8c9d0e3"
}
```

### List tl;dv meetings

List recorded meetings, optionally searched by text and filtered by date range or whether the meeting was internal or external. Returns the meeting ids the transcript and notes actions take.

**Inputs**

- Query (`query`, text): Search meetings by title.
- From date (`from_date`, text): Only meetings on or after this date, as YYYY-MM-DD or a full ISO 8601 timestamp.
- To date (`to_date`, text): Only meetings on or before this date, as YYYY-MM-DD or a full ISO 8601 timestamp.
- Meeting type (`meeting_type`, text): Narrow to internal meetings, where everyone is from your organisation, or external ones, which include at least one outside guest. Leave blank for both. One of: `internal` (Internal only), `external` (External only).
- Only participated (`only_participated`, true/false): Only return meetings the API key's own user attended, rather than everything they can see.
- Page (`page`, number): Which page of results to return, starting at 1.
- Limit (`limit`, number): How many meetings to return per page, 1 to 100. Defaults to 50.

**Outputs**

- `count` (number): Number of meetings on this page.
- `meetings` (list): Meetings on this page.
- `page` (number): Which page this is, starting at 1.
- `page_size` (number): How many meetings each page holds.
- `pages` (number): How many pages match the filters in total.
- `total` (number): How many meetings match the filters in total.

**Example output**

```json
{
  "count": 1,
  "meetings": [
    {
      "conference_id": "abc-defg-hij",
      "duration": 1832,
      "happened_at": "2026-01-28T14:00:00.000Z",
      "id": "65a1b2c3d4e5f6a7b8c9d0e1",
      "invitees": [
        {
          "email": "ada@example.com",
          "name": "Ada Lovelace"
        },
        {
          "email": "grace@example.com",
          "name": "Grace Hopper"
        }
      ],
      "name": "Weekly product sync",
      "organizer": {
        "email": "ada@example.com",
        "name": "Ada Lovelace"
      },
      "template": "Product sync",
      "url": "https://tldv.io/app/meetings/65a1b2c3d4e5f6a7b8c9d0e1"
    }
  ],
  "page": 1,
  "page_size": 50,
  "pages": 3,
  "total": 118
}
```
