curl --request GET \
--url https://nexus.gerowallet.io/api/btc/addresses/{address}/utxos \
--header 'X-Api-Key: <api-key>'import requests
url = "https://nexus.gerowallet.io/api/btc/addresses/{address}/utxos"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://nexus.gerowallet.io/api/btc/addresses/{address}/utxos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://nexus.gerowallet.io/api/btc/addresses/{address}/utxos",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://nexus.gerowallet.io/api/btc/addresses/{address}/utxos"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://nexus.gerowallet.io/api/btc/addresses/{address}/utxos")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://nexus.gerowallet.io/api/btc/addresses/{address}/utxos")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body[
null
]Get unspent outputs for address
The address’s full unspent-output set, served by electrs as a bare array.
GUARANTEE (mempool): unconfirmed outputs are included, with status.confirmed=false. Filter client-side on that flag.
Height bounds, cursor paging and ordinals enrichment live on /utxos/page. from, to, cursor, limit and includeOrdinals are rejected here with 400 rather than ignored, so a client still sending them is told where they went instead of silently receiving this unpaged array.
curl --request GET \
--url https://nexus.gerowallet.io/api/btc/addresses/{address}/utxos \
--header 'X-Api-Key: <api-key>'import requests
url = "https://nexus.gerowallet.io/api/btc/addresses/{address}/utxos"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://nexus.gerowallet.io/api/btc/addresses/{address}/utxos', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://nexus.gerowallet.io/api/btc/addresses/{address}/utxos",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://nexus.gerowallet.io/api/btc/addresses/{address}/utxos"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://nexus.gerowallet.io/api/btc/addresses/{address}/utxos")
.header("X-Api-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://nexus.gerowallet.io/api/btc/addresses/{address}/utxos")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Api-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body[
null
]Authorizations
API key (programmatic access — recommended)
Send your API key in the X-Api-Key header. Keys start with nxs_ and are
created in the dashboard (or via POST /api/keys with a session JWT).
Each key is scoped to one chain and one network (for example
CARDANO_MAINNET), fixed at creation time. It cannot query a different network
on the same chain, and it cannot query a different chain at all. A mismatched
network parameter returns 400 Network Mismatch. Create one key per chain
and network under the same account.
This is the credential most integrations should use.
Path Parameters
14 - 128^[a-zA-HJ-NP-Z0-9]{14,128}$Query Parameters
Accepts either the value listed here (CARDANO_MAINNET) or its kebab-case alias (cardano-mainnet); matching is case-insensitive. Omit it and the network is taken from the API key. A value that disagrees with the key's own network returns 400 Network Mismatch.
CARDANO_MAINNET, CARDANO_PREPROD, CARDANO_PREVIEW, APEX_PRIME_MAINNET, APEX_VECTOR_MAINNET, APEX_VECTOR_TESTNET, MIDNIGHT_MAINNET, MIDNIGHT_PREPROD, MIDNIGHT_STAGENET, BITCOIN_MAINNET, BITCOIN_TESTNET4 Response
from, to, cursor, limit or includeOrdinals was sent. Those moved to GET /api/btc/addresses/{address}/utxos/page; the error body names the parameters received and that route.
Funding txid
Output index in the funding tx
Value in satoshis
Status (confirmed flag, block height, block hash, block time)
Show child attributes
Show child attributes
Only with includeOrdinals=true: true when ord's inscription/rune indices have processed this output, so inscriptions/runes below are authoritative (empty list = provably none). false when ord has not examined it (unconfirmed outputs, or ord lagging the chain tip); inscriptions/runes are then omitted, NOT empty.
Hex scriptPubKey (only with includeOrdinals=true)
Inscription IDs on this output (only with includeOrdinals=true; empty list = none)
Rune balances on this output incl. runeId block:tx (only with includeOrdinals=true; empty list = none)
Show child attributes
Show child attributes