Msingi wa maarifa Watengenezaji
Uwiano, Top-ups na Keyes
Angalia kile una, up juu juu juu ya Lightning, up juu moja kwa moja kutoka kwa wallet yako mwenyewe, kuona nini gharama ya kila ombi, na kusimamia vifungo kutoka kwa nambari.
Ukurasa huu umetafsiriwa kwa mashine kwa urahisi. Toleo la asili la Kiingereza ndilo linalotumika.
Angalia uwiano wa
Wote wa usawa wako, na kiasi gani cha kichwa hiki kinachotumika.
GET https://nymbot.ai/api/v1/credits/balance Unahitaji kifungo cha API. POST Pia inafanya kazi, kwa wateja ambao wanatarajia.
balance ni sarafu mbili pamoja katika dola kwa bei ya sasa ya Bitcoin, kwa zana ambazo zinatarajia nambari moja (null Kila kitu kingine ni katika mikopo na taratibu, ambayo ni jinsi balances ni kweli kuhifadhiwa. key Unaweza kuandika kazi wewe ukafikiria ni bora ila wasomaji wakaona ni ya kawaida tu.
Majibu ya
{
"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"
}
}
| Hali ya | Wakati wa |
|---|---|
401 | Chaguo ni kutoweka, isiyojulikana, kufutwa au imekwisha. |
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);
Njia ya malipo
Jinsi gani unaweza juu, na mipaka. Lightning ni njia pekee.
GET https://nymbot.ai/api/v1/topup/payment-methods Hakuna kichwa inahitajika.
Top-up ni 10 hadi 1,000,000 sats; Pro-top-up lazima kununua angalau moja Pro credit, hivyo huanza kwa 100 sats. bulk_bonus inaelezea kiwango cha ziada juu ya juu kubwa, sawa na katika programu: 10%, 15% au 20% zaidi juu ya juu ya kawaida kutoka 500, 1,000 au 5,000 sats, na juu ya juu ya Pro kutoka 5,000, 10,000 au 50,000 sats.
Majibu ya
{
"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);
Kuongezeka juu ya Lightning
Inafanya akaunti ya Lightning ambayo inaongeza kiwango cha fedha kwa nym ambayo muhimu iko. kulipa kutoka kwa wallet yoyote ya Lightning, kisha Angalia kwa kwa ajili ya kuongeza mkopo.
POST https://nymbot.ai/api/v1/topup/create/btc-lightning Unahitaji kifungo cha API.
| Uwanja wa | aina ya | Mahitaji ya | Maelezo ya |
|---|---|---|---|
amount | Idadi ya | Ndiyo | Ni kiasi gani, katika currencyIdadi ya watu kwa ajili ya bet. |
currency | String ya | Hakuna | SATS (Huu ni uharibifu wa USD au BTCDollars ni kubadilishwa kwa bei ya sasa ya Bitcoin. |
tier | String ya | Hakuna | pro (Ujumbe wa dharura) au standard: ambayo usawa wa mkopo unatoka. |
Kiwango cha kawaida cha mkopo ni 10 sats na mkopo wa Pro ni 100 sats, pamoja na bonuses yoyote ya wingi;
credits Hii inaonyesha kile kitabu hiki kinachotengeneza.
Majibu ya
{
"invoice_id": "b7d41e0c95a2f38e6c1d0e9a4b7f2c61d3e8a05f9b2c4d7e1a6f3b8c0d5e2a9f4",
"payment_request": "lnbc100u1p5...",
"amount_sats": 10000,
"credits": 115,
"tier": "pro",
"expires_at": "2026-09-30T09:27:00Z",
"status": "pending"
}
| Hali ya | Wakati wa |
|---|---|
400 | Njia nyingine katika njia (unsupported_method(Ujumbe wa Kiwango cha Chini cha Fedha)unsupported_currency(Ukiwa na kiwango cha chini cha chini cha chini cha chini cha chini cha chini cha chini cha chini cha chini cha chini cha chini cha chini cha chini cha chini)amount_too_smallZaidi ya shilingi elfu moja (amount_too_large) au kukataliwa na mfuko wa Lightning (amount_out_of_range). |
429 | Zaidi ya akaunti 60 kwa nym hii, au 120 kutoka anwani hii, katika saa moja (rate_limit_exceededkwa pamoja na Retry-After). |
502 | Hakuna faili inaweza kufanywa kwa sasa (invoice_unavailablekwa pamoja 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);
Kuangalia juu ya top-up
Inakuuliza kama hesabu imekuwa kulipwa na, mara moja ina, inaongeza mikopo. kuangalia ni nini mikopo yake, hivyo baada ya kulipa, kuangalia mpaka hali ni creditedKuangalia tena baadaye ni salama: mkopo unakuja mara moja, bila kujali mara nyingi unahitaji.
GET https://nymbot.ai/api/v1/topup/status/{invoice_id} - unahitaji kichwa kutoka nym ambayo ilifanya akaunti.
status ya pending (Hakuna mshahara wa kutosha) paid (Hakuna kitu kinachohitajika, lakini bado haipatikani; angalia tena), credited (Katika kiwango chako) au expired (Hakuna malipo ya wakati). majengo ya usawa ni kwa ngazi ambayo hesabu huongezeka.
Majibu ya
{
"invoice_id": "b7d41e0c95a2f38e6c1d0e9a4b7f2c61d3e8a05f9b2c4d7e1a6f3b8c0d5e2a9f4",
"status": "credited",
"amount_sats": 10000,
"credits": 115,
"tier": "pro",
"expires_at": null,
"balance_credits": 523.33,
"balance_sats": 52333
}
| Hali ya | Wakati wa |
|---|---|
400 | Id sio id ya 64-karatasi kutoka kwa wito wa kuunda. |
404 | Hakuna faili ya id hii kwa nym (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);
Tunahitaji historia
Mstari mmoja kwa ombi: nini ilikuwa, aina gani, kiasi gani cha token na gharama gani. Hakuna maombi au majibu yamehifadhiwa, hivyo hakuna yoyote inarejeshwa. Mstari unahifadhiwa kwa siku 90, mpya kwanza. Key ambayo imefikia kiwango chake bado inaweza kusoma historia yake.
GET https://nymbot.ai/api/v1/queries/history - inahitaji API key, ambayo inaona maombi yake mwenyewe, au Maombi ya kuandikwa kutoka nym yako, ambayo inaona kila chaguo.
| Uwanja wa | aina ya | Mahitaji ya | Maelezo ya |
|---|---|---|---|
page | Msisemi Shaykh Rabiy ́ ni Imaam wa Jarh wat | Hakuna | Kiwango cha chini cha 1, kwa kiwango cha juu cha 1,000; ukurasa wa juu ni 400 invalid_value. |
page_count | Msisemi Shaykh Rabiy ́ ni Imaam wa Jarh wat | Hakuna | Rows kwa ukurasa. default 20, kwa kiwango cha juu 100. |
start_dateend_date | Maelezo ya Query (Query) | Hakuna | ISO 8601 tarehe au wakati. |
model | Maelezo ya Query (Query) | Hakuna | Mfano wa hii tu. |
type | Maelezo ya Query (Query) | Hakuna | chat, responses, messages, image, video, speech, transcription au embedding. |
all_keys | Maelezo ya Boolean (Query) | Hakuna | Kwa ajili ya kichwa: true Inaunganisha kila kifungo cha nym moja. default false. |
key_id | Maelezo ya Query (Query) | Hakuna | kwa ajili ya maombi, au kwa all_keys=trueHuu ni kichwa hiki pekee. |
Majibu ya
{
"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);
Maombi ya kuandika akaunti
Kufanya, kubadilisha na kufuta kifungo, muhtasari wa akaunti na top-ups za moja kwa moja hazichukua kifungo cha API. Wamechukua saini kutoka kwa nym yako, hivyo kifungo kilichopatikana kinaweza kutumia hadi kifungo chake lakini haiwezi kufanya kifungo kingine au kuongeza kifungo chake mwenyewe.
Programu inafanya hivi kwa ajili yako: kila kitu ndani yake Moto wa Sheet hutumia pointi hizi za mwisho. Unahitaji sehemu hii tu kuendesha kifungo kutoka kwa msimbo wako mwenyewe.
Kumbukumbu ni tukio la Nostr la aina 27235 (NIP-98), linalotumwa kwa base64 katika
Authorization Header kwa maneno Nostr Kwa upande wa mbele:
Matukio ya
{
"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": "..."
}
uni URL kamili ya ombi, mstari wa ombi unaohusishwa, hasa kama ilivyotumwa.methodHii ni njia ya HTTP.payloadni SHA-256 ya mwili wa ombi la asili, katika hex.POSTnaPATCHna mwili ambao unatuma unapaswa kuwa byte kwa byte ambayo umebatizwa.created_atlazima iwe ndani ya sekunde 60 ya saa ya seva.- Kila tukio hufanya kazi mara moja, a
GETkuingizwa, hivyo kichwa kilichopigwa hauwezi kuchezwa tena. Kuandika kipengele kipya kwa kila ombi.noncetag na thamani ya random ili maombi mawili yaliyoandikwa katika sekunde moja bado yanatofautiana. - Mwili wa ombi lililoandaliwa unaweza kuwa na kiwango cha juu cha 64 KB, na mwili unahitaji
Content-Type: application/json.
Matokeo ya kutoweka yanarudi 401 missing_nostr_authmoja ambayo ni mbaya kuundwa, mbaya kuandikwa, zamani sana, au kwa URL tofauti, mbinu au mwili kurudi
invalid_nostr_authMwisho wa kitabu hiki ni kwa ajili ya kurejesha.
nostr_auth_replayedAnwani ya API iliyotumwa kwa vitu hivi vya mwisho ni kukataliwa. saini inachukuliwa kabla ya mwili kusoma, na kila anwani inaweza kushindwa 30 mara kwa dakika (anwani ya IPv6 inachukuliwa kama nzima /64); baada ya hapo inapata 429 kwa
Retry-After.
Mifumo hii inaweza kutumika kutoka kwa wavuti za Nymbot (https://nymbot.ai,
https://nymchat.app Ukurasa kwenye tovuti nyingine yoyote hauna vichwa vya CORS nyuma, hivyo hauwezi kusoma kile wanachotuma.
Originhawana madhara yoyote.
Usajili unahitaji kifungo cha siri cha nym yako (the nsec), ambayo inashughulikia kila kitu: utambulisho wako, historia yako na kiwango chako. Tu kuweka katika script kwenye mashine unayoaminika, kusoma kutoka kwa mazingira badala ya kuandika kwenye faili, na kupenda programu wakati unaweza.
Wasaidizi hawa kujenga kichwa. Mifano ya baadaye kwenye ukurasa huu hutumia. Wao kusoma muhimu ya siri katika hex kutoka NOSTR_SECRET_HEXKwa upande mwingine, CURL moja hutumia
kwa ajili ya chombo cha mstari wa amri, ambayo inachukua chaguo la nsec au hex, na sha256sum kwa ajili ya 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");
}
Muhtasari wa Akaunti
Nini karatasi ya API ya programu inaonyesha juu: kifungo chako cha umma, pande zote mbili, ni vigumu kiasi gani (hakuna kufutwa au kumalizika), na Top-up ya moja kwa moja Mipango ya Mipango, au
null wakati server haina kutoa yao.
GET https://nymbot.ai/api/v1/account Unahitaji a Maombi ya kuandikwa.
Majibu ya
{
"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());
Usimamizi wa Key
Picha hii ilipigwa tokea ktk veranda za moja ya vyumba vya Manyara Serena Lodge. Maombi ya kuandikwaKila kifungo kinarejeshwa katika fomu hii, na wakati katika ISO 8601 na kiasi katika sats:
Vifaa vya msingi
{
"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 Ni kutosha kutambua kifungo lakini si kutumika.
Orodha ya Key
GET https://nymbot.ai/api/v1/keys ya kuandikwa.
| Uwanja wa | aina ya | Mahitaji ya | Maelezo ya |
|---|---|---|---|
include_revoked | Maelezo ya Boolean (Query) | Hakuna | Kuingiza vikwazo vya kufutwa. default false. |
Majibu ya
{ "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);
Kutoa kichwa
POST https://nymbot.ai/api/v1/keys ya kurejesha. kurudi 201.
| Uwanja wa | aina ya | Mahitaji ya | Maelezo ya |
|---|---|---|---|
name | String ya | Ndiyo | 1 hadi 40 wahusika, tofauti na vifungo vyako vingine vya kazi (kuacha kesi). |
limit_sats | Uwepo wa | Hakuna | Kuanza kucheza katika TopSlotSite , kufuata 1 hatua rahisi kujiandikisha. |
reset_period | String ya | Hakuna | daily, weekly au monthlyMahitaji ya limit_satsKuondoka kwa caps ambayo kamwe kurejesha. |
expire_at | Mstari wa string au integer | Hakuna | Wakati muhimu huacha kufanya kazi: wakati wa ISO 8601, au miliseconds tangu 1970. |
Majibu ya (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"
}
}
| Hali ya | Wakati wa |
|---|---|
400 | Jina la kutokuwepo au la muda mrefu sana; jina ambalo tayari linatumiwa (duplicate_name); kifungo ambacho sio namba nzima ya angalau 1; kipindi cha kurejesha bila kifungo; kumalizika katika siku za nyuma; shamba isiyojulikana (unknown_parameter); au vifungo vya 25 tayari vinavyofanya kazi (too_many_keys). |
429 | Zaidi ya maneno 60 yaliyotolewa na nym hii, au 120 kutoka anwani hii, katika saa moja (rate_limit_exceededkwa pamoja 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);
Kusoma kichwa moja
GET https://nymbot.ai/api/v1/keys/{id} ya kuandikwa.
Kurudi kwa {"data": {…}} pamoja na chombo cha msingi, au 404
key_not_found Ikiwa hakuna kifungo chako kina ID hiyo.
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);
Mabadiliko ya Key
PATCH https://nymbot.ai/api/v1/keys/{id} ya kuandikwa.
Tuma kwa mtu yeyote name, limit_sats, reset_period na
expire_at, kwa sheria sawa kama wakati wa kufanya kichwa. null Kuanza kucheza katika TopSlotSite , kufuata 3 hatua rahisi kujiandikisha, kufuata 3 hatua rahisi kujiandikisha.400 key_revokedUrefu wa kurudi
{"data": {…}} kwa objekti ya msingi iliyopangwa.
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);
Kuondoa kichwa
DELETE https://nymbot.ai/api/v1/keys/{id} ya kuandikwa.
Kuanza kucheza katika TopSlotSite , kufuata 3 hatua rahisi kujiandikisha. revoked_at inapatikana, na inaweza kuonekana kwa include_revoked=trueKuondoa kifungo ambacho tayari kilichochukuliwa kinajibu kwa njia sawa. tu 50 ya hivi karibuni zilizochukuliwa zinahifadhiwa; wale wazee hutolewa wakati kifungo kingine kilichochukuliwa.
Majibu ya
{ "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());
Maoni ya NWC Auto-top-up
Kuunganisha wallet ya Lightning na Nostr Wallet Connect na Nymbot huongeza usawa kwa mwenyewe wakati matumizi ya API hufanya chini. karatasi ya API ya programu ina mipangilio sawa; haya ni vitu vya mwisho nyuma yake. Wote wanahitaji Maombi ya kuandikwa.
Jinsi inavyofanya kazi: Baada ya ombi la API lilipelekwa kwenye kiwango ambacho umechagua kutazama, ikiwa kiwango hicho kilipungua chini ya kiwango chako, Nymbot hufanya akaunti kwa kiasi chako cha juu, huomba pesa yako kulipa, na kuongeza mikopo. Inakuja kwa zaidi ya mara moja kila dakika ya 5 kwa kila nym na kiwango cha juu, hivyo upungufu wa maombi hauwezi kupoteza fedha. Kutumia katika programu haina kusababisha. Muda na ukubwa wa mwisho wa juu, na makosa ya mwisho, ni katika mipangilio; ikiwa malipo yalifanyika baada ya makosa, angalia akaunti yake na Hali ya juu kwa ajili ya kuaminika.
Nymbot inahifadhiwa na daima hutumia tu kulipa mafao yake mwenyewe juu-up, lakini kufanya uhusiano tu kwa hili, na bajeti ya matumizi katika wallet yako, hivyo zaidi ambayo inaweza kamwe kulipa ni idadi kuchagua wewe. pay_invoice.
Kuunganisha kwa Wallet
POST https://nymbot.ai/api/v1/nwc-auto-topup/connect ya kuandikwa.
| Uwanja wa | aina ya | Mahitaji ya | Maelezo ya |
|---|---|---|---|
nwc_url | String ya | Ndiyo | Kuanzisha mlinzi juu ya msalaba, kuanzia nostr+walletconnect://Nymbot anahitaji mfuko wa get_info kabla ya kuhifadhiwa na kuhifadhiwa. |
threshold_sats | Uwepo wa | Ndiyo | Kuanzisha mlinzi juu ya msalaba unapoanguka chini ya viwango hivi vingi. angalau 1,000. |
topup_sats | Uwepo wa | Ndiyo | Ni kiasi gani cha kuongeza kila mara. 1,000 hadi 1,000,000 sats. |
tier | String ya | Hakuna | pro (Ujumbe wa dharura) au standard: usawa wa kuangalia na juu. |
Majibu ya
{
"data": {
"connected": true,
"threshold_sats": 5000,
"topup_sats": 20000,
"tier": "pro",
"last_topup_at": null,
"last_topup_sats": null,
"last_error": null
}
}
| Hali ya | Wakati wa |
|---|---|
400 | Hakuna kiungo cha kuunganisha (invalid_nwc_url(Hakuna uhakika juu ya mkataba wa mkataba huo)nwc_unreachable) au kukataa cheque (nwc_rejected(Hakuna uhakika wa kuingia kwenye akaunti ya mkopo)nwc_missing_permission) au kiasi cha nje ya mipaka. |
501 | Mifumo hii ya uendeshaji haipatikani kwenye mtandao (nwc_unavailableHivyo ndivyo ilivyo kwa vitu viwili vingine vya mwisho. |
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());
Kusoma mipangilio ya
GET https://nymbot.ai/api/v1/nwc-auto-topup ya kuandikwa.
Kurejesha kitu kimoja kama vile kuunganisha, na connected: false na maeneo mengine ya
null Ikiwa si kwa helikopta, kwa sababu hakuna uwanja wa ndege, njia iliyozoeleka kufika Panza [...]
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());
Kuondokana na
DELETE https://nymbot.ai/api/v1/nwc-auto-topup/connection ya kuandikwa.
Inaondoa mstari wa uhusiano uliohifadhiwa. Hakuna up-ups zaidi. Kwa uhakika, unaweza pia kufuta uhusiano katika wallet yako.
Majibu ya
{ "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());
Malipo kwa maombi bila kichwa
Mipango ya mwisho ya bei ya kudumu inaweza kulipwa kwa ombi moja kwa wakati juu ya Lightning, bila muhimu, hakuna akaunti na hakuna usawa: POST /images/generations, POST /images/edits,
POST /videos, POST /audio/speech, POST /audio/transcriptions,
POST /audio/translations na POST /embeddingsMazungumzo, Majibu na Ujumbe daima wanahitaji kifungo. Maombi ambayo ina kifungo hutajwa kwenye hesabu kama kawaida; mtiririko wa malipo huanza tu wakati hakuna kifungo kilichotumwa.
Nymbot inazungumzia matoleo mawili ya wazo moja, kutoka backend moja: Lightning Labs'
wa 402 (Pamoja na kuwa na majina ya zamani, LSAT) na mradi wa IETF
Malipo ya Mfumo wa uhakiki wa HTTP na lightning Njia na
charge Tumia kile ambacho mteja wako anajua.
Malipo bila kichwa ni juu tu wakati API_L402_SECRET ina angalau bytes 32 random, kama hex (64 wahusika) au base64 (44). openssl rand -hex 32Kiwango cha muda mfupi au kinachoweza kufikiri kinakuondoa kipengele na kurekodi kwa nini. API_L402_SECRET_PREVIOUS kwa siku moja: uthibitisho, URL za hali na changamoto zilizofanywa chini yake zinaendelea kufanya kazi mpaka zinapowekwa.
Changamoto ya
Tuma maombi yako kwa No Authorization header. Ikiwa ni halali, hakuna kitu kinachofanyika, na unapata 402 Payment Required na akaunti kwa nini hasa kwamba ombi gharama: bei sawa muhimu itakuwa kulipa, kubadilishwa kwa 10 sats kwa ajili ya mkopo kiwango au 100 sats kwa ajili ya mkopo Pro na karibu hadi sat nzima (angalau 1 sat, na angalau 0.05 kiwango cha chini cha mkopo). WWW-Authenticate Matatizo kwa akaunti moja kwa moja:
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 }
}
Malipo ya request Mfano wa JSON ni base64url:
{"amount":"237","currency":"sat","methodDetails":{"invoice":"lnbc...","network":"mainnet","paymentHash":"..."}}.
Mchakato unaounganishwa na hatua ya mwisho, kwa Content-Type (mfano wake wa vyombo vya habari na, kwa sehemu nyingi, mipaka yake) na kwa SHA-256 ya bajeti sahihi ya mwili uliyotuma, na inachukua dakika 15. sawa Maombi kwa mara nyingine tena: sawa
Content-Type na bytes za JSON sawa, au kwa vipengele vingi vya mwisho vya sehemu (/images/edits, /audio/transcriptions, /audio/translationsMaktaba nyingi za HTTP huchagua kikomo kipya kila mara wanapokodisha fomu, hivyo kuagiza mara moja na kutuma bajeti hizo mara mbili.
Kila anwani inaweza kuuliza changamoto 30 kwa dakika (anwani ya IPv6 inachukuliwa kama /64 yake yote). Maombi ambayo anwani haijulikani kushiriki 10 kali kwa dakika, na kuna kiwango cha jumla juu ya changamoto Nymbot matatizo katika anwani zote; ombi kukataliwa kabla ya changamoto inachukuliwa (kwa mfano na mwili ambayo si sahihi JSON) haina kuhesabiwa kwa hiyo. 429 kwa Retry-After, kutumwa kabla ya mwili inasomwa. vifungo vya mwisho vya kulipwa vilivyoitwa bila kichwa au mamlaka pia vinashughulika na kiwango cha jumla cha maombi yasiyo ya kuthibitishwa ya 120 kwa dakika kwa anwani. Content-Type si ya application/json (au ya
multipart/form-data kwa ajili ya upakiaji) ni kukataa na 415 Na kamwe hakuwa na akaunti.
Uingizaji unahesabiwa kutoka kwa makadirio ya tokens katika kuingia, na margin ya 1.5; mara, kwa sababu hesabu halisi inajulikana baadaye tu. Urefu wa token.
Kutuma malipo ya
Kulipa akaunti na wallet yoyote ya Lightning. Wallet inakupa picha ya awali, 64 ishara ya hex. Kisha kutuma ombi sawa na mojawapo ya haya:
| Mfumo wa | Header ya |
|---|---|
| wa 402 | Authorization: L402 <macaroon>:<preimage> (LSAT Pia hufanya kazi |
| Malipo ya | Authorization: Payment <base64url JSON>ambapo JSON inapatikana {"challenge": {every parameter of the challenge, as sent}, "payload": {"preimage": "<hex>"}} |
Maombi ya kulipwa yanajibu sawa na yale yaliyofanywa na kichwa, isipokuwa kwamba nymbot
Object haina mashamba ya usawa: {"payment": "l402", "tier": "pro", "paid_sats": 237,
"charged_sats": 237}Hata hivyo, kuna hakuna X-Nymbot-Balance-Sats Msimamizi Mjerumani akamwauliza kijana mwenyeji je jina la mahali ni nini? Payment-Receipt header (base64url JSON na id ya changamoto, hash ya malipo kama reference, status na
timestampMaombi ya kulipwa hayahusiani na nym yoyote, hivyo hayakuonyeshwa katika historia ya maombi.
| Hali ya | Wakati wa |
|---|---|
402 payment_already_used | Kila malipo inalipa kwa ombi moja. Jibu ni changamoto mpya kwa ombi hili, hivyo mteja ambaye anahifadhi utambulisho wake wa mwisho (kama lnget Hivyo basi, ni rahisi kurejea tena. |
402 payment_mismatch | Ujumbe huo ulikuwa umewekwa kwa upande mwingine. Content-Type au mwili, au kulipa chini kuliko ombi hili sasa gharama. changamoto mpya kwa ombi hili inakuja pamoja naye; kama malipo yalikuwa ndogo sana, kile ulicholipwa huja nyuma kama Urefu wa token (refund_token na refund_sats katika mwili wa mtu). |
402 payment_expired | Zaidi ya dakika 15 zimepita tangu changamoto. changamoto mpya inakuja na hiyo. Ikiwa picha ya awali inaonyesha ulipokea malipo, kile ulichopewa kinarejeshwa kama Urefu wa token (refund_token na refund_sats katika mwili), mara moja; baada ya hapo utambulisho unatumika. |
401 invalid_preimage | Maelezo ya awali hayana hash ya malipo ya akaunti. malipo hayana kutumika. |
401 invalid_payment_credential | Kitambulisho kimeundwa vibaya, kilibadilishwa baada ya Nymbot kutolewa, au majina ya malipo ya hash Nymbot kamwe hakuwahi kutolewa kodi kwa. |
429 rate_limit_exceeded | Zaidi ya nambari 30 au vifaa ambavyo havikuweza kuthibitishwa zilikuja kutoka anwani hii ndani ya dakika moja, au token moja ya malipo ilitumwa zaidi ya mara 60 kwa dakika. 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"));
Wateja waliojengwa katika mppx kwa njia ya Lightning kushughulikia changamoto ya Malipo wenyewe; kuelekeza yao katika hatua ya mwisho na kuwaacha kulipa.
Video ya
ya kulipwa POST /videos Majibu ya 202 Jinsi ya kuondoa umaskini, pamoja na a
status_url: GET Ni saini na inafanya kazi kwa masaa 24, kwa muda mrefu kama kazi imehifadhiwa.
{
"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..."
}
}
Kuhifadhi refund_token Jibu: Hii ni mojawapo ya majaribio haya, na ni mojawapo ya majaribio haya (GET /api/v1/l402/refunds Majibu ya "status": "pending"); ikiwa render haifai bila malipo, malipo hutokea juu yake. URL ya hali inaonyesha
refund_sats kwa kazi iliyorudishwa lakini kamwe token, hivyo kushiriki URL ya hali haina kushiriki kurudishwa.
Malipo ya
Ikiwa ombi la kulipwa linashindwa na mtoa huduma alichukua Nymbot kwa jaribio hilo, malipo yanaendelea na makosa inasema hivyo, na charged_satskama ilivyoelezwa katika Sheria ya EWURA kipengere cha 6 (e, moja ya majukumu ya EWURA ni kutoa elimu kwa wadau wake kuhusu kazi na majukumu ya Mamlaka kwa sekta inazozidhibiti. Urefu wa token Ni thamani ya kile unachokipokea:
{
"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"
}
}
Sehemu zisizotumika zinakuja kwa njia sawa: ikiwa umependekeza picha mbili na moja haikufanyiwa malipo, jibu la mafanikio nymbot kitu hutoa token ya kurudi kwa moja ambayo haipo; transcription ambayo urefu hauwezi kusoma mbele inahesabiwa kwa muda mrefu zaidi faili inaweza kuwa (sijawahi zaidi ya dakika 30), na tofauti kwa urefu halisi huja nyuma kama token ya kurudi; ikiwa inaonekana kuwa zaidi ya dakika 30, ni kukataliwa na 413
na malipo yote yatarejeshwa. Uhamisho unarejeshwa kile ambacho makadirio yalikuwa yamehifadhiwa. Video iliyokuwa haifai inarejeshwa kwa token iliyotolewa na maombi yake.
Token ya kurudi ni msimbo wa random wa 256-bit. Nymbot inahifadhi tu hash yake, na inachukua muda baada ya siku 30. Inahifadhi saldo ya sat, na unaweza:
- kulipa kwa hilo. Tuma kwa
Authorization: Bearer REFUND-…Kwenye mstari wa chini, mstari wa juu, mstari wa juu, mstari wa juu, mstari wa juu, mstari wa juu, mstari wa juu, mstari wa juu, mstari wa juu, mstari wa juu, mstari wa juu (refund_token_satsKatika yanymbot(Object) Token yenye thamani ya chini kuliko majibu ya ombi402refund_insufficientKazi ya kurejesha mkopo hupelekea kurejesha mkopo wa mkopo huo. - Angalia kwa ajili yake.
GET /api/v1/l402/refundsPamoja na header hiyo ya kurudi{"sats": 237, "status": "open", "expires_at": "..."}. - Token moja inaweza kutumika zaidi ya mara 60 kwa dakika.
- Fanya hivyo kwa nym. Fanya hivyo katika Kutoa zawadi ya katika programu ya Nymbot, au wito
POST /api/v1/l402/refunds/redeemkwa a Maombi ya kuandikwa na{"refund_token": "REFUND-...", "balance": "standard"}(au ya"pro"Kila mikopo huenda kwenye kiwango cha usawa (10 mikopo kila moja kwenye kiwango cha kawaida, 100 kwenye Pro); mikopo ambayo haifanya mikopo yote ya mikopo kwenye token kwa maombi ya API.
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"
Majibu ya
{ "data": { "credited": 23, "tier": "standard", "balance_credits": 123, "remaining_sats": 7 } }