Voice server webhook (called by LiveKit only)
const url = 'https://api.gampeon.com/v1/hooks/livekit';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"event":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.gampeon.com/v1/hooks/livekit \ --header 'Content-Type: application/json' \ --data '{ "event": "example" }'Signed with Authorization: <JWT> from the API key of the voice server, with the SHA-256 of the raw body. Handles participant_joined, participant_left, track_published, track_unpublished (screen sharing) and room_finished. Unknown participants are removed. Only active when voice is set up.
Request Bodyrequired
Section titled “Request Bodyrequired”object
E.g. participant_joined
Example generated
{ "event": "example"}Responses
Section titled “Responses”Processed
object
Example
{ "ok": true}Error codes: invalid_field
object
Machine-readable error code, for example not_found or rate_limited.
Human-readable detail. Only present for some errors.
Example generated
{ "error": "example", "message": "example"}Error codes: invalid_signature
object
Machine-readable error code, for example not_found or rate_limited.
Human-readable detail. Only present for some errors.
Example generated
{ "error": "example", "message": "example"}Error codes: not_found
object
Machine-readable error code, for example not_found or rate_limited.
Human-readable detail. Only present for some errors.
Example generated
{ "error": "example", "message": "example"}Error codes: body_too_large
object
Machine-readable error code, for example not_found or rate_limited.
Human-readable detail. Only present for some errors.
Example generated
{ "error": "example", "message": "example"}