Submit an event for asynchronous rule evaluation. The idempotency_key ensures each event is processed at most once per program. Existing participants are automatically enrolled in the target program if not already members (across all identity paths). Inactive enrollments (FROZEN/LOCKED/CLOSED) are reactivated. The on_unknown_participant setting controls creation of new participants only — it does not affect enrollment of existing ones. Business validation (program existence) happens asynchronously; subscribe to event.failed webhooks for error notification. The participant_id field may be null in the response when only external_id is provided. Note: the returned event_id is provisional — it is generated before processing and may not match the canonical DB row ID when a duplicate idempotency_key resolves to an existing event. If async validation fails (e.g. invalid program_id), the ID may not resolve via GET /v1/events/; the event.failed webhook payload carries the ID for correlation.
200 OK immediately with the event in PENDING status. A worker picks up the event, evaluates all matching rules, and executes their actions asynchronously.
The idempotency_key is required and scoped per program. Submitting the same key with an identical payload returns the original event without reprocessing. Submitting the same key with a different payload returns 409 Conflict (idempotency_conflict). Use deterministic keys like order-12345-completed, not random UUIDs.
If the participant doesn’t exist yet and the program’s on_unknown_participant is CREATE, Scrip creates the participant and processes the event in one step. Existing participants are automatically enrolled in the target program if not already members. Inactive enrollments (FROZEN, LOCKED, or CLOSED) are reactivated. The on_unknown_participant setting controls creation of new participants only — it does not affect enrollment of existing ones.
API key passed in the X-API-Key header.
Event with event_data for rule evaluation
EventData contains the event data used for rule condition evaluation
EventTimestamp is when the event occurred (used for rule evaluation)
"2024-01-15T10:30:00Z"
IdempotencyKey ensures this event is only processed once (must be unique per program)
1 - 255"order-12345-completed"
ProgramID links this event to a specific program for rule evaluation
"550e8400-e29b-41d4-a716-446655440000"
Your system's identifier for the user who triggered this event. Mutually exclusive with participant_id - exactly one must be provided. Auto-creates a participant if this ID doesn't exist (based on the program's on_unknown_participant setting). Existing participants are automatically enrolled in the target program.
1 - 255"user_abc123"
Scrip's UUID for the participant. Mutually exclusive with external_id - exactly one must be provided. The participant is automatically enrolled in the target program if not already a member.
"550e8400-e29b-41d4-a716-446655440000"
RecipientExternalID optionally specifies a different participant (by external ID) to receive rewards. Mutually exclusive with RecipientID. The recipient is automatically enrolled in the target program if not already a member.
1 - 255"user_xyz789"
RecipientID optionally specifies a different participant (by UUID) to receive rewards (e.g., gifting). Mutually exclusive with RecipientExternalID. The recipient is automatically enrolled in the target program if not already a member.
"550e8400-e29b-41d4-a716-446655440001"
Event accepted for async processing (new or duplicate)
When the event occurred (from the ingestion request)
Your system's identifier for the user, if provided
Unique identifier for the created event
Client-provided unique key for deduplication
Participant UUID. May be null if only external_id was provided (resolution may be deferred to async processing).
Program the event was ingested into
Processing status (PENDING on initial ingestion)