curl --request POST \
--url https://api.eesi.ai/v1/speech/sessions/{session_id}/share/discord \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"speaker_names": {},
"listener": "<string>"
}
'import requests
url = "https://api.eesi.ai/v1/speech/sessions/{session_id}/share/discord"
payload = {
"speaker_names": {},
"listener": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({speaker_names: {}, listener: '<string>'})
};
fetch('https://api.eesi.ai/v1/speech/sessions/{session_id}/share/discord', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.eesi.ai/v1/speech/sessions/{session_id}/share/discord",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'speaker_names' => [
],
'listener' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.eesi.ai/v1/speech/sessions/{session_id}/share/discord"
payload := strings.NewReader("{\n \"speaker_names\": {},\n \"listener\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.eesi.ai/v1/speech/sessions/{session_id}/share/discord")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"speaker_names\": {},\n \"listener\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eesi.ai/v1/speech/sessions/{session_id}/share/discord")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"speaker_names\": {},\n \"listener\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"queued": true,
"channel": "<string>",
"detail": "<string>",
"mention": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Share To Discord
Post this conversation — transcript and audio — to the workspace’s channel.
The work is queued rather than done here. Mixing and encoding two tracks out of storage takes longer than a click waits, and a brainstorm that reached nobody because a browser gave up mid-upload is the failure this exists to prevent.
The job id is the session, and a finished job row still blocks its id
(enqueue_job_row), so a conversation is posted once and a second
press is told it already went. That is the safe direction for an action
that leaves the platform: a duplicate brainstorm in a channel cannot be
taken back, and anybody who genuinely wants a second copy has the file.
A conversation still running is refused: what would go out is the part of it that has happened, and nothing in the file would say so.
curl --request POST \
--url https://api.eesi.ai/v1/speech/sessions/{session_id}/share/discord \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"speaker_names": {},
"listener": "<string>"
}
'import requests
url = "https://api.eesi.ai/v1/speech/sessions/{session_id}/share/discord"
payload = {
"speaker_names": {},
"listener": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({speaker_names: {}, listener: '<string>'})
};
fetch('https://api.eesi.ai/v1/speech/sessions/{session_id}/share/discord', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.eesi.ai/v1/speech/sessions/{session_id}/share/discord",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'speaker_names' => [
],
'listener' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.eesi.ai/v1/speech/sessions/{session_id}/share/discord"
payload := strings.NewReader("{\n \"speaker_names\": {},\n \"listener\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.eesi.ai/v1/speech/sessions/{session_id}/share/discord")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"speaker_names\": {},\n \"listener\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.eesi.ai/v1/speech/sessions/{session_id}/share/discord")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"speaker_names\": {},\n \"listener\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"queued": true,
"channel": "<string>",
"detail": "<string>",
"mention": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
An EESI API key (sk-eesi-...) or a Clerk session token.
Path Parameters
Body
Who the voices in this conversation were, for this post only.
Speaker numbers are temporary voice clusters and no name for one is stored
anywhere (api/services/speech_gateway/nur_speakers.py), so the names to
print travel with the request that prints them.