---
title: "Get fan insights in bulk (POST batch)"
method: POST
path: "/insights/fans/batch"
---

# Get fan insights in bulk (POST batch)

`POST /insights/fans/batch`

Returns detailed insights for up to 100 fans in a single request, keyed by the input fan UUID.

This is the high-cap, JSON-body counterpart to `GET /insights/fans` (capped at 20 via query string). It is intended for initial-sync flows that need to hydrate many fans without per-fan round trips.

Per-key errors are reported inside the 200 response body so a single forbidden or missing fan never collapses the whole request — consumers can keep partial results and only retry the failing keys.

Every field carries the same meaning as on `GET /insights/fans/{userUuid}`, including which money fields are net of reversals and which are gross, and the same absence of caching.

<Note>Maximum 100 fan UUIDs per request. Failed keys are reported as `{ "error": "forbidden" | "not_found" | "internal" }`.</Note>

## Headers

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

## Request body

- object
  - `userUuids` string[], required — Array of fan UUIDs to fetch insights for (1-100)

## Response `200`

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

- object — Map of input fan UUID to insights or a per-key error (forbidden, not_found, or internal).

## Other responses

- `400` — Bad Request - API version not supported OR validation failed
- `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` — 7 info
  - added the required property `additionalProperties/anyOf[subschema #1]/spending/lastValidPurchaseAt` to the response with the `200` status
  - added the required property `additionalProperties/anyOf[subschema #1]/spending/sources/additionalProperties/average` to the response with the `200` status
  - added the required property `additionalProperties/anyOf[subschema #1]/spending/sources/additionalProperties/count` to the response with the `200` status
  - added the required property `additionalProperties/anyOf[subschema #1]/spending/sources/additionalProperties/netAverage` to the response with the `200` status
  - …3 more

[Change history](https://skmtc.dev/fanvue/apis/fanvue-api/changes/insights/fans/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/431868e8a264?raw)
