Мэдлэгийн бааз Үйлдвэрлэгчид
Баланс, top-ups болон ключ
Татай морилно уу, Lightning дээр дарна уу, автоматаар өөрийн хуванцар дээр дарна уу, бүр хүсэл зардал үзнэ үү, код-аас ширээг удирдах.
Энэ хуудсыг тав тухтай байлгах үүднээс машинаар орчуулсан болно. Англи хэл дээрх эх хувилбар нь тохирох хувилбар юм.
Баланс шалгаж
Таны баланс, энэ ключ нь хавтгай ашиглаж байна.
GET https://nymbot.ai/api/v1/credits/balance — API ключ хэрэгтэй. POST Энэ нь үйлчлүүлэгчдэд хэрэглэж байна.
balance Bitcoin-ийн одоогийн үнэ дээр доллар дахь хоёр салбарт нэгтгэсэн байна, нэг тоо хүсэж байгаа хэрэгсэл нь (null үнэ уншсангүй бол). Өнгөрсөн зүйл нь кредит болон sats юм, энэ нь бодисоо нь бодисоор хадгалж байна. key Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу!
Сэтгэгдэл
{
"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"
}
}
| Үйлчилгээ | Үнэндээ |
|---|---|
401 | Тавтай морилно уу, тавтай морилно уу. |
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);
Үнэлгээний арга
Хэрэв та татаж авах боломжтой вэ, болон хязгаарлалт. Lightning нэг арга юм.
GET https://nymbot.ai/api/v1/topup/payment-methods ямар ч түлхүүр хэрэгтэй.
Top-up нь 10 нь 1,000,000 sats юм; Pro-top-up нь хамгийн бага нь нэг Pro кредит худалдан авах ёстой, Тиймээс энэ нь 100 sats дээр эхэлнэ. Доллар хязгаарлалт нь Биткойн үнэтэй байна. bulk_bonus илүү том top-ups дээр нэмэлт зээлийн жагсаалт, апп-ийн шиг: 500, 1000, 5000 sats-аас стандарт top-ups дээр 10%, 15% эсвэл 20% илүү, 5000, 10,000 эсвэл 50,000 sats-аас Pro top-ups дээр.
Сэтгэгдэл
{
"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);
Өнгөрсөн Lightning
Lightning фактурын үүсгэх нь ключтай нь кредит нэмнэ. Ямар ч Lightning гарын үсэгээс төлбөр, дараа нь Сэтгэгдэл кредит нэмнэ үү.
POST https://nymbot.ai/api/v1/topup/create/btc-lightning — API ключ хэрэгтэй.
| Байгалийн | Бүтээгдэхүүн | Үйлчилгээний | Үзүүлэлт |
|---|---|---|---|
amount | Нийт | Тиймээ | Өнгөрсөн цаг, in currency. sats нь бүрэн тоо. |
currency | Түлхүүр | Үнэгүй | SATS (Хуувцаслалт нь) USD эсвэл BTCДоллар нь одоогийн Bitcoin үнэ дээр конвертируулдаг. |
tier | Түлхүүр | Үнэгүй | pro (Барилга) эсвэл standard: Үйлчлүүлэгчийн зээлийн баланс гэж байна. |
Стандарт кредит нь 10 sats, Pro кредит нь 100 sats, түүнчлэн ямар ч тооны урамшуулал;
credits ЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэр
Сэтгэгдэл
{
"invoice_id": "b7d41e0c95a2f38e6c1d0e9a4b7f2c61d3e8a05f9b2c4d7e1a6f3b8c0d5e2a9f4",
"payment_request": "lnbc100u1p5...",
"amount_sats": 10000,
"credits": 115,
"tier": "pro",
"expires_at": "2026-09-30T09:27:00Z",
"status": "pending"
}
| Үйлчилгээ | Үнэндээ |
|---|---|
400 | Зарим арга зам (unsupported_method), мэдлэггүй валютын (unsupported_currency) эсвэл түвшин, хязгаарлагдмал хэмжээ, эсвэл хамгийн бага (amount_too_small), 1000 гаруй sats (amount_too_large) эсвэл Lightning Wallet-ийн хүлээн зөвшөөрсөн (amount_out_of_range). |
429 | Энэ нэмэлтээс 60 гаруй фактурууд, эсвэл 120-аас энэ хаяг, цаг хугацаанд (rate_limit_exceededӨнгөрсөн Retry-After). |
502 | Одоогийн үнэ төлбөргүй (invoice_unavailableӨнгөрсөн 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);
Татаж авах Top-up
Тавтай морилно уу, тавтай морилно уу, дараа нь тавтай морилно уу. Тавтай морилно уу, тавтай морилно уу. creditedДараа нь дахин шалгах нь аюулгүй юм: кредит нь нэг удаа, ямар ч удаа та хүсэж байна.
GET https://nymbot.ai/api/v1/topup/status/{invoice_id} — тавтай морилно уу, тавтай морилно уу. — needs a key from the nym that made the invoice.
status Нөхцөл pending (Түнээс дээш төлбөргүй) paid (Хэвч төлбөргүй боловч үнэмлэхгүй; дахин шалгаж), credited (Түүний баланс дээр) эсвэл expired (Дэлгэрэнгүй) Барилгын салбарт тавтай морилно уу.
Сэтгэгдэл
{
"invoice_id": "b7d41e0c95a2f38e6c1d0e9a4b7f2c61d3e8a05f9b2c4d7e1a6f3b8c0d5e2a9f4",
"status": "credited",
"amount_sats": 10000,
"credits": 115,
"tier": "pro",
"expires_at": null,
"balance_credits": 523.33,
"balance_sats": 52333
}
| Үйлчилгээ | Үнэндээ |
|---|---|
400 | ID нь үүсгэсэн дуудлагатай 64-ийн ID биш юм. |
404 | Ямар ч энэ ID нь таны нэмж (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);
Хэрэглээний түүх
Захиалга бүр нэг жагсаалт: энэ нь юу байсан, ямар загвар, хэд хэдэн токен, ямар ч үнэтэй юм. Захиалга, хариу ямар ч хадгалж байна, учир нь ямар ч орд байна. Захиалга нь 90 хоногийн хугацаанд хадгалж байна, хамгийн сүүлийн үеийн эхлээд. Хамгийн сүүлийн үеийн ключ нь түүний түүхээ унших болно.
GET https://nymbot.ai/api/v1/queries/history — API ключ хэрэгтэй, энэ нь өөрийн хүсэлтийг үздэг, эсвэл Сэтгэгдэл үлдээх Таны нэмм, бүх ключ нь харах болно.
| Байгалийн | Бүтээгдэхүүн | Үйлчилгээний | Үзүүлэлт |
|---|---|---|---|
page | Бүтээгдэхүүний талаархи мэдээлэл | Үнэгүй | Хадгаламжийн 1, хамгийн их 1000; өндөр хуудас 400 invalid_value. |
page_count | Бүтээгдэхүүний талаархи мэдээлэл | Үнэгүй | Хувцаслалт хуудсууд. Хэвийн 20, хамгийн их 100. |
start_dateend_date | Үйлчлүүлэгчид | Үнэгүй | ISO 8601 огноо, цаг. |
model | Үйлчлүүлэгчид | Үнэгүй | Зөвхөн энэ загвар |
type | Үйлчлүүлэгчид | Үнэгүй | chat, responses, messages, image, video, speech, transcription эсвэл embedding. |
all_keys | Боолийн (Query) | Үнэгүй | нэг ключ нь: true нэг нь нэг нь бүх ключ агуулдаг. Үнэлгээ false. |
key_id | Үйлчлүүлэгчид | Үнэгүй | Нийтлэгдсэн хүсэлттэй, эсвэл all_keys=true: зөвхөн энэ ключ. |
Сэтгэгдэл
{
"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);
Сэтгэгдэл үлдээх
Бүртгүүлэх, өөрчлөх, хуваалцлага, акаунт хуваалцлага, автомат шилжүүлэлт нь API-ийн шилжүүлэлт байхгүй. Тэд таны шилжүүлэлтээс сигналыг олж авахын тулд шилжүүлэлттэй шилжүүлэлт нь өөрийн шилжүүлэлттэй хүртэл ашиглаж болно боловч өөр нэг шилжүүлэлт хийх эсвэл өөрийн шилжүүлэлттэй авч чадахгүй.
Апп нь танд энэ хийж байна: өөрийн бүх зүйл Өргөтгөл Та энэ хэсэг нь зөвхөн таны өөрийн код нь тавтай морилно уу.
Нийлүүлэг нь 27235 (NIP-98) төрлийн Nostr үйл явдал юм.
Authorization Header нь үг Nostr Дараа нь:
Сэтгэгдэл
{
"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нь хүсэлтийн бүрэн URL, хүсэлтийн цуврал агуулсан, ялангуяа илгээсэн юм.methodЭнэ нь HTTP арга юм.payloadSHA-256 нь хэт ягаан тусламжийн биеийн, hex. Энэ ньPOSTболонPATCH, Та илгээх органик нь та хашаалсан байт нь байт байх ёстой.created_atсерверийн цаг хугацааны 60 секундын дотор байх ёстой.- Бүх үйл явдал нь нэг удаа ажилладаг, a
GETтусгаарлагдмал, татаж авсан хавхлага нь өөрчилж чадахгүй. Дараа нь бүх хүсэлтэд шинэ нэг бүртгүүлэх.nonceхязгаарлагдмал үнэтэй татаж авахын тулд нэг секундын дотор бүртгэгдсэн хоёр асуултууд нь өөр өөр байдаг. - Нийтлэгдсэн хүсэлтийн бүтэц нь хамгийн их 64 KB байж болох бөгөөд бүтэц нь
Content-Type: application/json.
Хязгаарлагдмал үйл явдал 401 missing_nostr_auth; алдартай хэлбэрийн нэг, алдартай хэлбэрийн нэг, алдартай хэлбэрийн нэг, эсвэл өөр URL, арга хэмжээ, эсвэл биеийн хувьд
invalid_nostr_authҮйлчлүүлэгчийн эрх © Зохиогчийн эрх хуулиар хамгаалагдсан.
nostr_auth_replayed. Эдгээр ширхэг руу илгээсэн API-ийн ширхэг хүлээн зөвшөөрч байна. Нийтлэг нь биеийн унших өмнө шалгана, ямар ч хаяг нь минутын 30 удаа (IPv6 хаяг нь бүрэн /64) гэж тооцож болно; дараа нь энэ нь авах болно 429 Нөхцөл
Retry-After.
Браузерүүд нь Nymbot-ийн өөрийн сайтуудээс зөвхөн энэ эцсийн тоноглогдсон болно (https://nymbot.ai,
https://nymchat.app бусад вэбсайтын хуудсууд нь ямар ч CORS хавхлагатай байх болно, тиймээс энэ нь тэднийг уншихгүй болно. Скрипт болон нарийн апп, ямар ч
OriginЭнэ нь нөлөөгүй байна.
Идэвхжүүлэх нь таны нэмгийн тайны ключ хэрэгтэй (The nsec), энэ нь бүх зүйлийг хянах болно: таны мэдлэг, таны түүх, таны баланс. Зөвхөн танд итгэж байгаа машин дээр скрипт дээр байршуулаад, файлуудыг бүртгүүлэхийн тулд байнга байнга байнга байнга байнга байлгах, та хүсч байгаа бол апп-ийг сонгоно.
Эдгээр тусламжчид хавхлага үүсгэдэг. Энэ хуудсанд дараагийн жишээ нь тэднийг ашигладаг. Тэд нь хексик хэлбэрээр хавхлага унших NOSTR_SECRET_HEX; cURL нэг нь ашигладаг
Үнэгүй command-line хэрэгсэл, нь nsec эсвэл hex түлхүүр ашигладаг, болон sha256sum 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");
}
Сэтгэгдэл үлдээх
Апп-ийн API хуудас нь тавтай морилно уу: таны албан ёсны ключ, хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоорондын хоолой. Автомат Top-Up Тавтай морилно уу
null сервер нь тэднийг санал болгож чадахгүй байгаа үед.
GET https://nymbot.ai/api/v1/account А Сэтгэгдэл үлдээх.
Сэтгэгдэл
{
"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());
Тавтай морилно уу
Аппын ключ жагсаалттай эцэст нь. Тэдний бүх нь Сэтгэгдэл үлдээхБүх ключ нь энэ хэлбэрээр, ISO 8601 үед цаг, sats-д хэмжээтэй байна:
Хамгийн чухал зүйл
{
"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 Энэ нь тавтай морилно уу, энэ нь тавтай морилно уу. Тавтай морилно уу, энэ нь тавтай морилно уу.
Үйлчилгээний ключ
GET https://nymbot.ai/api/v1/keys Сэтгэгдэл
| Байгалийн | Бүтээгдэхүүн | Үйлчилгээний | Үзүүлэлт |
|---|---|---|---|
include_revoked | Боолийн (Query) | Үнэгүй | Хамгийн сүүлийн үеийн мэдээ false. |
Сэтгэгдэл
{ "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);
Тавтай морилно
POST https://nymbot.ai/api/v1/keys Сэтгэгдэл үлдээх 201.
| Байгалийн | Бүтээгдэхүүн | Үйлчилгээний | Үзүүлэлт |
|---|---|---|---|
name | Түлхүүр | Тиймээ | 1 нь 40 хэлбэр, таны бусад идэвхтэй түлхүүрүүдээс янз бүрийн (хэвчлэлийг мэдэрч байгаа). |
limit_sats | Өнгөрсөн | Үнэгүй | Үнэгүй зардал хавтгай, найдвартай 1. Үнэгүй зардал хавтгай. |
reset_period | Түлхүүр | Үнэгүй | daily, weekly эсвэл monthlyҮйлчилгээ limit_sats. Энэ нь хэзээ ч шинэчлэгддэг хавхлагатай. |
expire_at | string эсвэл integer | Үнэгүй | Эдүүлбэр: ISO 8601 цаг, эсвэл 1970-ээс хойш миллисекунд. |
Бүртгүүлэх (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"
}
}
| Үйлчилгээ | Үнэндээ |
|---|---|
400 | Хязгааргүй эсвэл маш урт нэр; одоо хэрэглэгддэг нэр (duplicate_name); тавтай морилно уу, хамгийн бага нь 1 нь бүрэн тоо биш юм; тавтай морилно уу ямар ч хугацааны хугацаа; урт хугацааны хугацааны хугацаа; мэдэгддэг газар (unknown_parameter); эсвэл 25 идэвхтэй ключ одоо (too_many_keys). |
429 | Энэ нэмжээр 60 гаруй ключ, эсвэл 120-аас энэ хаяг, 1 цагийн дотор хийсэн (rate_limit_exceededӨнгөрсөн 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);
Эдүүлбэр » One Key
GET https://nymbot.ai/api/v1/keys/{id} Сэтгэгдэл
Өнгөрсөн {"data": {…}} гол объект, эсвэл 404
key_not_found Хэрэв та өөрийн ключ нь энэ ID байхгүй бол.
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);
Үйлчилгээний ключ
PATCH https://nymbot.ai/api/v1/keys/{id} Сэтгэгдэл
Ямар ч name, limit_sats, reset_period болон
expire_at, тавтай морилно уу, хавтгай дүүргэх үед тавтай морилно уу null Хөнгөн цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан цагаан400 key_revoked) Өнгөрсөн
{"data": {…}} шинэчлэгдсэн ключ объект нь.
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);
Үйлчилгээний ключ
DELETE https://nymbot.ai/api/v1/keys/{id} Сэтгэгдэл
Дараа нь ширхэг зурах, сайн. Энэ нь жагсаалттай revoked_at тохиромжтой, болон үүнийг үзэж болно include_revoked=true. Зөвхөн хамгийн сүүлийн үеийн 50 нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэг нэхэмжлэгдсэн нэхэмжлэгтэй нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгтэй нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгдсэн нэхэмжлэгтэй нэхэмжлэг
Сэтгэгдэл
{ "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 автомашины тоног төхөөрөмж
Nostr Wallet Connect болон Nymbot нь Lightning Wallet-ийг холбох, API-ийн зардал бага байх үед энэ нь зүгээр л тэнцвэртэй байх болно. Апп-ийн API хуудас нь нэг тохиргооны байдаг; Эдгээр нь эндэйн томоохон юм. Тэдний бүх нь Сэтгэгдэл үлдээх.
Энэ нь хэрхэн ажилладаг: API-ийн асуултанд татаж авахын тулд сонгосон салбарт ачаалалтай дараа, энэ салбарт таны хязгаарлагдмал доор буцаж байгаа бол Nymbot-ийн тавтай морилно уу, тавтай морилно уу, кредит нэмнэ. Энэ нь 5 минутын бүр нэг удаа татаж авахын тулд тавтай морилно уу. Тавтай морилно уу. Аппп-д зарцуулах нь энэ нь идэвхжүүлэхгүй. Хамгийн сүүлийн үеийн тавтай морилно уу, хамгийн сүүлийн үеийн алдаа нь тохиргоог дээр байдаг; Тавтай морилно уу, тавтай морилно уу. Top-Up статус Үйлчилгээ үү.
Nymbot нь шифрлэгдсэн хадгалж, зүгээр л өөрсдийн шифрлэгдсэн фактуудыг хуваалцахын тулд ашигладаг боловч энэ нь зүгээр л нэг холболт хийх, тавцан дээр зар сурталчилгааны урамшуулалтай, Тиймээс энэ нь ямар ч хэзээ ч төлбөр авах боломжтой хамгийн их нь та сонгосон тоо юм. pay_invoice.
Гар утас холбох
POST https://nymbot.ai/api/v1/nwc-auto-topup/connect Сэтгэгдэл
| Байгалийн | Бүтээгдэхүүн | Үйлчилгээний | Үзүүлэлт |
|---|---|---|---|
nwc_url | Түлхүүр | Тиймээ | Холбоо барих string, эхлэх nostr+walletconnect://. Nymbot тавтай морилно уу get_info өмнө нь хадгалах, шифрлэгдсэн хадгалах. |
threshold_sats | Өнгөрсөн | Тиймээ | Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу! |
topup_sats | Өнгөрсөн | Тиймээ | Бүх удаа нэмнэ үү. 1000 нь 1,000,000 sats. |
tier | Түлхүүр | Үнэгүй | pro (Барилга) эсвэл standard: Баланс үзэх, дээд хүртэл. |
Сэтгэгдэл
{
"data": {
"connected": true,
"threshold_sats": 5000,
"topup_sats": 20000,
"tier": "pro",
"last_topup_at": null,
"last_topup_sats": null,
"last_error": null
}
}
| Үйлчилгээ | Үнэндээ |
|---|---|
400 | Холбоо барих (invalid_nwc_url); портфель өөрийн релейг хариугүй (nwc_unreachable) эсвэл хяналтыг хүлээн зөвшөөрсөн (nwc_rejected); холбооны төлбөрийн төлбөргүй (nwc_missing_permission); эсвэл хязгаарлагдмал тоо. |
501 | Энэ сервер дээр автоматаар шилжүүлэх биш юм (nwc_unavailable) Үүнээс гадна бусад хоёр эцэст. |
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());
Сэтгэгдэл үлдээх
GET https://nymbot.ai/api/v1/nwc-auto-topup Сэтгэгдэл
Энэ нь холбогдсон зүйлс нь, connected: false болон бусад газар
null Тавтай морилно уу, ямар ч утас холбогдсон бол. Тавтай морилно уу.
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());
Холбоо барих
DELETE https://nymbot.ai/api/v1/nwc-auto-topup/connection Сэтгэгдэл
Хадгасан холболтын цуврал илрүүлэх. Дараа нь тавтай морилно уу, та нар ч бас тавтай морилно уу.
Сэтгэгдэл
{ "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());
Үнэгүй төлбөр, ключгүй
Хязгаарлагдмал үнэтэй эцсийн тооны нь Lightning-д нэг удаа нэг хүсэлтийг төлбөргүй, ямар ч ключ, ямар ч данс, ямар ч салбарт төлбөргүй болно: POST /images/generations, POST /images/edits,
POST /videos, POST /audio/speech, POST /audio/transcriptions,
POST /audio/translations болон POST /embeddingsЧат, Reply, Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу!
Nymbot нэг backend нь нэг санаа нь хоёр хувилбар хэлдэг: Lightning Labs'
Ажлын 402 (Өнгөрсөн нэрээр хүлээн зөвшөөрсөн, LSAT) болон IETF төсөл
Үнэгүй HTTP автентичлалын систем нь lightning Метод болон
charge Үйлчлүүлэгч таны хэрэглэгчдэд мэдэж байгаа зүйлийг ашиглах.
Үйлчлэх ямар ч ключ нь зөвхөн API_L402_SECRET хязгаарлагдмал 32 байт, хязгаарлагдмал (64 символ) эсвэл base64 (44) зэрэг агуулдаг. openssl rand -hex 32. Хамгийн сүүлийн үеийн үнэ цэнэтэй үнэ цэнэтэй үнэ цэнэтэй үнэ цэнэтэй үнэ цэнэтэй үнэ цэнэтэй байдаг. API_L402_SECRET_PREVIOUS Өдөрт: итгэмжлэгдсэн, статусын URL-ийг, энэ дагуу хийсэн асуултууд нь ихэвчлэн дууссан хүртэл ажилладаг.
Ажлын
Тавтай морилно уу No Authorization header. Хэрэв энэ нь тохиромжтой бол ямар ч ажиллуулах, та 402 Payment Required тавтай морилно уу, тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу WWW-Authenticate Эдүүлбэр / Эдүүлбэр / Эдүүлбэр / Эдүүлбэр
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 }
}
Бүртгүүлэх request параметр нь base64url JSON юм:
{"amount":"237","currency":"sat","methodDetails":{"invoice":"lnbc...","network":"mainnet","paymentHash":"..."}}.
ЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэр Content-Type (ийн медиа төрөл, олон хэсэг нь, түүний хязгаар) болон SHA-256 нь зөв биеийн байт та илгээсэн бөгөөд 15 минут байх болно. Үнэгүй төлбөрийн дараа, илгээх Бүртгүүлэх Сэтгэгдэл үлдээх: Үүнтэй
Content-Type нэг JSON байт, эсвэл олон хэсэг эртний тоног төхөөрөмж (/images/edits, /audio/transcriptions, /audio/translationsХамгийн их HTTP библиотек нь хэлбэрээр шифрлэдэг бүх удаа шинэ шифрлэдэг бөгөөд энэ нь нэг удаа шифрлэдэг бөгөөд эдгээр байтын хоёр удаа илгээнэ үү.
Бүх хаяг нь минутын 30 туршид хүсэж болно (IPv6 хаяг нь түүний бүрэн /64 гэж тооцож байна). Хаяг нь мэдэгдэж байгаагүй бол 10 минутын хувьд илүү нарийвчлалтай хуваалцах, бүх хаяг дээр Nymbot-ийн туршид асуудал дээр ихээхэн хүрээтэй байдаг; туршид хийх өмнө хязгаарлагдмал хүсэл (жишээ нь JSON-ийн тохиромжтой бус биеийн хувьд) үүнийг харьцуулах биш юм. 429 Нөхцөл Retry-AfterҮйлчлүүлэгчид тавтай морилно уу. Үйлчлүүлэгчид тавтай морилно уу. Үйлчлүүлэгчид тавтай морилно уу. Content-Type Үгүй application/json эсвэл
multipart/form-data Татаж авахыг хүсч байгаа бол 415 Өнгөрсөн үнэ төлбөргүй.
Тавтай морилноор ашиглаж байгаа токенов нь үнэ цэнэтэй байдаг, 1.5× маржинтай, бодит тоо нь дараа нь зөвхөн мэдэгдэж байна. Та ашиглаж байгаа токенов нь үнэ цэнэтэй бөгөөд төлбөр нь ашиглажгүй хэсэг нь үнэ цэнэтэй байна Бүртгүүлэх Token.
Үнэгүй Payment
Бичлэгийг ямар ч Lightning гарын үсэгээр төлбөр. Гарын үсэг нь 64 хавтгай дөрвөлжин хэлбэртэй урьдчилан зургийг танд санал болгож байна. Дараа нь дараа нь энэ нэг нь тусламж илгээх:
| Сүлжээний | Эдүүлбэр |
|---|---|
| Ажлын 402 | Authorization: L402 <macaroon>:<preimage> (LSAT Үүнээс гадна) |
| Үнэгүй | Authorization: Payment <base64url JSON>, JSON нь {"challenge": {every parameter of the challenge, as sent}, "payload": {"preimage": "<hex>"}} |
Үнэгүй асуултууд тавтай морилно уу, харин тавтай морилно уу nymbot
Object нь байнгын газар биш юм: {"payment": "l402", "tier": "pro", "paid_sats": 237,
"charged_sats": 237}, , ямар ч X-Nymbot-Balance-Sats header. Payment scheme-тэй төлбөр авсан асуултууд нь Payment-Receipt header (base64url JSON нь туршилтын ID, төлбөрийн хашиг reference, status болон
timestamp). Үнэгүй хүсэлт нь ямар ч нэмжтэй холбогдсон биш бөгөөд тэд хүсэлтийн түүхд харуулсан биш юм.
| Үйлчилгээ | Үнэндээ |
|---|---|
402 payment_already_used | Тавтай морилно уу! Тавтай морилно уу! Тавтай морилно уу! lnget Энэ нь зүгээр л шинэчлэгдсэн байна. |
402 payment_mismatch | ЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэр Content-Type эсвэл бие, эсвэл энэ хүсэл нь одоо төлбөр илүү бага байна. Энэ хүсэл нь шинэ асуултууд нь энэ нь туслах болно; төлбөр маш бага байсан бол, та үүнийг төлбөр авсан зүйл нь үнэ цэнэтэй юм. Бүртгүүлэх Token (refund_token болон refund_sats Энэ нь биеийн). |
402 payment_expired | Захидал хойш 15 минутын дээш өнгөрсөн. Шинэ асуултууд нь туслах болно. Хэрэв урьдчилан зураг та зарласан гэж үзэж байгаа бол, та зарласан зүйл нь ачаалал болгон авчирдаг Бүртгүүлэх Token (refund_token болон refund_sats биед), нэг удаа; credential дараа нь ашиглаж байна. |
401 invalid_preimage | Preimage нь фактурын төлбөр хашааг хашааг хашааг хуваалцахгүй. |
401 invalid_payment_credential | Nymbot-ийн төлбөрийн хашаа Nymbot-ийн төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй. |
429 rate_limit_exceeded | 30 гаруй баталгаажуулалт эсвэл ключ, тавтай морилно уу, энэ хаяг нь минутын дотор орно, эсвэл нэг тавтай морилно уу тавтай морилно уу 60 удаа илгээсэн байна. 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"));
Хэрэглэгчид дээр байгуулагдсан mppx Lightning-ийн арга хэрэгсэл нь Payment Challenge-ийг өөрсдийн ажиллуулах; тэднийг эцсийн тоноглогдсон, тэднийг төлөхыг хүсч байна.
Видео
Үнэгүй POST /videos Сэтгэгдэл 202 хатуу нэг зэрэг, plus a
status_url: GET Энэ нь ажлын дараах ямар ч түлхүүргүй. Энэ нь бүртгэгдсэн бөгөөд 24 цагийн турш ажилладаг.
{
"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..."
}
}
Өнгөрсөн refund_token Эдүүлбэр » Бүтээгдэхүүн » Бүтээгдэхүүн » Бүтээгдэхүүн » Бүтээгдэхүүн » Бүтээгдэхүүн » Бүтээгдэхүүн » Бүтээгдэхүүн » Бүтээгдэхүүн » БүтээгдэхүүнGET /api/v1/l402/refunds Сэтгэгдэл "status": "pending"); Үнэлгээ аваагүй байгаа бол, төлбөр энэ дээр оршдог. Статуйн URL
refund_sats Үйлчлүүлэгчид тавтай морилно уу, тавтай морилно уу!
Үйлчилгээ
Тавтай морилно уу, тавтай морилно уу, тавтай морилно уу. charged_sats, тавтай морилно уу, тавтай морилно уу. Тавтай морилно уу, тавтай морилно уу. Бүртгүүлэх Token Та худалдан авах үнэтэй:
{
"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"
}
}
Хязгаарлагдмал эд анги нь тавтай морилно уу: Хэрэв та хоёр зураг хүссэн бөгөөд нэг нь хязгаарлагдмал байсан бол, амжилттай хариу nymbot Object нь хязгаарлагдмал нэг нь тавтай морилно ууны токен агуулдаг; ямар ч урт нь уншиж чадахгүй байна өмнө нь файлын хамгийн урт нь үнэтэй байна (ямар ч 30 минутын илүү), болон бодит урт нь янз бүрийн тавтай морилно ууны токен болгон байна; Хэрэв энэ нь 30 минутын илүү урт байсан бол, энэ нь тавтай морилно уу 413
Татаж авахын тулд татаж авахыг хүсч байна. Татаж авахыг хүсч байна. Татаж авахыг хүсч байна. Татаж авахыг хүсч байна. Татаж авахыг хүсч байна.
Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу!
- Энэ нь төлбөр. Сэтгэгдэл
Authorization: Bearer REFUND-…Хамгийн сүүлийн үеийн дэлгэрэнгүй дэлгэрэнгүй дэлгэрэнгүй дэлгэрэнгүй дэлгэрэнгүй дэлгэрэнгүй дэлгэрэнгүй дэлгэрэнгүй дэлгэрэнгүй дэлгэцrefund_token_satsЭнэ ньnymbotObject). Токен нь асуултуудын хариу нь бага байна402refund_insufficient; Үнэлгээгүй ач холбогдолтой ач холбогдолтой ач холбогдолтой ач холбогдолтой ач холбогдолтой ач холбогдолтой. - Тоглоомын
GET /api/v1/l402/refundsЭдүүлбэр / Header Returns{"sats": 237, "status": "open", "expires_at": "..."}. - Нэг token нь минутын 60 удаа ашиглаж болно.
- Энэ нь NIM-д дамжуулах болно. Татаж авах Өнгөрсөн мэдээ Nymbot-ийн програм хангамж дээр, эсвэл
POST /api/v1/l402/refunds/redeemА Сэтгэгдэл үлдээх болон{"refund_token": "REFUND-...", "balance": "standard"}эсвэл"pro"). Бүх кредит нь салбарт (Standard дээр 10 sats, Pro дээр 100 sats); 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"
Сэтгэгдэл
{ "data": { "credited": 23, "tier": "standard", "balance_credits": 123, "remaining_sats": 7 } }