Skip to main content
GET
Get an event
Returns a single event by ID. The response includes the full payload, processing status, recorded rule-evaluation outcomes, and error details if the event failed. The rule_evaluations array is a recorded outcome trace, not a census of every applicable rule. Rows are returned in the historical set and rule order used for this event. Each row includes its execution-time rule_set_id and a rule_history_id linking to the exact rule version that was active. A condition that cleanly evaluates to false produces no row. After a matching rule executes successfully with stop_after_match: true, later rules in that same set are not reached and produce no row. Processing continues with the next rule set. For failed events, error_message contains the failure reason, and error_code carries a machine-readable code when the failure has one, such as participant_suspended. Events are accepted asynchronously, so a freshly-returned ID may 404 briefly (typically well under a second) while the event is still queued. Poll until it resolves; the ID is durable. The same visibility window applies to the by-key lookup. An event that was rejected during async processing resolves here as status FAILED with an error_code, not as a 404. Evaluations with exact status SKIPPED_ERROR or SKIPPED_TIMEOUT are excluded by default. Pass include_skipped=true to include them. Other recorded skip outcomes, such as budget-exceeded and outside-time-window evaluations, remain included. The flag does not create rows for clean false conditions or rules that were not reached.
For usage patterns and examples, see the Event Processing guide.

Authorizations

X-API-Key
string
header
required

API key passed in the X-API-Key header.

Path Parameters

id
string<uuid>
required

Event ID

Query Parameters

include_skipped
boolean
default:false

Include skipped rule evaluations (SKIPPED_ERROR, SKIPPED_TIMEOUT)

Response

Event details with rule executions

created_at
string<date-time>

When this event was created

Example:

"2024-01-15T10:30:00Z"

error_code
string

Machine-readable failure code for a terminal FAILED event, when one is available (e.g. program_not_found, participant_suspended, participant_inactive). NULL when the event did not fail or the failure carried no stable code.

Example:

"program_not_found"

error_message
string

Error details if the event failed during processing

Example:

"rule condition evaluation failed"

event_data
object

Original event data payload

event_timestamp
string<date-time>

When the event occurred (from the ingestion request)

Example:

"2024-01-15T10:30:00Z"

event_type
string

Event type: EXTERNAL (API-ingested) or SYSTEM (internally generated)

Example:

"EXTERNAL"

external_id
string

Your system's identifier for the participant (the value provided at ingestion)

Example:

"user_abc123"

id
string<uuid>

Unique identifier for this event

Example:

"550e8400-e29b-41d4-a716-446655440000"

idempotency_key
string

Client-provided unique key for deduplication

Example:

"order-12345-completed"

participant_id
string<uuid>

Participant UUID, resolved from external_id if one was provided at ingestion

Example:

"550e8400-e29b-41d4-a716-446655440002"

processed_at
string<date-time>

When the event finished processing (null while pending or processing)

Example:

"2024-01-15T10:30:02Z"

program_id
string<uuid>

Program this event belongs to

Example:

"550e8400-e29b-41d4-a716-446655440001"

received_at
string<date-time>

When Scrip received the event

Example:

"2024-01-15T10:30:01Z"

recipient_id
string<uuid>

Reward recipient UUID, if different from the triggering participant

Example:

"550e8400-e29b-41d4-a716-446655440003"

rule_evaluations
object[]

Recorded rule-evaluation rows for this event. Rules whose conditions cleanly evaluate to false are not recorded; later rules in the same set after a successful stop_after_match are not evaluated or recorded. SKIPPED_ERROR and SKIPPED_TIMEOUT rows are omitted unless include_skipped=true.

status
string

Processing status: PENDING, PROCESSING, COMPLETED, or FAILED

Example:

"COMPLETED"

updated_at
string<date-time>

When this event was last updated

Example:

"2024-01-15T10:30:00Z"