List Transactions
curl --request GET \
--url https://api.example.com/v1/transactionsimport requests
url = "https://api.example.com/v1/transactions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/transactions', 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://api.example.com/v1/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://api.example.com/v1/transactions"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/transactions")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"transactions": [
{
"id": "<string>",
"type": "<string>",
"status": "<string>",
"amount": 123,
"currency": "<string>",
"description": {},
"merchant_name": {},
"created_at": "<string>",
"completed_at": {}
}
],
"total_count": 123,
"has_more": true
}Agent API
List Transactions
Retrieve a paginated list of transactions for the project associated with the API token.
GET
/
v1
/
transactions
List Transactions
curl --request GET \
--url https://api.example.com/v1/transactionsimport requests
url = "https://api.example.com/v1/transactions"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.example.com/v1/transactions', 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://api.example.com/v1/transactions",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://api.example.com/v1/transactions"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.example.com/v1/transactions")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/transactions")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"transactions": [
{
"id": "<string>",
"type": "<string>",
"status": "<string>",
"amount": 123,
"currency": "<string>",
"description": {},
"merchant_name": {},
"created_at": "<string>",
"completed_at": {}
}
],
"total_count": 123,
"has_more": true
}Returns a paginated list of all transactions for the project linked to the authenticated API token. Results are ordered by creation time, most recent first.
Requires a bearer token with the
read permission.Query Parameters
integer
default:"50"
Number of transactions to return. Min 1, max 200.
integer
default:"0"
Number of transactions to skip. Min 0.
Response
array
required
Array of transaction objects.
Show Transaction object
Show Transaction object
string
required
Unique transaction identifier.
string
required
Transaction type. One of:
fund, payment, x402_payment, usdc_transfer, usdc_fund, platform_fee, fiat_withdrawal.string
required
Transaction status:
pending, processing, completed, failed, or reversed.integer
required
Transaction amount in currency units (cents for USD, micro-USDC for USDC).
string
required
Currency code:
usd or usdc.string | null
Human-readable description of the transaction.
string | null
Merchant or recipient name, if applicable.
string
required
ISO 8601 timestamp of when the transaction was created.
string | null
ISO 8601 timestamp of when the transaction completed.
null if still in progress.integer
required
Total number of transactions across all pages.
boolean
required
Whether there are more transactions beyond the current page.
Transaction Types
| Type | Description |
|---|---|
fund | Fiat funding added to the project |
payment | Outbound ACH payment to an external bank account |
x402_payment | x402 protocol payment to a URL |
usdc_transfer | On-chain USDC transfer to an external wallet |
usdc_fund | USDC deposit received on-chain |
platform_fee | Platform fee charged on a transaction |
fiat_withdrawal | Fiat withdrawal from the project |
Examples
curl "https://api.unwall.xyz/v1/transactions?limit=10&offset=0" \
-H "Authorization: Bearer aw_live_xxxxxxxxxxxx"
import requests
resp = requests.get(
"https://api.unwall.xyz/v1/transactions",
headers={"Authorization": "Bearer aw_live_xxxxxxxxxxxx"},
params={"limit": 10, "offset": 0},
)
data = resp.json()
for tx in data["transactions"]:
print(f"{tx['type']} — {tx['amount']} {tx['currency']} — {tx['status']}")
print(f"Showing {len(data['transactions'])} of {data['total_count']}")
const resp = await fetch(
"https://api.unwall.xyz/v1/transactions?limit=10&offset=0",
{
headers: {
Authorization: "Bearer aw_live_xxxxxxxxxxxx",
},
}
);
const data = await resp.json();
for (const tx of data.transactions) {
console.log(`${tx.type} — ${tx.amount} ${tx.currency} — ${tx.status}`);
}
console.log(`Showing ${data.transactions.length} of ${data.total_count}`);
Response (200 OK)
{
"transactions": [
{
"id": "tx_x402_001",
"type": "x402_payment",
"status": "completed",
"amount": 500000,
"currency": "usdc",
"description": "x402 payment to https://api.example.com/v1/data",
"merchant_name": "api.example.com",
"created_at": "2026-03-11T16:30:00Z",
"completed_at": "2026-03-11T16:30:05Z"
},
{
"id": "tx_usdc_002",
"type": "usdc_transfer",
"status": "processing",
"amount": 50000000,
"currency": "usdc",
"description": "Vendor payment",
"merchant_name": null,
"created_at": "2026-03-11T14:00:00Z",
"completed_at": null
},
{
"id": "tx_fund_003",
"type": "usdc_fund",
"status": "completed",
"amount": 100000000,
"currency": "usdc",
"description": "USDC deposit",
"merchant_name": null,
"created_at": "2026-03-10T09:00:00Z",
"completed_at": "2026-03-10T09:00:30Z"
}
],
"total_count": 3,
"has_more": false
}