---
title: "DeriveContextHash"
method: POST
path: "/v2/vaults/{vault_id}/wallets/{wallet_id}:deriveContextHash"
tags: ["Wallets"]
---

# DeriveContextHash

`POST /v2/vaults/{vault_id}/wallets/{wallet_id}:deriveContextHash`

## Request

- Base URL: `https://api.utila.io`
- URL: `https://api.utila.io/v2/vaults/{vault_id}/wallets/{wallet_id}:deriveContextHash`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/utila/apis/utila-api/docs/v2/vaults/:vault_id/wallets/:wallet_id:deriveContextHash/post.ts> (a function with typed inputs; its response is checked against the schema)

Derive a deterministic 32-byte value bound to (wallet main address,
network, application, context). The derivation is stateless: the same
inputs always yield the same output (so it can be re-derived later), and
changing any input produces an independent, unpredictable output. This
value should not be relied on for long-term confidentiality.

Callable by scoped users, limited to wallets within their scope.

## Path parameters

- `vault_id` string, required
- `wallet_id` string, required

## Request body

- WalletsDeriveContextHashBody
  - `network` string, required: The network the derivation is bound to. Format: `networks/{network_id}`
  - `application` string, required: Application domain tag used for domain separation, e.g. "babylon-btc-vault".
  - `context` string, required: Application-supplied value that participates in domain separation.

## Response `200`

A successful response.

- V2DeriveContextHashResponse
  - `contextHash` string, byte: The derived 32-byte value.

## Changes

- **2026-11-03** `c4a910d79740`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/utila/apis/utila-api/changes/v2/vaults/:vault_id/wallets/:wallet_id:deriveContextHash/post.md)

---

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