Rotate a vault's key shares
POST /vaults/{vaultId}/reshare
Proactively re-randomize the vault’s key shares (a security rotation).
The vault’s public key and every derived address are unchanged — funds
and addresses are unaffected. You may optionally migrate the vault to a
different tier. Asynchronous: returns 202; the vault reads resharing
until it settles, then returns to active.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Request Body
Section titled “Request Body ”object
Where the vault’s keys live and who must authorize a signature.
hosted — XKOVA-operated, gated by your end users’ tokens (embedded wallets).
self — you hold a required share; XKOVA cannot sign without you.
customer_tee — keys run in your own trusted execution environment.
Responses
Section titled “ Responses ”Rotation started.
Acknowledgement of an asynchronous operation. Poll the resource for progress.
object
The request body or parameters failed validation.
Failures return a single human-readable error message; the HTTP status
carries the category (400 validation, 401 auth, 403 refused, 404 missing,
409 conflict, 429 rate limit). When a signing request is refused for a
specific reason, the message names it — for example the amount exceeds a
spend limit, the policy denied the recipient, or the intent signature did
not verify.
object
Stable machine slug (invalid_request, unauthorized, forbidden, not_found, conflict, rate_limited); a refused sign names the reason in the message
Example
{ "error": "amount must be a base-10 integer", "code": "invalid_request"}Missing, malformed, or invalid request signature.
Failures return a single human-readable error message; the HTTP status
carries the category (400 validation, 401 auth, 403 refused, 404 missing,
409 conflict, 429 rate limit). When a signing request is refused for a
specific reason, the message names it — for example the amount exceeds a
spend limit, the policy denied the recipient, or the intent signature did
not verify.
object
Stable machine slug (invalid_request, unauthorized, forbidden, not_found, conflict, rate_limited); a refused sign names the reason in the message
Example
{ "error": "request signature did not verify", "code": "unauthorized"}The resource does not exist (or is not visible to your org).
Failures return a single human-readable error message; the HTTP status
carries the category (400 validation, 401 auth, 403 refused, 404 missing,
409 conflict, 429 rate limit). When a signing request is refused for a
specific reason, the message names it — for example the amount exceeds a
spend limit, the policy denied the recipient, or the intent signature did
not verify.
object
Stable machine slug (invalid_request, unauthorized, forbidden, not_found, conflict, rate_limited); a refused sign names the reason in the message
Example
{ "error": "vault not found", "code": "not_found"}The resource is not in a state that allows this operation.
Failures return a single human-readable error message; the HTTP status
carries the category (400 validation, 401 auth, 403 refused, 404 missing,
409 conflict, 429 rate limit). When a signing request is refused for a
specific reason, the message names it — for example the amount exceeds a
spend limit, the policy denied the recipient, or the intent signature did
not verify.
object
Stable machine slug (invalid_request, unauthorized, forbidden, not_found, conflict, rate_limited); a refused sign names the reason in the message
Example
{ "error": "vault is not active", "code": "conflict"}