Sync returns the verdict now; async returns acceptance now
Use sync when the surface needs a moderation answer before content becomes visible. Use async when the important thing is absorbing work for later processing.
{
"eventId": "evt_01JXYZ...",
"incidentId": "inc_01JXYZ...",
"persistence": {
"mode": "store_metadata_only",
"stored": true
},
"decision": {
"status": "blocked",
"severity": "high",
"confidence": 0.982,
"categories": {
"sexual": 0.982
},
"recommendedActions": ["delete_message", "notify_moderators"],
"rationale": ["Model moderation flagged the event."]
},
"creditsConsumed": 1
}{
"jobId": "job_01JXYZ...",
"eventId": "evt_01JXYZ...",
"status": "queued",
"persistence": {
"mode": "store_full",
"stored": true
}
}