Delegated Proving
POST/prove
Submits a delegated proving request. The prover decrypts ciphertext inside a Trusted Execution Environment, generates the proof(s), and returns the resulting transaction.
ciphertext is a libsodium cryptobox sealed box (key from GET /pubkey, single use) over the following JSON, shown here unencrypted for reference:
{
"broadcast": false,
"payload": {
"type": "authorization",
"authorization": { "...": "a snarkVM Authorization for the execution" },
"fee": { "...": "an optional snarkVM Authorization for the fee; generated automatically if omitted" }
}
}
payload.type selects the workflow:
authorization— the caller already assembled a full snarkVMAuthorization(and optionally a feeAuthorization); the server proves it directly.requests— the caller supplies signedRequests (a root call plus its nested sub-calls, in DFS pre-order — a single call is just a one-element list) and an optional single feeRequest; the server assembles them into anAuthorizationbefore proving.
Set broadcast: true to have the prover submit the resulting transaction to the network on the caller's behalf; the outcome is reported in the response's broadcast_result.
Supersedes the deprecated POST /prove/encrypted (and its POST /prove/authorization alias) and POST /prove/request, which accept the same { key_id, ciphertext } envelope but require the legacy byte-encoded request format instead of JSON.
Request
Responses
- 200
- 400
- 401
- 500
- 503
- 504
Proving request completed
Bad request — invalid ciphertext, malformed request, authorization/execution failure, or (for authorized requests) execution failure.
Unauthorized
Internal server error
Service busy — too many requests, or the request was queued past the queue cap. Retry after the interval in the Retry-After header.
Response Headers
Seconds to wait before retrying.
Proving timed out.