Transcript LOL API
POST
/spaces/{spaceId}/recordings

Create recording

Transcribe an audio or video file by importing the recording to Transcript LOL.

You can import using these 2 options:

  1. A public url to the media
  2. Upload the media to Transcript using our API
/spaces/{spaceId}/recordings

The Authorization access token

Authorization

x-api-key<token>

In: header

Request Body

application/jsonOptional

Recording options

title
Required
string

language
Required
LanguageCode

Value in: "bg" | "ca" | "zh" | "zh-CN" | "zh-Hans" | "zh-TW" | "zh-Hant" | "cs" | "da" | "da-DK" | "nl" | "en" | "en-US" | "en-AU" | "en-GB" | "en-NZ" | "en-IN" | "et" | "fi" | "nl-BE" | "fr" | "fr-CA" | "de" | "de-CH" | "el" | "hi" | "hu" | "id" | "it" | "ja" | "ko" | "lv" | "lt" | "ms" | "multi" | "no" | "pl" | "pt" | "pt-BR" | "ro" | "ru" | "sk" | "es" | "es-419" | "sv" | "th" | "tr" | "uk" | "vi"

translationLanguagesarray<LanguageCode>

Optional. List of language codes to automatically create translations for this recording. Translations will be queued after transcription completes.

mediaType
Required
MediaType

Value in: "AUDIO" | "VIDEO"

source
Required
MediaSource

Please set this based on how your media content (audio/video) is being imported to Transcript:

  • FILE_UPLOAD: If you are going to upload a file
  • UNKNOWN: If none of the other values are suitable
Value in: "FILE_UPLOAD" | "YOUTUBE" | "VIMEO" | "INSTAGRAM" | "X" | "FACEBOOK" | "TIKTOK" | "UNKNOWN"

sourceUrlstring

Only public urls to audio / video files are acceptable.

autoDeletePolicyobject

Auto deletion policy to apply to this recording. Useful if you prefer your data to be deleted automatically. If not set, no auto deletion occurs.

speakerDiarizationboolean

Set this to true to enable speaker diarization - detection of speakers for each part of the transcript

speakerCountnumber

Relavent only when speakerDiarization is enabled.

If you know the number of speakers in the audio, pass it here to improve diarization accuracy.

NOTE:

  • Speaker diarization is not perfect. But passing this value can help to some extent.
  • Further, our speaker diarization model is not good at overlaping conversations - where multiple speakers are speaking at the same time.

externalIdstring

This id also acts an as idempotency key.

This could be a unique id you maintain in your system for this recording or file or url.

**Idempotency Key Behaviour: **

  • This is relavent only when you set a value for externalId
  • When set, this id must be unique across all recordings in this workspace
  • A new recording will be created only if there is no existing recording in this workspace with the same external id
  • If there is an existing recording in this workspace with the same externalId, we will respond with the existing recording

Path Parameters

spaceId
Required
string

ID of the workspace. You can find from the url in dashboard when you open the workspace or using the list workspaces endpoint.

curl -X POST "https://transcript.lol/api/v1/spaces/string/recordings" \
  -H "Authorization: <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "string",
    "language": "bg",
    "translationLanguages": [
      "bg"
    ],
    "mediaType": "AUDIO",
    "source": "FILE_UPLOAD",
    "sourceUrl": "string",
    "autoDeletePolicy": {
      "mediaDeleteAfterDays": 0
    },
    "speakerDiarization": true,
    "speakerCount": 0,
    "externalId": "string"
  }'

Recording metadata

{
  "id": "string",
  "createdAt": "string",
  "updatedAt": "string",
  "workspaceId": "string",
  "title": "string",
  "sourceUrl": "string",
  "mediaType": "AUDIO",
  "source": "string",
  "duration": 0,
  "status": "MEDIA_IMPORT_UPLOADING",
  "recordingFolderId": "string",
  "isMediaDeleted": true,
  "createdById": "string",
  "autoDeleteMediaAfter": "string"
}