Character change notifications
Add a callback with purpose Character changes (PERSONA) in the console's Open API settings, verify it, then enable it. It is configured separately from message callbacks and has its own signing secret.
Payload
The platform sends a JSON POST with OC-Event-Type: persona.changed. OC-Event-Id and Idempotency-Key equal the payload's eventId. Verify the callback signature before processing.
{"eventId":"9001","type":"persona.changed","change":"published","source":"console","occurredAt":"2026-10-26T08:00:00Z","persona":{"personaId":"11","personaUid":"anchor-001","status":"ACTIVE","version":2,"nickname":"Snow","bio":"Enjoys travel","privateEnabled":true,"liveEnabled":false}}change | Trigger |
|---|---|
created | Character created through the console or API |
published | New version published |
paused / resumed | Character paused or resumed |
binding | UID bound, changed, or removed; persona.previousPersonaUid contains the old value, possibly null |
source is console or api. API changes also generate notifications; you may ignore api notifications if you already handled the response. Saving a draft alone does not generate these notifications.
The summary uses published configuration when available. An unpublished new character uses its draft, with version=0. An unbound personaUid is null. Use Get to retrieve the complete configuration.
Reliable handling
- Only while the callback is enabled, notification enqueueing shares the character mutation's transaction. A rollback does not enqueue a notification. Enqueueing does not guarantee delivery.
- Changes while the callback is disabled are neither recorded nor replayed. An already queued notification is skipped if the callback is disabled when delivery is attempted.
- Delivery is ordered per character. Later notifications wait while an earlier one retries; they proceed after its terminal failure.
- 2xx acknowledges receipt. 4xx other than 408/429 stops retries. Timeouts, 5xx, and other uncertain responses use backoffs of 10 seconds, 30 seconds, 2 minutes, and 10 minutes, for at most 5 attempts. Redirects are not followed.
- Deduplicate by
eventIdand return the saved outcome on retries. UseversionandoccurredAtto assess freshness, but do not deduplicate solely by published version: bindings and pauses may share that version.
On initial integration or re-enabling callbacks, query your known character UIDs to reconcile current state. There is currently no public replay or bulk character-list endpoint.