---
title: "Get messages from multiple chats in bulk across the agency's creators (POST batch)"
method: POST
path: "/agencies/chats/messages/batch"
---

# Get messages from multiple chats in bulk across the agency's creators (POST batch)

`POST /agencies/chats/messages/batch`

Returns the most recent messages for chats grouped by creator, across the creators the authenticated user's agency manages, in a single request.

This collapses the outer per-creator fan-out: instead of one batch call per managed creator (`POST /creators/{creatorUserUuid}/chats/messages/batch`), agencies send one request grouping chat UUIDs under each creator. Each creator group takes the same `chatUuids`, `sinceMessageUuid` and `limit` fields as the per-creator batch, so per-key behaviour is identical — just add the creator dimension.

Per-creator and per-chat errors are reported inside the 200 response body, so a single forbidden/missing creator or chat never collapses the whole request. A creator the agency does not manage is returned as `{ "error": "forbidden" | "not_found" }` at the creator level.

<Note>Maximum 50 chat UUIDs in total across all creators, and 25 creators per request.</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>
<Info>Requires: Agency admin access</Info>

## Headers

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

## Request body

- object
  - `creators` object[], required — Per-creator groups of chat UUIDs (1-25 creators)
    - `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 after this message's publish date in each chat
    - `limit` integer — Maximum messages to return per chat (1-50, default: 20)
    - `creatorUserUuid` string, uuid, required — UUID of a creator the agency manages

## Response `200`

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

- object
  - `byCreator` object, required — Map of input creator UUID to its per-chat messages, or a creator-level error (forbidden/not_found).

## Other responses

- `400` — Bad Request - API version not supported OR validation failed (dates, sources, cursor, pagination)
- `401` — Unauthorized Response
- `403` — Unauthorized Response
- `410` — API version no longer supported (sunset)
- `429` — Too many requests - rate limit exceeded

---

[API](https://skmtc.net/fanvue/apis/fanvue-api.md) · [All operations](https://skmtc.net/fanvue/apis/fanvue-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/fanvue/fanvue-api/revisions/c5ddcd5c7e72/schema)
