Skip to main content
GET
/
v1
/
events
/
by-key
Get event by idempotency key
curl --request GET \
  --url https://api.scrip.dev/v1/events/by-key \
  --header 'X-API-Key: <api-key>'
{
  "created_at": "2024-01-15T10:30:00Z",
  "error_message": "rule condition evaluation failed",
  "event_data": {},
  "event_timestamp": "2024-01-15T10:30:00Z",
  "event_type": "EXTERNAL",
  "external_id": "user_abc123",
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "idempotency_key": "order-12345-completed",
  "participant_id": "550e8400-e29b-41d4-a716-446655440002",
  "processed_at": "2024-01-15T10:30:02Z",
  "program_id": "550e8400-e29b-41d4-a716-446655440001",
  "received_at": "2024-01-15T10:30:01Z",
  "recipient_id": "550e8400-e29b-41d4-a716-446655440003",
  "rule_evaluations": [
    {
      "created_at": "2024-01-15T10:30:00Z",
      "error_message": "condition evaluation failed",
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "reason": "OUTSIDE_TIME_WINDOW",
      "rule_history_id": "550e8400-e29b-41d4-a716-446655440003",
      "rule_id": "550e8400-e29b-41d4-a716-446655440001",
      "rule_name": "Welcome Bonus",
      "status": "SUCCESS",
      "stopped_by_rule_id": "550e8400-e29b-41d4-a716-446655440002"
    }
  ],
  "status": "COMPLETED",
  "updated_at": "2024-01-15T10:30:00Z"
}
Looks up an event by its idempotency_key and program_id. Both are required as query parameters because idempotency keys are scoped per program. This is the preferred lookup method when you have the key you used at ingestion time but not the event ID. It returns the same event object as the get-by-ID endpoint, including processing status and rule evaluation results.
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.

Query Parameters

program_id
string<uuid>
required

Program ID

idempotency_key
string
required

Idempotency key

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_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[]

RuleEvaluations lists all rules that were evaluated for this event and their outcomes

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"