nimeet Docs
中文

Callback Event Reference

Callback event names, payload fields, signature and retry semantics, generated from the public callback event definitions.

Generated from the public callback event definitions

Version v1.1.0 · Updated 2026-10-26 · revision 1

event envelope

each delivery is a JSON object, fields are determined by the public API definition(schema nimeet.callbacks v1.0.0)Definition:

FieldType / meaning
eventTypenumber — see events[].eventType
noticeIdstring — unique per delivery attempt batch
notifyMsepoch milliseconds when the event was produced
payloadobject — event specific, see events[].payload
productIdnumber — 1 = RTC
sidstring — unique session id for the event
json
{
  "eventType": 101,
  "noticeId": "ntc_01J8Z0000000000000000000AA",
  "notifyMs": 1771000000000,
  "productId": 1,
  "sid": "sid_01J8Z0000000000000000000AA",
  "payload": {
    "channelName": "weekly-sync",
    "profile": "communication",
    "ts": 1771000000
  }
}

full event-code table(auto-generated)

13 events; event codes are aligned with Agora channel events (101–112) and task events (201–203). Payload fields are taken item by item from the public callback event definitions.

Channel and user events

event codesNameTrigger timing
101channel_createChannel created (first participant joins or room is created).
102channel_destroyChannel destroyed (room finished / last participant left and grace elapsed).
103broadcaster_joinA broadcaster (host) joined a live channel.
104broadcaster_leaveA broadcaster left a live channel; `reason` carries the Agora leave reason.
105audience_joinAn audience member joined a live channel.
106audience_leaveAn audience member left a live channel.
107user_joinA user joined a communication channel.
108user_leaveA user left a communication channel; `reason` carries the Agora leave reason.
111role_to_broadcasterA user was promoted to broadcaster/host.
112role_to_audienceA user was demoted to audience.

task and Token events

event codesNameTrigger timing
201recording_state_changedCloud recording task state changed (starting/running/stopping/stopped/failed).
202streaming_state_changedBypass streaming task state changed (including idle-timeout expiry).
203token_expiringA token is close to its privilege expiry; `TOKEN_PRIVILEGE_WILL_EXPIRE_LEAD_SECONDS` lead time.

event payload fields

101 channel_create

Channel created (first participant joins or room is created).

FieldType / value
channelNamestring
profilecommunication | live
tsepoch seconds
json
{
  "eventType": 101,
  "noticeId": "ntc_…",
  "notifyMs": 1771000000000,
  "productId": 1,
  "sid": "sid_…",
  "payload": {
    "channelName": "weekly-sync",
    "profile": "…",
    "ts": 1771000000
  }
}
102 channel_destroy

Channel destroyed (room finished / last participant left and grace elapsed).

FieldType / value
channelNamestring
tsepoch seconds
json
{
  "eventType": 102,
  "noticeId": "ntc_…",
  "notifyMs": 1771000000000,
  "productId": 1,
  "sid": "sid_…",
  "payload": {
    "channelName": "weekly-sync",
    "ts": 1771000000
  }
}
103 broadcaster_join

A broadcaster (host) joined a live channel.

FieldType / value
channelNamestring
platformnumber
tsepoch seconds
uidnumber
json
{
  "eventType": 103,
  "noticeId": "ntc_…",
  "notifyMs": 1771000000000,
  "productId": 1,
  "sid": "sid_…",
  "payload": {
    "channelName": "weekly-sync",
    "platform": 1,
    "ts": 1771000000,
    "uid": 10001
  }
}
104 broadcaster_leave

A broadcaster left a live channel; `reason` carries the Agora leave reason.

FieldType / value
channelNamestring
reasonnumber
tsepoch seconds
uidnumber
json
{
  "eventType": 104,
  "noticeId": "ntc_…",
  "notifyMs": 1771000000000,
  "productId": 1,
  "sid": "sid_…",
  "payload": {
    "channelName": "weekly-sync",
    "reason": 1,
    "ts": 1771000000,
    "uid": 10001
  }
}
105 audience_join

An audience member joined a live channel.

FieldType / value
channelNamestring
platformnumber
tsepoch seconds
uidnumber
json
{
  "eventType": 105,
  "noticeId": "ntc_…",
  "notifyMs": 1771000000000,
  "productId": 1,
  "sid": "sid_…",
  "payload": {
    "channelName": "weekly-sync",
    "platform": 1,
    "ts": 1771000000,
    "uid": 10001
  }
}
106 audience_leave

An audience member left a live channel.

FieldType / value
channelNamestring
reasonnumber
tsepoch seconds
uidnumber
json
{
  "eventType": 106,
  "noticeId": "ntc_…",
  "notifyMs": 1771000000000,
  "productId": 1,
  "sid": "sid_…",
  "payload": {
    "channelName": "weekly-sync",
    "reason": 1,
    "ts": 1771000000,
    "uid": 10001
  }
}
107 user_join

A user joined a communication channel.

FieldType / value
channelNamestring
platformnumber
tsepoch seconds
uidnumber
json
{
  "eventType": 107,
  "noticeId": "ntc_…",
  "notifyMs": 1771000000000,
  "productId": 1,
  "sid": "sid_…",
  "payload": {
    "channelName": "weekly-sync",
    "platform": 1,
    "ts": 1771000000,
    "uid": 10001
  }
}
108 user_leave

A user left a communication channel; `reason` carries the Agora leave reason.

FieldType / value
channelNamestring
reasonnumber
tsepoch seconds
uidnumber
json
{
  "eventType": 108,
  "noticeId": "ntc_…",
  "notifyMs": 1771000000000,
  "productId": 1,
  "sid": "sid_…",
  "payload": {
    "channelName": "weekly-sync",
    "reason": 1,
    "ts": 1771000000,
    "uid": 10001
  }
}
111 role_to_broadcaster

A user was promoted to broadcaster/host.

FieldType / value
channelNamestring
tsepoch seconds
uidnumber
json
{
  "eventType": 111,
  "noticeId": "ntc_…",
  "notifyMs": 1771000000000,
  "productId": 1,
  "sid": "sid_…",
  "payload": {
    "channelName": "weekly-sync",
    "ts": 1771000000,
    "uid": 10001
  }
}
112 role_to_audience

A user was demoted to audience.

FieldType / value
channelNamestring
tsepoch seconds
uidnumber
json
{
  "eventType": 112,
  "noticeId": "ntc_…",
  "notifyMs": 1771000000000,
  "productId": 1,
  "sid": "sid_…",
  "payload": {
    "channelName": "weekly-sync",
    "ts": 1771000000,
    "uid": 10001
  }
}
201 recording_state_changed

Cloud recording task state changed (starting/running/stopping/stopped/failed).

FieldType / value
channelNamestring
modecomposite | individual | web
statestring
taskIdstring
tsepoch seconds
json
{
  "eventType": 201,
  "noticeId": "ntc_…",
  "notifyMs": 1771000000000,
  "productId": 1,
  "sid": "sid_…",
  "payload": {
    "channelName": "weekly-sync",
    "mode": "…",
    "state": "running",
    "taskId": "task_…",
    "ts": 1771000000
  }
}
202 streaming_state_changed

Bypass streaming task state changed (including idle-timeout expiry).

FieldType / value
channelNamestring
hlsUrlstring
rtmpUrlstring
statestring
taskIdstring
tsepoch seconds
json
{
  "eventType": 202,
  "noticeId": "ntc_…",
  "notifyMs": 1771000000000,
  "productId": 1,
  "sid": "sid_…",
  "payload": {
    "channelName": "weekly-sync",
    "hlsUrl": "…",
    "rtmpUrl": "…",
    "state": "running",
    "taskId": "task_…",
    "ts": 1771000000
  }
}
203 token_expiring

A token is close to its privilege expiry; `TOKEN_PRIVILEGE_WILL_EXPIRE_LEAD_SECONDS` lead time.

FieldType / value
channelNamestring
privilegeExpireAtepoch seconds
tsepoch seconds
uidnumber
json
{
  "eventType": 203,
  "noticeId": "ntc_…",
  "notifyMs": 1771000000000,
  "productId": 1,
  "sid": "sid_…",
  "payload": {
    "channelName": "weekly-sync",
    "privilegeExpireAt": 1771000000,
    "ts": 1771000000,
    "uid": 10001
  }
}

Request headers and signature

Request headersDescription
Agora-SignatureHMAC-SHA1 hex of the raw body with the endpoint secret
Agora-Signature-V2HMAC-SHA256 hex of the raw body with the endpoint secret
Content-Typeapplication/json
X-Request-Iddelivery correlation id

the receiver must useraw request-body bytesComputing the signature:deserializing before signing includes whitespace/order differences, causing validation to fail.for the full implementation of validation and replay protection see Callback integration。

Retries and success criteria

Itemvalue
Maximum attempts9
backoff sequence(seconds)5 / 15 / 60 / 300 / 900 / 3600 / 7200 / 21600
Success criteriaHTTP 2xx
Idempotency keynoticeId(duplicate deliveries remain unchanged)

non-2xx is treated as failure and enters the next backoff; after retries are exhausted, delivery records remain in the delivery log, available via the console or delivery-log endpointreplay.

Generated by the documentation build pipeline · 2026-10-31 01:24:02 UTC · Documentation center v1.1.0.

Content follows the public API definitions.

ni-meet is a self-hosted RTC PaaS with a LiveKit-based media plane (Apache-2.0) and an Agora-compatible API.