---
title: "Upload cross-signing signatures."
method: POST
path: "/_matrix/client/v3/keys/signatures/upload"
tags: ["End-to-end encryption"]
---

# Upload cross-signing signatures.

`POST /_matrix/client/v3/keys/signatures/upload`

## Request

- Base URL: `https://matrix.org`
- URL: `https://matrix.org/_matrix/client/v3/keys/signatures/upload`
- Auth: one of:
  - API key in query parameter `access_token`
  - HTTP bearer
- TypeScript: <https://skmtc.dev/matrix/apis/matrix-client-server-api/docs/_matrix/client/v3/keys/signatures/upload/post.ts> (a function with typed inputs; its response is checked against the schema)

Publishes cross-signing signatures for the user.

The signed JSON object must match the key previously uploaded or
retrieved for the given key ID, with the exception of the `signatures`
property, which contains the new signature(s) to add.

## Request body

- object: A map of user ID to a map of key ID to signed JSON object.

## Response `200`

The provided signatures were processed.

- object
  - `failures` object: A map from user ID to key ID to an error for any signatures that failed. If a signature was invalid, the `errcode` will be set to `M_INVALID_SIGNATURE`.

---

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