Greetings and welcome to the documentation of the tl;dv API! This API is designed to seamlessly integrate tl;dv functionalities into your applications, making it easier for your users to access transcripts, notes, or import your meetings. Let's explore the details together.
Current API Version: v1alpha1 (v1 Alpha 1).
You are pioneering the tl;dv API, and we're excited to have you on board! Embark with us on the alpha phase adventure! Expect upcoming changes as we sculpt this API masterpiece, evolving towards the stable v1 release. Your invaluable feedback during this period will be our guiding star. Anticipate a slew of updates, and maybe a surprise or two – who said versioning can't be thrilling?
In the tl;dv API universe, we're currently all about that production data. So there is no alternate realities or sandbox just yet. We're working on it, though, so stay tuned!
Production API Endpoint: https://pasta.tldv.io (brace yourselves, this endpoint may choose to change its pasta shape, but we will keep you updated)
To unlock the tl;dv Public API's treasure trove, you need the key – THE API key - that's it. It's the golden ticket to seamless integration.
Once you have your API key, you can include it in the header of all your API requests.
x-api-key: YOUR_API_KEY
Replace YOUR_API_KEY with the actual key. If you're using a client library, it should be as simple as setting the header value.
All API requests must be made over HTTPS. Requests made over plain HTTP will be rejected.
Each request must include a valid API key. Requests without a valid key will return an authentication error.
The tl;dv Public API follows the same underlying permission model as the web application, with additional plan-based constraints applied to automation and export capabilities.
Seeing a meeting in the web app does not automatically guarantee programmatic (API) access.
Meeting ownership is determined by the calendar invite organizer or the meeting organizer (if the meeting was created spontaneously)
If you rely on API access, make sure:
To summarize:
| Meeting Organizer Plan | UI Access | API Access |
|---|---|---|
| Free | ✅ Yes (if shared) | ❌ No |
| Pro / Business | ✅ Yes | ✅ Yes |
| Enterprise | ✅ Yes | ✅ Yes |
Webhooks allow you to receive real-time notifications from tl;dv when key events occur in your workspace.
| Trigger | Fires when … |
|---|---|
| MeetingReady | A meeting has finished processing and is ready to be used in your applications. |
| TranscriptReady | A meeting transcript has been generated and is available. |
Webhooks can be configured at different levels, depending on your needs:
You can enable one or both triggers ("MeetingReady", "TranscriptReady") at the level that makes the most sense for your setup. This gives you control over how broadly you want setup your webhooks.
Need assistance, have a brilliant idea, or just want to say hello? Our support team is ready and waiting at support@tldv.io. Alternatively, drop by via the Intercom Widget.
Have fun! 🎉
Meetings (or recordings) related endpoints. With tl;dv you can manage your meetings. So far you can only import new ones, but more functionalities are coming soon.
Import a meeting, recording, or other media from a URL. The URL must be publicly accessible, and the media must be in a supported format.
null{- "success": true,
- "jobId": "string",
- "message": "string"
}const axios = require('axios'); let config = { method: 'get', maxBodyLength: Infinity, url: 'https://pasta.tldv.io/v1alpha1/meetings?<query-params>', headers: { 'Content-Type': 'application/json', 'x-api-key': '••••••' } }; axios.request(config) .then((response) => { console.log(JSON.stringify(response.data)); }) .catch((error) => { console.log(error); });
{- "page": 0,
- "pages": 0,
- "total": 0,
- "pageSize": 0,
- "results": [
- {
- "id": "string",
- "name": "string",
- "happenedAt": "string",
- "url": "string",
- "duration": 0,
- "organizer": {
- "name": "string",
- "email": "string"
}, - "invitees": [
- {
- "name": "string",
- "email": "string"
}
], - "template": "string",
- "extraProperties": {
- "conferenceId": "string"
}
}
]
}Get a meeting by its id. The meeting is returned in a human readable format
| meetingId required | string[^\/#\?]+? |
const axios = require('axios'); let config = { method: 'get', maxBodyLength: Infinity, url: 'https://pasta.tldv.io/v1alpha1/meetings/653663ac7c8dbd00130f11d9', headers: { 'Content-Type': 'application/json', 'x-api-key': '••••••' } }; axios.request(config) .then((response) => { console.log(JSON.stringify(response.data)); }) .catch((error) => { console.log(error); });
{- "id": "string",
- "name": "string",
- "happenedAt": "string",
- "url": "string",
- "duration": 0,
- "organizer": {
- "name": "string",
- "email": "string"
}, - "invitees": [
- {
- "name": "string",
- "email": "string"
}
], - "template": "string",
- "extraProperties": {
- "conferenceId": "string"
}
}Transcripts related endpoints. With tl;dv you can get the transcript of a meeting, in a structured format.
Get the transcript of a meeting by its id. The transcript is returned in a human readable format. The transcript is returned only if it is complete
| meetingId required | string[^\/#\?]+? |
const axios = require('axios'); let config = { method: 'get', maxBodyLength: Infinity, url: 'https://pasta.tldv.io/v1alpha1/meetings/653663ac7c8dbd00130f11d9/transcript', headers: { 'Content-Type': 'application/json', 'x-api-key': '••••••' } }; axios.request(config) .then((response) => { console.log(JSON.stringify(response.data)); }) .catch((error) => { console.log(error); });
{- "id": "string",
- "meetingId": "string",
- "data": [
- {
- "speaker": "string",
- "text": "string",
- "startTime": 0,
- "endTime": 0
}
]
}Highlights (or notes) related endpoints. With tl;dv you can get the highlights of your meetings.
Get the meetings notes of a meeting, by its id. The meetings notes are returned in a human readable format and they are returned only if the transcript is complete
| meetingId required | string[^\/#\?]+? |
const axios = require('axios'); let config = { method: 'get', maxBodyLength: Infinity, url: 'https://pasta.tldv.io/v1alpha1/meetings/653663ac7c8dbd00130f11d9/highlights', headers: { 'Content-Type': 'application/json', 'x-api-key': '••••••' } }; axios.request(config) .then((response) => { console.log(JSON.stringify(response.data)); }) .catch((error) => { console.log(error); });
{- "meetingId": "string",
- "data": [
- {
- "text": "string",
- "startTime": 0,
- "source": "manual",
- "topic": {
- "title": "string",
- "summary": "string"
}
}
]
}| id required | string non-empty Unique identifier for the webhook payload |
| event required | string Value: "MeetingReady" The event type that triggered this webhook |
required | object (Meeting) |
| executedAt required | string non-empty The date and time the webhook was executed |
{- "id": "webhook-123",
- "event": "MeetingReady",
- "data": {
- "id": "meeting-123",
- "name": "Team Standup Meeting",
- "happenedAt": "2024-01-15T10:00:00Z",
- "template": {
- "id": "template-1",
- "label": "Standup Template"
}, - "extraProperties": {
- "conferenceId": "conf-123"
}, - "duration": 1800
}
}This webhook is sent when a meeting transcript is ready. You can configure this webhook to receive notifications when transcripts are successfully generated.
| id required | string non-empty Unique identifier for the webhook payload |
| event required | string Value: "TranscriptReady" The event type that triggered this webhook |
required | object (GetTranscriptByMeetingIdResponse) |
| executedAt required | string non-empty The date and time the webhook was executed |
{- "id": "webhook-456",
- "event": "TranscriptReady",
- "data": {
- "id": "meeting-123",
- "meetingId": "meeting-123",
- "data": {
- "transcript": "Hello everyone, welcome to our standup meeting. Today we will discuss our progress and any blockers...",
- "segments": [
- {
- "startTime": 0,
- "endTime": 5,
- "text": "Hello everyone, welcome to our standup meeting."
}
]
}
}
}