Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/fuseio/fuse-docs/llms.txt

Use this file to discover all available pages before exploring further.

The Smart Wallets API provides a Wallets-as-a-Service (WaaS) backend for cross-platform applications. It lets you authenticate users using their Externally Owned Accounts (EOAs), create non-custodial smart contract wallets deployed on Fuse, execute gasless transactions through the relay service, and retrieve wallet balances and transaction history. Each wallet is an upgradable smart contract where the owner retains full control by signing messages sent to the relayer.

Base URL

https://api.fuse.io/api/v2/smart-wallets

Authentication

All requests require a public API key passed as a query parameter.
?apiKey=YOUR_PUBLIC_API_KEY
Get your API key from the Fuse Console. Endpoints that operate on wallet data additionally require a Bearer JWT in the Authorization header. Obtain the JWT by calling the /auth endpoint first.
Authorization: Bearer YOUR_JWT_TOKEN

POST /auth

Authenticates a user using the EIP-191 signed data standard and returns a JWT for subsequent requests.

Request parameters

apiKey
string
required
Your public API key.

Request body

hash
string
required
The hash of the signed message, conforming to EIP-191.
signature
string
required
The signature produced by the EOA owner signing the hash.
ownerAddress
string
required
The Ethereum address of the wallet owner (the EOA that produced the signature).
smartWalletAddress
string
Optional. The address of an existing smart wallet to associate with this session. If omitted, a new smart wallet will be created or the existing wallet for the owner will be resolved.

Response

jwt
string
A JWT token to use as the Bearer token for authenticated endpoints. This token encodes the owner’s identity and wallet association.

Example

curl -X POST "https://api.fuse.io/api/v2/smart-wallets/auth?apiKey=YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "hash": "0xabc123...",
    "signature": "0xdef456...",
    "ownerAddress": "0xYourOwnerAddress"
  }'
{
  "jwt": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."
}

GET /actions

Returns a paginated list of wallet actions (transactions) associated with the authenticated smart wallet.

Request parameters

apiKey
string
required
Your public API key.
page
integer
default:"1"
Page number for pagination.
limit
integer
default:"10"
Number of actions to return per page.
tokenAddress
string
Optional. Filter actions by a specific token contract address.

Response

docs
array
Array of action objects representing wallet transactions.
docs[].\_id
string
Unique identifier for the action record.
docs[].walletAddress
string
The smart wallet address that performed or received the action.
docs[].name
string
Human-readable name for the action type (e.g., tokenTransfer).
docs[].status
string
Current status of the transaction: pending, confirmed, or failed.
docs[].userOpHash
string
The ERC-4337 UserOperation hash for the action.
docs[].txHash
string
The on-chain transaction hash once the UserOperation is included in a block.
docs[].received
array
Tokens received in this action.
docs[].received[].name
string
Token name.
docs[].received[].symbol
string
Token symbol.
docs[].received[].address
string
Token contract address.
docs[].received[].decimals
integer
Token decimals.
docs[].received[].value
string
Transfer amount in base units.
docs[].received[].type
string
Token type, e.g. ERC20 or NATIVE.
docs[].received[].to
string
Recipient address, nullable.
docs[].sent
array
Tokens sent in this action. Same structure as received.

Example

curl "https://api.fuse.io/api/v2/smart-wallets/actions?apiKey=YOUR_API_KEY&page=1&limit=10" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"
{
  "docs": [
    {
      "_id": "64a1f2c3e4b5d6789abc1234",
      "walletAddress": "0xSmartWalletAddress",
      "name": "tokenTransfer",
      "status": "confirmed",
      "userOpHash": "0xuserop...",
      "txHash": "0xtxhash...",
      "received": [],
      "sent": [
        {
          "name": "Fuse",
          "symbol": "FUSE",
          "address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
          "decimals": 18,
          "value": "1000000000000000000",
          "type": "NATIVE",
          "to": "0xRecipientAddress"
        }
      ]
    }
  ]
}

Error responses

All endpoints return structured error responses.
statusCode
integer
HTTP status code of the error.
errorMessage
string
Human-readable description of the error.
path
string
The request path that produced the error.
StatusMeaning
400Bad Request — invalid or missing request parameters
401Unauthorized — missing or invalid JWT token
403Forbidden — invalid or missing API key

Build docs developers (and LLMs) love