---
title: "Listar mensagens da conversa"
method: GET
path: "/v1/conversations/{conversationId}/messages"
tags: ["Conversas"]
---

# Listar mensagens da conversa

`GET /v1/conversations/{conversationId}/messages`

## Request

- Base URL: `https://api.ararahq.com`
- URL: `https://api.ararahq.com/v1/conversations/{conversationId}/messages`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/ararahq/apis/ararahq-api/docs/v1/conversations/:conversationId/messages/get.ts> (a function with typed inputs; its response is checked against the schema)

`page=0` traz as mais recentes; dentro da página a ordem é cronológica.
Permissão: `ADMIN`.

## Path parameters

- `conversationId` string, uuid, required

## Query parameters

- `page` integer
- `size` integer

## Response `200`

Página de mensagens

- ConversationMessagesResponse
  - `content` ConversationMessage[], required
    - `id` string, nullable
    - `direction` 'INBOUND' | 'OUTBOUND'
    - `body` string, nullable
    - `status` string
    - `reason` string, nullable
    - `sender` string
    - `receiver` string
    - `messageType` string, nullable
    - `createdAt` string, date-time, nullable
    - `mediaUrl` string, nullable
    - `mediaContentType` string, nullable
    - `mediaSummary` string, nullable
  - `page` integer, required
  - `size` integer, required
  - `totalElements` integer, required
  - `totalPages` integer, required

## Other responses

- `401`: Chave inexistente, revogada, expirada, com prefixo errado (`ara_` sem `ara_live_`) ou vinda de IP fora da allowlist. O corpo é o JSON padrão do Spring, sem `error.code`.
- `403`: Dois casos, com corpos diferentes: - Autenticação: header `Authorization` ausente, Bearer que não começa com `ara_`, chave sem a permissão da rota ou rota que não aceita chave de API. Corpo no formato padrão do Spring, sem `error.code`. - Regra de negócio, no formato `{ "error": { ... } }`: `PLAN_FEATURE_LOCKED`, `PLAN_LIMIT_REACHED`, `ACCOUNT_NOT_ACTIVATED`, `NO_DEDICATED_NUMBER`, `ORGANIZATION_SUSPENDED`, `NUMBER_BLOCKED`, `FRAUD_SUSPECTED`, `RESOURCE_FORBIDDEN`, `VIEWER_READ_ONLY`.
- `404`: Conversa não encontrada (sem corpo).
- `429`: `RATE_LIMIT_EXCEEDED`: limite geral da API (1.200 leituras ou 3.000 escritas por minuto, por usuário da chave).

## Changes

- **2026-10-12** `d576cd28afc0`: 3 info
  - api tag `Conversas` added
  - api tag `conversations` removed
  - added the non-success response with the status `429`
- **2026-09-15** `372d8c2e735d`: 8 breaking, 2 warning, 7 info
  - the response's body type changed from `object` to no type for status `403`
  - removed the media type `application/json` for the response with the status `404`
  - the response property `content/items/id` became nullable for the status `200`
  - the response property `error` became optional for the status `401`
  - …13 more
- **2026-05-25** `4e426b85f784`: 2 warning, 11 info
  - for the `query` request parameter `page`, the min was set to `0.00`
  - removed the optional property `data` from the response with the `200` status
  - api operation id `getConversationMessages` removed and replaced with `listConversationMessages`
  - api tag `conversations` added
  - …9 more

[Operation history](https://skmtc.dev/ararahq/apis/ararahq-api/changes/v1/conversations/:conversationId/messages/get.md)

---

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