Bilik bazası Developerlər
Top-up və Key
Hesab etdiyiniz şeyləri kontrol edin, Lightning-in üstünü açın, öz cüzdanınızdan otomatik olaraq üstünüzü açın, hər bir istehlakın nə qədər maliyeti olduğunu görün və koddan anahtarları idarə edin.
Bu səhifə rahatlıq üçün maşın tərəfindən tərcümə edilmişdir. İngilis orijinalı tətbiq olunan versiyadır.
Balansını kontrol etmək
Hər ikisi sizin bilansiyalarınız, və bu anahtarın qapının nə qədər istifadə edilir.
GET https://nymbot.ai/api/v1/credits/balance İhtiyacınız var ki, bir API Key. POST Bunu da müştərilər gözləyir.
balance ABŞ-ın “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkətinull Qiymətin oxunması mümkün deyil).Rest kreditlərdə və satslardadir, bu da balansların real olaraq saxlanması ilə bağlıdır. key Bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir.
Reaksiya
{
"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"
}
}
| Statistika | Nə vaxt |
|---|---|
401 | Anahtarın eksik, bilinməz, iptal edildiyi və ya expirated olduğunu. |
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);
Paylaşma metodları
Bəlkə də, bu problemlər həll olunacaqdır, bu problemlər də həll olunacaqdır.
GET https://nymbot.ai/api/v1/topup/payment-methods Anahtar lazım deyil.
Bir top-up 10 ilə 1,000,000 sats; bir Pro top-up ən azından bir Pro kredit almaq lazımdır, bu yüzden 100 sats başlayır. bulk_bonus Daha böyük top-uplarda isə 10%, 15% və ya 20% daha çox standart top-uplarda 500, 1000 və ya 5000 sats, Pro top-uplarda isə 5,000, 10,000 və ya 50,000 sats.
Reaksiya
{
"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”in üstündə
“Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıst Kontrol etmək Krediti artırmaq lazımdır.
POST https://nymbot.ai/api/v1/topup/create/btc-lightning İhtiyacınız var ki, bir API Key.
| Fieldə | Tipi | İhtiyaç | Açıqlama |
|---|---|---|---|
amount | Numaraları | Bəli | Nə qədər, nə qədər currencyBütün sayı satmaq lazımdır. |
currency | Stringlər | Yəqin | SATS (Mənim fikrim də bu idi) USD və ya BTCDollarlar Bitcoin qiyməti ilə çevrilir. |
tier | Stringlər | Yəqin | pro (Müsəlmanlar və ya standardKrediti nə qədər ödəyirlər. |
Bir standart kredit 10 sats və bir Pro kredit 100 sats, plus hər hansı bulk bonusudur;
credits Bu faktura nə əlavə ediləcək.
Reaksiya
{
"invoice_id": "b7d41e0c95a2f38e6c1d0e9a4b7f2c61d3e8a05f9b2c4d7e1a6f3b8c0d5e2a9f4",
"payment_request": "lnbc100u1p5...",
"amount_sats": 10000,
"credits": 115,
"tier": "pro",
"expires_at": "2026-09-30T09:27:00Z",
"status": "pending"
}
| Statistika | Nə vaxt |
|---|---|
400 | Başqa bir yol (unsupported_methodƏsas səhifə (unsupported_currencyƏsas səhifə / Dərslər / Dərslər / Dərslər / Dərslər / Dərsləramount_too_small1 milyon avro (amount_too_large“Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”in “Qəbələ”nin “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”n”in “Qəbələ”nin” [...]amount_out_of_range). |
429 | Bu barədə “Xəzər Lənkəran” jurnalına istinadən xəbər verir ki, bu barədə “Xəzər Lənkəran” jurnalına istinadən xəbər verir.rate_limit_exceededilə Retry-After). |
502 | Şimali Qəhrəman (invoice_unavailableilə 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 xəritədə
Hesabın ödənildiyini soruşur və bir dəfə, krediti daxil edər.Checking nə krediti verir, bu yüzden ödəndikdən sonra statusa qədər baxın creditedDaha sonra yenə baxmaq təhlükəlidir: kredit bir dəfə, nə qədər dəfə soruşursanız.
GET https://nymbot.ai/api/v1/topup/status/{invoice_id} - Faturasını etdiyiniz nymdən bir anahtar lazımdır.
status İŞİD pending (Şübhəsiz ki, bu barədə məlumat verilməyib) paid Əsas səhifə » Xəbərlər » Əsas səhifə » Əsas səhifə credited (Sizin hesabınızda) və ya expired Əsas səhifə » Xəbərlər » Əsas səhifə » Əsas səhifə » Əsas səhifə
Reaksiya
{
"invoice_id": "b7d41e0c95a2f38e6c1d0e9a4b7f2c61d3e8a05f9b2c4d7e1a6f3b8c0d5e2a9f4",
"status": "credited",
"amount_sats": 10000,
"credits": 115,
"tier": "pro",
"expires_at": null,
"balance_credits": 523.33,
"balance_sats": 52333
}
| Statistika | Nə vaxt |
|---|---|
400 | Bu, 64-cü dəqiqədir ki, telefonun yaradılması mümkün olmayacaq. |
404 | Bu barədə “Neftçi”nin məlumatına görə, bu barədə məlumat verilməyib.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);
Tarix istəyir
VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu.
GET https://nymbot.ai/api/v1/queries/history - öz istəkləri görən bir API çayı, ya da İstehsal prosesi Sizin hər anahtarınızı görürsünüz.
| Fieldə | Tipi | İhtiyaç | Açıqlama |
|---|---|---|---|
page | Əsas səhifə (query) | Yəqin | 1 ildir ki, ən çox 1000-dir. 400 invalid_value. |
page_count | Əsas səhifə (query) | Yəqin | Əsas səhifə » Əsas səhifə » Əsas səhifə » 20 |
start_dateend_date | Qəbələ (Qəbələ) | Yəqin | ISO 8601 dataları və saatları |
model | Qəbələ (Qəbələ) | Yəqin | Sadəcə bu model |
type | Qəbələ (Qəbələ) | Yəqin | chat, responses, messages, image, video, speech, transcription və ya embedding. |
all_keys | Tədbirlər (Qəbələ) | Yəqin | Bir anahtarı ilə: true Hər bir nüsxə, hər bir nüsxə ilə bağlıdır. false. |
key_id | Qəbələ (Qəbələ) | Yəqin | İstehsal etmək üçün, ya da all_keys=trueYalnız bu anahtar |
Reaksiya
{
"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);
Hesabatın imzalanması
Əsas səhifə » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm »
App sizin üçün bunu edir: hər şey onun Atəşkəs Bu işləyə bilmək lazımdır ki, bu işləyə bilmək lazımdır, bu işləyə bilmək lazımdır.
Dərslər 27235 (NIP-98) və 27235 (NIP-98) türünün bir Nostr hadisəsidir.
Authorization Header sözləri Nostr Öncəki →
Əməkdarlıq
{
"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İndi isə bütün problemlər həll olunacaq, bütün problemlər həll olunacaq.methodHTTP metodudur.payloadVVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltmasıdır.POSTvəPATCH“Sənə göndərdiyiniz “Qəbələ”ni “Qəbələ” adlandırmaq lazımdır.created_atServerin saatının 60 saniyədə olması lazımdır.- Hər bir iş bir dəfə, bir
GETƏsas səhifə » Xəbərlər » Əsas səhifə » Əsas səhifə » Əsas səhifənonceTəsadüfi bir qiymətlə işarə edin ki, aynı saniyədə imzalanmış iki istehlak hala fərqlidir. - VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltmasıdır.
Content-Type: application/json.
Missing Events qayıdır 401 missing_nostr_authYaxşı formalaşmış, pis imzalanmış, çox yaşlı, ya da başqa bir URL, metod və ya vücud üçün qaytarılan
invalid_nostr_authƏsas səhifə » Xəbərlər » Əsas səhifə » Əsas səhifə
nostr_auth_replayedVVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsil edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. 429 ilə
Retry-After.
Növbəti xəbərNeftçi.az-a istinadən xəbər verir ki, bu barədə “Neftçi.az” saytında məlumat yayıb.https://nymbot.ai,
https://nymchat.app Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə
OriginOnlara zərər verilmir.
“Neftçi”nin “Neftçi”nin “Neftçi”nin “Neftçi”nin “Neftçi”nin “Neftçi”ni nsecBu, hər şeyi kontrol edir: kimliyinizi, tarixinizi və balansınızı. Yalnız güvəndiyiniz bir maşında scriptdə yerləşdirin, çevrəyindən oxuyun, dosyaya yazmayın və mümkün olduğunda appdan istifadə edin.
Bu layihə ilə bağlı məlumatlar aparılır, bu layihə ilə bağlı məlumatlar aparılır. NOSTR_SECRET_HEX“Qəbələ”də 1 nəfər iştirak edib
Nəsimi “Neftçi” və ya “Neftçi” klubları ilə görüşüb sha256sum MacOS üçün 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");
}
Hesabın Sumqayıt
Applikanın API saytı üstündə nə göstərir: public keyiniz, hər iki balans, neçə-neçə anahtarlar aktifdir (təkrarlanmamış və ya expirated deyil) və Top-up sistemləri Qiymətlər və ya
null Serverlər bunu etmir.
GET https://nymbot.ai/api/v1/account İhtiyaç a İstehsal prosesi.
Reaksiya
{
"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());
Anahtarların idarə edilməsi
“Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in” İstehsal prosesiHər anahtar bu formada qaytarılır, zamanlar ISO 8601 və sayı sats:
Key objekti
{
"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 Bir anahtarı tanımaq kifayətdir, lakin onu istifadə etməməkdir.
Listə anahtarı
GET https://nymbot.ai/api/v1/keys imzalanmışdır
| Fieldə | Tipi | İhtiyaç | Açıqlama |
|---|---|---|---|
include_revoked | Tədbirlər (Qəbələ) | Yəqin | Əsas səhifə Etiketlər: Default false. |
Reaksiya
{ "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);
Anahtarı yaratmaq
POST https://nymbot.ai/api/v1/keys İstirahət - qayıtma 201.
| Fieldə | Tipi | İhtiyaç | Açıqlama |
|---|---|---|---|
name | Stringlər | Bəli | 1 - 40 işarə, diğer aktiv anahtarlarınızdan fərqlidir (fəsad törətmək). |
limit_sats | İnter | Yəqin | Əsas səhifə » Gündəm » Əsas səhifə » Əsas səhifə » Əsas səhifə » Gündəm |
reset_period | Stringlər | Yəqin | daily, weekly və ya monthlyİstehsal limit_satsOnu heç vaxt geri qaytarmayan bir qapı üçün tərk edin. |
expire_at | String və Integral | Yəqin | ISO 8601 vaxtı, ya da 1970-ci ildən bu yana millisekundlar. |
Əməkdaşlıq (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"
}
}
| Statistika | Nə vaxt |
|---|---|
400 | Əsas səhifə / Əsas səhifə / Əsas səhifə / Əsas səhifəduplicate_nameBir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir.unknown_parameterƏsas səhifə / 25 dəqiqə (too_many_keys). |
429 | Bu barədə “Xəzər Lənkəran”a istinadən xəbər verir ki, bu barədə “Xəzər Lənkəran”ın “Xəzər Lənkəran”a istinadən məlumat yayıb.rate_limit_exceededilə 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);
Bir anahtarı oxumaq
GET https://nymbot.ai/api/v1/keys/{id} imzalanmışdır
Dönüşlər {"data": {…}} “Key objekti” və ya 404
key_not_found Əgər sizdə bu kodu yoxdursa.
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);
Anahtarı dəyişmək
PATCH https://nymbot.ai/api/v1/keys/{id} imzalanmışdır
Hər hansı bir name, limit_sats, reset_period və
expire_atAnahtarı seçməkdə olduğu kimi. null Əsas səhifə » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm »400 key_revoked• Geri qayıtma
{"data": {…}} Güncellenmiş objekti ilə.
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);
Anahtarı geri qaytarmaq
DELETE https://nymbot.ai/api/v1/keys/{id} imzalanmışdır
Bir neçə dəqiqə sonra, o, listə daxil olub. revoked_at Görünür ki, onunla birlikdə include_revoked=trueƏvvəlki məqaləİnteraktiv.az-a istinadən xəbər verir ki, bu barədə “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin” “Qəbələ”nin “Qəb
Reaksiya
{ "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());
NBC-nin avtobusu
VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. İstehsal prosesi.
Əsas səhifə » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Top-up statusu Bunu kredit edir.
Nymbot onu şifrələndirir və yalnız öz top-up fakturalarını ödənmək üçün istifadə edir, lakin bu üçün bir əlaqə yaratın, cüzdanınızda bir xərclərin bütçəsi ilə, belə ki, heç vaxt ödənə biləcəyiniz ən çox sizə seçilmiş bir sayıdır. pay_invoice.
Cüzdan bağlama
POST https://nymbot.ai/api/v1/nwc-auto-topup/connect imzalanmışdır
| Fieldə | Tipi | İhtiyaç | Açıqlama |
|---|---|---|---|
nwc_url | Stringlər | Bəli | Qrupun başlanğıcı ilə bağlı nostr+walletconnect://Nymbot cüzdanı istəyir get_info Əvvəla, bu barədə məlumat yayıb. |
threshold_sats | İnter | Bəli | Bir neçə ildir ki, bu sərnişinlərin sayı 1000-dən çoxdur. |
topup_sats | İnter | Bəli | Hər dəfə 1000-dən 1000-ə qədər artmaq lazımdır. |
tier | Stringlər | Yəqin | pro (Müsəlmanlar və ya standardGözləmək və gözləmək lazımdır. |
Reaksiya
{
"data": {
"connected": true,
"threshold_sats": 5000,
"topup_sats": 20000,
"tier": "pro",
"last_topup_at": null,
"last_topup_sats": null,
"last_error": null
}
}
| Statistika | Nə vaxt |
|---|---|
400 | Əsas səhifə (invalid_nwc_url“Qəbələ”nin “Qəbələ”nin “Qəbələ”ni qəbul etmədinwc_unreachableVVD - Hollandiyada futbolçu bu adla tanımır.nwc_rejectedƏsas səhifə (nwc_missing_permissionVə yaxud limitdən başqa bir şey. |
501 | Avtomobillərin təchizatı aparılmır (nwc_unavailableBaşqa iki finalda da belədir. |
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());
Setinqləri oxumaq
GET https://nymbot.ai/api/v1/nwc-auto-topup imzalanmışdır
İstehsalçılıqla bağlı problemlər də var. connected: false Başqa alanlar
null Qazaxıstanın baş məşqçisiyindən biri isə “Qazaxıstan”ın baş məşqçisi olub.
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());
Bağlanmaq
DELETE https://nymbot.ai/api/v1/nwc-auto-topup/connection imzalanmışdır
Xatırladaq ki, bir neçə ildir ki, bir neçə ildir ki, bu problemlər həll olunmasa, bir neçə ildir ki, bu problemlər həll olunmur.
Reaksiya
{ "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());
Anahtarı olmadan xərcləmək
"Lightning" üçün bir dəfə bir prosedura görə, heç bir anahtar, hesabat və balansla ödənilə bilər: POST /images/generations, POST /images/edits,
POST /videos, POST /audio/speech, POST /audio/transcriptions,
POST /audio/translations və POST /embeddingsXat, Yanıt və Mesajlar hər zaman bir anahtar lazımdır.Anahtarı gətirən bir istefa normal olaraq hesablanır; ödəniş aksiyası yalnız anahtar göndərilmədikdə başlayır.
Nymbot iki versiyadan danışır: “Lightning Labs”
402 dəfə baxılıb Əvvəla adı ilə qəbul edilmişdir. LSATIFA-nın proqnozları
Paytaxt HTTP autentifikasiya sistemi lightning metod və
charge Müştərilərinizin bildiyinə görə istifadə edin.
Anahtar olmadan ödənmək yalnız API_L402_SECRET Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə openssl rand -hex 32Bir neçə ildir ki, bir neçə ildir ki, bu problemlər həll olunacaq, bir neçə ildir ki, bu problemlər həll olunacaq. API_L402_SECRET_PREVIOUS Bir gün üçün: Credentials, status URL-lər və onun altında etdiyiniz meydanlar sonlanana qədər işləyir.
meydan
İstehsal etmək üçün “no” Authorization Əgər bir şey baş verirsə, heç bir şey baş vermir. 402 Payment Required Hesabatla tamamilə nə istədiyinə görə qiymətlər: anahtarın ödənəcəyi qiymət, standart kreditə 10 sats və ya Pro kreditə 100 sats və bütün sat (ən azı 1 sat və ən azı 0.05 kredit minimumuna) çevrilir. WWW-Authenticate Təsadüfi problemlər var:
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 }
}
Paytaxtı request Dərslər base64url JSON:
{"amount":"237","currency":"sat","methodDetails":{"invoice":"lnbc...","network":"mainnet","paymentHash":"..."}}.
Bu problemin sonuncu səbəbi, sonuncu səbəbi Content-Type Əsas səhifə » Xəbərlər » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə identitə Bir daha soruşdum: Aynı
Content-Type Əsas səhifə / Xəbərlər / Dərslər / Dərslər / Dərslər (/images/edits, /audio/transcriptions, /audio/translationsBir çox HTTP kütləvi, bir formunu kodladıqda hər dəfə yeni bir limit seçir, bu yüzden onu bir dəfə kodlayın və bu baytları iki dəfə göndərin.
Bir IPv6 adresi bütün /64-i hesab edir.İstər adresi bilmədiyi istəklər dəqiqə 10-ə bölünür və bütün adreslərdə Nymbot problemləri ilə bağlı bir ümumi limit vardır; bir istintaq meydan vermədən öncə reddən (təkcə, JSON-ə uyğun olmayan bir vücudla) buna görə hesabat verməz. 429 ilə Retry-AfterVVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. Content-Type Əksinə application/json və ya
multipart/form-data Əsas səhifə / Əsas səhifə 415 “Həqiqətən, heç vaxt bir faktura vermirəm.
VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. TOKEN qaytarılması.
Ödənişini göndərmək
Xatırladaq ki, hər hansı bir “Lightning” cüzdanı ilə fatura ödəmək olar.
| Planlaşdırma | Heç bir |
|---|---|
| 402 dəfə baxılıb | Authorization: L402 <macaroon>:<preimage> (LSAT O da işləyir) |
| Paytaxt | Authorization: Payment <base64url JSON>Nəhayət, JSON {"challenge": {every parameter of the challenge, as sent}, "payload": {"preimage": "<hex>"}} |
Paylaşmış bir istefa tamamilə anahtarla hazırlanan bir istefa kimi cavab verir, ancaq nymbot
Objektin balans alanı yoxdur: {"payment": "l402", "tier": "pro", "paid_sats": 237,
"charged_sats": 237}“Həqiqətən də, yoxdur X-Nymbot-Balance-Sats “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”in “Qəbələ”nin “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in”in “Qəbələ Payment-Receipt Əsas səhifə » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm reference, status və
timestampPaylaşmış istehlaklar heç bir nym ilə bağlanmır, bu nedenle sorğu tarixində görünməzlər.
| Statistika | Nə vaxt |
|---|---|
402 payment_already_used | Hər bir paytaxt üçün bir proseduru ödəmək lazımdır.Bu prosedür üçün yeni bir problemdir, bu səbəbdən bir müştərinin son proseduru ( lnget O, təkcə yenə dünyaya gəlmişdi. |
402 payment_mismatch | Başqa bir layihəyə dəvət olunmuşdur. Content-Type VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. TOKEN qaytarılması (refund_token və refund_sats Vücudun içində |
402 payment_expired | 15 dəqiqədən çox vaxt keçib, yeni bir meydan gətirilir.Əgər ön görüntü sizə ödəndiyinizi göstərirsə, ödəndiyin şey bir meydan olaraq qaytarılır. TOKEN qaytarılması (refund_token və refund_sats Bir neçə ildir ki, o, bu prosesdə iştirak etmişdir. |
401 invalid_preimage | Əvvəlki məqaləPublika.az-a istinadən xəbər verir ki, bu barədə məlumat verilməyib. |
401 invalid_payment_credential | VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. |
429 rate_limit_exceeded | Bir dəqiqədə bu adresdən gəlməmiş 30-dan çox kredit və ya anahtar göndərildi və ya bir dəqiqədə 60-dan çox dəfə bir qaytarma token göndərildi. 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"));
Müştərilər yaradılıb mppx Bir neçə ildir ki, bu problemlər həll olunacaq, bu problemlər həll olunacaq, bu problemlər həll olunacaq.
Videoşəkillər
Paytaxt POST /videos Cəmiyyət 202 Birincisi, daha çox a
status_url: GET O, 24 saat işləyir və işləyə biləcək qədər işləyir.
{
"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..."
}
}
Təbii ki, refund_token Bu videoya baxmayaraq, bu videoya baxmaq mümkün deyil. (GET /api/v1/l402/refunds Cəmiyyət "status": "pending"“Bakı”da “Qazaxıstanda” qələbə qazanıb
refund_sats Bir iş üçün qaytarılmış iş, lakin heç vaxt token, bu yüzden status URL-ni paylaşmaq qaytarma payı paylaşmaz.
qaytarılmaq
Əgər borclu bir istintaq başarısız olursa və provider Nymbot-u istintaq üçün cəzalandırırsa, ödəniş tutulur və hata belə deyər. charged_satsBir neçə ildir ki, bu problemlər həll olunmayıb, bir neçə ildir ki, bu problemlər həll olunacaq. TOKEN qaytarılması Paylaşdığınız qiymətlər:
{
"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"
}
}
İstehsal etmədiyiniz iki fotoşəkil üçün soruşduğunuzda və birinin hesablanmadığını soruşduğunuzda, uğurlu cavab nymbot Objektin ekspertizası üçün bir qaytarma token daşıyır; uzunluğu oxunmaq mümkün olmayan bir transkripsiya filmin mümkün olduğu qədər uzun olduğu üçün qiymətləndirilir (heç vaxt 30 dəqiqədən çox olmamalıdır) və real uzunluğa olan fərq bir qaytarma token kimi qaytarılır; 30 dəqiqədən çox olduğu ortaya çıxdığında, o, geri qaytarılır. 413
Belə ki, bir neçə ildir ki, bir neçə ildir ki, bu problemlər həll olunacaq, bir ildir ki, bu problemlər həll olunacaq.
VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı var.
- Ona görə də ödənin. Göndər
Authorization: Bearer REFUND-…Əsas səhifə » Xəbərlər » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifərefund_token_satsŞirkətdənymbotƏsas səhifə / Xəbərlər / Cəmi bir ildir ki, Cəmi bir ildir402refund_insufficientBir neçə ildir ki, bu problemlər yenə də başa çatıb. - Bunu kontrol edin.
GET /api/v1/l402/refundsAynı header ilə qayıdır{"sats": 237, "status": "open", "expires_at": "..."}. - Bir dəqiqədə maksimum 60 dəfə istifadə edilə bilər.
- Ona görə də NM-ə getmək lazımdır. Bunu içərisində Bir cərimə verin Nymbot app və ya telefon
POST /api/v1/l402/refunds/redeemA ilə İstehsal prosesi və{"refund_token": "REFUND-...", "balance": "standard"}və ya"pro"Bütün kreditlər balansına gedir (10 sats hər biri standartda, 100 on Pro); API istəklər üçün tokendə bütün kredit qalmayan satslar.
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"
Reaksiya
{ "data": { "credited": 23, "tier": "standard", "balance_credits": 123, "remaining_sats": 7 } }