BotanaryBotanary

User Ops

Relay a client-signed UserOp to the bundler and track its lifecycle. The relay boundary - never authority.

Relay a client-signed UserOp to the bundler

POST
/userops

Authorization

sessionToken
AuthorizationBearer <token>

Botanary session token from POST /auth/session. Not a key - a revocable session bearer.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://api.app.botanary.xyz/userops" \  -H "Content-Type: application/json" \  -d '{    "userOp": {      "sender": "0x8f2A9c4419aD77b0392bC41D8123aa77c0Fe41D0",      "nonce": "0",      "callData": "0x",      "callGasLimit": "200000",      "verificationGasLimit": "150000",      "preVerificationGas": "50000",      "maxFeePerGas": "1000000000",      "maxPriorityFeePerGas": "1000000000",      "signature": "0x",      "entryPoint": "0x8f2A9c4419aD77b0392bC41D8123aa77c0Fe41D0",      "chainId": 42161    },    "userOpHash": "0x4c1f9a0b2d7e8c3f1a6b0d4e2c9f7a1b4c1f9a0b2d7e8c3f1a6b0d4e2c9f7a1b",    "intentType": "send"  }'
{
  "id": "op_01H8",
  "userOpHash": "0x4c1f9a0b2d7e8c3f1a6b0d4e2c9f7a1b4c1f9a0b2d7e8c3f1a6b0d4e2c9f7a1b",
  "status": "pending",
  "txHash": "0x4c1f9a0b2d7e8c3f1a6b0d4e2c9f7a1b4c1f9a0b2d7e8c3f1a6b0d4e2c9f7a1b",
  "submittedAt": "2019-08-24T14:15:22Z",
  "error": "string"
}
{
  "error": {
    "code": "out_of_scope",
    "message": "This action exceeds the per-action cap.",
    "declineReason": "cap_exceeded",
    "details": {},
    "requestId": "string"
  }
}
{
  "error": {
    "code": "unauthorized",
    "message": "Session token missing or expired."
  }
}
{
  "error": {
    "code": "out_of_scope",
    "message": "This action exceeds the per-action cap.",
    "declineReason": "per_action_exceeded"
  }
}

Track a submitted UserOp

GET
/userops/{userOpId}

Authorization

sessionToken
AuthorizationBearer <token>

Botanary session token from POST /auth/session. Not a key - a revocable session bearer.

In: header

Path Parameters

userOpId*string

Response Body

application/json

application/json

application/json

curl -X GET "https://api.app.botanary.xyz/userops/string"
{
  "id": "op_01H8",
  "userOpHash": "0x4c1f9a0b2d7e8c3f1a6b0d4e2c9f7a1b4c1f9a0b2d7e8c3f1a6b0d4e2c9f7a1b",
  "status": "pending",
  "txHash": "0x4c1f9a0b2d7e8c3f1a6b0d4e2c9f7a1b4c1f9a0b2d7e8c3f1a6b0d4e2c9f7a1b",
  "submittedAt": "2019-08-24T14:15:22Z",
  "error": "string"
}
{
  "error": {
    "code": "unauthorized",
    "message": "Session token missing or expired."
  }
}
{
  "error": {
    "code": "out_of_scope",
    "message": "This action exceeds the per-action cap.",
    "declineReason": "cap_exceeded",
    "details": {},
    "requestId": "string"
  }
}