Transcribe meeting

🎙️ Start a Meeting Transcription

Initiate a transcription for a Google Meet, Microsoft Teams, or Zoom meeting. The bot will join the meeting instantly.

Endpoint

POST https://api.tor.app/developer/transcription/meeting

Headers

  • Authorization (string, required): Bearer token with your API key (e.g., Authorization: Bearer your_api_key).

POST Body Parameters

  • meetingUrl (string, required): The meeting link for Google Meet, Microsoft Teams, or Zoom (e.g., https://meet.google.com/xqu-ouwe-yve).
  • meeting_bot_name (string, optional): Custom bot name for Teams or Zoom meetings. Not configurable for Google Meet.
  • meeting_language (string, optional): Language for transcription (e.g., en-US). Default: platform default.
  • summary_template_id (string, optional): ID of the summary template to apply to the transcription. Default: none.

Responses

200 OK
{
    "success": true,
    "message": "Successfully added meeting url. Bot is joining the meeting.",
    "order_id": "de248567f812cd65527972e4496081d8386969c6fceccc4334bfb8b9c2182985003c61ac29a9f9f1579ea9c6e8ffc78ea0c939f72f101a8de0ea6492b29d603b"
}
        
403 Forbidden
{
    "error": true,
    "message": "Invalid or missing authorization header"
}
        

Returned if the Authorization header is missing or contains an invalid API key.

406 Not Acceptable
{
    "error": true,
    "message": "Meeting link is invalid"
}
        

Returned if the meetingUrl is invalid or if the user's account has insufficient minutes (0 or less). In the latter case, the message will prompt the user to add credits.

Notes

  • The bot joins the meeting instantly upon a successful request.
  • Save the order_id to track the transcription process.
  • Transcription is automatically generated after the meeting ends and the recording is available.
  • To check the meeting status, use the Get Meeting API (external link).
  • Only Google Meet, Microsoft Teams, and Zoom meetings are supported.
  • Insufficient minutes will result in a 406 error, and an invalid/missing API key will result in a 403 error.
import json
import requests

api_key = "your_api_key"
url = "https://api.tor.app/developer/transcription/meeting"
headers = {
    "Authorization": f"Bearer {api_key}",
    "Content-Type": "application/json"
}
data = {
    "meetingUrl": "your_meeting_url"
}

response = requests.post(url, headers=headers, json=data)
print(response.status_code)
print(response.json())
const axios = require('axios');

const api_key = "your_api_key";
const url = "https://api.tor.app/developer/transcription/meeting";
const headers = {
    "Authorization": `Bearer ${api_key}`,
    "Content-Type": "application/json"
};
const data = {
    meetingUrl: "your_meeting_url"
};

axios.post(url, data, { headers })
    .then(response => {
        console.log(response.status);
        console.log(response.data);
    })
    .catch(error => {
        console.error(error.response.status);
        console.error(error.response.data);
    });
import okhttp3.*;
import org.json.JSONObject;

public class Main {
    public static void main(String[] args) throws Exception {
        String api_key = "your_api_key";
        String url = "https://api.tor.app/developer/transcription/meeting";
        
        OkHttpClient client = new OkHttpClient();
        MediaType JSON = MediaType.get("application/json; charset=utf-8");
        
        JSONObject json = new JSONObject();
        json.put("meetingUrl", "your_meeting_url");
        
        RequestBody body = RequestBody.create(json.toString(), JSON);
        Request request = new Request.Builder()
                .url(url)
                .header("Authorization", "Bearer " + api_key)
                .header("Content-Type", "application/json")
                .post(body)
                .build();
        
        try (Response response = client.newCall(request).execute()) {
            System.out.println(response.code());
            System.out.println(response.body().string());
        }
    }
}
using System;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        string api_key = "your_api_key";
        string url = "https://api.tor.app/developer/transcription/meeting";
        
        using HttpClient client = new HttpClient();
        client.DefaultRequestHeaders.Add("Authorization", $"Bearer {api_key}");
        
        var data = new { meetingUrl = "your_meeting_url" };
        string json = JsonSerializer.Serialize(data);
        var content = new StringContent(json, Encoding.UTF8, "application/json");
        
        HttpResponseMessage response = await client.PostAsync(url, content);
        Console.WriteLine((int)response.StatusCode);
        string responseBody = await response.Content.ReadAsStringAsync();
        Console.WriteLine(responseBody);
    }
}
package main

import (
    "bytes"
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    api_key := "your_api_key"
    url := "https://api.tor.app/developer/transcription/meeting"
    
    data := map[string]string{"meetingUrl": "your_meeting_url"}
    jsonData, _ := json.Marshal(data)
    
    req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
    req.Header.Set("Authorization", "Bearer "+api_key)
    req.Header.Set("Content-Type", "application/json")
    
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        fmt.Println(err)
        return
    }
    defer resp.Body.Close()
    
    fmt.Println(resp.StatusCode)
    var result map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&result)
    fmt.Println(result)
}
require 'net/http'
require 'json'
require 'uri'

api_key = "your_api_key"
url = URI("https://api.tor.app/developer/transcription/meeting")
data = { meetingUrl: "your_meeting_url" }

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer #{api_key}"
request["Content-Type"] = "application/json"
request.body = data.to_json

response = http.request(request)
puts response.code
puts response.body
<?php
$api_key = "your_api_key";
$url = "https://api.tor.app/developer/transcription/meeting";
$data = [
    "meetingUrl" => "your_meeting_url"
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer $api_key",
    "Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo $status . "\n";
echo $response . "\n";

curl_close($ch);
?>
import okhttp3.*
import org.json.JSONObject
import java.io.IOException

fun main() {
    val api_key = "your_api_key"
    val url = "https://api.tor.app/developer/transcription/meeting"
    
    val client = OkHttpClient()
    val JSON = MediaType.get("application/json; charset=utf-8")
    
    val json = JSONObject().put("meetingUrl", "your_meeting_url")
    val body = RequestBody.create(JSON, json.toString())
    
    val request = Request.Builder()
        .url(url)
        .header("Authorization", "Bearer $api_key")
        .header("Content-Type", "application/json")
        .post(body)
        .build()
    
    client.newCall(request).execute().use { response ->
        println(response.code)
        println(response.body?.string())
    }
}
import Foundation

let api_key = "your_api_key"
let url = URL(string: "https://api.tor.app/developer/transcription/meeting")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer \(api_key)", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

let data = ["meetingUrl": "your_meeting_url"]
let jsonData = try! JSONSerialization.data(withJSONObject: data)

request.httpBody = jsonData

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    if let httpResponse = response as? HTTPURLResponse {
        print(httpResponse.statusCode)
    }
    if let data = data, let string = String(data: data, encoding: .utf8) {
        print(string)
    }
}
task.resume()
import 'dart:convert';
import 'dart:io';

void main() async {
  final api_key = "your_api_key";
  final url = Uri.parse("https://api.tor.app/developer/transcription/meeting");
  final client = HttpClient();
  
  final data = {"meetingUrl": "your_meeting_url"};
  final jsonData = jsonEncode(data);
  
  final request = await client.postUrl(url);
  request.headers.set("Authorization", "Bearer $api_key");
  request.headers.set("Content-Type", "application/json");
  request.write(utf8.encode(jsonData));
  
  final response = await request.close();
  print(response.statusCode);
  final responseBody = await response.transform(utf8.decoder).join();
  print(responseBody);
}