---
title: "Pin a chat message on behalf of a streamer. Requires 'message.pin' permission. Creates a place.stream.chat.pinnedRecord in the streamer's repo, replacing any existing pin."
method: POST
path: "/xrpc/place.stream.moderation.createPin"
tags: ["place.stream.moderation"]
---

# Pin a chat message on behalf of a streamer. Requires 'message.pin' permission. Creates a place.stream.chat.pinnedRecord in the streamer's repo, replacing any existing pin.

`POST /xrpc/place.stream.moderation.createPin`

## Request body

- object
  - `streamer` string, did, required — The DID of the streamer.
  - `messageUri` string, uri, required — The AT-URI of the chat message to pin.
  - `expiresAt` string, date-time — Optional expiration time for this pin.

## Response `200`

Success

- object
  - `uri` string, uri, required — The AT-URI of the created pinned record.
  - `cid` string, cid, required — The CID of the created pinned record.

## Other responses

- `400` — Bad Request

## Changes

- **2026-04-20** `3353f5f6354a` — 1 info
  - endpoint added
- **2026-04-20** `f6e6f5a5a3cb` — 1 breaking
  - api path removed without deprecation
- **2026-03-20** `11c342fdc5d3` — 1 info
  - endpoint added
- **2026-01-21** `b21cd7605630` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/streamplace/apis/generated-lexicon-api-schema/changes/xrpc/place.stream.moderation.createPin/post.md)

---

[API](https://skmtc.dev/streamplace/apis/generated-lexicon-api-schema.md) · [All operations](https://skmtc.dev/streamplace/apis/generated-lexicon-api-schema/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/streamplace/generated-lexicon-api-schema/revisions/8e2ce7f5d85b/schema)
