---
title: "Invite a member to enrol a signing key"
method: POST
path: "/v1/multisig-wallets/{walletId}/invitations"
tags: ["Multisig Wallets"]
---

# Invite a member to enrol a signing key

`POST /v1/multisig-wallets/{walletId}/invitations`

## Request

- Base URL: `https://api.prod.keyban.io`
- URL: `https://api.prod.keyban.io/v1/multisig-wallets/{walletId}/invitations`
- Auth: one of:
  - API key in header `X-Api-Key`
  - `bearer` (a scheme the document does not define)

Ask an organization member to hold one of the treasury signing keys, and email them about it. The invitation is a request, not a credential: it grants nothing, and the invitee still enrols under their own session and still gets validated out of band by a peer. Only an existing `admin` or `owner` can be invited — anyone else has no session to enrol with, so their invitation could never be honoured.

## Path parameters

- `walletId` string, uuid, required

## Request body

- InviteMultisigSignerDto
  - `email` string, email, required: Email of the organization member to invite. Must match an existing `admin` or `owner` of the organization: enrolment is the invitee’s own authenticated call, so anyone else would be handed an invitation they could never complete.

## Response `201`

Invitation recorded, and emailed to the member

- MultisigSignerInvitationDtoOutput
  - `id` string, uuid, required: Entity UUID
  - `createdAt` string, date-time, required: Creation date (ISO 8601)
  - `updatedAt` string, date-time, required: Last update date (ISO 8601)
  - `user` object, nullable, required: Organization member holding the TSS signing key. Null only when the user reference could not be populated.
    - `id` string, uuid, required: User ID of the signer.
    - `name` string, required: Display name of the signer, as set on their user profile.
    - `email` string, email, required: Email address of the signer.
    - `image` string, nullable, required: Avatar URL of the signer (from their sign-in provider); null without one.
  - `consumedAt` string, date-time, nullable, required: When the invitee enrolled a signing key, which closes the invitation. Null while it still stands. Consumed invitations are kept and still listed: they are the trace of who was asked to hold a key.

## Other responses

- `400`: The email matches no `admin` or `owner` of the organization — invite them to the organization first
- `403`: Session-authenticated user required
- `404`: Multisig wallet not found
- `409`: That member already has a pending invitation, or is already a signer of this treasury

---

[API](https://skmtc.dev/keyban/apis/keyban-rest-apis.md) · [All operations](https://skmtc.dev/keyban/apis/keyban-rest-apis/llms.txt) · [OpenAPI document](https://skmtc.dev/keyban/apis/keyban-rest-apis/revisions/0bb79a1da961?raw)
