Mint a Handoff Key
kygit-handoff (design D2/D3/D10). Mints a single-use bearer Handoff Key that bridges to a principal envelope: the recipient becomes an org member at the minter's role (or a narrower requested role) the moment the key is claimed. The kgh1_<handoff_id||master_secret> key is assembled entirely CLIENT-SIDE — handoff_id is client-generated (it salts the HKDF derivation of auth_secret/wrap_key) and REQUIRED in the body; the gateway never sees the assembled key, only the resulting auth_hash and sealed_envelope. Auth: principalAuth (control-plane session, SIWX wallet, or admin key) at handoff.mint (developer+, no grant key — a grant key is never a member, and a handoff confers membership). Never lifecycle-gated. Bounds (hard-coded): 20 open handoffs per vault, 100 mints per org per UTC day, TTL 60-86400s (default 3600s). vault-multi-writer rev 47: a claimed handoff now ALSO confers write authority on the vault (the blast-radius warning names it: "...becomes an owner of this org and a writer of this vault, permanently..."), so minting requires writer_admission_grant and the minter must currently be an active, non-gateway-blocked writer — refused 403 HANDOFF_MINT_REQUIRES_WRITER otherwise.
Request
- Base URL: https://api.run402.com
- URL: https://api.run402.com/vaults/v1/{vault_id}/handoffs
- Auth: one of:
- HTTP bearer
- API key in header SIGN-IN-WITH-X
- API key in header x-admin-key
Path parameters
The vault id (src_<32 hex>); the wire field on the response is repo_id.
Headers
SIWX auth header — base64-encoded JSON payload containing a signed CAIP-122 (EIP-4361) message. See https://docs.x402.org/extensions/sign-in-with-x.
Request body
Response
Handoff minted. The Handoff Key itself is assembled and printed exactly once, client-side (the gateway never sees it).
Example response
{
"next_actions": [
{
"method": "POST",
"path": "/tiers/v1/hobby",
"auth": "x402"
}
]
}Changes
No recorded changes to this operation across all 1 revision of this API.