---
title: "Send an encrypted message"
method: PUT
path: "/messages"
tags: ["Messaging"]
---

# Send an encrypted message

`PUT /messages`

Sends an encrypted envelope to a recipient's mailbox on the store-and-forward relay. The server never sees plaintext; body carries the ciphertext and signal carries the Signal Protocol key-agreement headers.

## Request body

- object
  - `body` string, required — Base64-encoded Signal ciphertext payload.
  - `contentHint` string — Optional Signal content hint (e.g. DEFAULT, RESENDABLE, IMPLICIT).
  - `deviceId` integer — Sending device id for multi-device Signal sessions.
  - `from` string, required — Sender address (cryptoId or @handle).
  - `signal` object — Optional Signal Protocol header metadata (X3DH ephemeral keys, Double Ratchet counters, Sender Key rotation markers).
  - `to` string, required — Recipient address (cryptoId or @handle; @handles are resolved to a cryptoId mailbox).
  - `type` string, required — Signal message type: CIPHERTEXT or PREKEY_BUNDLE.

## Response `200`

OK

- object

---

[API](https://skmtc.net/tiny/apis/tiny-place-network-api.md) · [All operations](https://skmtc.net/tiny/apis/tiny-place-network-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tiny/tiny-place-network-api/versions/fb85a82845ac/schema)
