Skip to main content
All events share a common JSON structure. The type field identifies what kind of event occurred.

Donation event

Triggered when a user sends a Dannous (tip) to a creator.
{
  "sender_username": "ahmed_ben",
  "sender_avatar": "https://media.tuniform.tn/upload/photos/d-avatar.jpg",
  "amount": 50.00,
  "currency": "TND",
  "type": "donation",
  "tier": "",
  "duration": "",
  "period": "",
  "streak": 0,
  "receiver_username": "streamer123",
  "receiver_display_name": "Mohamed Ali",
  "receiver_avatar": "https://media.tuniform.tn/upload/photos/avatar.jpg",
  "message": "Great stream! Keep it up!",
  "kick_username": "ahmed_kick",
  "tts_url": "https://media.tuniform.tn/upload/sounds/tts_abc123.mp3",
  "have_tts": true,
  "voice_message": "https://media.tuniform.tn/upload/sounds/2026/04/voice_xyz.webm",
  "have_voice_message": true,
  "timestamp": "2026-04-11T17:00:00+01:00"
}
Always check have_tts before using tts_url, and have_voice_message before using voice_message. The URL fields may be empty strings even when the boolean flags are false.

Subscription event

Triggered when a user subscribes or resubscribes to a creator’s monetization tier.
{
  "sender_username": "subscriber_name",
  "sender_avatar": "https://media.tuniform.tn/upload/photos/avatar.jpg",
  "amount": 15.00,
  "currency": "TND",
  "type": "subscription",
  "tier": "Gold Tier",
  "duration": 30,
  "period": "monthly",
  "streak": 3,
  "receiver_username": "streamer123",
  "receiver_display_name": "Mohamed Ali",
  "receiver_avatar": "https://media.tuniform.tn/upload/photos/avatar.jpg",
  "message": "",
  "kick_username": "sub_kick_handle",
  "tts_url": "",
  "have_tts": false,
  "voice_message": "",
  "have_voice_message": false,
  "timestamp": "2026-04-11T17:00:00+01:00"
}

Test event

Triggered when a creator uses the Test Lab in their Stream Alerts dashboard.
Test events are structurally identical to donation or subscription events — there is no special type value or flag in the WebSocket payload to distinguish them. They are delivered normally through the WebSocket.
Overlay clients can choose whether to display or filter test events based on their own logic.

Future event types

The platform may add these additional event types in the future:
TypeDescription
followA new user follows the creator
raidAnother streamer raids the creator’s stream
hostAnother streamer hosts the creator’s stream
These will follow the same payload structure with the type field set accordingly. Your integration must handle unknown type values gracefully — log or ignore events with a type you don’t recognize rather than crashing.

Next steps

Integration guide

See a complete JavaScript integration example and best practices for production use.