Nheyo yezivo Vanakovaka micheto
Mari yakasara, kuwedzera mari nemaki
Ongorora zvawana, uchinja mari kuburikidza neLightning, uchinja mari zvakare zvakajaira kubva kune wallet yako, ona kuti chikumbiro chimwe nechimwe chakadhura zvakadii, uye uchinobata makiya kubva kune code.
Peji ino yakaturikirwa nemuchina kuti zvirerukire. ChiRungu chepakutanga ndiyo shanduro inoshanda.
Kutarisa mari yakasara
Michera yenyu yese, uye kuti ndosvitsa zvakadini pakugumira kwechichengetedzo chechiungwa ichi.
GET https://nymbot.ai/api/v1/credits/balance — inoda API key. POST zvinoitodzikirawo, kune vatengi vanozvinotarisira.
balance mari madorora maviri ari pamwe chete muDhorobha panguva yemitengo yeBitcoin yezvino,
kuvadzimba dzinotarisira nhamba imwe chete (null kana mutengo usiri kukwanisa kuverengwa). Zvakarera ndezve
makrediti ne sats, izvo ndizvo zvinoita kuti mabhālance anzwisise. key anotsanangura kiyi
yakabvunza. Kiyi yakasvika pamugumo inogona kugona kuongorora mivara.
Mhinduro
{
"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"
}
}
| Chimiro | Nguva ipi |
|---|---|
401 | Kiyi haina kuwanikwa, haizivikanwi, yakadhindwa kana kuti yakapfuura nguva yayo. |
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);
Nzira dzekubhadhara
Ungaita sei kupa mari, nezvazvose zvinoitwa. Lightning ndiyo nzira imwe chete.
GET https://nymbot.ai/api/v1/topup/payment-methods — hapana jesi rinodiwa.
Kuwonjezera kwemari kuri kubva pa 10 kusvika pa 1,000,000 sats; kuwonjezera kwePro kunofanira kutenga kurekodhi imwe chete yePro, saka kunotanga
pa 100 sats. Migreni yemadhora inotevedzera mutengo weBitcoin. bulk_bonus anotaura mari yepasi pano inowedzerwa pakuzadza mari yakawanda, sezvakaita mubhuku reapp: 10%, 15% kana 20% yakawanda pakuzadza mari zvakajairika kubva pa500, 1,000 kana 5,000 sats, uye pakuzadza mari yePro kubva pa5,000, 10,000 kana 50,000 sats.
Mhinduro
{
"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);
Kuwedzera mari nekushandisa Lightning
Inogadzira Lightning invoice inoisia credit kunym iyo key inobata nayo. Ipirai kubva kune imwe imwe Lightning wallet, wobva ongotarisa kuti credit iwedzerwe.
POST https://nymbot.ai/api/v1/topup/create/btc-lightning — inoda API key.
| Munda | Nyora | Zvinodiwa | Tsananguro |
|---|---|---|---|
amount | nhamba | Ehe | Kwakadini, mu currencyNhamba yakazara ye sats. |
currency | tambo | Kwete | SATS (zvakagadzirwa), USD kana BTCDhodhi yakashandurwa pamutengo weBitcoin wezuva rino. |
tier | tambo | Kwete | pro (zvinotambirwa) kana kuti standard: i nhamo inopinda pakuipi? |
Chikwereti chakafanana ndicho sats 10 uye chikwereti chePro ndicho sats 100, pamwe chete nemubhau webulk;
credits inotaura kuti invoice iyi ichawonjezera chii.
Mhinduro
{
"invoice_id": "b7d41e0c95a2f38e6c1d0e9a4b7f2c61d3e8a05f9b2c4d7e1a6f3b8c0d5e2a9f4",
"payment_request": "lnbc100u1p5...",
"amount_sats": 10000,
"credits": 115,
"tier": "pro",
"expires_at": "2026-09-30T09:27:00Z",
"status": "pending"
}
| Chimiro | Nguva ipi |
|---|---|
400 | Imwe nzira muna path (unsupported_method), mari isisingazivikanwi (unsupported_currency) kana nhanho, mari isipo, kana mari iri pasi peminimu (amount_too_small), pamusoro pe 1,000,000 sats (amount_too_large) kana kuti kwakasvosorerwa neLightning wallet (amount_out_of_range). |
429 | Invoices anopfuura makumi matanhatu e nym iyi, kana kuti 120 kubva pane address iyi, mumaawa amwe (rate_limit_exceeded, ne Retry-After). |
502 | Hapana invoice inogona kugadzirwa iyezvino (invoice_unavailable, ne 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);
Kutarisa kudzimutsa kwemari
Anobvunza kana invoice yakabhadharwa uye, kana zvakaitwa, anowedzera credit. Kuongorora ndiko kunoita kuti
iwedzere credit, saka mushure mekubhadhara, ongorora kusvikira status yave creditedKutarisa zvakare
ushakwa huve zvakanaka: mari inopinda kamwe chete, pasinei nekukumbira kakawanda zvakadii.
GET https://nymbot.ai/api/v1/topup/status/{invoice_id} — anoda kiyi kubva kunym yakagadzira invoice iyoyo.
status ndiko pending (isati ibhadharwa zvachose), paid (babhadharwa, asi isati
yapindiswa; tarisa zvakare), credited (pama balance ako) kana kuti expired (havana kubhadhara
nguva). Ma fields emari akagadzirirwa nzvimbo inenge ichipindurwa ne invoice.
Mhinduro
{
"invoice_id": "b7d41e0c95a2f38e6c1d0e9a4b7f2c61d3e8a05f9b2c4d7e1a6f3b8c0d5e2a9f4",
"status": "credited",
"amount_sats": 10000,
"credits": 115,
"tier": "pro",
"expires_at": null,
"balance_credits": 523.33,
"balance_sats": 52333
}
| Chimiro | Nguva ipi |
|---|---|
400 | Id iyi haisi id yemabazi anomwe nemakumi mana (64-character id) yakabva pakukumbira create call. |
404 | Hapana invoice neidzo idzo yeimwe idanho yemazita ako (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);
Nhoroondo yemibvunzo
Mutsara umwe chete peradziro: kuti zvakange zvakadii, imhando ipi yemodeli, nhamba yemashoko (tokens) uye mutengo waro. Hapana zvimhangura (prompts) kana mhinduro zvinochengetwa, saka hapana chinodzorwa. Mitsara inochengetwa kwemazuva makumi okapfuura 90, zvitsva zviri mberi. Chii chinenge chasvika pakugumira kwaro chinokwanisa kuverenga nhoroondo yaracho.
GET https://nymbot.ai/api/v1/queries/history — inoda kiyi ye API, iyo inoziva zvikumbiro zvayo, kana kuti kusaina kwekumbirwa kubva pane zita rako, rinoona chekutanga kwechinhu chega chega.
| Munda | Nyora | Zvinodiwa | Tsananguro |
|---|---|---|---|
page | nhamba (mubvunzo) | Kwete | Default 1, pakupfuura 1,000; peji rakakwirira ndiro 400 invalid_value. |
page_count | nhamba (mubvunzo) | Kwete | Mitsara per page. Default 20, pakanyanya 100. |
start_dateend_date | string (query) | Kwete | Zuva kana nguva dzeISO 8601. |
model | string (query) | Kwete | Mhando iyi chete. |
type | string (query) | Kwete | chat, responses, messages, image, video, speech, transcription kana embedding. |
all_keys | boolean (query) | Kwete | Nekiyi: true inosanganisira maki chese ane zita rimwe chete. Default false. |
key_id | string (query) | Kwete | Nekuda kwekuti pane chikumbiro chakanyorwa nezvayo, kana kuti nekuda kwe all_keys=true: chete chikiyi ichi. |
Mhinduro
{
"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);
Kusaina zvimanyorero zvekukumbira akaunganidzwa
Kugadzira, kuchinja uye kubvisa maki, pfupiso yeakaunti uye kudzidzorera mari zvakazvimirira hazvidei API key. Chinodiwa chipinciso kubva pa 'nym' yako, saka key yakaboorwa inogona kushandisa kusvika pamugrenge yayo (cap) asi haizogoni kugadzira imwe key kana kukwidza mugrenge yayo pachayacho.
App iyi inokuitira izvi: zvinhu zvose zvakachengeteka API pepa inoshandisa maendpoints aya. Unongoda chikamu chino chekuita kuti uchengetedze ma клюches kubva kumu code wako.
Sainire yakanyorwa seNostr event yemhando 27235 (NIP-98), yakatumirwa ichinyorwa mu-base64 mu
Authorization musoro une shoko Nostr pamberi:
Chikanganwa
{
"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": "..."
}
undiyo URL yakazara yemubvunzo, ichikwira query string, sezvakatumirwa chaizvo.methodndiyo nzira yeHTTP.payloadndicho SHA-256 ye raw request body, mu hex. Inodiwa paPOSTuyePATCH, uye muviri waunosendesa unofanira kunge uri umo wawakashandisa hashing.created_atzvinoenderana nemaminitsi 60 wependande reserver.- Chiitiko chimwe nechimwe chinofamba kamwe chete, a
GETzvakaiswa, kuitira kuti header yakabata isakwanise kushandiswa zvakare. Saina imwe idzva pane chimwe nechimwe chikumbiro. Wedzera anoncetag nechimero chisingazivikanwi kuti zvikumbiro zviri mbiri zvakanyorwa pakodzwa sekondo chimwe chete zvichiri kusiyana. - Muviri wekucherechedza kwakanyorwa unogona kuva makiraliya anoziva 64 KB zvakanyanya, uye muviri unoda
Content-Type: application/json.
Chiitiko chakashaikwa chinodzokera 401 missing_nostr_auth; imwe inenge yakanganiswa, yakasaina nenzira isiri iyo, yakwegura zvakanyanya, kana kuti yeURL, nzira kana muviri wakasiyana inodzoka ne
invalid_nostr_auth, nezvikonzero zviri mumashoko; rimwe rakashandiswa zvakare rinodzoka
nostr_auth_replayed. API key yakatumirwa kune ma endpoints aya inorambidzwa.
Signature inonzi kutarisa usati watoda kuverenga body, uye kune chimwe nechimwe address inogona kukundikana kashanu makumi matatu paminitsi (IPv6
address inoonekwa semubatanidzwa wake we /64); mushure meizvozvo inenge ya 429 ne
Retry-After.
MaBrowser anogona kudzvanya maendpoint aya kubva pamaungano aNymbot chete (https://nymbot.ai,
https://nymchat.app (uye madunihakidza avo). Peji pane imwe site ipi zvake haripiwe ma CORS
headers, saka harikwanisi kuverenga zvinodzoka nazvo. MaScripts nemapurogiramu ekunze, ari asina kutumira
Origin, havashandikidzwe.
Kusaina kunoda kiyi yakavanzika ye nym yako (the nsec), inopaudzwa
zvese: kuzivikanwa kwako, nhoroondo yako uye mari yako. Isai mumascript chete pamuchina
wamunovimba nawo, verengai kubva kuenvironment pane kunyora mumafambiro emuchina, uye
shandisai app kana muchikwanisa.
Vabatsiri ava vanovaka header. Mienzaniso inotevera parasajini iyi inoshandisa ivavo. Vanoverenga secret key muhex kubva ku NOSTR_SECRET_HEX; iye wecURL anoshandisa
nak chishandiso checommand-line, chinotora nsec kana hex
key, uye sha256sum (pa 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");
}
Pfupiso yeakaunti
Zvinoratidza pamusoro pepepa reAPI yeapp: public key yako, mabhareki ose maviri, kuti machiwedza akawanda sei
akashanda (asina kutorwa kana kupfuura nguva), uye kuzvizadza zvakare zvoga mip设置, kana
null apo server isingapa izvo.
GET https://nymbot.ai/api/v1/account — anoda kusaina kwekumbirwa.
Mhinduro
{
"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());
Kuchengetedza maki kurovedza
Mapfuroi ari kumashure ekunyorwa kwechìdzitiro cheapp. Ese anoda yakatsaiwa kumbira. Mutsara wekugadziridza wekuguma mune mafomati aya, nenguva dziri muISO 8601 nezvikamu muSats:
Chinhu chakakosha
{
"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 zvakakwana kuziva kiyi asi kusaishandisa. Kiyi yacho pachayo inopiwa
kare kare, kana yakagadzirwa.
Kuratidza maki
GET https://nymbot.ai/api/v1/keys — yakasainidzwa.
| Munda | Nyora | Zvinodiwa | Tsananguro |
|---|---|---|---|
include_revoked | boolean (query) | Kwete | Isanganisai maki asi akadhururwa. Default false. |
Mhinduro
{ "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);
Kugadzira jecha
POST https://nymbot.ai/api/v1/keys — yakasainidzwa. Dzokera 201.
| Munda | Nyora | Zvinodiwa | Tsananguro |
|---|---|---|---|
name | tambo | Ehe | Mashandiro emazwi anoti 1 kusvika ku40, akasiyana nemamwe mavambo ako akashanda (vasina kutarisa hurukuro). |
limit_sats | nhamba yakakwana | Kwete | Chikawanyira chekusarudza mumats, zvimwe kana kuti 1. Siyai pasina chikawanyira. |
reset_period | tambo | Kwete | daily, weekly kana monthlyZvinodiwa limit_satsSiisi izvose kuti pane mugove usatingozosimudze zvakare. |
expire_at | string kana integer | Kwete | Kana kiyi ikarega kushanda: ISO 8601 nguva, kana millisecond dzakabva kubva 1970. |
Mhinduro (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"
}
}
| Chimiro | Nguva ipi |
|---|---|
400 | Zita risipo kana kuti rakareba zvakanyanya; zita riri kushandiswawo (duplicate_name); iguzu risingava nhamba yakazara inenge pakarekodhi 1; nguva yekusimutsidzira isina iguzu; nguva yekugumira yakapfuura; bhondi isingazivikanwi (unknown_parameter); kana kuti maki 25 ari kushanda dzatove (too_many_keys). |
429 | Zvinopfuura ma 60 ma ключи akagadzirwa neiyi nym, kana ma 120 kubva pane iri adiresi, muimwe bhurasi (rate_limit_exceeded, ne 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);
Kuverenga kiyi imwe
GET https://nymbot.ai/api/v1/keys/{id} — yakasainidzwa.
Kudzokidzwa {"data": {…}} nechinhu chekey, kana kuti 404
key_not_found kana hapana yechimwe chezvako ine idiyo iyoyo.
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);
Kuchinja konji
PATCH https://nymbot.ai/api/v1/keys/{id} — yakasainidzwa.
Tumira chero chimwe che name, limit_sats, reset_period uye
expire_at, nemitemo yakafanana nepaya paitwa nekuita kiyi. null anobvisa
nhamba: hapana magumo, hapana kugadzirisa zvakare, hapana kuregera. Kuchinja nguva yekugadzirisa kunotanga nguva itsva kubva pazv zero.
Kiyi yakabatwa haigoneki kuchinjwa (400 key_revoked). Dzoka
{"data": {…}} nechivakwa chekey yakavandudzwa.
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);
Kubvisa kiyi
DELETE https://nymbot.ai/api/v1/keys/{id} — yakasainidzwa.
Inombedza kiyi nekukasvika, nekusingaperi. Inogara muri panzepe ne revoked_at akagadzirwa, uye anogona
kuonekwa ne include_revoked=trueKuderera kwechikoshi chakatovadererwa kunopa mhinduro imwe chete. Chikoshi zvitsva zvakadererwa makumi mashanu chete ndizvo zvochengetedzwa; zvakare zvakadererwa zvobviswa kana chimwe chikoshi chichadererwa.
Mhinduro
{ "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 auto-top-up
Batanidza Lightning wallet neNostr Wallet Connect uye Nymbot inozvikudziridza mari pakaipa kana API spending ikaita kuti pashoma. Shona yeAPI yeapp ine ma settings akafanana; aya ndiyo endpoints dziri kumashure kwazvo. Dzose idzi dzinoda a kusaina kwekumbirwa.
Zvinoshanda sei: mushure mekuti chikwereti cheAPI chakabhadharwa kubva pane chikwereti chawakasarudza kutarisa, kana chikwereti ichocho chakapfuura pasi pepurogiramu yako yekunzwisisa, Nymbot inogadzira invoice yechokwadi chekuwedzera chikwereti, inokumbira wallet yako kuti ibhadhare, uye inowedzera chikwereti ichocho. Inowedzera chikwereti kamwe chete pakupfuura maminitsi mashanu ega ega kune imwe imwe nym uye chikwereti, kuitira kuti kupfumbura kwemubvunzo kusingagumi kusakudza wallet. Kushandisa mune zvizhinji hakuna kukonzera izvi. Nguva uye kukura kwekuwedzera chikwereti kwerapedzisira, pamwe nekukanganisa kwerapedzisira, zviri mune zvizhinji (settings); kana kubhadharwa kwakabudirira mushure mekuungana, kutarisa invoice yacho ne kwazvo kwakabatwa kwekuwedzera mari zvakaitwa nayo.
Connection string inobvumira chero ani nani anozvigadza kukumbira wallet yako kubhadhara. Nymbot inochengetedza ichinyorwa nenzira yakavharika uye inongoishandisa kubhadhara mafactura ake ekuzadza mari, asi gadzirai hukama huri izvi chete, nebhajeti yekushandisa mur wallet yenyu, kuitira kuti mari yakawanda zvakanyanya inogona kubhadhara i nhamba yamakasarudzira. Wallet inofanira kutsigira pay_invoice.
Kubatanidza wallet
POST https://nymbot.ai/api/v1/nwc-auto-topup/connect — yakasainidzwa.
| Munda | Nyora | Zvinodiwa | Tsananguro |
|---|---|---|---|
nwc_url | tambo | Ehe | Mutsara wekubatanidza, kutanga nostr+walletconnect://. Nymbot inokumbira wallet kuti ipe get_info asati kuichengetedza, uye chinoichengetedza yakavigwa nemanyorerwo akavharika. |
threshold_sats | nhamba yakakwana | Ehe | Zvikwanise kana mari yakasara ichipfuura sats idzi. Pamusoro pe1,000. |
topup_sats | nhamba yakakwana | Ehe | Ndeipi mari yekuwana nguva dzose. 1,000 kusvika pa1,000,000 sats. |
tier | tambo | Kwete | pro (zvinotambirwa) kana kuti standard: mari yakasara yekutarisa nekuzadza. |
Mhinduro
{
"data": {
"connected": true,
"threshold_sats": 5000,
"topup_sats": 20000,
"tier": "pro",
"last_topup_at": null,
"last_topup_sats": null,
"last_error": null
}
}
| Chimiro | Nguva ipi |
|---|---|
400 | Haisi mutsara wekubatanidza (invalid_nwc_url); wallet haikuna kupindura kuburikidza ne relay yayo (nwc_unreachable) kana akasimba kuita chekuongorora (nwc_rejected); hukama hunogona kushaya kukwanisa kubhadhara mabhazi (nwc_missing_permission); kana kuti mari iri kunze kwemiganhu. |
501 | Kuzadzisa mari zvoga hakuziviswa paserivha rino (nwc_unavailable). Zvakare zvakafanana nemagumo maviri ariupari. |
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());
Kuverenga zviziviso
GET https://nymbot.ai/api/v1/nwc-auto-topup — yakasainidzwa.
Inodzorera chinhu chimwe chete sezvo zvakaita nekubatanidza, ne connected: false uye mamwe mapeji
null panguva iyo hapana wallet yakabatanidzwa. Connection string yacho haizomboburitswi.
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());
Kuchizvura hukama
DELETE https://nymbot.ai/api/v1/nwc-auto-topup/connection — yakasainidzwa.
Anobvisa string yekubatanidza yakachengetwa. Hapachazove nekudzorera mari zvakare. Kuti uve nechokwadi, unogonawo kubvisa kubatana ikoko muma wallet ako.
Mhinduro
{ "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());
Kubhadhara pakuita chikumbiro pasina kiyi
Mapinda ane mutengo wakatarwa anogona kubhadharwa rimwe rimwe rekukumbira panguva imwe chete kuburikidza neLightning, pasina 'key', pasina akaunti uye pasina mari yakasara: POST /images/generations, POST /images/edits,
POST /videos, POST /audio/speech, POST /audio/transcriptions,
POST /audio/translations uye POST /embeddings. Chat, Mhinduro ne
Meseji dzose dzinoda kiyi. Chido chinotakura kiyi chinobhadharwa kubva pane mupfundo sezvinotambisika;
kufambiswa kwemubhadharo kunotanga chete kana kiyi isingatumirwa.
Nymbot inotaura mhando mbiri dzemufungwa mumwe chete, kubva ku backend imwe chete: Lightning Labs'
L402 (zvinotambirwawo nezita racho rakare, LSAT) uye draft yeIETF
Kubhadhara Chirongwa chekuvimbisa cheHTTP ne lightning nzira uye
charge chinangwa. Shandisa chero chimwe chacho muganhu wako anounzwisisa.
Kubhadhara usina kiyi kunoitwa chete kana API_L402_SECRET kuine ma bytes 32 akatsamira, se hex (mitsetse 64) kana base64 (44). Iva neimwe uyo wakagadzirwa ne openssl rand -hex 32.
Kuderedza kana kukwanisa kuwana mutsauko kunodzima chiyambiro icho uye kunoita kurekodhwa kwezvikonzero. Kuti uchinjire, ishe mutsauko wekare ku API_L402_SECRET_PREVIOUS Kwemazuva amwe: zvinyorwa zvekupindira, maURL emamiriro uye miedzo yakaitwa pasi payo inoramba ichishanda kusvika dzapera.
Dambudziko
Tumira chikumbiro pasina Authorization header. Kana zvichibudirira, hapana chinenge chichishanda, uye
unowana 402 Payment Required ne invoice inobhadhara chaizvo zvinodhura chikumbiro ichoichi:
mutengo wekuti key ingabhadharawo, yakashandurwa kuva 10 sats pakukredhita kwakadai (standard) kana 100 sats pakukredhita kwePro
uye yakakwazurwa kusvika pashanu (pambadzi yekuti kwekuregedza 1 sat, uye kuregedza 0.05 credit minimum). Mhinduro inopa zvimwe zvishanu WWW-Authenticate matambudziko einvoice imwe chete:
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 }
}
Kubhadharwa request parameter iBase64url JSON:
{"amount":"237","currency":"sat","methodDetails":{"invoice":"lnbc...","network":"mainnet","paymentHash":"..."}}.
Chirambidzo chakabatanidzwa nekupera kwacho, ku Content-Type (mhando yemanyorerwo ayo uye, kana
iri multipart, boundary yayo) uye ku SHA-256 yemabhodhi akanyatsoenderana nema bheyiti awa atumira, uye inogara 15
maminiṭi. Mushure mekubhadhara, tumira yakafanana pinda zvakare: zvakafanana
Content-Type uye ma JSON bytes aya anozvadzo, kana kuti kumapoints e-multipart
(/images/edits, /audio/transcriptions, /audio/translations)
mugove wemultipart wefanana nemutaundi wefanana. MaHTTP libraries akawanda anosarudza mutaundi mutsva nguva dzese
dzavanobata fomu, saka unogona kuencode kamwe chete woitumira maBytes acho kaviri.
AdhirESI rimwe nerimwe rinogona kukumbira zvimhingamupinyi makumi matatu pamunitsi (adirési reIPv6 rinotorwa se /64 yacho yese).
Mikumbiro iyo adhirési rayo risingazivikanwi inogovana mashanu emunitsi anopinza zvakanyanya, uye pane muganhu wakati kuti
pazvimhingamupinyi zvose zvinopiwa neNymbot kune adhirési dzese; chikumbiro chakatsigirwa usati wapiwa chimhingamupinyi
(semuenzaniso nebody isiri JSON yakajeka) hachisi kutarisa muganhu uyu. Kupfuura izvozvo mhinduro ndeyekuti 429 ne Retry-After, yasendwa musati mabhodhi averengwa. Mapoinzi aunoshandiswa asina kiyi kana chimangamira anobatwa seanobata muganhurudzo yepakati nepakati ye 120
zvikumbiro zvisina kuzivikanwa pamunyu weyimiti imwe chete pamaminitsi ekuvhara. Chimangamira chinochengetwa musati mabhodhi averengwa, uye chikumbiro chine Content-Type haasi application/json (kana
multipart/form-data yekukwenya) inorambidzwa ne 415 uye hachambozvitsvaga
invoice.
Mari yemashoko (embeddings) inobhadharwa zvichienderana nekufungidzira mashoko ari mukupinda, ichishandisa 1.5× margin, nekuti chaiyo inenge yawanikwa chete mushure mekunge zvaitika. Mubhadharo wauri kubhadhara unobhadharwa pamashoko anoshandiswa chaiwo, uye chikamu chemari isina kushandiswa inodzokerera kwauri se mudzorodzo yemari yemudhara.
Ndichitumira mari yekubhadhara
Ripa i-invoice uchiita ne Lightning wallet chero ipi. Wallet iyoyo inokupa preimage, makuya emakumi matanhatu nemashanu e-hex. Zvino tumira request imwe chete iyoyo neimwe pazviri izvi:
| Chirongwa | Musoro |
|---|---|
| L402 | Authorization: L402 <macaroon>:<preimage> (LSAT inoitikawo) |
| Kubhadhara | Authorization: Payment <base64url JSON>, uko JSON iripo {"challenge": {every parameter of the challenge, as sent}, "payload": {"preimage": "<hex>"}} |
Chikumbiro chakabhadharwa chinopindura zvakafanana nemuchikumbiro wakaitwa nechivharo, kunze kwekuti nymbot
object haina mafambisirwo emari: {"payment": "l402", "tier": "pro", "paid_sats": 237,
"charged_sats": 237}, uye hapana X-Nymbot-Balance-Sats mukoshi. A
chiratidzo chekubhadhara chashandiswa nePayment scheme chinowanawo Payment-Receipt header (base64url
JSON nemhangura yechallenge id, payment hash se reference, status uye
timestamp). Kubhadharwa kwezvikumbiro hakuna kubatanidzwa nechimwe zita rinoshandiswa nemunhu, saka hazviitirwi kuonekwa muna
query history.
| Chimiro | Nguva ipi |
|---|---|
402 payment_already_used | Kubhadharwa kune chekutanga kune chikumbiro chimwe chete. Mhinduro ndicho chinhu chitsva chinotyisa pane chikumbiro ichi, saka mukushandisa kwekuchengetedza chimwe chete chekupedzisira (sezvo lnget anobhadhara zvakare chete. |
402 payment_mismatch | Chitendero chakapiwa kune imwe nzvimbo yekugamuchira, Content-Type kana muviri, kana kubhadhara zvishoma pane mari inodiwa neizvi iye zvino. Hutari hutsva hwechikumbiro ichi hunouya nacho; kana kubhadhara kwaiva kushoma zvakanyanya, zvaunobhadhara zvinodzoka semubayiro mudzorodzo yemari yemudhara (refund_token uye refund_sats muchiruzivo. |
402 payment_expired | Zvinodarika maminitsi gumi nemashanu zvapfuura kubva pachimhanho. Chimhanho chitsva chinouya nacho. Kana preimage ikakuudza kuti wakaripa, zvaunenge wakaripa zvinodzoka semu mudzorodzo yemari yemudhara (refund_token uye refund_sats mune muviri), kamwe chete; zvimwe zvizere zvinobva zvashandiswa. |
401 invalid_preimage | Preimage haishanduri kuita payment hash yeinvoice. Mubhadharo hauna kushandiswa zvachose. |
401 invalid_payment_credential | Zvikwereti zvakanganiswa, zvakachinjwa mushure mekuti Nymbot yakazvigadzira, kana kuti zvichitaura nezve payment hash yaNymbot isina kumboisa invoice. Macaroon ine caveat yaNymbot isingazivi, kana kuti ine caveats dzinopikisanidzana, inorambidzwa. |
429 rate_limit_exceeded | Kudarika maivharidzi kana maki akataura anopfuura makumi matatu akashaya kuzivikanwa kubva pane chiziviso ichi mumaminitsi imwe chete, kana kuti token yedambudziko rimwe chete yakatumirwa kudarika makumi matanhatu mumaminitsi imwe chete. Mirira 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"));
Vatengi vakavakirwa pa mppx vashandise Lightning method kuitira kuita dambudziko rePayment
vachivazivisa endpoint yacho vozoita kubhadhara.
Mavhidhiyo
Kubhadharwa POST /videos mhinduro 202 sezvakaita kune rinozivikanwa, pamwe chete nea
status_url: GET pasina chichidza chekutevera basa racho. Rakanyorwa
uye rinoshanda kwemasvomhu makumi maviri, chero basa racho riripo.
{
"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..."
}
}
Chengetedzai refund_token kubva pane mhinduro iyi: zvinoratidza pano chete. Zvinenge zvakasiwa pavari kuita video (GET /api/v1/l402/refunds mhinduro "status": "pending");
kana render ikafunga isina kubhadharwa, mari inowira panyaya iyoyo. URL ye status inoratidza
refund_sats kubátwa kwemari yemabasa akadzoka asi token isati yauya, saka kugovana URL yezvakabuda hakusi kugovana mari yakadzoka. Kutarisa token zvakare kunobvisa basa rakakundikana rakasanyadzwa nemunhu.
Rudziro dzeMari
Kana chikumbiro chekubhadharwa chikafamba zvisina kubudirira uye mushandisi akabhadharisa Nymbot nekuedza ikoko, mari yacho inochengetwa uye
error inozivisa izvozvo, ne charged_sats, sezvo zvakafanana nekukumbira kune kiyi. Kana zvikakundikana
pasina kubhadharwa, kukanganisa kune a mudzorodzo yemari yemudhara zvinokosha sezvawabvira:
{
"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"
}
}
Zvikamu zvisashandiswa zvinodzoka zvakafanana: kana kuti wakakumbira mifananidzo miviri uye imwe ikafailer isina kubhadharwa,
mhinduro yebudiriro yayo nymbot chinhu chinotakura tiketi rekudzorera mari rechinhu rakashaikwa;
ndokuburitswa kwemashoko kwaive kusina kukwanisa kuverengwa pamberi kuitira mutengo wakati kureba kwefayera
ringaibva (zisati pakupfuura maminitsi makumi matatu), uye musiyano wekereke yechokwadi unodzoka semari
yekudzorwa; kana zvikawanikwa kuti rwakareba kupfuura maminitsi makumi matatu, rorambwa nekuti 413
uye kubhadharwa kwese kunodzoka. Maembeddings anodzorera zvaunyorongwa kwaiva nezvinhu zvakaraswa. Video yakakundikana inodzorerera token yayo yaive yakabuda pakunyorwa kwayo.
Token yekudzosa mari i-code isina kurongeka ye256-bit. Nymbot inochengetedza hash yacho chete, uye inoguma mushure memazuva 30. Inochengetedza balance ye-sat, uye unogona:
- Shambisa nayo. Tumira
Authorization: Bearer REFUND-…pazvose zvemapfundo ari pamusoro (OpenAI SDK inozviita semuchidimbu cheAPI yayo). Mutengo unobva pane token uye zvinosara zvinogara pamusoro payo (refund_token_satsmunymbotchinhu). Token ine mutengo uri pasi pemhinduro dzekukumbira402refund_insufficient; kukundikana kusina kubhadharwa kunodzosa sats dzakare pachitoken chimwe chete. - Edza kuona.
GET /api/v1/l402/refundsne header imwe chete inodzorera{"sats": 237, "status": "open", "expires_at": "..."}. - Token imwe chete inogona kushandiswa kashoma kashanu makumi (60) pamunhu wemaminitsi amwe.
- Isaisai pane zita risingazivikanwi. Isaisai mukati me Shandisa chipo muchina
yeNymbot app, kana kufonera
POST /api/v1/l402/refunds/redeemne kusaina kwekumbirwa uye{"refund_token": "REFUND-...", "balance": "standard"}(kana"pro"). Ma kiredhi akazara anopinda pabhansi (sats 10 pamwe chete pa standard, 100 pa Pro); sats dzisingasviki kuva kiredhi rakazara dzinogara patoken kuitira ma 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"
Mhinduro
{ "data": { "credited": 23, "tier": "standard", "balance_credits": 123, "remaining_sats": 7 } }