---
title: "Participant messages"
method: GET
path: "/api/v1/initiatives/{id}/participants/{participantId}/messages"
tags: ["Initiatives"]
---

# Participant messages

`GET /api/v1/initiatives/{id}/participants/{participantId}/messages`

## Request

- Base URL: `https://www.useboom.ai`
- URL: `https://www.useboom.ai/api/v1/initiatives/{id}/participants/{participantId}/messages`
- Auth: HTTP bearer

The participant's conversation transcript, in order. Defaults to this initiative only; pass scope="customer" for everything this person ever said to you across initiatives — use that whenever you need to know whether someone answered at all, since a reply lands on whichever initiative was live at the time and is invisible to the others.

## Path parameters

- `id` string, required: Initiative id.
- `participantId` string, required: Participant id, as returned when adding or listing.

## Query parameters

- `scope` 'initiative' | 'customer': initiative (default) = only what was said under this initiative. customer = this person's whole message history across every initiative, each message tagged with the one it belongs to.

## Response `200`

Success

- object
  - `participantId` string, required
  - `phoneNumber` string, nullable, required
  - `channel` string, required
  - `scope` 'initiative' | 'customer', required
  - `data` object[], required
    - `id` string, required
    - `direction` 'outbound' | 'inbound', required
    - `author` 'agent' | 'participant', required
    - `type` 'text' | 'media' | 'template', required
    - `text` string, required
    - `mediaUrl` string, nullable, required
    - `sentAt` string, required: ISO 8601 timestamp.
    - `initiative` object: Which initiative this message was exchanged under. Present only when reading a whole customer history (scope="customer"), where messages from several initiatives interleave.
      - `id` string, nullable, required
      - `name` string, nullable, required
  - `next_cursor` unknown, required

## Other responses

- `400`: Validation failed or the request cannot proceed.
- `401`: Missing, malformed, or revoked API key.
- `404`: The resource does not exist in this organization.
- `409`: Conflicts with the current state (duplicates, wrong lifecycle state).
- `422`: The request is well-formed but semantically invalid.
- `429`: Rate limit exceeded — retry after `Retry-After`.
- `500`: Internal server error.
- `503`: Transient error — retry with a narrower request.

## Changes

- **2026-11-03** `7c7a773b12ce`: 3 info
  - added the new optional `query` request parameter `scope`
  - added the optional property `data/items/initiative` to the response with the `200` status
  - added the required property `scope` to the response with the `200` status

[Operation history](https://skmtc.dev/useboom/apis/boom-api/changes/api/v1/initiatives/:id/participants/:participantId/messages/get.md)

---

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