LiveSunday

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

POST/v1/stream

Return 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.

Request body{"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

POST/v1/stream/start

Start 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

POST/v1/stream/stop

End 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

POST/v1/stream/clear

Clear 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

POST/v1/captions/hide

Temporarily 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

POST/v1/captions/show

Show 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

POST/v1/transcription-language

Change the source language used for transcription. Restarts an active stream. When idle, it only updates the setting.

Request body{"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

POST/v1/translation-language

Replace 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.

Request body{"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);

Next step