---
title: "Bulk Change Points"
method: POST
path: "/v1/points/{system}/"
tags: ["points"]
---

# Bulk Change Points

`POST /v1/points/{system}/`

## Request

- Base URL: `https://api.monni.fyi` (the document declares no server; this is the origin it was published from)
- URL: `https://api.monni.fyi/v1/points/{system}/`
- Auth: API key in header `X-API-Key`

Bulk change points of multiple users at once.

Takes up to 200 users per request and counts as a single request against your rate limits, so this is the cheapest way to keep a large server in sync. Users whose change failed come back in `failed_users`, the rest still went through.

## Path parameters

- `system` string, required

## Request body

- BulkChangeRequest
  - `changes` UserPointChangeRequest[], required
    - `user` integer, required
    - `mode` 'set' | 'edit', required
    - `amount` integer, required

## Response `200`

Successful Response

- BulkChangeResponse
  - `failed_users` integer[], required

## Other responses

- `401`: Unauthorized. You can't access this point system.
- `422`: Validation Error
- `429`: Out of requests. `X-RateLimit-Bucket` says which limit you hit and `Retry-After` how many seconds to wait. This request was not counted against you.

## Changes

- **2026-09-24** `2ec565e413a7`: 1 info
  - the `error` response's property default value changed from `It seems you can't access this point system` to `This API key can't access this point system.` for the status `401`
- **2026-09-16** `83ac8f547df8`: 2 info
  - added the optional property `detail/items/ctx` to the response with the `422` status
  - added the optional property `detail/items/input` to the response with the `422` status

[Operation history](https://skmtc.dev/monni/apis/monni-api/changes/v1/points/:system/post.md)

---

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