Notus API
Smart wallets

Get Smart Wallet

This endpoint retrieves the details of a user's smart wallet, including the date the wallet was registered with this project, or _null_ if it's not registered yet.

GET
/api/v1/wallets/address
x-api-key<token>

In: header

Query Parameters

externallyOwnedAccountstring

Public address of the Externally Owned Account (EOA) that will sign the transactions, the owner of the account abstraction wallet.

Match^0x[a-fA-F0-9]{40}$
factorystring

The address of the factory contract that creates the account abstraction wallet contract.

Match^0x[a-fA-F0-9]{40}$
salt?string

The salt number used to generate this wallet. If none is given the default is zero. Each salt generates a new smart wallet for the same user. The salt can be used for the following purposes:

  • Generating multiple smart wallets for the same user
    You can use this to have different portfolios in different wallets or any other reason
  • Getting a specific address for the smart wallet
    You can create a script that will test multiple salt values until a certain sequence of numbers show up in the smart wallet contract address. This way you can use the salt to make all smart wallet addresses you generate start with the initials of your company. Though you are limited to Hexadecimal digits, so you'll have to use Hexspeak.
eip7702?boolean

Whether you want to deploy using the EIP7702 standard, that lets the EOA set a contract as its own contract code. The default value is False. Only contracts that are recommended to be used with EIP7702 are allowed, check the docs to find out which ones. Salt has no effect and having it is disallowed.

Response Body

curl -X GET "https://api.notus.team/api/v1/wallets/address?externallyOwnedAccount=0x133700000000000000000000000000000000c0de&factory=0x0000000000400cdfef5e2714e63d8040b700bc24&salt=12345"
fetch("https://api.notus.team/api/v1/wallets/address?externallyOwnedAccount=0x133700000000000000000000000000000000c0de&factory=0x0000000000400cdfef5e2714e63d8040b700bc24&salt=12345")
package main

import (
  "fmt"
  "net/http"
  "io/ioutil"
)

func main() {
  url := "https://api.notus.team/api/v1/wallets/address?externallyOwnedAccount=0x133700000000000000000000000000000000c0de&factory=0x0000000000400cdfef5e2714e63d8040b700bc24&salt=12345"

  req, _ := http.NewRequest("GET", url, nil)
  
  res, _ := http.DefaultClient.Do(req)
  defer res.Body.Close()
  body, _ := ioutil.ReadAll(res.Body)

  fmt.Println(res)
  fmt.Println(string(body))
}
import requests

url = "https://api.notus.team/api/v1/wallets/address?externallyOwnedAccount=0x133700000000000000000000000000000000c0de&factory=0x0000000000400cdfef5e2714e63d8040b700bc24&salt=12345"

response = requests.request("GET", url)

print(response.text)
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpResponse.BodyHandlers;
import java.time.Duration;

HttpClient client = HttpClient.newBuilder()
  .connectTimeout(Duration.ofSeconds(10))
  .build();

HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()
  .uri(URI.create("https://api.notus.team/api/v1/wallets/address?externallyOwnedAccount=0x133700000000000000000000000000000000c0de&factory=0x0000000000400cdfef5e2714e63d8040b700bc24&salt=12345"))
  .GET()
  .build();

try {
  HttpResponse<String> response = client.send(requestBuilder.build(), BodyHandlers.ofString());
  System.out.println("Status code: " + response.statusCode());
  System.out.println("Response body: " + response.body());
} catch (Exception e) {
  e.printStackTrace();
}
using System;
using System.Net.Http;
using System.Text;

var client = new HttpClient();
var response = await client.GetAsync("https://api.notus.team/api/v1/wallets/address?externallyOwnedAccount=0x133700000000000000000000000000000000c0de&factory=0x0000000000400cdfef5e2714e63d8040b700bc24&salt=12345");
var responseBody = await response.Content.ReadAsStringAsync();
{
  "wallet": {
    "walletAddress": "0x6e397ddf51d9f15dbe0414538e7529f51f2e5464",
    "accountAbstraction": "0x6e397ddf51d9f15dbe0414538e7529f51f2e5464",
    "externallyOwnedAccount": "0x133700000000000000000000000000000000c0de",
    "factory": "0x0000000000400cdfef5e2714e63d8040b700bc24",
    "implementation": "0x8e8e658e22b12ada97b402ff0b044d6a325013c7",
    "eip7702": false,
    "salt": 12345,
    "registeredAt": "2025-08-06T16:57:09.249Z"
  }
}
{
  "statusCode": 400,
  "id": "FACTORY_NOT_SUPPORTED",
  "message": "This factory (0xd053b51a81b7306e7e2e34bfd4d51143da8dcdcc) is not yet supported, contact support to request its inclusion"
}
{
  "statusCode": 403,
  "id": "UNAVAILABLE_COMPUTE_UNITS",
  "message": "The project doesn't have enough compute units to perform this action. Please upgrade your plan."
}
{
  "statusCode": 404,
  "id": "PROJECT_NOT_FOUND",
  "message": "The provided project does not exist"
}