Skip to content

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.

vaultId
required
string
object
target_tier

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.

string
Allowed values: hosted customer_tee self

Rotation started.

Acknowledgement of an asynchronous operation. Poll the resource for progress.

object
id
string
status
string

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
error
required
string
code
required

Stable machine slug (invalid_request, unauthorized, forbidden, not_found, conflict, rate_limited); a refused sign names the reason in the message

string
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
error
required
string
code
required

Stable machine slug (invalid_request, unauthorized, forbidden, not_found, conflict, rate_limited); a refused sign names the reason in the message

string
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
error
required
string
code
required

Stable machine slug (invalid_request, unauthorized, forbidden, not_found, conflict, rate_limited); a refused sign names the reason in the message

string
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
error
required
string
code
required

Stable machine slug (invalid_request, unauthorized, forbidden, not_found, conflict, rate_limited); a refused sign names the reason in the message

string
Example
{
"error": "vault is not active",
"code": "conflict"
}