---
title: "List participant events"
method: GET
path: "/v1/participants/{participant_id}/activity/events"
tags: ["Participants"]
---

# List participant events

`GET /v1/participants/{participant_id}/activity/events`

## Request

- Base URL: `https://api.scrip.dev`
- URL: `https://api.scrip.dev/v1/participants/{participant_id}/activity/events`
- Auth: HTTP bearer

Retrieve events for a participant.

## Path parameters

- `participant_id` string, required

## Query parameters

- `limit` integer
- `cursor` string
- `program_id` string, uuid
- `status` 'PENDING' | 'PROCESSING' | 'COMPLETED' | 'FAILED'
- `event_type` 'EXTERNAL' | 'SYSTEM' | 'OPERATIONAL'
- `rule_id` string, uuid
- `created_after` string, date-time
- `created_before` string, date-time
- `occurred_after` string, date-time
- `occurred_before` string, date-time

## Response `200`

List of events

- EventListResponse: One page of events, with the pagination details for the next page.
  - `data` EventResponse[]: The events on this page.
    - `created_at` string, date-time: When this event was created
    - `error_code` string: Why a FAILED event failed, as a code from the Errors page, such as `program_inactive`, `participant_inactive` or `unknown_participant`. Absent when the event did not fail or the failure has no code.
    - `error_message` string: Error details if the event failed during processing
    - `event_data` object: Original event data payload
    - `event_timestamp` string, date-time: When the event occurred (from the ingestion request)
    - `event_type` 'EXTERNAL' | 'SYSTEM' | 'OPERATIONAL': Whether you sent the event or Scrip generated it.
    - `external_id` string: Your system's identifier for the participant (the value provided at ingestion)
    - `id` string, uuid: Unique identifier for this event
    - `idempotency_key` string: Client-provided unique key for deduplication
    - `participant_id` string, uuid: Participant UUID, resolved from external_id if one was provided at ingestion
    - `processed_at` string, date-time: When the event finished processing (null while pending or processing)
    - `program_id` string, uuid: Program this event belongs to
    - `received_at` string, date-time: When Scrip received the event
    - `recipient_id` string, uuid: Recipient participant UUID sent as recipient_id or recipient_external_id; rules read it as recipient.id
    - `status` 'PENDING' | 'PROCESSING' | 'COMPLETED' | 'FAILED': Where the event is in processing.
    - `updated_at` string, date-time: When this event was last updated
  - `pagination` PaginationResponse: Cursor details for a list. `has_more` says whether another page exists, and `next_cursor` is the value to send to get it.
    - `has_more` boolean, required: Whether more results are available beyond this page
    - `next_cursor` string, nullable, required: Cursor to fetch the next page. Null on the last page

## Other responses

- `400`: Invalid query parameters (code: validation_error)
- `401`: The API key is missing or not valid. See [Authentication](https://docs.scrip.dev/authentication).
- `404`: Participant not found (code: participant_not_found)
- `429`: Too many requests. Wait the number of seconds in the `Retry-After` header, then retry. See [Limits and durations](https://docs.scrip.dev/limits#rate-limits).
- `500`: Something failed on Scrip's side. Retry the request, and quote `request_id` if it keeps failing. [Errors](https://docs.scrip.dev/errors) lists every code, and the [API introduction](https://docs.scrip.dev/api-reference/introduction) describes the error format.

---

[API](https://skmtc.dev/scrip/apis/scrip-api.md) · [All operations](https://skmtc.dev/scrip/apis/scrip-api/llms.txt) · [OpenAPI document](https://skmtc.dev/scrip/apis/scrip-api/revisions/c52d35da8d97?raw)
