Session cookie
120 req/minBrowser users get auth via the standard Flask login cookie. CSRF token is required for writes — read it from the csrf-token meta tag.
Every wallet flow is also an API. Mint a token, bridge to Solana, sign a multi-sig, route a swap across every AMM and order book — programmatically, with the same security model your users get. Python-first, REST + WebSocket + x402.
Plain HTTPS + JSON. Authenticate, then call. Every endpoint is documented in the playground and replayable from your terminal.
We ship Python first — the trading agents, bridge attestor, RWAiSE wizard and Merkle anchor are all Python services. SDK uses httpx for sync + async.
# pip install httpx
import httpx
API_KEY = "gpk_live_..."
client = httpx.Client(
base_url="https://gopnik.wallet",
headers={"X-API-Key": API_KEY},
timeout=10.0,
)
# 1. List the XLS-20 NFTs you own.
me = client.get("/nft/arena/api/my-nfts",
params={"address": "rGopnikDemo...", "per_page": 50})
print(len(me.json()["nfts"]), "NFTs")
# 2. Bridge 100 XRP from XRPL to Solana.
job = client.post("/api/v1/bridges/xrpl-solana/submit", json={
"amount_drops": 100_000_000,
"dest_solana": "5N7aC6cK...819Jm8F9NUwo",
})
print(job.json()["job_id"], job.json()["status"])
Every endpoint is plain HTTPS + JSON. The OpenAPI spec is browseable at /api/docs/openapi.json and the interactive playground is one click away.
# Fetch the live OpenAPI 3.0 spec
curl -s https://gopnik.wallet/api/docs/openapi.json | jq .info
# Authenticated call (cookie + CSRF)
curl -s https://gopnik.wallet/nft/dashboard/api/portfolio \
-b cookies.txt -H "X-CSRF-Token: $CSRF"
# API-key authenticated call (higher rate-limit tier)
curl -s https://gopnik.wallet/api/v1/wallets/me \
-H "X-API-Key: $GOPNIK_API_KEY"
Browser-friendly SDK with ESM + types. Subscribes to live event streams (bridge attestations, RWAiSE order fills, x402 receipts) over WebSocket.
// npm i @gopnik/sdk
import { Gopnik } from "@gopnik/sdk";
const gopnik = new Gopnik({ apiKey: process.env.GOPNIK_API_KEY });
// 1. Submit a bridge job.
const job = await gopnik.bridges.submit({
src: "xrpl", dst: "solana", asset: "XRP",
amount: 100_000_000, // drops
dest: "5N7aC6cK...819Jm8F9NUwo",
});
// 2. Watch the audit log stream via WebSocket.
gopnik.events.on("bridge.attestor.signed", (e) => {
console.log(`attestor ${e.signer_id} signed at ${e.t}`);
});
Click a tile to jump straight into the corresponding section of the OpenAPI playground.
Quote / submit swaps across XRPL AMM, order books and cross-IOU paths. Atomic — settles in one tx or none.
Try in playground → BridgesSubmit, watch and cancel bridge jobs across XRPL → Solana, Ethereum, Bitcoin, Cosmos, Polkadot, L2s.
Try in playground → TokensIssue MPTokenIssuance, mint XLS-20, run RWA wizards with compliance presets — every flow is also an API.
Try in playground → Multi-sigPropose payments, collect signatures from an HSM-backed SignerList, seal on-ledger. Time-locked escrow too.
Try in playground → AgentsPlan → validate → execute policy-bound trading agents. Every step is Merkle-anchored to XRPL daily.
Try in playground → MarketplaceSearch, list, offer, counter, accept across the XLS-20 market. Watchlist + alerts + analytics included.
Try in playground → DeFiPool positions, AMM staking, integrated lending venues with APR snapshots and position histories.
Try in playground → AnalyticsTrade history with P/L, portfolio snapshots, CSV exports for tax season — paginated and stable.
Try in playground →All four modes share the same audit log, CSP rules and origin checks. Pick the one that matches your trust boundary.
Browser users get auth via the standard Flask login cookie. CSRF token is required for writes — read it from the csrf-token meta tag.
Issue keys at /api/docs/api-keys. Sent as X-API-Key. Keys are SHA-256 hashed at rest and the raw value is shown to you once at creation.
Three-legged OAuth for third-party apps — the user consents to specific scopes (read-only, trade, compliance-export). Refresh tokens rotate.
Pay-per-call rail for metered data + agent endpoints. Server responds 402 with a payment quote; client pays, retries with the receipt. No subscriptions.