https://<location-base>/<private-tx-key>/<route>; the Private TX key goes in the path or in Authorization: Bearer, exactly as for other Bifrost routes.
Routes
/hofund picks the operation from the JSON-RPC method. The lane routes fix the lane in the URL and accept no query string. A lane never falls back to another lane.
Request contract
POSTwithcontent-type: application/json(unified route and lane routes).- Body at most 64 KiB.
- The envelope is exactly
{ "jsonrpc": "2.0", "id", "method", "params" }.idis a string or number, nevernull; unknown or duplicate keys are rejected; a JSON array (batch) is rejected with-32600 JSON-RPC request batching is not supported. - Every transaction is canonical, padded, standard base64 of a fully signed transaction, at most 1232 bytes decoded. Durable-nonce transactions and duplicate signatures are rejected.
- Selectors on
/hofund:?swqos-only=trueor?mev-protect=true(mutually exclusive), or the JSON selector{"mevProtect":true}described per method. Supplying both a query and a body selector is rejected. - Exact retries of the same body return the stored prior outcome and never dispatch again. Sending the same signed transaction through a different lane fails with
409,-32005 transaction signature is already reserved.
Response contract
Success is HTTP200 with result. Two receipt headers accompany submissions:
A JSON-RPC error carries a machine-readable subcode:
data.kind is always present; data.field when a specific field is at fault.
Error codes
Bifrost gateway errors (JSON-RPC envelope,id echoed when parseable):
Hofund errors:
Common
-32602 messages: transaction exceeds 1232 bytes, transaction must use canonical padded base64, contains duplicate transaction, transaction count exceeds 25, sendBundle transaction count exceeds 4, Thor tip is below the configured floor (kind: tip_too_low), durable nonce is not supported, minContextSlot is unsupported and is not enforced by Hofund sender rails.