Ruka hadi yaliyomo
Kurudi kwa Nymbot

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.

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 yaWakati wa
401Chaguo 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 waaina yaMahitaji yaMaelezo ya
amountIdadi yaNdiyoNi kiasi gani, katika currencyIdadi ya watu kwa ajili ya bet.
currencyString yaHakunaSATS (Huu ni uharibifu wa USD au BTCDollars ni kubadilishwa kwa bei ya sasa ya Bitcoin.
tierString yaHakunapro (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 yaWakati wa
400Njia 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).
429Zaidi ya akaunti 60 kwa nym hii, au 120 kutoka anwani hii, katika saa moja (rate_limit_exceededkwa pamoja na Retry-After).
502Hakuna 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 yaWakati wa
400Id sio id ya 64-karatasi kutoka kwa wito wa kuunda.
404Hakuna 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 waaina yaMahitaji yaMaelezo ya
pageMsisemi Shaykh Rabiy ́ ni Imaam wa Jarh watHakunaKiwango cha chini cha 1, kwa kiwango cha juu cha 1,000; ukurasa wa juu ni 400 invalid_value.
page_countMsisemi Shaykh Rabiy ́ ni Imaam wa Jarh watHakunaRows kwa ukurasa. default 20, kwa kiwango cha juu 100.
start_date
end_date
Maelezo ya Query (Query)HakunaISO 8601 tarehe au wakati.
modelMaelezo ya Query (Query)HakunaMfano wa hii tu.
typeMaelezo ya Query (Query)Hakunachat, responses, messages, image, video, speech, transcription au embedding.
all_keysMaelezo ya Boolean (Query)HakunaKwa ajili ya kichwa: true Inaunganisha kila kifungo cha nym moja. default false.
key_idMaelezo ya Query (Query)Hakunakwa 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": "..."
}
  • u ni URL kamili ya ombi, mstari wa ombi unaohusishwa, hasa kama ilivyotumwa.
  • method Hii ni njia ya HTTP.
  • payload ni SHA-256 ya mwili wa ombi la asili, katika hex. POST na PATCHna mwili ambao unatuma unapaswa kuwa byte kwa byte ambayo umebatizwa.
  • created_at lazima iwe ndani ya sekunde 60 ya saa ya seva.
  • Kila tukio hufanya kazi mara moja, a GET kuingizwa, hivyo kichwa kilichopigwa hauwezi kuchezwa tena. Kuandika kipengele kipya kwa kila ombi. nonce tag 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.

Key yako ya siri

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 waaina yaMahitaji yaMaelezo ya
include_revokedMaelezo ya Boolean (Query)HakunaKuingiza 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 waaina yaMahitaji yaMaelezo ya
nameString yaNdiyo1 hadi 40 wahusika, tofauti na vifungo vyako vingine vya kazi (kuacha kesi).
limit_satsUwepo waHakunaKuanza kucheza katika TopSlotSite , kufuata 1 hatua rahisi kujiandikisha.
reset_periodString yaHakunadaily, weekly au monthlyMahitaji ya limit_satsKuondoka kwa caps ambayo kamwe kurejesha.
expire_atMstari wa string au integerHakunaWakati 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 yaWakati wa
400Jina 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).
429Zaidi 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.

Kabla ya kuunganisha wallet

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 waaina yaMahitaji yaMaelezo ya
nwc_urlString yaNdiyoKuanzisha mlinzi juu ya msalaba, kuanzia nostr+walletconnect://Nymbot anahitaji mfuko wa get_info kabla ya kuhifadhiwa na kuhifadhiwa.
threshold_satsUwepo waNdiyoKuanzisha mlinzi juu ya msalaba unapoanguka chini ya viwango hivi vingi. angalau 1,000.
topup_satsUwepo waNdiyoNi kiasi gani cha kuongeza kila mara. 1,000 hadi 1,000,000 sats.
tierString yaHakunapro (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 yaWakati wa
400Hakuna 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.
501Mifumo 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.

Kuendesha server yako mwenyewe

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 waHeader ya
wa 402Authorization: L402 <macaroon>:<preimage> (LSAT Pia hufanya kazi
Malipo yaAuthorization: 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 yaWakati wa
402 payment_already_usedKila 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_mismatchUjumbe 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_expiredZaidi 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_preimageMaelezo ya awali hayana hash ya malipo ya akaunti. malipo hayana kutumika.
401 invalid_payment_credentialKitambulisho kimeundwa vibaya, kilibadilishwa baada ya Nymbot kutolewa, au majina ya malipo ya hash Nymbot kamwe hakuwahi kutolewa kodi kwa.
429 rate_limit_exceededZaidi 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_sats Katika ya nymbot (Object) Token yenye thamani ya chini kuliko majibu ya ombi 402 refund_insufficientKazi ya kurejesha mkopo hupelekea kurejesha mkopo wa mkopo huo.
  • Angalia kwa ajili yake. GET /api/v1/l402/refunds Pamoja 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/redeem kwa 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 } }