Xiseketelo xa vutivi Vaakuli wa swiendli
Mundla, ku pfuxisa na tiyini
Lantla leswi u nga na swona, pfuxa hi Lightning, pfuxa hi ndlela leyi tshamaka u huma eka wallet ya wena, vona leswaku xihlongolahalo xin’wana na xin’wana xi xarifile mani, naswona lawula ti-keys u huma eka code.
Tluka leri ri hundzuluxeriwe hi muchini leswaku ri olova. Original ya Xinghezi i version leyi tirhaka.
Ku xupaxupa mitsheketo
Switlhala swa wena swimbirhi, na leswi xikongomelo xa xihloko lexi xi tirisiweke.
GET https://nymbot.ai/api/v1/credits/balance — e hlayiwa hi API key. POST Swi tirha na, exikarhi ka vaklenti lava tshamaka va lava sweswo.
balance swivoni swivumba swimbirhi swi ku kombisa hi madola hi xiyimo xa Bitcoin xa sweswi, eka
switirhisiwa leswi tshamaka swi langutaka namba yin'we (null loko xigevhenge xi nga pfuki ku dyondziwa). Swin’wana swi ri eka
credits ni sats, leswi i ndlela leyi mitsheketo yi nga hlayisiwaka hi yona. key ku hlamusela xaka
lexi kombetelaka. Xaka lexi fikelele eka xinyunyu xi nga ha kota ku xupaxupa mavuya.
Mpfuxeto
{
"balance": 49.18,
"balance_sats": 42037,
"standard": { "credits": 120.4, "sats": 1204 },
"pro": { "credits": 408.33, "sats": 40833 },
"key": {
"id": "4f0c9a1be27d3856",
"name": "laptop scripts",
"limit_sats": 20000,
"period_used_sats": 3412,
"total_used_sats": 18230,
"reset_period": "monthly",
"reset_at": "2026-10-01T00:00:00Z"
}
}
| Xiyimo | Loko hi nga ri<|thought|> |
|---|---|
401 | Khunci i ra vukati, a yi tiviwi, ya herisiwa kumbe ya fika endzhaku. |
cURL
curl https://nymbot.ai/api/v1/credits/balance \
-H "Authorization: Bearer $NYMBOT_API_KEY"
Python
import os
import requests
res = requests.get(
"https://nymbot.ai/api/v1/credits/balance",
headers={"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]},
)
balance = res.json()
print(balance["standard"]["sats"], balance["pro"]["sats"])
JavaScript
const res = await fetch("https://nymbot.ai/api/v1/credits/balance", {
headers: { "Authorization": "Bearer " + process.env.NYMBOT_API_KEY },
});
const balance = await res.json();
console.log(balance.standard.sats, balance.pro.sats);
Swindlevo nyana swi kombisiwa
Xana u nga pfuxa njhani, na mindzila ya ku pfuxa. Lightning i ndlela n'we فحسب.
GET https://nymbot.ai/api/v1/topup/payment-methods — a ku lava xivi.
Ku veka mali i 10 ku ya eka 1,000,000 sats; ku veka mali ka Pro swi fanele ku xava credit yin’we ya Pro exikarhi ka yo tala, ndʒe swi sungula
eka 100 sats. Milawu ya dolaru yi landzela xihlawulelo xa Bitcoin. bulk_bonus swi kombela nchumu lowu ekulu hi ku pfuxa hi ku engetela
ka swikongomisi leswi fihlelekeke, hi ku fana na le ka app: 10%, 15% kumbe 20% ekulu eka swikongomisi swa xiyero
swa 500, 1,000 kumbe 5,000 sats, naswona eka swikongomisi swa Pro swa 5,000, 10,000 kumbe 50,000 sats.
Mpfuxeto
{
"supported_methods": [
{
"method": "btc-lightning",
"display_name": "Bitcoin Lightning",
"supported_currencies": ["SATS", "USD", "BTC"],
"limits": {
"SATS": { "min": 10, "max": 1000000 },
"USD": { "min": 0.02, "max": 1170 },
"BTC": { "min": 1e-7, "max": 0.01 }
},
"tiers": ["standard", "pro"],
"default_tier": "pro",
"tier_min_sats": { "standard": 10, "pro": 100 },
"sats_per_credit": { "standard": 10, "pro": 100 },
"bulk_bonus": [
{ "bonus": 0.1, "standard_sats": 500, "pro_sats": 5000 },
{ "bonus": 0.15, "standard_sats": 1000, "pro_sats": 10000 },
{ "bonus": 0.2, "standard_sats": 5000, "pro_sats": 50000 }
]
}
]
}
cURL
curl https://nymbot.ai/api/v1/topup/payment-methods
Python
import requests
methods = requests.get("https://nymbot.ai/api/v1/topup/payment-methods").json()
print(methods["supported_methods"][0]["limits"])
JavaScript
const methods = await (await fetch("https://nymbot.ai/api/v1/topup/payment-methods")).json();
console.log(methods.supported_methods[0].limits);
Ku tswakanya eka Lightning
Endla invoice ya Lightning leyi engetaka credit eka nym leyi xikongomelo xa yona yi nga ni xinyunywana. Yi riyirile eka wallet yo anyi ya Lightning, swi landza, Hlola ku ta engetelwa xikongomelo.
POST https://nymbot.ai/api/v1/topup/create/btc-lightning — e hlayiwa hi API key.
| Ndlela | Bhala | Lavikekaka | Xichavo |
|---|---|---|---|
amount | nhlayo | Ina | Xana i mali ya ka rihi, eka currency. Nhlokomhanyelo wa xiyero kha sats. |
currency | vutshila bya mbulavulo | A hi i | SATS (swinyana), USD kumbe BTCDolares ti hundzululeri hi xiyenge xa Bitcoin xa swindikati. |
tier | vutshila bya mbulavulo | A hi i | pro (xikombiso xa xivumbhulu) kumbe standardKureti yi ya eka xibala xihi? |
Kuhlunisiwa hi 10 sats hi standard credit naswona Pro credit i 100 sats, ku kombisa ni yena nchumu wanyingi wa bonus;
credits swi vula leswaku xitibihi lexi xi ta engetela yini.
Mpfuxeto
{
"invoice_id": "b7d41e0c95a2f38e6c1d0e9a4b7f2c61d3e8a05f9b2c4d7e1a6f3b8c0d5e2a9f4",
"payment_request": "lnbc100u1p5...",
"amount_sats": 10000,
"credits": 115,
"tier": "pro",
"expires_at": "2026-09-30T09:27:00Z",
"status": "pending"
}
| Xiyimo | Loko hi nga ri<|thought|> |
|---|---|
400 | Ndzunduri yo nge n'alahu eka ndlela (unsupported_method), xihundzuluxi xa mali (unsupported_currency) kumbe xiyenge, xihundla lexi nga riki, kumbe xihundla lexi tsandzekaka ku ri tlula xinene (amount_too_small), eka 1,000,000 sats ehenhla (amount_too_large) kumbe ku tshimbilelwa hi Lightning wallet (amount_out_of_range). |
429 | Ku tlula mivandla ya 60 hi nym leyi, kumbe 120 ku huma eka xihlanganiso lexi, hi xihora xin'we (rate_limit_exceeded, na Retry-After). |
502 | Kuinvoice_unavailable, na Retry-After). |
cURL
curl https://nymbot.ai/api/v1/topup/create/btc-lightning \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"amount": 10000, "currency": "SATS", "tier": "pro"}'
Python
import os
import requests
res = requests.post(
"https://nymbot.ai/api/v1/topup/create/btc-lightning",
headers={"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]},
json={"amount": 10000, "currency": "SATS", "tier": "pro"},
)
invoice = res.json()
print(invoice["payment_request"])
JavaScript
const res = await fetch("https://nymbot.ai/api/v1/topup/create/btc-lightning", {
method: "POST",
headers: {
"Authorization": "Bearer " + process.env.NYMBOT_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ amount: 10000, currency: "SATS", tier: "pro" }),
});
const invoice = await res.json();
console.log(invoice.payment_request);
Ku xiya ku engetelwa
U vutisa leswaku invoyisi yi ri karhi yi ripfuriwe na, loko yi ri pfuriwe, u engetela kirediti. Ku hlola i leswi nga engetelaka kirediti, hi leswi loko wu pfuriwe, hlola ku fika xiyimo xi riki na credited. Ku verisa hi ku tlula hi yena i ku tsundzuka: nchumu lowu wu ya eka wena hi ku tlhela, nakambe loko u kombela hi ku tlula hi ku tala.
GET https://nymbot.ai/api/v1/topup/status/{invoice_id} — u lava xikongomelo eka nym leyi nga endle invoice.
status i pending (a nga ri pfumisiwanga yena woko), paid (ri xaxile, kambe a ku dzundzukanga; lulamisa hi ku hlokoleta hi ku tlhela), credited (e ka mitsheketo ya wena) kumbe expired (a nga ri pfuriwanga
hi nkarhi). Swikamu swa mbalavala swi ri eka xigwapa lexi invoice yi topxaka xona.
Mpfuxeto
{
"invoice_id": "b7d41e0c95a2f38e6c1d0e9a4b7f2c61d3e8a05f9b2c4d7e1a6f3b8c0d5e2a9f4",
"status": "credited",
"amount_sats": 10000,
"credits": 115,
"tier": "pro",
"expires_at": null,
"balance_credits": 523.33,
"balance_sats": 52333
}
| Xiyimo | Loko hi nga ri<|thought|> |
|---|---|
400 | Id ayi i id ya madyaka ya 64 e ku endla ku kumiwa ka ku tshamela. |
404 | Ku nga ri na xibala-nxavo hi nhlamuselo leyi eka vito ra wena (invoice_not_found). |
cURL
curl https://nymbot.ai/api/v1/topup/status/$INVOICE_ID \
-H "Authorization: Bearer $NYMBOT_API_KEY"
Python
import os, time
import requests
headers = {"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]}
url = "https://nymbot.ai/api/v1/topup/status/" + invoice["invoice_id"]
while True:
status = requests.get(url, headers=headers).json()["status"]
if status in ("credited", "expired"):
break
time.sleep(3)
print(status)
JavaScript
const headers = { "Authorization": "Bearer " + process.env.NYMBOT_API_KEY };
const url = "https://nymbot.ai/api/v1/topup/status/" + invoice.invoice_id;
let status;
do {
await new Promise((r) => setTimeout(r, 3000));
status = (await (await fetch(url, { headers })).json()).status;
} while (status !== "credited" && status !== "expired");
console.log(status);
Xikombiso xa rikarata ra ku kombisa
Xitsendziso xin'we hi xirito: xona a xi yini, lexi hi model lexi mani, matikere (tokens) yaaki, na xikongomelo xa xona. Swivutiso kumbe maandla a ku hakwiwi, hi ku ri na swo ri tivisiwa. Xirito xin'we xin'we xin'we xi hakwa hi malembe ya 90, leswi vulahlekeke swo tala swo veka hi le hetelelo. Xikongomelo lexi fikeleke ematšen'weni xa xona xi nga ha kota ku hlaya xikombiso xa xona.
GET https://nymbot.ai/api/v1/queries/history — swi lava API key, leyi vonaka swikwembu swa yona, kumbe a xikwembu le xi nghenileke hi xihandla e kuva n'weti wa wena, lowu vonaka ya xikungoni xin'wana na xin'wana.
| Ndlela | Bhala | Lavikekaka | Xichavo |
|---|---|---|---|
page | xihundzuluxi (query) | A hi i | Xikombiso 1, ku fika 1,000; xiphemu xin'wana lexi pfahla i 400 invalid_value. |
page_count | xihundzuluxi (query) | A hi i | Swikakha hi page. Hi xiya 20, hi ntshikile 100. |
start_dateend_date | xitsonga (query) | A hi i | Swinkatelo swa ISO 8601 swa nkarhi kumbe masiku. |
model | xitsonga (query) | A hi i | Xihlanganiso lexi xanxiwileke lexi. |
type | xitsonga (query) | A hi i | chat, responses, messages, image, video, speech, transcription kumbe embedding. |
all_keys | boolean (query) | A hi i | Hi xitsamblamavo: true swi kombela xinyakana xin'we xa nchumu lowu fanaka. Default false. |
key_id | xitsonga (query) | A hi i | Hi nkhonono leyi tsariwileke, kumbe hi all_keys=true: khondi leyi xana. |
Mpfuxeto
{
"data": [
{
"id": "q_71c4e9a0",
"timestamp": "2026-09-30T08:12:00Z",
"model": "anthropic/claude-sonnet-5",
"type": "chat",
"input_tokens": 1240,
"output_tokens": 380,
"cached_tokens": 0,
"cost_sats": 16.2,
"cost_usd": 0.01895,
"balance": "pro",
"key_id": "4f0c9a1be27d3856",
"web_search": false,
"status": "ok"
}
],
"pagination": { "page": 1, "page_count": 20, "total": 311, "total_pages": 16 }
}
cURL
curl "https://nymbot.ai/api/v1/queries/history?page_count=50&type=chat" \
-H "Authorization: Bearer $NYMBOT_API_KEY"
Python
import os
import requests
res = requests.get(
"https://nymbot.ai/api/v1/queries/history",
headers={"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]},
params={"page_count": 50, "type": "chat"},
)
for row in res.json()["data"]:
print(row["timestamp"], row["model"], row["cost_sats"])
JavaScript
const res = await fetch("https://nymbot.ai/api/v1/queries/history?page_count=50&type=chat", {
headers: { "Authorization": "Bearer " + process.env.NYMBOT_API_KEY },
});
for (const row of (await res.json()).data) console.log(row.timestamp, row.model, row.cost_sats);
Ku tsindza mavuku ya ku kombela akaunti
Ku endla, ku cinca ni ku tihlula tikhishi, xiyenge xa akaunti ni ku tivula hi mpfumo wa mali hi xitshuri a swi nga kambiseli hi API key. Swi kambela makuva (signature) eka nym ya wena, hi ku ri leswaku key leyi tihlaka yi nga kona ku xedza mali ku fika eka xikongomelo xa yona, kambe a yi kona ku endla key yin'wana kumbe ku tlhela ku engetela xikongomelo xa yona.
Application yi endla leswi ku i wena: xin’wana-xin’wana eka xona API sheet yi tirhisa tindhawula leti. U lava ntsena xiyenge lexi leswaku u lava ku lawula tikhapu eka xikombiso xa wena.
Xirhandzu i Nostr event ya kind 27235 (NIP-98), leyi enetiweke hi base64-encoded eka
Authorization xikongomelo hi rito Nostr eximbileni:
Xikambelo
{
"kind": 27235,
"created_at": 1790726400,
"tags": [
["u", "https://nymbot.ai/api/v1/keys"],
["method", "POST"],
["nonce", "9c4e21f07a3b...16 random bytes in hex"],
["payload", "3f1a0d7c8e2b...sha256 of the exact request body in hex"]
],
"content": "",
"pubkey": "your public key in hex",
"id": "...",
"sig": "..."
}
ui URL ya ku kombela hinkwayo, ku katsa na query string, hi ku fana na leyi nghenileyo.methodi nkhama ya HTTP.payloadi SHA-256 ya body ya request leyi nga hundhutluki, hi xihlamarisi xa hex. Yi lavakiwa ekaPOSTnaPATCH, naswona xitirho lexi u tsindzelaka xi fanele ku va xiyimo-bya-byte lexi u nga xi hashile.created_atswi fanele ku va eka nkambelo wa nkotaolo wa nkusu wa 60 seconds ku fana na xiyimbiwa xa server.- Xinkulumo xin'wana xin'wana xi tirha ka nkarhi xin'we, a
GETku engeteriwile, leswaku header leyi kumakawe yi nga ha vuyisela. Tsindza lexin'wana lexin'wana hi xiyelo xin'wana na xin'wana. Engetela...noncetag hi xihlamukiso lexi nga riki na nkarhi leswaku mavuniki lawambirhi lawa ma nga tsaliwaka hi nkarhi lomunwe ma tshama ma hlayisana. - Xitlhokovetselo xa xigumberselo lexi tsariwileke xi nga ri va na 64 KB laha laha, naswona xitlhokovetselo xi lava
Content-Type: application/json.
Xikongomelo lexi nga riki xi khutlumeta 401 missing_nostr_auth; leyi nga riki hinkwaleni, leyi nga tsariwanga kahle, leyi nga na makuva yo tanihi, kumbe leyi nga riki ya URL, ndlela kumbe xitirho lexi fanaka lexi vangaka ku pfumala
invalid_nostr_auth, hi xivilo eka xiyimbi; lexi tirhisiweke hi ku tlula ku humelela
nostr_auth_replayed. API key leyi enziwe eka ti-endpoint ta yi n'wi engeteli.
Xitshatshatsha xi hi lulamisiwa pele ku karhi ku hlariwa ka mavele, naswona xiyero xin'wana xin'wana xi nga ha xi pfumala 30 ka yin'we minutu (address ya IPv6 yi hlamusela xiyero xa yona xa /64); endzhaku ka leswi, yi yi kuma 429 na
Retry-After.
Ti-browser ti nga kota ku vula ti endpoints ti only hi ku huma eka ti site ta Nymbot ta xitsonga (https://nymbot.ai,
https://nymchat.app (na swikemi swa vona). Xiphemu eka xiyenge xin'wana na xin'wana xi nga ri kona xi nga kumisi hi swivandla swa CORS, hi leswaku xi nga kota ku hlaya leswi va nga swi engetela. Swivandlaka na tindhawuba ta xiyimo, leti nga nga engetisiki xin'wana na xin'wana
Origin, a va pfumali ku kumeka.
Ku hlamulaka swi lava xikombiso xa xihlamuleri xa nime ya wena (the nsec), leyi lawulaka
swilo hinkwaswo: vumunhu byaku, rikirhelelo ra wena na xibulavuri xa wena. Fa fela eka xitirisi xa khompyuta lexi u tshembaka, u yi hlaya eka environment exikarhi ka ku yi tsala eka faya, naswona u xavela xihlamulamuri loko u nga kota.
Vakha-va-ndzhaku va aka ntsheketo. Swikombiso swa endzhaku eka xiphemu lexi swi tiyisela hi vona. Swi hlaya xikombiso xa xihundla xa hex exi... NOSTR_SECRET_HEX; ya cURL yi tirhisa ya
nak swivi ya command-line, leyi amukaka nsec kumbe hex
key, naswona sha256sum (e ka macOS, shasum -a 256).
cURL
nostr_auth() {
method="$1"; url="$2"; body="$3"
nonce=$(openssl rand -hex 16)
if [ -n "$body" ]; then
hash=$(printf '%s' "$body" | sha256sum | cut -d' ' -f1)
event=$(nak event --sec "$NOSTR_SECRET_HEX" -k 27235 -t "u=$url" -t "method=$method" -t "nonce=$nonce" -t "payload=$hash")
else
event=$(nak event --sec "$NOSTR_SECRET_HEX" -k 27235 -t "u=$url" -t "method=$method" -t "nonce=$nonce")
fi
printf 'Nostr %s' "$(printf '%s' "$event" | base64 | tr -d '\n')"
}
Python
# pip install coincurve requests
import base64, hashlib, json, os, time
from coincurve import PrivateKey, PublicKeyXOnly
SECRET = bytes.fromhex(os.environ["NOSTR_SECRET_HEX"])
def nostr_auth(method, url, body=b""):
pubkey = PublicKeyXOnly.from_secret(SECRET).format().hex()
tags = [["u", url], ["method", method], ["nonce", os.urandom(16).hex()]]
if body:
tags.append(["payload", hashlib.sha256(body).hexdigest()])
created_at = int(time.time())
serialized = json.dumps([0, pubkey, created_at, 27235, tags, ""], separators=(",", ":"), ensure_ascii=False)
event_id = hashlib.sha256(serialized.encode()).digest()
event = {
"id": event_id.hex(),
"pubkey": pubkey,
"created_at": created_at,
"kind": 27235,
"tags": tags,
"content": "",
"sig": PrivateKey(SECRET).sign_schnorr(event_id).hex(),
}
return "Nostr " + base64.b64encode(json.dumps(event).encode()).decode()
JavaScript
// npm install nostr-tools
import { createHash, randomBytes } from "node:crypto";
import { finalizeEvent } from "nostr-tools/pure";
const secret = Buffer.from(process.env.NOSTR_SECRET_HEX, "hex");
export function nostrAuth(method, url, body = "") {
const tags = [["u", url], ["method", method], ["nonce", randomBytes(16).toString("hex")]];
if (body) tags.push(["payload", createHash("sha256").update(body).digest("hex")]);
const event = finalizeEvent(
{ kind: 27235, created_at: Math.floor(Date.now() / 1000), tags, content: "" },
secret,
);
return "Nostr " + Buffer.from(JSON.stringify(event)).toString("base64");
}
Xinghenhloko xa akaunti
Xana xihlamuselo xa API xa app xi kombisa yini ehenhla: key ya wena ya public, xikombiso xa mali ya swivumbuloni byimbirhi, leswaku ku ni swihembu (keys) swi riki mani (leswi nga riki swi herisiwe kumbe swa ku fela), na... ku tswakanya hi xinkulungwane swiyinganyiso, kumbe
null loko server a nga va nyiki.
GET https://nymbot.ai/api/v1/account — lava xikwembu le xi nghenileke hi xihandla.
Mpfuxeto
{
"data": {
"pubkey": "3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d",
"balances": {
"standard": { "credits": 120.4, "sats": 1204 },
"pro": { "credits": 408.33, "sats": 40833 }
},
"keys_active": 3,
"nwc_auto_topup": {
"connected": true, "threshold_sats": 5000, "topup_sats": 20000, "tier": "pro",
"last_topup_at": null, "last_topup_sats": null, "last_error": null
}
}
}
cURL
URL=https://nymbot.ai/api/v1/account
curl "$URL" -H "Authorization: $(nostr_auth GET "$URL")"
Python
import requests
url = "https://nymbot.ai/api/v1/account"
print(requests.get(url, headers={"Authorization": nostr_auth("GET", url)}).json())
JavaScript
const url = "https://nymbot.ai/api/v1/account";
const res = await fetch(url, { headers: { "Authorization": nostrAuth("GET", url) } });
console.log(await res.json());
Ku lawula tiakhivi
Ti-endpoints leti ngaంhimbeleke eka xikongomelo xa xihlamuselo xa xikomba xa app. Hinkwaswo swi lava a xitsamalo xikwembu. Swikunwana hinkwaswo swi humiselwa eka xiyimo lexi, hi nkarhi wa ISO 8601 na swilo swi nga le ka sats:
Xiphepha xa ntiyiso
{
"id": "4f0c9a1be27d3856",
"name": "laptop scripts",
"hint": "sk-nymbot-Qm7x…c2Lw",
"limit_sats": 20000,
"reset_period": "monthly",
"reset_at": "2026-10-01T00:00:00Z",
"expire_at": null,
"period_used_sats": 3412,
"total_used_sats": 18230,
"created_at": "2026-08-14T09:21:07Z",
"updated_at": "2026-09-02T17:40:55Z",
"last_used_at": "2026-09-30T08:12:00Z",
"revoked_at": null
}
hint swi pfuna ku tlangela xaka kambe a swi pfuni ku xi tirhisa. Xaka xinene xi humiselwa
ka nkarhi mutito, loko xi endliwaka.
Ku kombisa tikhokelo
GET https://nymbot.ai/api/v1/keys — swindziwe.
| Ndlela | Bhala | Lavikekaka | Xichavo |
|---|---|---|---|
include_revoked | boolean (query) | A hi i | Kumanyisi ti-key leti herisiweke. Default false. |
Mpfuxeto
{ "data": [ { "id": "4f0c9a1be27d3856", "name": "laptop scripts", "hint": "sk-nymbot-Qm7x…c2Lw", "...": "..." } ] }
cURL
URL=https://nymbot.ai/api/v1/keys
curl "$URL" -H "Authorization: $(nostr_auth GET "$URL")"
Python
import requests
url = "https://nymbot.ai/api/v1/keys"
for key in requests.get(url, headers={"Authorization": nostr_auth("GET", url)}).json()["data"]:
print(key["id"], key["name"], key["period_used_sats"], key["limit_sats"])
JavaScript
const url = "https://nymbot.ai/api/v1/keys";
const { data } = await (await fetch(url, { headers: { "Authorization": nostrAuth("GET", url) } })).json();
for (const key of data) console.log(key.id, key.name, key.period_used_sats, key.limit_sats);
Ku endla xitofula
POST https://nymbot.ai/api/v1/keys — tsariwe. Ku tsutsumisa 201.
| Ndlela | Bhala | Lavikekaka | Xichavo |
|---|---|---|---|
name | vutshila bya mbulavulo | Ina | Swikari hi mbulavulo wa 1 ku ya ka 40, swi fambana na tikhatana ta wena leti tirhisiwaka (u nga veki xiyimo ka xindzalo). |
limit_sats | xinyongovalo | A hi i | Xikongomelo xa ku tshwaya hi sats, h mindestens 1. Xi tshama xi ri karhi nkarhi lowu nga ri na xikongomelo. |
reset_period | vutshila bya mbulavulo | A hi i | daily, weekly kumbe monthly. Swi lava limit_sats. Xi xiyelele hi xikambelo lexi nga riki na ku tsandzeka. |
expire_at | string kumbe integer | A hi i | Loko nkomba ya henhla yi nga seseki: nkarhi wa ISO 8601, kumbe miliseconde ku sukela hi 1970. |
Ndzi ku pfuxeta (201)
{
"data": {
"id": "4f0c9a1be27d3856",
"name": "laptop scripts",
"hint": "sk-nymbot-Qm7x…c2Lw",
"limit_sats": 20000,
"reset_period": "monthly",
"key": "sk-nymbot-Qm7x...c2Lw",
"...": "the rest of the key object"
}
}
| Xiyimo | Loko hi nga ri<|thought|> |
|---|---|
400 | Vito le yi nga riki kona kumbe le yi lengeke ngopfu; vito le yi tirhisiwaka khale (duplicate_name); limita leyi nga riki nhlayo wa nkomba wa hansi ka 1; nkarhi wo tsandzuxa lowu nga riki na limita; nkarhi wo fela lowu nga hundzekile; xihundla lexi nga tiviwikiwiki (unknown_parameter); kumbe 25 ti-key leti tirhaka khale (too_many_keys). |
429 | Swilo hi ku tlula 60 swikoldi leswi endliwe hi nkanu lowu, kumbe 120 eka xihlanganiso lexi, eka va hi xienga xin'we (rate_limit_exceeded, na Retry-After). |
cURL
URL=https://nymbot.ai/api/v1/keys
BODY='{"name":"laptop scripts","limit_sats":20000,"reset_period":"monthly"}'
curl "$URL" \
-H "Authorization: $(nostr_auth POST "$URL" "$BODY")" \
-H "Content-Type: application/json" \
-d "$BODY"
Python
import json
import requests
url = "https://nymbot.ai/api/v1/keys"
body = json.dumps({"name": "laptop scripts", "limit_sats": 20000, "reset_period": "monthly"}).encode()
res = requests.post(
url,
data=body,
headers={"Authorization": nostr_auth("POST", url, body), "Content-Type": "application/json"},
)
print(res.json()["data"]["key"])
JavaScript
const url = "https://nymbot.ai/api/v1/keys";
const body = JSON.stringify({ name: "laptop scripts", limit_sats: 20000, reset_period: "monthly" });
const res = await fetch(url, {
method: "POST",
headers: { "Authorization": nostrAuth("POST", url, body), "Content-Type": "application/json" },
body,
});
console.log((await res.json()).data.key);
Ku hlaya nchumu un'we wa nkoka
GET https://nymbot.ai/api/v1/keys/{id} — swindziwe.
Ku vuyela {"data": {…}} hi xiyimo xa ntshunxwarelo, kumbe 404
key_not_found Loko ku nga ri na khavulo xa wena lexi nga na id leyo.
cURL
URL=https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856
curl "$URL" -H "Authorization: $(nostr_auth GET "$URL")"
Python
import requests
url = "https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856"
print(requests.get(url, headers={"Authorization": nostr_auth("GET", url)}).json()["data"])
JavaScript
const url = "https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856";
console.log((await (await fetch(url, { headers: { "Authorization": nostrAuth("GET", url) } })).json()).data);
Ku cinca xikongomelo
PATCH https://nymbot.ai/api/v1/keys/{id} — swindziwe.
Tsindzela xin'wana na xin'wana ka name, limit_sats, reset_period na
expire_at, hi milawu leyi fanaka na leyi a nga tirhiswaka ka leyi endzhaku ka ku endla xitshungulo. null swaka xitlhokovetselo: a ku na nkarhi lowu nga fiki, a ku na ku tsundzuka, a ku na nkarhi lowu wu faneleke. Ku cinca nkarhi wa ku tsundzuka swi sungula nkarhi wova wa zero. Xikombiso lexi nga hlayisiwiki xi nga cinci (400 key_revoked). Dzurnisa
{"data": {…}} hi ku pfuxisiwa ka xitirho xa xikombiso xa xihlovo.
cURL
URL=https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856
BODY='{"limit_sats":50000,"expire_at":null}'
curl -X PATCH "$URL" \
-H "Authorization: $(nostr_auth PATCH "$URL" "$BODY")" \
-H "Content-Type: application/json" \
-d "$BODY"
Python
import json
import requests
url = "https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856"
body = json.dumps({"limit_sats": 50000, "expire_at": None}).encode()
res = requests.patch(
url,
data=body,
headers={"Authorization": nostr_auth("PATCH", url, body), "Content-Type": "application/json"},
)
print(res.json()["data"])
JavaScript
const url = "https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856";
const body = JSON.stringify({ limit_sats: 50000, expire_at: null });
const res = await fetch(url, {
method: "PATCH",
headers: { "Authorization": nostrAuth("PATCH", url, body), "Content-Type": "application/json" },
body,
});
console.log((await res.json()).data);
Ku hlayisa xikeyisi
DELETE https://nymbot.ai/api/v1/keys/{id} — swindziwe.
Yi vangela ku vala xitsandzu hi nkarhi lowu, hi ku ya siku. Yi tshama eka xiluva hi na revoked_at kumisa, naswona
swi nga vhonakala na include_revoked=trueKu herisa xitshungulo xa xito leri sunguluxiweke eka xito ni ku hlamula hi ndlela yin’we. Swito swa 50 swa le ka xito leswi sunguluxiweke swa vula swa nkarhi wa le ka swi hlayisiwa; swito leswi tswa swi deleriwa loko xito xin’wana xi sunguliwa.
Mpfuxeto
{ "data": { "id": "4f0c9a1be27d3856", "revoked": true } }
cURL
URL=https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856
curl -X DELETE "$URL" -H "Authorization: $(nostr_auth DELETE "$URL")"
Python
import requests
url = "https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856"
print(requests.delete(url, headers={"Authorization": nostr_auth("DELETE", url)}).json())
JavaScript
const url = "https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856";
const res = await fetch(url, { method: "DELETE", headers: { "Authorization": nostrAuth("DELETE", url) } });
console.log(await res.json());
NWC ku tswakanya hi timina hi swin'we
Hakanya Lightning wallet hi Nostr Wallet Connect naswona Nymbot yi tlangela ntsako hi xinxenhi hi ku tlangela mbulavulo loko API yi ri karhi yi dya xihandla xa xona. Xiphepha xa API xa app i swiyimo leswi fanaka; leswi i mindhavuko leyi nga ta ntsena. Hinkwaswo swi lava a xikwembu le xi nghenileke hi xihandla.
Ku sekerja hayi: hi mhanguwo wa nkarhi lowu u pfumanyetaka ku xavisiwa hi API request leyi u katshekeke ku xavisiwa hi mitsheketo leyi u karhi u yi tshiketa, loko mitsheketo leyi yi hetlele tlhelo ra wena, Nymbot yi endla mitsheketo ya ximaleketelo ya mali leyi u lavaka ku yi engetela, yi lava wallet ya wena ku yi ri paya, kutani ya engetela mali leyi. Yi engetela mali hi ku pikisela ku fika ka nkarhi wu ri nkarhi wu ri 5 miniti hi nkarhi ta ntiyiso eka nym na mitsheketo, hi ku ri nkarhi wu nga ri na ku hlayisela mali eka wallet. Ku xavisiwa eka apps a swi vangi nchumu lowu. Nkarhi na nkulu wa ximaleketelo xa mhanguwo wa mhanguwo, na nchumu lowu nga endleka emuva ka xiphiqo, ku ri eka settings; loko ximaleketelo xi fambile hi ku landza xiphiqo, ku hlola ximaleketelo xa xona hi swiyimo swa ku pfuxisa swi tlangela swona.
Xikongetelo xa xihlanganiso xi enza leswaku un’wana na un’wana loyi a nga na xona a kota ku kombela wallet ya wena ku xirhima. Nymbot
i xiga ku ri hi xikongetelo lexi xi rhandzisiwe hi ndlela leyi fihlakekeke naswona yi xi tirhisa ntsena ku xirhima mafambiselo ya xona ya ku pfuxa mali, kambe endla
xihlanganiso lexi xitsonga ntsena, hi xik budget xa ku xirhima eka wallet ya wena, leswaku xin’wana xa xin’wana xa lexi xi nga xi xirhima i ntsundzuka lowu u wu katsaka. Wallet yi fanele yi tshama yi tshimbilela pay_invoice.
Ku kumanyana na wallet
POST https://nymbot.ai/api/v1/nwc-auto-topup/connect — swindziwe.
| Ndlela | Bhala | Lavikekaka | Xichavo |
|---|---|---|---|
nwc_url | vutshila bya mbulavulo | Ina | Xingheni ya xivumandzanisi, yi sungula nostr+walletconnect://. Nymbot u kombela wallet leswaku u nyika get_info tswenisela ku yi veka, naswona ku yi hlayisa hi ndlela leyi fihliweke hi yona. |
threshold_sats | xinyongovalo | Ina | Faka mali loko xikambelo xi tshama xi ri nxi tlhelo wa sats loko xi ri yaంka ya le pasi ka leyi. Kan’we 1,000. |
topup_sats | xinyongovalo | Ina | Xana ku fanele ku engetwa mali ya engano mali ya engano ka nkarhi wosingwe? 1,000 ku ya ka 1,000,000 sats. |
tier | vutshila bya mbulavulo | A hi i | pro (xikombiso xa xivumbhulu) kumbe standard: mali leyi katsaka yo lava na ku engetela. |
Mpfuxeto
{
"data": {
"connected": true,
"threshold_sats": 5000,
"topup_sats": 20000,
"tier": "pro",
"last_topup_at": null,
"last_topup_sats": null,
"last_error": null
}
}
| Xiyimo | Loko hi nga ri<|thought|> |
|---|---|
400 | A hi xinghenisi xa xikombiso (invalid_nwc_url); wallet yi nga hlamulanga eka relay ya yona (nwc_unreachable) kumbe va tshikola ku hlola (nwc_rejected); khonexheni a ri kona ku antshelatela nakuva (nwc_missing_permission); kumbe xikauko lexi nga riki eka mindzhavuko. |
501 | Ku pfuxisiwa hi swikarhi swi nga ri kumeki eka server leyi (nwc_unavailable). Swi fana na swiendlu swimbirhi swa le hetelelo. |
cURL
URL=https://nymbot.ai/api/v1/nwc-auto-topup/connect
BODY='{"nwc_url":"nostr+walletconnect://...","threshold_sats":5000,"topup_sats":20000,"tier":"pro"}'
curl "$URL" \
-H "Authorization: $(nostr_auth POST "$URL" "$BODY")" \
-H "Content-Type: application/json" \
-d "$BODY"
Python
import json, os
import requests
url = "https://nymbot.ai/api/v1/nwc-auto-topup/connect"
body = json.dumps({
"nwc_url": os.environ["NWC_URL"],
"threshold_sats": 5000,
"topup_sats": 20000,
"tier": "pro",
}).encode()
res = requests.post(
url,
data=body,
headers={"Authorization": nostr_auth("POST", url, body), "Content-Type": "application/json"},
)
print(res.json())
JavaScript
const url = "https://nymbot.ai/api/v1/nwc-auto-topup/connect";
const body = JSON.stringify({
nwc_url: process.env.NWC_URL,
threshold_sats: 5000,
topup_sats: 20000,
tier: "pro",
});
const res = await fetch(url, {
method: "POST",
headers: { "Authorization": nostrAuth("POST", url, body), "Content-Type": "application/json" },
body,
});
console.log(await res.json());
Ku hlaya swi设置 swa xichavo
GET https://nymbot.ai/api/v1/nwc-auto-topup — swindziwe.
Yi khutisa xihlamuleri xin’we na xona lexi hi ku khambisela, na connected: false na swin'wana swihlala swa makota
null loko ku nga ri na wallet leyi tumbulukeke.
Ndlela ya ku tumbuluka hi yona yi nga vuyedzwi ri na nkarhi.
cURL
URL=https://nymbot.ai/api/v1/nwc-auto-topup
curl "$URL" -H "Authorization: $(nostr_auth GET "$URL")"
Python
import requests
url = "https://nymbot.ai/api/v1/nwc-auto-topup"
print(requests.get(url, headers={"Authorization": nostr_auth("GET", url)}).json())
JavaScript
const url = "https://nymbot.ai/api/v1/nwc-auto-topup";
console.log(await (await fetch(url, { headers: { "Authorization": nostrAuth("GET", url) } })).json());
Ku khutisa
DELETE https://nymbot.ai/api/v1/nwc-auto-topup/connection — swindziwe.
U tlhenya xikongomelo xa ku khoma (connection string) le xilelekeke. Ku nga ha ku pfumala swikongomelo swo vekisa mali (top-ups). Leswaku u tiyisela, u nga ha ha xaxela (revoke) ku khoma leva ku nga eka wallet ya wena.
Mpfuxeto
{ "data": { "connected": false, "threshold_sats": null, "topup_sats": null, "tier": null, "last_topup_at": null, "last_topup_sats": null, "last_error": null } }
cURL
URL=https://nymbot.ai/api/v1/nwc-auto-topup/connection
curl -X DELETE "$URL" -H "Authorization: $(nostr_auth DELETE "$URL")"
Python
import requests
url = "https://nymbot.ai/api/v1/nwc-auto-topup/connection"
print(requests.delete(url, headers={"Authorization": nostr_auth("DELETE", url)}).json())
JavaScript
const url = "https://nymbot.ai/api/v1/nwc-auto-topup/connection";
const res = await fetch(url, { method: "DELETE", headers: { "Authorization": nostrAuth("DELETE", url) } });
console.log(await res.json());
Ku riwa hi xikombiso xin'wana na xin'wana ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena ntsena nts
Swiendlu swa mitsheketo swa ximalekete swi nga rihweriwa hi xicelo xin'we hi xitlhokovetselo hi Lightning, ku nga ri na khave, akaunti kumbe xihundla: POST /images/generations, POST /images/edits,
POST /videos, POST /audio/speech, POST /audio/transcriptions,
POST /audio/translations na POST /embeddings. Ku xavulana, timhava na timesasya swi hloka khave nkarhi na nkarhi. Xiphiqo lexi nwetaka khave xi hlamuselwa mali eka ntsandzu hi ndlela ya xivandla; mfambelo wa mali wu sungula nkarhi lowu nga riki na khave leyi humeriwaka.
Nymbot u vulavula titoho ta nkarhi wu ri karhi u ri na madyondyondlo ya nkarhi wu ri karhi u huma eka backend yin’we: Lightning Labs'
L402 (kambe na hi vito ra xiyenge xa yena le ka xikokoteli, LSAT) na IETF draft
Mivalo ya mali Xinghenisiwa xa ku tiyisela ka HTTP na ka lightning ndlela na
charge nhlangano. Tirisa xin’wana na xin’wana lexi muxavisi wa wena a xi tivaka.
Ku riha bila xikongomelo swi ri hi nkarhi lowu riki laha u faneleke kona فحسب API_L402_SECRET ri khensatana swikulu swa 32 random
bytes, hi xuxeni (64 characters) kumbe base64 (44). Endla xin'wana hi openssl rand -hex 32Xikombiso lexi koma kumbe lexi nga tiviwiki hi ku kusuva xi tswika feature yi tswile naswona xi tsala leswaku hi yini. Ku ta cinca xona, yisela xikombiso lexi khale eka API_L402_SECRET_PREVIOUS hi ku n’ondlovo ya siku: xinolo, ma-URL ya xiyimo na
swikwembu leswi endliweke hi tanu swi tshama swi tirha ku fika loko swi fika nkarhi wa ku fela.
Xikuvhense
Humisa xikwembu hi ku nga riki nothing Authorization header. Loko swi pfumama, a ku ri na xin’wana lexi tirhaka, naswona
u kuma 402 Payment Required hi xiakumani lexi kombaka mali yo karhihi leyi xikombelo xin lavaka kona: mhala yin'weleyo leyi khavhe yi nga yi riha yona, ehemulweni wa 10 sats eka credit ya standard kumbe 100 sats eka credit ya Pro, naswona u hundlulaka eka sat yin'we (expletive: expletive: na 1 sat, naswona na 0.05 credit minimum). Mpfuxelelo yi ni xin'wele ta... WWW-Authenticate switsandzaka swa invoice yin'we:
HTTP/1.1 402 Payment Required
Content-Type: application/problem+json; charset=utf-8
Cache-Control: no-store
WWW-Authenticate: L402 macaroon="AgJC...", invoice="lnbc2370n1..."
WWW-Authenticate: LSAT macaroon="AgJC...", invoice="lnbc2370n1..."
WWW-Authenticate: Payment id="kM9x...", realm="nymbot", method="lightning", intent="charge",
request="eyJhbW91bnQiOiIyMzciLC...", description="Nymbot API POST /images/generations (237 sats)",
digest="sha-256=:X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=:", expires="2026-09-30T12:15:00.000Z",
opaque="eyJlbmRwb2ludCI6IlBPU1QgL2ltYWdlcy9nZW5lcmF0aW9ucyJ9"
{
"type": "https://paymentauth.org/problems/payment-required",
"title": "Payment Required",
"status": 402,
"detail": "This request costs 237 sats. Pay the Lightning invoice, then send the identical request again ...",
"challengeId": "kM9x...",
"amount_sats": 237,
"invoice": "lnbc2370n1...",
"payment_hash": "9db1370f...",
"expires_at": "2026-09-30T12:15:00.000Z",
"error": { "message": "This request costs 237 sats. ...", "type": "payment_required", "code": "payment_required", "param": null }
}
Mpfumawu wa Mali request parameter i base64url JSON:
{"amount":"237","currency":"sat","methodDetails":{"invoice":"lnbc...","network":"mainnet","paymentHash":"..."}}.
Xinyangisi xi pfumanyetiwa eka endpoint, eka e... Content-Type (swilo swa mianwana ya media ni, eka
multipart, mianwana ya yona ya boundary) ni eka SHA-256 ya swilo swa mianwana ya body leswi u tsandzeke, naswona swa tisa 15
ta manejeni. Emva ka ku rihlavula, tsandzeka... swi fanaka tswa lava fanaka: xin'we hi lexi
Content-Type ni ma-bytes ya JSON yo fanaka, kumbe eka ma-endpoints ya multipart
(/images/edits, /audio/transcriptions, /audio/translations)
ntibu yo tala hi ntshuri lomunwe hi boundary yin’we. Library ta HTTP to tala ti khesa boundary yin’we hi nkarhi wo karhi loko ti encode-a fomu, hi byin’wana encode i nkarhi wu’we u tsandza ti bytes ta le ka ku tsandza ka swilo hinkwaswo hi ku tlangi.
Address yin'wana yin'wana yi nga kombela swikombiso swi 30 ka minute (address ya IPv6 yi engetelwa hi ku ya hi /64 ya yona).
Swikombiso leswi address ya swona yi nga tiviwiki swi engetelwa ku koka swi 10 ka minute, naswona ku ni ntshikilelo wa xin'wana xa swikombiso leswi Nymbot yi swi engetaka eka address hinkwaswo; khombiso leyi nyikiweke ku n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi n'wi 429 na Retry-After, e tsentiwe ku fika nchumu wu nga ri baleriwa. Swivandluku swo rihlamusela swa swikongomisi leswi vuriwaka swi nga ri na xikombiso kumbe xihlamuselo swi tekela eka ntirho wa 120 wa swikongomisi swa mavele kumbe mavele ya ntirho hi minute eka xinyaki xin'wana xin'wana. Xihlamuselo xi verisiwa ku ringana nchumu wu nga ri baleriwanga, naswona xikongomisi lexi... Content-Type a riki application/json (kumbe
multipart/form-data hi ku hlawula swilo) swi tseketiwa hi 415 kambe a nga ri kumeni
nkhombo wa mali.
Swinkatana swi hlawuriwa hi ku xupaxupa ka ti-tokens eka xin서, hi ku endla nkarhi wa 1.5×, hikuva ku xupaxuwa ka nkarhi wa ntiyiso wu tiviwa hi ku tsutsuma. U rihiya hi ti-tokens leti tirhisiweke hakunene, naswona xiphemu lexi nga tirhisiwiki eka mali leyi riyiweke xi ta tlhela xi ta ndzhaka hi ku va a tihlamuleri ta tansi.
Ku humesa mfumawulo
Tsindza nkhuleti hi wallet yo karhi na yo karhi ya Lightning. Wallet leyo yi ku nyika preimage, swihlamarisi swa hex swa 64. Hi ku landza tsindza xikwembu lexi fanaka hi xin'wana xa leswi:
| Xikongomiso | Xihlahlo |
|---|---|
| L402 | Authorization: L402 <macaroon>:<preimage> (LSAT swi tirha na) |
| Mivalo ya mali | Authorization: Payment <base64url JSON>, hakona laha JSON yi nga kona {"challenge": {every parameter of the challenge, as sent}, "payload": {"preimage": "<hex>"}} |
Xikweto lexi ri ri mali ri hlamula hi ku ri fanana hi lexi xi endliwe hi xikombiso xa xikombiso, handle ka leswaku... nymbot
xiyenge a xi na swikamu swa mbalavala: {"payment": "l402", "tier": "pro", "paid_sats": 237,
"charged_sats": 237}, naswona ku nga ri na X-Nymbot-Balance-Sats header. A
xikombiso lexi xirhandzu hi xiyimo xa Payment scheme xi kuma xana Payment-Receipt header (base64url JSON yo va ni challenge id, xihlongobiso xa mali (payment hash) hi reference, status na
timestamp). Swikwembu leswi rihenhlawuliye swi nga ri tshinyeleki eka nchumu nti nti hi nchumu lowu vuriwaka nym, hi leswaku swi nga kombisiwi eka
nchumu lowu kombisiwaka eka query history.
| Xiyimo | Loko hi nga ri<|thought|> |
|---|---|
402 payment_already_used | Xikongomelo xin'wana na xin'wana xi ri xikongomelo xa xitlhokovetselo xin'we. Xiphendulo i xinyamalala lexi tsavaneke eka xikongomelo lexi, hi ku ri mufambisi lowu hlayisaka xiyimisi xa yena xa mhaka ya vukonzi xa xesuvula (hi ku... lnget hi nga xinkarhi xa ku ri: u ri mali hi ku antswa. |
402 payment_mismatch | Xikongomelo xi nyikiwe eka ndhawu yo panganaka leyi yin'wana. Content-Type kumbe mianakanyo, kumbe swi riha kusu Swi riha kusu ndzhaku ka xiphefhe lexi sweswi swi ri kwala mali. Xichavo xin'wana xin'wana xa xiphefhe lexi xi ta fika na xona; loko mali yo riwa yi ri nkombo, leswi u xirhandzaka swi ta ta ndzhaku hi xikan'wana a tihlamuleri ta tansi (refund_token na refund_sats eka mianwani). |
402 payment_expired | Mineminetu ya le ka 15 yi hundze ku sukela hi nkhuva lowu. Nkhuva wo marunha wu ta ni wona. Loko preimage yi kombisa leswaku u pfumule, leswi u pfumuleke swi ta ta ndzeni ka... tihlamuleri ta tansi (refund_token na refund_sats eka mianakanyo), xin’we; xikongomisi xi ta tirhisiwa ku fika ku fela. |
401 invalid_preimage | Preimage a yi hanyi hi hash ya xikwembu xa invoice. Xikwembu axisiya swi nga herisiwi. |
401 invalid_payment_credential | Xikongomelo i xihomakali, xi hundzuluxiwe hi le ku landza ka ku humiselwa ka xona hi Nymbot, kumbe xi vula nalaharisi ya mali leyi Nymbot a yi kombisetanga hi xikongomelo. Macaroon leyi nga na xiyimo lexi Nymbot a xi tiviki, kumbe leyi nga na xiyimo lexi tihlanganisaka, yi rhenxiwa. |
429 rate_limit_exceeded | Ku tlula swikongomana kumbe tikhapu ta 30 leti nga riki ku veriseka swi humelele eka xihloko lexi eka nkarhi wa nkarhu, kumbe tikhon’i ya ku pfumula (refund token) yi hundisiwe ku tlula ka masiku ya 60 eka nkarhu wa nkarhu. Lahlaka... Retry-After. |
cURL
BODY='{"model":"nano-banana","prompt":"a lighthouse at dusk","response_format":"b64_json"}'
URL=https://nymbot.ai/api/v1/images/generations
# 1. Get the challenge
CH=$(curl -s -D - -o /dev/null "$URL" -H "Content-Type: application/json" -d "$BODY" | grep -i '^www-authenticate: L402')
MAC=$(echo "$CH" | sed -E 's/.*macaroon="([^"]+)".*/\1/')
INVOICE=$(echo "$CH" | sed -E 's/.*invoice="([^"]+)".*/\1/')
# 2. Pay $INVOICE with your wallet and copy the preimage
PREIMAGE=...
# 3. Send the identical request with the credential
curl "$URL" -H "Content-Type: application/json" -H "Authorization: L402 $MAC:$PREIMAGE" -d "$BODY"
lnget
# lnget (Lightning Labs) pays L402 challenges from your own lnd node and retries for you
lnget -X POST -H "Content-Type: application/json" \
-d '{"model":"nano-banana","prompt":"a lighthouse at dusk","response_format":"b64_json"}' \
https://nymbot.ai/api/v1/images/generations
Python
import base64, json, re
import requests
url = "https://nymbot.ai/api/v1/images/generations"
body = json.dumps({"model": "nano-banana", "prompt": "a lighthouse at dusk", "response_format": "b64_json"}).encode()
headers = {"Content-Type": "application/json"}
challenge = requests.post(url, data=body, headers=headers)
assert challenge.status_code == 402
info = challenge.json()
print("Pay", info["amount_sats"], "sats:", info["invoice"])
preimage = pay_with_your_wallet(info["invoice"]) # 64 hex characters
# L402
mac = re.search(r'L402 macaroon="([^"]+)"', challenge.headers["WWW-Authenticate"]).group(1)
res = requests.post(url, data=body, headers={**headers, "Authorization": f"L402 {mac}:{preimage}"})
print(res.json()["nymbot"])
JavaScript
const url = "https://nymbot.ai/api/v1/images/generations";
const body = JSON.stringify({ model: "nano-banana", prompt: "a lighthouse at dusk", response_format: "b64_json" });
const headers = { "Content-Type": "application/json" };
const challenge = await fetch(url, { method: "POST", headers, body });
const www = challenge.headers.get("www-authenticate");
// The Payment scheme: echo every challenge parameter back with the preimage
const start = www.indexOf("Payment ");
const params = Object.fromEntries([...www.slice(start + 8).matchAll(/(\w+)="((?:[^"\\]|\\.)*)"/g)].map((m) => [m[1], m[2]]));
const { invoice } = JSON.parse(Buffer.from(params.request, "base64url").toString()).methodDetails;
const preimage = await payWithYourWallet(invoice);
const credential = Buffer.from(JSON.stringify({ challenge: params, payload: { preimage } })).toString("base64url");
const res = await fetch(url, { method: "POST", headers: { ...headers, Authorization: `Payment ${credential}` }, body });
console.log((await res.json()).nymbot, res.headers.get("payment-receipt"));
Vakweti lava hakweke eka mppx hi ndlela ya Lightning va tlangula xikombiso xa mali hi vonanga; va vutlumbheta eka endpoint va va tshame va ri.
Viidiyo
Ku riwe ntsengo POST /videos mihlamulo 202 ku fana ni loyi a nga ni xikungoni, ku kombisa na a
status_url: GET hi nga nchavi yo landzela ntirho lowu. Yi tsariwile
ni yi tirha hi masiku ya 24, loko ntirho lowu nga ri titsongahteri.
{
"id": "vid_...",
"status": "in_progress",
"status_url": "https://nymbot.ai/api/v1/videos/vid_...?exp=1790000000&sig=...",
"nymbot": {
"payment": "l402", "tier": "pro", "paid_sats": 4800, "charged_sats": 4800,
"refund_token": "REFUND-5E0B..."
}
}
Ti tshame hi refund_token e ku hlamuleni leyi: swi kombisiwa lexi laha فح only. Swi empty loko
video yi vumbeka (GET /api/v1/l402/refunds mihlamulo "status": "pending");
loko render yi nga pfuki ku nga ri ni mbulavulo wa mali, mali yi ya eka yona. URL ya xiyimo yi kombisa
refund_sats hi ku pfumbheta ntirho lowu pfumbhetiweke kambe ku nga kombisiwei token, hi ku vula leswaku ku tivisa ka URL ya xiyimo (status URL) a ku kombisi hi pfumbheto. Ku hlokoletela token na yena swi lulamisa ntirho lowu nga tlangiweke lowu a ku nga ri na munhu loyi a nga wu hlamulaka.
Ku pfumala mali
Loko xiphetho xa mali xi hungama hi ku pfumala na ku tihlanganisa ni ntsengo lowu nyikiweke Nymbot hi ku ya nge xiphetho xin’wana, mali yo fambisa yi tshama eka ntsengo lowu naswona
xihingeti xi vula sweswo, hi ku na charged_sats, hi ku fana na xikombiso xa xicelo lexi nga ni xikwembu. Loko xi tshama xi nga ri na xikwembu, xihingeke xi tshama xi ri na tihlamuleri ta tansi swi fanele swilo leswi u nga xi xavile:
{
"error": {
"message": "The image generator failed. Nothing was charged. Please try again. The 237 sats you paid are on refund token REFUND-...",
"type": "api_error",
"code": "upstream_error",
"refund_token": "REFUND-0C15DBED145D59131BA70298A413ADEB3D9B9AB082C476EA70A5BD38FCA5DE6D",
"refund_sats": 237,
"refund_expires_at": "2026-10-30T12:00:00.000Z"
}
}
Swilo leswi nga riki swinene swi ta tlhela swi ta swa ndlela leyi fantšhaka hi yona: loko u kombire swifaniso swimbirhi naswona xin’we xi nga bi nga ri ni ntsengo,
mhaka ya ku tsundzuka ya ku pfumelela i... nymbot xihloko xi khawuleta tikhonani ta ku pfumala xikwembu;
transcription yo lexi nkarhi wa xona wu nga kombiwi u n'wi tlangi u nga ri na xikombiso, xi xavisiwa hi nkarhi wo tala swinene lexi xiyilesi (ku nga ri wu tala vun'we na 30 minutes), naswona xivandlaka ku fana na nkarhi wa ntiyiso xi vuya xikwembu; loko swi kombisa leswaku xi tala vun'we na 30 minutes, xi riweti hi 413
kambe mali yo tala yo dzumbuka. Embeddings ti dzundzuxa leswi xihlamuselo xin swi hlayisaka. Xihlamuselo xa video lexi nga riki xi pfumeta xitokeni lexi xona xin nga dzundzuxile xin'wana.
Xitshungulo xa xingheniso i khodi ya 256-bit leyi nga riki na xiyimo. Nymbot yi hlaya fela hash ya yona, naswona yi fela hi ku hundza malembe 30. Yi tshungula mbilu ya sat, naswona u nga:
- Khoma hi yena. Humesa
Authorization: Bearer REFUND-…e kuva eka e xin'wana xa tindhawu ta end-point lexi henhle (OpenAI SDK yi xi teka xihlamuselo xa API key xa yona). Xihlamuselo xi huma eka token naswona leswi hanyeke swi tshama eka yona (refund_token_satse kanymbotxihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlamululo lexi nga riki na xihlam402refund_insufficient; ku hhendleka khombona ku nga ri na mitsalo swi vuyisela sats eka xikombiso xin’we xin’we. - Xi xupaxupa
GET /api/v1/l402/refundshi xingheni xin'we ku humisa{"sats": 237, "status": "open", "expires_at": "..."}. - Token yin’we yi nga tirhisiwa ka nkarhi lowu riki minutu 60 ntsena.
- Yihlanganisa eka nym. Tshayela eka Kumisa xipfano e
app ya Nymbot, kumbe u fona
POST /api/v1/l402/refunds/redeemhi na xikwembu le xi nghenileke hi xihandla na{"refund_token": "REFUND-...", "balance": "standard"}(kumbe"pro"). Swikulu swa credits swi ya eka balance (10 sats eka standard, 100 eka Pro); sats leti ti nga riki credit leyi heleleke ti tshama eka token e ta tirhisiwa e ka API requests.
cURL
URL=https://nymbot.ai/api/v1/l402/refunds/redeem
BODY='{"refund_token":"REFUND-...","balance":"standard"}'
curl "$URL" \
-H "Authorization: $(nostr_auth POST "$URL" "$BODY")" \
-H "Content-Type: application/json" \
-d "$BODY"
Mpfuxeto
{ "data": { "credited": 23, "tier": "standard", "balance_credits": 123, "remaining_sats": 7 } }