REST API

Viewer

Overview

Note: The Viewer API does not require API Key authentication. Broadcasts are identified by the {token} in the URL (a 4-character short code, character set a-z0-9, used as the broadcast share token).


GET /api/v1/viewer/broadcasts/{token}

Description

Retrieve the public information of a specific broadcast for display on the viewer side. This endpoint returns only public information and does not include sensitive data.

Authentication

No API Key authentication is required. The broadcast is identified by the {token} in the URL path.

Request Parameters

ParameterTypeLocationRequiredDescription
tokenstringpathYesBroadcast share token (4-character short code, character set a-z0-9)

Request Example

curl -X GET "https://vas-poc.vurbo.ai/api/v1/viewer/broadcasts/a3f9"

Success Response

HTTP 200

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "name": "My Broadcast Channel",
    "access_type": "password",
    "requires_password": true,
    "status": "active",
    "is_live": true,
    "transcription_language": "zh-TW",
    "translation_languages": ["en-US", "ja-JP"],
    "tts_languages": ["en-US", "ja-JP"],
    "tts_voices": {
      "en-US": [
        { "voice_name": "en-US-JennyNeural", "display_name": "Jenny", "gender": "Female" },
        { "voice_name": "en-US-GuyNeural", "display_name": "Guy", "gender": "Male" }
      ],
      "ja-JP": [
        { "voice_name": "ja-JP-NanamiNeural", "display_name": "Nanami", "gender": "Female" },
        { "voice_name": "ja-JP-KeitaNeural", "display_name": "Keita", "gender": "Male" }
      ]
    }
  }
}

Response Fields

FieldTypeDescription
idstringBroadcast ID (UUID)
namestringChannel name
access_typestringAccess type: public / password
requires_passwordbooleanWhether password verification is required
statusstringBroadcast status
is_livebooleanWhether the broadcast is currently live
transcription_languagestringTranscription language
translation_languagesarrayList of translation languages
tts_languagesarrayLanguages that support TTS (retrieved live when broadcasting, otherwise from the default settings)
tts_voicesobjectTTS voice list for each translation language (reduces extra API calls on the viewer side)

tts_voices Structure

tts_voices is an object keyed by language code, where each language contains an array of available voices:

FieldTypeDescription
voice_namestringVoice name (for API use)
display_namestringDisplay name
genderstringGender: Female / Male

Specific Error Codes

Error CodeHTTP StatusDescriptionSuggested Action
broadcast_token_invalid401Token invalid or not foundVerify that the token is correct
broadcast_token_revoked401Broadcast has been revokedThis broadcast is no longer available

POST /api/v1/viewer/broadcasts/{token}/verify

Description

Verify the viewer password and obtain a viewer access token. The returned viewer_access_token is used to connect to the SSE real-time subtitle stream.

If the channel is public (no password required), you can still call this endpoint; it will return success directly with viewer_access_token set to null.

Authentication

No API Key authentication is required. The broadcast is identified by the {token} in the URL path.

Request Parameters

ParameterTypeLocationRequiredDescription
tokenstringpathYesBroadcast share token (4-character short code, character set a-z0-9)
passwordstringbodyYesChannel password (up to 12 characters; whether the actual password is verified depends on the settings configured at creation time)

Request Example

curl -X POST "https://vas-poc.vurbo.ai/api/v1/viewer/broadcasts/a3f9/verify" \
  -H "Content-Type: application/json" \
  -d '{
    "password": "mySecret123"
  }'

Success Response

HTTP 200 -- Password Correct

{
  "data": {
    "viewer_access_token": "aB3dE5fG7hI9jK1lM3nO5pQ7rS9tU1vWaB3dE5fG7hI9jK1lM3nO5pQ7rS9tU1vW",
    "expires_at": "2026-02-24T10:00:00.000Z"
  }
}

HTTP 200 -- Public Channel (No Password Required)

{
  "data": {
    "viewer_access_token": null,
    "message": "This channel is public and does not require password verification"
  }
}

Response Fields

FieldTypeDescription
viewer_access_tokenstringViewer access token (valid for 24 hours, with IP binding); null for public channels
expires_atstringToken expiration time (ISO 8601 format)

Usage

After obtaining the viewer_access_token, include it when connecting to the SSE real-time subtitle stream:

GET /broadcast/{token}/text?viewer_access_token=xxx

Specific Error Codes

Error CodeHTTP StatusDescriptionSuggested Action
broadcast_token_invalid401Token invalidVerify that the token is correct
broadcast_token_revoked401Broadcast has been revokedThis broadcast is no longer available
broadcast_password_incorrect401Incorrect passwordRe-enter the correct password
validation_failed422Parameter validation failedVerify that the password format is correct

Version: V1.5.7 Last Updated: 2026-05-20

Copyright © 2026