Skip to main content
The REST API is a JSON mapping of the gRPC API. Both expose the same messages, so every field has one type and two encodings: its protobuf type over gRPC, and the JSON value described below over REST.

JSON conventions

  • Requests and responses use Content-Type: application/json and UTF-8.
  • Responses use lowerCamelCase field names (vaultUuid). Requests also accept the snake_case name (vault_uuid). Unknown request fields are ignored without an error, so a misspelled optional field is read as omitted: for example, a misspelled callbackClientSignerPublicKey sends a transaction or structured message request to the MPCVault app for manual signing.
  • Field availability depends on the endpoint and token access; see SigningRequest field visibility. When an unset field is emitted, a scalar has its zero value ("", "0", false, the first enum value, []), and an unset message or wrapper is null.
  • A field that belongs to a oneof is present only when it is set, so a response contains at most one of the members.
  • Field order is not significant.
  • The OpenAPI schemas list the canonical form: lowerCamelCase names, enum names and decimal strings for 64-bit integers. The other forms in the table below are accepted but not listed.

Types

An enum can gain values. Treat a name you do not recognize as unknown instead of failing.

Field conventions

These conventions hold across the API. A field that follows another rule says so in its description.
  • Timestamps are Unix time in milliseconds, in a 64-bit integer (a decimal string in JSON).
  • UUIDs are hyphenated strings in the form xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
  • Amounts are decimal strings in the unit stated by the field (for example wei, satoshi or lamports), never floating-point numbers. Most transaction request amounts use integer smallest units; Stellar amounts use whole-asset decimal strings. GetBalance returns whole-asset decimal strings across networks. For a request created in the MPCVault app, the stored amount is returned scaled to that unit without rounding, so it can have a fractional part if more precision was entered than the unit has. The stored amount can differ from the amount entered (for example, a Bitcoin send is capped to the value of the first 30 spendable outputs less a reserve for the fee).
  • Addresses use the address format of the field’s network. The signing request payloads state the format of each address field.
  • Hex strings are stated as such in the field description, with or without the 0x prefix as that field specifies.

Encode bytes

For REST fields marked bytes, encode the prepared binary payload or UTF-8 JSON file as standard base64:
Use the output as the field value. The network guide defines the payload contents. See message payloads and the shared signature format.

NetworkInfo

NetworkInfo identifies a network by its protocol family and native network identifier. Exactly one protocol body is selected when the network is known. Movement uses aptos; Sonic SVM uses solana with its own genesis hash. In AptosMessage and SolanaMessage, network is output-only context and can be unset when the historical network is uncertain. It does not modify the signed message or provide replay protection. CreateSigningRequest rejects that field; use the supported payload to select a creation network. Aptos content.chainId is separate signed content and is not filled from network.