Create a presignature
Pre-computes MPC signing data for faster subsequent transaction signing. Each presignature can only be used once. You can have up to 100 active presignatures per client.
Presignatures currently only support the SECP256K1 curve (EVM, Bitcoin).
ED25519 (Solana) support is coming soon.
Documentation Index
Fetch the complete documentation index at: https://docs.portalhq.io/llms.txt
Use this file to discover all available pages before exploring further.
Authorizations
Client API Key or Client Session Token
Headers
A caller-provided key used for safe retries. Behavior depends on the endpoint:
POST /v1/presign/{curve}withmanaged: true— retrying a completed request with the same key returns the same{id, expiresAt}(200). If the original attempt is still in progress, the retry returns 409 with aRetry-Afterheader; if the original attempt failed before completing, it returns 409 withoutRetry-After(caller should retry with a new key). Reusing a key after the wallet's signing share has changed (for example, after a reshare or recovery) returns 422.POST /v1/sign— only honored for broadcast methods (for exampleeth_sendTransaction,sol_signAndSendTransaction). Supplying the header with a non-broadcast method returns 400. For broadcast methods, retrying a completed request returns 409 (IDEMPOTENT_REQUEST_ALREADY_COMPLETED), and reuse with a different payload returns 422. On 409, the response body does not include the original signing result — the header prevents double-execution, it does not replay the prior response.POST /v1/assets/send— retrying a completed request returns 409 (IDEMPOTENT_REQUEST_ALREADY_COMPLETED), and reuse with a different payload returns 422. On 409, the response body does not include the originaltransactionHash— the header prevents double-submission, it does not replay the prior response.
Client-stored presignature creation does not currently honor this header.
Path Parameters
The elliptic curve to use.
SECP256K1, ED25519 Body
Request body for creating a presignature.
The JSON-serialized MPC share for the wallet.
Unix timestamp for when the presignature expires. Defaults to 7 days from creation. Maximum 365 days.
Set to true to create a Portal-managed presignature, where Portal
stores the encrypted payload and returns only an id. Defaults to
false, which creates a client-stored presignature and returns the
opaque payload as data.
Response
Presignature created successfully
Response containing the created presignature.
Unique identifier for the presignature.
RFC 3339 expiration timestamp.
Base64-encoded opaque presignature payload for client-stored
presignatures. Pass this as the presignature field in signing
requests. Omitted for Portal-managed presignatures.