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.
Security is essential – all API requests must be made over HTTPS. No plain HTTP invites, and don't forget your key; requests without it will kindly be refused. The data you can access with the Public API is the same that you can access via the web-app. So if you don't have access to meetings, transcripts or notes via the web-app, the API will politely let you know with a 403 Forbidden response.
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.
MeetingImportControllerBody
name required | string The name of the meeting/recording imported |
url required | string <url> The url of the meeting/recording imported. Important: the url must be publicly accessible and the media must be in a supported format. Supported formats are: .mp3, .mp4, .wav, .m4a, .mkv, .mov, .avi, .wma, .flac. |
happenedAt | string\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d.... The date of the meeting/recording. If not provided, the current date will be used |
dryRun | boolean For testing purposes: whether to run the import as a dry run. If true, the import will not be persisted to the database, and nothing will be run. |
{- "name": "string",
- "url": "string",
- "happenedAt": "string",
- "dryRun": true
}
{- "success": true,
- "jobId": "string",
- "message": "string"
}
query | string The query to search for |
page | number > 0 The page number to return. Default is 1 |
limit | number > 0 The number of results to return per page. Default is 50 |
string or string The date to search from | |
string or string The date to search to | |
onlyParticipated | boolean Whether to only return meetings the user participated in. Default is false |
meetingType | string Enum: "internal" "external" Filters meetings by type: internal (all participants from the same organization) or external (includes at least one participant from another organization). Defaults to both if not provided |
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 highlights of a meeting by its id. The highlights are returned in a human readable format. The highlights 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."
}
]
}
}
}