workflow.succeeded
You will receive this event when a Data API workflow succeeds for an object.
Example Payload
Section titled “Example Payload”{ "type": "workflow.succeeded", "namespace": "users", "id": "user_12345", "request_id": "req_01h2m7qdmdjckc30e1mnq6xqfd", "url": "https://app.safetykit.com/t/example/data-api/namespaces/users/user_12345/execution_abc", "metadata": { "customer_tier": "enterprise" }, "output": { "actions": ["suspend_account"], "labels": [ { "label": "fraud.risk_high", "explanation": "High-risk behavior pattern detected", "confidence": "medium" } ], "fields": { "risk_score": 0.92 } }}Fields
Section titled “Fields”type: Event type (workflow.succeeded)namespace: Namespace where the object was processedid: Originalidprovided when the object was ingestedrequest_id: Request identifier from ingestionurl: Link to the object view in SafetyKitmetadata: Optional metadata derived from ingested object metadataoutput.actions: Actions produced by workflow/rulesoutput.labels: Labels produced by workflowoutput.fields: Optional structured output fields
Reliability guidance
Section titled “Reliability guidance”- process events by
(namespace, id)for object identity - use
request_idfor batch/request reconciliation - do not assume label ordering unless your own workflow enforces it
- treat
output.fieldsas optional
Minimal validation checklist
Section titled “Minimal validation checklist”- verify signature and timestamp before parsing
- require
type === "workflow.succeeded" - require non-empty
namespace,id, andrequest_id - handle empty
actionsand emptylabelsas valid outcomes