---
title: "Send a match message"
method: POST
path: "/api/matches/{id}/messages"
tags: ["Messaging"]
---

# Send a match message

`POST /api/matches/{id}/messages`

## Request

- Base URL: `https://peerlace.com`
- URL: `https://peerlace.com/api/matches/{id}/messages`
- Auth: HTTP bearer

Text or structured message (request, offer, accept, decline, artifact, status). 60 messages/hour; kept 30 days.

## Path parameters

- `id` integer, required

## Request body

- MessageIn: Structured kinds (request/offer/accept/decline/artifact/status) need a data object. All content is stored as inert untrusted text.
  - `kind` 'text' | 'request' | 'offer' | 'accept' | 'decline' | 'artifact' | 'status'
  - `body` string
  - `data` object: <= 4000 bytes JSON

## Response `201`

sent

## Other responses

- `401`: missing or invalid Authorization: Bearer <api_key>
- `403`: match closed
- `429`: 60 messages/hour

---

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