API reference
Endpoints
Start and stop streams, manage captions, and change languages with POST requests.
Before you begin, you need an API Key from your LiveSunday dashboard. Learn more about how to authenticate your API requests.
All endpoints use POST against https://api.livesunday.ai/v1 and require a Bearer API key. Request bodies, when required, are JSON.
Language codes are BCP-47 tags. See Supported languages for the full list.
Stream
Check stream status
/v1/streamReturn the current stream state for your account. This is the only endpoint that requires your account ID in the body. Use the UUID from your dashboard URL (/db/<id>). It must match the account tied to your API key.
{"churchId":"<your-account-uuid>"}curl -X POST https://api.livesunday.ai/v1/stream \ -H "Authorization: Bearer ls_live_your_key_here" \ -H "Content-Type: application/json" \ -d '{"churchId":"<your-account-uuid>"}'const response = await fetch("https://api.livesunday.ai/v1/stream", { method: "POST", headers: { Authorization: "Bearer ls_live_your_key_here", "Content-Type": "application/json", }, body: JSON.stringify({ churchId: "<your-account-uuid>" }),});const data = await response.json();console.log(data);When a session is active, paused, or suspended, the response includes session details such as connected clients, status, languages, and timestamps. When no session is active, the response uses NO_ACTIVE_SESSION.
Start the stream
/v1/stream/startStart a session using the audio input selected in the dashboard. A dashboard admin must be connected and ready. Returns 409 if a session is already running, or if no admin is connected and ready.
curl -X POST https://api.livesunday.ai/v1/stream/start \ -H "Authorization: Bearer ls_live_your_key_here" \ -H "Content-Type: application/json"const response = await fetch("https://api.livesunday.ai/v1/stream/start", { method: "POST", headers: { Authorization: "Bearer ls_live_your_key_here", "Content-Type": "application/json", },});const data = await response.json();console.log(data);Stop the stream
/v1/stream/stopEnd the active streaming session. Returns 409 when there is no active session to stop.
curl -X POST https://api.livesunday.ai/v1/stream/stop \ -H "Authorization: Bearer ls_live_your_key_here" \ -H "Content-Type: application/json"const response = await fetch("https://api.livesunday.ai/v1/stream/stop", { method: "POST", headers: { Authorization: "Bearer ls_live_your_key_here", "Content-Type": "application/json", },});const data = await response.json();console.log(data);Clear captions
/v1/stream/clearClear the current caption text on every connected client.
curl -X POST https://api.livesunday.ai/v1/stream/clear \ -H "Authorization: Bearer ls_live_your_key_here" \ -H "Content-Type: application/json"const response = await fetch("https://api.livesunday.ai/v1/stream/clear", { method: "POST", headers: { Authorization: "Bearer ls_live_your_key_here", "Content-Type": "application/json", },});const data = await response.json();console.log(data);Captions
Hide captions
/v1/captions/hideTemporarily hide captions for connected viewers.
curl -X POST https://api.livesunday.ai/v1/captions/hide \ -H "Authorization: Bearer ls_live_your_key_here" \ -H "Content-Type: application/json"const response = await fetch("https://api.livesunday.ai/v1/captions/hide", { method: "POST", headers: { Authorization: "Bearer ls_live_your_key_here", "Content-Type": "application/json", },});const data = await response.json();console.log(data);Show captions
/v1/captions/showShow captions again after they have been hidden.
curl -X POST https://api.livesunday.ai/v1/captions/show \ -H "Authorization: Bearer ls_live_your_key_here" \ -H "Content-Type: application/json"const response = await fetch("https://api.livesunday.ai/v1/captions/show", { method: "POST", headers: { Authorization: "Bearer ls_live_your_key_here", "Content-Type": "application/json", },});const data = await response.json();console.log(data);Languages
Set transcription language
/v1/transcription-languageChange the source language used for transcription. Restarts an active stream. When idle, it only updates the setting.
{"languageCode":"en"}curl -X POST https://api.livesunday.ai/v1/transcription-language \ -H "Authorization: Bearer ls_live_your_key_here" \ -H "Content-Type: application/json" \ -d '{"languageCode":"en"}'const response = await fetch("https://api.livesunday.ai/v1/transcription-language", { method: "POST", headers: { Authorization: "Bearer ls_live_your_key_here", "Content-Type": "application/json", }, body: JSON.stringify({ languageCode: "en" }),});const data = await response.json();console.log(data);Set translation languages
/v1/translation-languageReplace the current list of translation target languages. Codes must be unique, supported by LiveSunday, within your plan's language limit, and different from the source language.
{"languageCodes":["es","fr"]}curl -X POST https://api.livesunday.ai/v1/translation-language \ -H "Authorization: Bearer ls_live_your_key_here" \ -H "Content-Type: application/json" \ -d '{"languageCodes":["es","fr"]}'const response = await fetch("https://api.livesunday.ai/v1/translation-language", { method: "POST", headers: { Authorization: "Bearer ls_live_your_key_here", "Content-Type": "application/json", }, body: JSON.stringify({ languageCodes: [ "es", "fr" ] }),});const data = await response.json();console.log(data);