Queue event for async ingest (Beta)
Beta. Queue backend events for asynchronous ingestion. This endpoint accepts the same request body as POST /v1/events, writes one SQS message per event, and returns after the events are queued. SafetyKit later processes the queued events through the standard event ingestion path.
Body ParametersJSONExpand Collapse
body: object { event_name, target_user_id, timestamp, 8 more } or object { content, event_name, timestamp, 7 more } or object { content, event_name, product, 8 more } or 5 moreBackend event or ordered batch of events to send to SafetyKit. Send events from your server after an action has happened in your product. Do not send these events directly from a browser or mobile client.
Backend event or ordered batch of events to send to SafetyKit. Send events from your server after an action has happened in your product. Do not send these events directly from a browser or mobile client.
UserContactEventRequest object { event_name, target_user_id, timestamp, 8 more } A user contacts, transacts with, or otherwise interacts with another user.
A user contacts, transacts with, or otherwise interacts with another user.
Stable, low-cardinality product action name. Use snake_case and put dynamic values in typed fields, content, resources_used, or metadata.
Your stable canonical identifier for the other user in a user-to-user interaction.
The time the event occurred in your system, as an ISO 8601 datetime string.
client_info: optional object { ip } Client context observed by your backend for the user action that triggered the event.
Client context observed by your backend for the user action that triggered the event.
content: optional array of object { text, type, key } or object { source, type, key } User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
Your stable identifier for the content involved in this event, such as a message, listing, page, post, profile, or uploaded media item.
Optional caller-provided key used to make retries of this individual event idempotent. Reuse the same key only for retries of the same logical event.
metadata: optional map[string or number or boolean or array of string or number or boolean]Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
resources_used: optional array of object { namespace, type, value } or object { type, value } Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
EntityIDResource object { namespace, type, value } Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
object { type, value } Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
ContentUploadedEventRequest object { content, event_name, timestamp, 7 more } A user posts, uploads, publishes, edits, or replaces content.
A user posts, uploads, publishes, edits, or replaces content.
content: array of object { text, type, key } or object { source, type, key } User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
Stable, low-cardinality product action name. Use snake_case and put dynamic values in typed fields, content, resources_used, or metadata.
The time the event occurred in your system, as an ISO 8601 datetime string.
client_info: optional object { ip } Client context observed by your backend for the user action that triggered the event.
Client context observed by your backend for the user action that triggered the event.
Your stable identifier for the content involved in this event, such as a message, listing, page, post, profile, or uploaded media item.
Optional caller-provided key used to make retries of this individual event idempotent. Reuse the same key only for retries of the same logical event.
metadata: optional map[string or number or boolean or array of string or number or boolean]Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
resources_used: optional array of object { namespace, type, value } or object { type, value } Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
EntityIDResource object { namespace, type, value } Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
object { type, value } Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
ProductChangedEventRequest object { content, event_name, product, 8 more } A product listing is created, updated, or has a discount added.
A product listing is created, updated, or has a discount added.
content: array of object { text, type, key } or object { source, type, key } User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
product: object { price, discounted_price, shipping_info } Commerce details for the product involved in this event.
Commerce details for the product involved in this event.
The time the event occurred in your system, as an ISO 8601 datetime string.
client_info: optional object { ip } Client context observed by your backend for the user action that triggered the event.
Client context observed by your backend for the user action that triggered the event.
Your stable identifier for the content involved in this event, such as a message, listing, page, post, profile, or uploaded media item.
Optional caller-provided key used to make retries of this individual event idempotent. Reuse the same key only for retries of the same logical event.
metadata: optional map[string or number or boolean or array of string or number or boolean]Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
resources_used: optional array of object { namespace, type, value } or object { type, value } Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
EntityIDResource object { namespace, type, value } Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
object { type, value } Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
CreateAccountEventRequest object { event_name, timestamp, type, 7 more } A user or account is created.
A user or account is created.
Stable, low-cardinality product action name. Use snake_case and put dynamic values in typed fields, content, resources_used, or metadata.
The time the event occurred in your system, as an ISO 8601 datetime string.
client_info: optional object { ip } Client context observed by your backend for the user action that triggered the event.
Client context observed by your backend for the user action that triggered the event.
content: optional array of object { text, type, key } or object { source, type, key } User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
Your stable identifier for the content involved in this event, such as a message, listing, page, post, profile, or uploaded media item.
Optional caller-provided key used to make retries of this individual event idempotent. Reuse the same key only for retries of the same logical event.
metadata: optional map[string or number or boolean or array of string or number or boolean]Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
resources_used: optional array of object { namespace, type, value } or object { type, value } Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
EntityIDResource object { namespace, type, value } Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
object { type, value } Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
UpdateAccountEventRequest object { event_name, timestamp, type, 7 more } A user or account profile, contact detail, payment detail, or public bio changes.
A user or account profile, contact detail, payment detail, or public bio changes.
Stable, low-cardinality product action name. Use snake_case and put dynamic values in typed fields, content, resources_used, or metadata.
The time the event occurred in your system, as an ISO 8601 datetime string.
client_info: optional object { ip } Client context observed by your backend for the user action that triggered the event.
Client context observed by your backend for the user action that triggered the event.
content: optional array of object { text, type, key } or object { source, type, key } User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
Your stable identifier for the content involved in this event, such as a message, listing, page, post, profile, or uploaded media item.
Optional caller-provided key used to make retries of this individual event idempotent. Reuse the same key only for retries of the same logical event.
metadata: optional map[string or number or boolean or array of string or number or boolean]Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
resources_used: optional array of object { namespace, type, value } or object { type, value } Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
EntityIDResource object { namespace, type, value } Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
object { type, value } Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
UserReportEventRequest object { event_name, labels, timestamp, 10 more } A user-submitted report. Use user_id for the reporter. Include target_user_id when a user is reported, target_content_id when content is reported, and both when the report is about content associated with a user. Use content and content_id for the report itself.
A user-submitted report. Use user_id for the reporter. Include target_user_id when a user is reported, target_content_id when content is reported, and both when the report is about content associated with a user. Use content and content_id for the report itself.
Stable, low-cardinality product action name. Use snake_case and put dynamic values in typed fields, content, resources_used, or metadata.
One or more label categories supplied with the report or moderation decision.
The time the event occurred in your system, as an ISO 8601 datetime string.
client_info: optional object { ip } Client context observed by your backend for the user action that triggered the event.
Client context observed by your backend for the user action that triggered the event.
content: optional array of object { text, type, key } or object { source, type, key } User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
Your stable identifier for the content involved in this event, such as a message, listing, page, post, profile, or uploaded media item.
Optional caller-provided key used to make retries of this individual event idempotent. Reuse the same key only for retries of the same logical event.
metadata: optional map[string or number or boolean or array of string or number or boolean]Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
resources_used: optional array of object { namespace, type, value } or object { type, value } Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
EntityIDResource object { namespace, type, value } Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
object { type, value } Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
ModerationDecisionEventRequest object { event_name, labels, source_id, 11 more } A moderation label or decision from an automated enforcement system or manual review workflow. Do not send user_id; use source_type and source_id for attribution.
A moderation label or decision from an automated enforcement system or manual review workflow. Do not send user_id; use source_type and source_id for attribution.
Stable, low-cardinality product action name. Use snake_case and put dynamic values in typed fields, content, resources_used, or metadata.
One or more label categories supplied with the report or moderation decision.
Stable identifier within source_type. Examples: moderator@example.com or 550e8400-e29b-41d4-a716-446655440000 for expert_labeler or human_moderator, automated_review_v2026_06_04 for automation, or <vendor_name>-v2.1 for vendor.
source_type: "human_moderator" or "expert_labeler" or "automation" or "vendor"Coarse attribution category for the moderation decision source. Supported values: human_moderator (a human reviewer in your moderation workflow), expert_labeler (an expert human labeler or specialist reviewer), automation (an automated model, rules engine, or enforcement workflow), or vendor (an external review or moderation provider).
Coarse attribution category for the moderation decision source. Supported values: human_moderator (a human reviewer in your moderation workflow), expert_labeler (an expert human labeler or specialist reviewer), automation (an automated model, rules engine, or enforcement workflow), or vendor (an external review or moderation provider).
The time the event occurred in your system, as an ISO 8601 datetime string.
client_info: optional object { ip } Client context observed by your backend for the user action that triggered the event.
Client context observed by your backend for the user action that triggered the event.
content: optional array of object { text, type, key } or object { source, type, key } User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
Your stable identifier for the content involved in this event, such as a message, listing, page, post, profile, or uploaded media item.
Optional caller-provided key used to make retries of this individual event idempotent. Reuse the same key only for retries of the same logical event.
metadata: optional map[string or number or boolean or array of string or number or boolean]Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
resources_used: optional array of object { namespace, type, value } or object { type, value } Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
EntityIDResource object { namespace, type, value } Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
object { type, value } Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
array of object { event_name, target_user_id, timestamp, 8 more } or object { content, event_name, timestamp, 7 more } or object { content, event_name, product, 8 more } or 4 more
UserContact object { event_name, target_user_id, timestamp, 8 more } A user contacts, transacts with, or otherwise interacts with another user.
A user contacts, transacts with, or otherwise interacts with another user.
Stable, low-cardinality product action name. Use snake_case and put dynamic values in typed fields, content, resources_used, or metadata.
Your stable canonical identifier for the other user in a user-to-user interaction.
The time the event occurred in your system, as an ISO 8601 datetime string.
client_info: optional object { ip } Client context observed by your backend for the user action that triggered the event.
Client context observed by your backend for the user action that triggered the event.
content: optional array of object { text, type, key } or object { source, type, key } User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
Your stable identifier for the content involved in this event, such as a message, listing, page, post, profile, or uploaded media item.
Optional caller-provided key used to make retries of this individual event idempotent. Reuse the same key only for retries of the same logical event.
metadata: optional map[string or number or boolean or array of string or number or boolean]Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
resources_used: optional array of object { namespace, type, value } or object { type, value } Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
EntityIDResource object { namespace, type, value } Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
object { type, value } Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
ContentUploaded object { content, event_name, timestamp, 7 more } A user posts, uploads, publishes, edits, or replaces content.
A user posts, uploads, publishes, edits, or replaces content.
content: array of object { text, type, key } or object { source, type, key } User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
Stable, low-cardinality product action name. Use snake_case and put dynamic values in typed fields, content, resources_used, or metadata.
The time the event occurred in your system, as an ISO 8601 datetime string.
client_info: optional object { ip } Client context observed by your backend for the user action that triggered the event.
Client context observed by your backend for the user action that triggered the event.
Your stable identifier for the content involved in this event, such as a message, listing, page, post, profile, or uploaded media item.
Optional caller-provided key used to make retries of this individual event idempotent. Reuse the same key only for retries of the same logical event.
metadata: optional map[string or number or boolean or array of string or number or boolean]Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
resources_used: optional array of object { namespace, type, value } or object { type, value } Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
EntityIDResource object { namespace, type, value } Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
object { type, value } Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
ProductChanged object { content, event_name, product, 8 more } A product listing is created, updated, or has a discount added.
A product listing is created, updated, or has a discount added.
content: array of object { text, type, key } or object { source, type, key } User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
product: object { price, discounted_price, shipping_info } Commerce details for the product involved in this event.
Commerce details for the product involved in this event.
The time the event occurred in your system, as an ISO 8601 datetime string.
client_info: optional object { ip } Client context observed by your backend for the user action that triggered the event.
Client context observed by your backend for the user action that triggered the event.
Your stable identifier for the content involved in this event, such as a message, listing, page, post, profile, or uploaded media item.
Optional caller-provided key used to make retries of this individual event idempotent. Reuse the same key only for retries of the same logical event.
metadata: optional map[string or number or boolean or array of string or number or boolean]Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
resources_used: optional array of object { namespace, type, value } or object { type, value } Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
EntityIDResource object { namespace, type, value } Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
object { type, value } Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
CreateAccount object { event_name, timestamp, type, 7 more } A user or account is created.
A user or account is created.
Stable, low-cardinality product action name. Use snake_case and put dynamic values in typed fields, content, resources_used, or metadata.
The time the event occurred in your system, as an ISO 8601 datetime string.
client_info: optional object { ip } Client context observed by your backend for the user action that triggered the event.
Client context observed by your backend for the user action that triggered the event.
content: optional array of object { text, type, key } or object { source, type, key } User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
Your stable identifier for the content involved in this event, such as a message, listing, page, post, profile, or uploaded media item.
Optional caller-provided key used to make retries of this individual event idempotent. Reuse the same key only for retries of the same logical event.
metadata: optional map[string or number or boolean or array of string or number or boolean]Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
resources_used: optional array of object { namespace, type, value } or object { type, value } Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
EntityIDResource object { namespace, type, value } Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
object { type, value } Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
UpdateAccount object { event_name, timestamp, type, 7 more } A user or account profile, contact detail, payment detail, or public bio changes.
A user or account profile, contact detail, payment detail, or public bio changes.
Stable, low-cardinality product action name. Use snake_case and put dynamic values in typed fields, content, resources_used, or metadata.
The time the event occurred in your system, as an ISO 8601 datetime string.
client_info: optional object { ip } Client context observed by your backend for the user action that triggered the event.
Client context observed by your backend for the user action that triggered the event.
content: optional array of object { text, type, key } or object { source, type, key } User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
Your stable identifier for the content involved in this event, such as a message, listing, page, post, profile, or uploaded media item.
Optional caller-provided key used to make retries of this individual event idempotent. Reuse the same key only for retries of the same logical event.
metadata: optional map[string or number or boolean or array of string or number or boolean]Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
resources_used: optional array of object { namespace, type, value } or object { type, value } Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
EntityIDResource object { namespace, type, value } Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
object { type, value } Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
UserReport object { event_name, labels, timestamp, 10 more } A user-submitted report. Use user_id for the reporter. Include target_user_id when a user is reported, target_content_id when content is reported, and both when the report is about content associated with a user. Use content and content_id for the report itself.
A user-submitted report. Use user_id for the reporter. Include target_user_id when a user is reported, target_content_id when content is reported, and both when the report is about content associated with a user. Use content and content_id for the report itself.
Stable, low-cardinality product action name. Use snake_case and put dynamic values in typed fields, content, resources_used, or metadata.
One or more label categories supplied with the report or moderation decision.
The time the event occurred in your system, as an ISO 8601 datetime string.
client_info: optional object { ip } Client context observed by your backend for the user action that triggered the event.
Client context observed by your backend for the user action that triggered the event.
content: optional array of object { text, type, key } or object { source, type, key } User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
Your stable identifier for the content involved in this event, such as a message, listing, page, post, profile, or uploaded media item.
Optional caller-provided key used to make retries of this individual event idempotent. Reuse the same key only for retries of the same logical event.
metadata: optional map[string or number or boolean or array of string or number or boolean]Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
resources_used: optional array of object { namespace, type, value } or object { type, value } Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
EntityIDResource object { namespace, type, value } Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
object { type, value } Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
ModerationDecision object { event_name, labels, source_id, 11 more } A moderation label or decision from an automated enforcement system or manual review workflow. Do not send user_id; use source_type and source_id for attribution.
A moderation label or decision from an automated enforcement system or manual review workflow. Do not send user_id; use source_type and source_id for attribution.
Stable, low-cardinality product action name. Use snake_case and put dynamic values in typed fields, content, resources_used, or metadata.
One or more label categories supplied with the report or moderation decision.
Stable identifier within source_type. Examples: moderator@example.com or 550e8400-e29b-41d4-a716-446655440000 for expert_labeler or human_moderator, automated_review_v2026_06_04 for automation, or <vendor_name>-v2.1 for vendor.
source_type: "human_moderator" or "expert_labeler" or "automation" or "vendor"Coarse attribution category for the moderation decision source. Supported values: human_moderator (a human reviewer in your moderation workflow), expert_labeler (an expert human labeler or specialist reviewer), automation (an automated model, rules engine, or enforcement workflow), or vendor (an external review or moderation provider).
Coarse attribution category for the moderation decision source. Supported values: human_moderator (a human reviewer in your moderation workflow), expert_labeler (an expert human labeler or specialist reviewer), automation (an automated model, rules engine, or enforcement workflow), or vendor (an external review or moderation provider).
The time the event occurred in your system, as an ISO 8601 datetime string.
client_info: optional object { ip } Client context observed by your backend for the user action that triggered the event.
Client context observed by your backend for the user action that triggered the event.
content: optional array of object { text, type, key } or object { source, type, key } User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
User-authored or user-uploaded content parts. Use this for message bodies, bios, listing text, image URLs, and similar content SafetyKit should compare or analyze.
Your stable identifier for the content involved in this event, such as a message, listing, page, post, profile, or uploaded media item.
Optional caller-provided key used to make retries of this individual event idempotent. Reuse the same key only for retries of the same logical event.
metadata: optional map[string or number or boolean or array of string or number or boolean]Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
Non-PII product context for filtering, segmentation, and debugging. Values may be strings, numbers, booleans, or arrays of those scalar values.
resources_used: optional array of object { namespace, type, value } or object { type, value } Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
Reusable resources observed during the event. Use this for emails, phone numbers, names, addresses, social handles, URLs, payment identifiers, caller-defined ids, or similar identifiers.
EntityIDResource object { namespace, type, value } Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
Caller-defined stable entity identifier resource. This is equivalent to an id resource value of urlEncode(namespace) + ’/’ + urlEncode(value).
object { type, value } Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
Real-world or account resource used during the event, such as an email, phone number, address, URL, social handle, or payment identifier.
Queue event for async ingest (Beta)
curl https://api.safetykit.com/v1/async/events \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $SAFETYKIT_API_KEY" \
-d '{
"event_name": "message_sent",
"target_user_id": "987654321",
"timestamp": "2026-05-21T00:15:15.000Z",
"type": "user_contact",
"user_id": "123456789",
"client_info": {
"ip": "203.0.113.7"
},
"content_id": "message_abc123",
"idempotency_key": "event_123_retry_key",
"metadata": {
"conversation_id": "conversation_789",
"channel": "marketplace_dm"
}
}'{
"status": "queued",
"queued_events": 1
}{
"status": "queued",
"queued_events": 2
}Returns Examples
{
"status": "queued",
"queued_events": 1
}{
"status": "queued",
"queued_events": 2
}