---
title: "Get messages from multiple chats in bulk for a creator"
method: POST
path: "/creators/{creatorUserUuid}/chats/messages/batch"
---

# Get messages from multiple chats in bulk for a creator

`POST /creators/{creatorUserUuid}/chats/messages/batch`

## Request

- Base URL: `https://api.fanvue.com`
- URL: `https://api.fanvue.com/creators/{creatorUserUuid}/chats/messages/batch`
- Auth: OAuth 2
  - Authorization code: `https://auth.fanvue.com/oauth2/auth`
  - Token URL: `https://auth.fanvue.com/oauth2/token` scopes: `read:creator`, `read:chat`

Returns the most recent messages for up to 50 chats in a single request for the specified creator, keyed by the input chat UUID (the counterpart user UUID).

This is the bulk counterpart to `GET /creators/{creatorUserUuid}/chats/{userUuid}/messages`. Per-key errors are reported inside the 200 response body so a single unreachable chat never collapses the whole request.

<Note>Maximum 50 chat UUIDs per request. Failed keys are reported as `{ "error": "not_found" }`.</Note>

<Note>Read-only: fetching messages in bulk does not mutate read state — messages are not marked read and `isRead` reflects each message's state at read time.</Note>

<Note>**Direct messages only.** Mass (broadcast) messages are excluded from this endpoint. The per-chat listing endpoints include them interleaved with the 1:1 thread, so the two surfaces legitimately return different messages for the same chat — a message present in a chat listing can be absent here without anything being lost. List broadcasts separately via `GET /creators/{creatorUserUuid}/chats/mass-messages`.</Note>

<Note>**Rate-limit cost.** Each request consumes one rate-limit point per 10 chat UUIDs, rounded up: 1-10 chats cost 1 point, 50 chats cost 5.</Note>

## Path parameters

- `creatorUserUuid` string, uuid, required

## Headers

- `X-Fanvue-API-Version` string, required

## Request body

- object
  - `chatUuids` string[], required: Array of chat UUIDs (counterpart user UUIDs) to fetch messages for (1-50)
  - `sinceMessageUuid` string, uuid: Optional cursor for incremental walks: returns only messages strictly newer than this message in each chat. Anchored on the message, not its timestamp, so a message published in the same instant is not skipped
  - `limit` integer: Maximum messages to return per chat (1-50, default: 20)

## Response `200`

Per-chat messages or error for each requested chat. Always 200 when the request itself is valid, even if every key fails.

- object
  - `byChat` object, required: Map of input chat UUID to messages or a per-key error

## Other responses

- `400`: Bad Request - API version not supported OR validation failed OR invalid UUID
- `401`: Unauthorized Response
- `403`: Unauthorized Response
- `410`: API version no longer supported (sunset)
- `429`: Too many requests - rate limit exceeded

## Changes

- **2026-08-30** `dce5621fe589`: 1 info
  - added the required property `byChat/additionalProperties/anyOf[subschema #1]/messages/items/appUuid` to the response with the `200` status

[Operation history](https://skmtc.dev/fanvue/apis/fanvue-api/changes/creators/:creatorUserUuid/chats/messages/batch/post.md)

---

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