Skip to main content
POST
/
v0
/
safe
/
rpc
Submit a sponsored UserOperation
curl --request POST \
  --url https://api.sumvin.com/v0/safe/rpc \
  --header 'Content-Type: application/json' \
  --header 'x-sumvin-pat: <api-key>' \
  --data '
{
  "chain_id": 123,
  "user_operation": {},
  "entrypoint": "0x0000000071727De22E5E9d8BAf0edAc6f37da032"
}
'
{
  "_links": {
    "self": {
      "href": "<string>",
      "method": "GET",
      "templated": false,
      "description": "<string>"
    }
  },
  "user_op_hash": "<string>",
  "status": "submitted"
}

Authorizations

x-sumvin-pat
string
header
required

Personal access token issued to the Sumvin CLI. Send it in the x-sumvin-pat header to authenticate as the owning user.

Headers

Idempotency-Key
string | null

Optional idempotency key. Retrying the same request with the same key returns the original cached response and sets X-Idempotent-Replay: true. Reusing a key with a different body returns 409 Conflict.

Maximum string length: 255
x-juno-orgid
string | null

Tenant org ID for multi-tenant auth

x-sumvin-token
string | null
x-sumvin-pat
string | null
x-juno-jwt
string | null
X-Timestamp-Format
string

Controls how timestamp fields are serialized in JSON response bodies.

Default (header omitted or any other value): epoch milliseconds as integers. iso8601: UTC ISO 8601 strings of the form YYYY-MM-DDTHH:MM:SSZ.

Example: with X-Timestamp-Format: iso8601, the field value 1704067200000 becomes "2024-01-01T00:00:00Z".

Affected fields (recursively, in dicts and arrays): any field whose name ends in _at, plus the literal field names timestamp, period_start, and period_end. All other fields are passed through unchanged.

Only iso8601 is recognized. Any other value (or omitting the header) yields the default epoch-ms representation; the server does not reject unknown values, so this is documented as an example rather than an enum to keep generated clients permissive.

Example:

"iso8601"

Body

application/json
chain_id
integer
required

EVM chain ID the UserOperation should run on.

user_operation
User Operation · object
required

Signed ERC-4337 UserOperation, including sender, nonce, callData, gas fields, and signature. Sumvin populates the paymaster fields before forwarding the operation to the bundler.

entrypoint
string
default:0x0000000071727De22E5E9d8BAf0edAc6f37da032

Address of the ERC-4337 EntryPoint contract. Only the canonical v0.7 EntryPoint is supported; it is deployed at this same address on every supported chain.

Response

UserOperation accepted by Sumvin and submitted to the bundler.

HAL navigation links — self and a status poll link.

user_op_hash
string
required

Hash of the submitted UserOperation. Use this to poll for status at GET /v0/safe/rpc/{user_op_hash}/status.

status
string
default:submitted

Lifecycle status at the time of acceptance. Always submitted when the bundler has accepted the UserOperation.