---
title: "Commit a share refresh"
method: POST
path: "/v1/keys/{key_id}/tss/refresh/commit"
tags: ["Key Custody"]
---

# Commit a share refresh

`POST /v1/keys/{key_id}/tss/refresh/commit`

## Request

- Base URL: `https://api.1claw.co`
- URL: `https://api.1claw.co/v1/keys/{key_id}/tss/refresh/commit`
- Auth: HTTP bearer

One transaction: requires a passkey wrap of the new device share, then moves
the key onto the new generation (and kit coverage) and deletes every old
wrap, runtime holder wraps included (re-provision runtimes after). Audited
`tss_key.resharded`.

## Path parameters

- `key_id` string, uuid, required

## Request body

- object
  - `generation` integer, required
  - `kit_group_public_key` string, required: Hex group public key of the new kit the owner saved.
  - `kit_proof` string, required: Base64 Schnorr proof of possession of the new kit's share 3 for `generation` (`@1claw/tss-wasm` `kit_share_proof`). The group key is unchanged by a refresh, so only this proof tells the new kit from the old one. Missing or not matching: 400.

## Response `200`

Committed; the key's backup state

## Other responses

- `400`: Invalid request
- `404`: Resource not found
- `409`: Resource already exists or conflict

---

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