علم جو بنياد ترقی ڪندڙ
توازن، ٽاپ اپ ۽ چابیون
چیڪ ڪریو تہ توہان وٽ ڇا آھی، بجلی مٿان مٿی ڪریو، توہان جی پنھنجی پرس مان پنھنجو پاڻ مٿی ڪریو، ڏسو تہ ہر درخواست جی قیمت ڇا آھی، ۽ ڪوڊ مان چابیون منظم ڪریو
هي صفحو سهولت لاءِ مشين سان ترجمو ٿيل آهي. انگريزي اصل نسخو آهي جيڪو لاڳو ٿئي ٿو.
توازن کي چکڻ
توھان جا ٻئی بیلنس، ۽ ھن ڪنجی جی ڪیپ جو ڪیترو استعمال ڪیو ویو آھی
GET https://nymbot.ai/api/v1/credits/balance - ھڪ API ڪنجی جی ضرورت آھی POST پڻ ڪم ڪری ٿو، گراہڪن لاء جیڪی ان جی امید رکن ٿا
balance ڇا ٻئی بیلنس ھڪ ٻئی سان گڏ آھن ڊالر ۾ موجودہ بٽڪوئن جی قیمت تی، اوزارن لاء جیڪی ھڪ نمبر جی امید رکن ٿا (null جیڪڏھن قیمت پڙھائی نہ ٿی سگہی) باقی ڪریڊٽ ۽ سیٽ ۾ آھی، اھو آھی تہ اصل ۾ بیلنس ڪیئن رکیو ویندو آھی 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);
ادائگی جا طریقا
توھان ڪیئن مٿی ڪری سگھو ٿا، ۽ حدون۔ بجلی واحد طریقو آھی
GET https://nymbot.ai/api/v1/topup/payment-methods - ڪا ڪنجی جی ضرورت ڪانہی۔
ھڪ ٽاپ اپ 10 کان 1,000,000 سیٽ آھی ؛ ھڪ پرو ٽاپ اپ کی گھٽ ۾ گھٽ ھڪ پرو ڪریڊٽ خرید ڪرڻو پوندو آھی، تنہنڪری اھو 100 سیٽ تی شروع ٿئی ٿو bulk_bonus اضافي اعتبار کي وڌيڪ تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تيز تي
جواب ڏیو
{
"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);
بجلی جی مٿان مٿی
بجلی جی انوائس ٺاہی ٿی جیڪا ان نیم ۾ ڪریڊٽ شامل ڪری ٿی جنہن جی ڪنجی سان تعلق رکی ٿی ان کی ڪنھن بہ بجلی جی پرس مان ادا ڪریو ڏسو ته ڪریڊٽ کی شامل ڪرڻ لاء
POST https://nymbot.ai/api/v1/topup/create/btc-lightning - ھڪ API ڪنجی جی ضرورت آھی
| فیلڊ | قسم | ضروری آھی | وضاحت |
|---|---|---|---|
amount | نمبر | ها | ڪیترو، ان ۾ currency۔ Sats لاء ھڪ پورو نمبر |
currency | اسٽرنگ | نہ نہ | SATS (ڊیفالٽ)، USD یا BTCدولارن کي موجودي Bitcoin قیمت تي بدلجي ٿو. |
tier | اسٽرنگ | نہ نہ | pro (ڊیفالٽ) یا standard: جنہن کی ڪریڊٽ بیلنس ڏانہن وڃی ٿو |
ھڪ معیاری ڪریڊٽ آھی 10 سیٽ ۽ ہڪ پرو ڪریڊٽ 100 سیٽ، پلس ڪو بہ بلڪ بونس
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)، مٿی 1,000,000 sats (amount_too_largeان کان سواءِ ٻيو ڪو به نه هو، پر ان کان سواءِ ڪو به نه هو.amount_out_of_range). |
429 | اُن وقت اُن ۾ 60 سيڪڙو سيڪڙو سيڪڙو سيڪڙو سيڪڙو (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);
ھڪ ٽاپ اپ چیڪ ڪریو
پڇندو آھی تہ ڇا انوائس ادا ڪئی وئی آھی ۽ ھڪ دفعو اھو آھی، ڪریڊٽ کی شامل ڪری ٿو چیڪ ڪرڻ اھو آھی جیڪو ان کی ڪریڊٽ ڪری ٿو، تنہنڪری ادا ڪرڻ کان پوء، چیڪ ڪریو جیستائین حالت نہ آھی creditedبعد ۾ دوبار چکڻ محفوظ آهي: قرض هڪ ڀيرو ايندي آهي، هر چند ڀيرو توهان پڇيو.
GET https://nymbot.ai/api/v1/topup/status/{invoice_id} - NIM مان ہڪ ڪنجی جی ضرورت آھی جنہن انوائس ٺاہی
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 | توھان جی NIM لاء ان 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 ڪنجی جی ضرورت آھی، جیڪا پنھنجی درخواستن کی ڏسی ٿی، یا دستخط ٿیل درخواست توھان جی NIM مان، جیڪو ہر ڪنجی کی ڏسی ٿو
| فیلڊ | قسم | ضروری آھی | وضاحت |
|---|---|---|---|
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 | بولین (سوال) | نہ نہ | ھڪ ڪنجی سان: 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 ڪنجی نہ وٺندا آھن اھی توہان جی NIM مان دستخط وٺندا آھن، تنہنڪری ہڪ لیک ٿیل ڪنجی پنھنجی ڪیپ تائین خرچ ڪری سگہی ٿی پر ڪڏھن بہ ٻی ڪنجی نہ ٺاہی سگہی ٿی یا پنھنجی ڪیپ وڌائی سگہی ٿی
اهو توهان لاءِ ڪم ڪري ٿو: هر شيءِ ای۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔۔ توهان کي رڳو توهان جي انٽرويوٽ ڪرڻ جي ضرورت آهي.You only need this section to manage keys from your own code.
دستخطی قسم 27235 (NIP-98) جو ہڪ Nostr واقعو آھی، جنہن ۾ بیس 64-اینڪوڊ موڪلیو ویو
Authorization لفظ سان ھیڊر 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 طريقو آهي.payloadھیڪس ۾ خام درخواست جسم جو SHA-256 آھیPOST۽PATCH۽ جیڪو جسم توھان موڪلیو آھی اھو بائیٽ ہجڻ گھرجی بائیٽ جی لاء جیڪو توھان ھیش ڪیو آھیcreated_atسرور جی ڪلاڪ جی 60 سیڪنڊن اندر ہجڻ گھرجی- ہر واقعو ھڪ دفعو ڪم ڪری ٿو
GETشامل ڪیو ویو، تنہنڪری ہڪ قبضو ڪیل ہیڊر کی وری نہ ہلائی سگہجی۔ ہر درخواست لاء ہڪ نئین سائن ڪریوnonceاهو هڪ عارضي معيار آهي ته هڪ ئي ثاني ۾ ٻه درخواستون مختلف ٿيندا. - ھڪ دستخط ٿیل درخواست جو جسم وڌ ۾ وڌ 64 KB ٿی سگہی ٿو، ۽ ھڪ جسم جی ضرورت آھی
Content-Type: application/json.
گم ٿیل واقعا واپس اچی ٿو 401 missing_nostr_authہڪ جیڪو خراب طئور تی ٺہیل آھی، خراب طئور تی دستخط ٿیل آھی، تمام پراڻو آھی، یا ھڪ مختلف یو آر ایل، طریقی یا جسم جی واپسی لاء
invalid_nostr_authپوءِ اُن کي موٽائي موڪليو ويندو.
nostr_auth_replayedهڪ API کلید انهن انڌن ڏانھن موڪليو وڃي ٿو.توهين کي پڙهيو وڃي ٿو، ۽ هر انڌن کي هڪ منٽ ۾ 30 ڀيرو (IPv6 انڌن کي سندس کل /64) جي طور تي حساب ڪيو وڃي ٿو. 429 سان گڊ
Retry-After.
ان کان سواءِ توهان جي ايئرپورٽ لاءِ توهان جي ايئرپورٽ لاءِ توهان جي ايئرپورٽ لاءِ توهان جي ايئرپورٽ لاءِ توهان جي ايئرپورٽ لاءِ توهان جي ايئرپورٽ لاءِ توهان جي ايئرپورٽ لاءِ توهان جي ايئرپورٽ لاءِ توهان جي ايئرپورٽ لاءِ توهان جي ايئرپورٽ لاءِ توهان جي ايئرپورٽ لاءِ توهان جي ايئرپورٽ لاءِ.https://nymbot.ai,
https://nymchat.app ان کانسواءِ ٻيو ڪو به ڪم نه آهي، پر ان جو ڪو به ڪم نه آهي، پر ان جو ڪو به ڪم نه آهي.
Origin، متاثر نہ ٿیندا آھن
دستخط ڪرڻ لاء توھان جی نیم جی راز واری ڪنجی جی ضرورت آھی nsec)، جیڪو ہر شی کی سنڀالیندو آھی: توہان جی سڃاڻپ، توہان جی تاریخ ۽ توہان جو توازن صرف ان کی ہڪ مشین تی ہڪ رسم الخط ۾ رکجو جنہن تی توہان کی ڀروسو آھی، ان کی فائل ۾ لکڻ جی بجاء ماحول مان پڙھو، ۽ ایپ کی ترجیح ڏیو جڏھن توہان ڪری سگہو ٿا
ھی مددگار ھیڊر ٺاہیندا آھن۔ ھن صفحی تی بعد ۾ مثال انھن کی استعمال ڪندا آھن اھی ھیڪس ۾ راز واری ڪنجی کی پڙھندا آھن NOSTR_SECRET_HEXاُن کي استعمال ڪيو وڃي ٿو.
اکيون ڪيمٽ لائن آلہ، جيڪو nsec يا hex ڪيمٽ استعمال ڪري ٿو، ۽ sha256sum (اوهان جي باري ۾، 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 | بولین (سوال) | نہ نہ | رد ڪیل چابیون شامل ڪریو۔ ڊیفالٽ 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 | تار یا عدد | نہ نہ | جڏھن ڪنجی ڪم ڪرڻ بند ڪری ٿی: ہڪ 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اُنھن کي اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُنھيءَ وقت اُن وقت اُنھيءَ وقت اُن وقت اُن وقت اُن وقت اُن وقت اُن وقت اُن وقت اُن وقت اُن وقت اُن وقت اُن وقت اُن وقت اُن وقت اُن وقت اُن وقتunknown_parameter) ؛ یا 25 فعال ڪنجیون اڳ ۾ ئی (too_many_keys). |
429 | ھن نیم پاران ٺہیل 60 کان وڌیڪ چابیون، یا ھن پتی مان 120، ھڪ ڪلاڪ ۾ (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);
ھڪ ڪنجی پڙھائی
GET https://nymbot.ai/api/v1/keys/{id} - دستخط ڪیو
واپسی {"data": {…}} مکیہ مقصد سان، یا 404
key_not_found جیڪڏھن توھان جی ڪنھن بہ ڪنجی وٽ اھا سڃاڻپ نہ آھی۔
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 Auto-Top-Up سان گڏ.
ہڪ لائٽنگ والیٽ کی Nostr Wallet Connect سان ڳنڍیو ۽ Nymbot پنھنجی پاڻ ۾ ہڪ توازن کی مٿی ڪری ٿو جڏھن API خرچ ان کی گھٽ ہلائی ٿو ایپ جی API شیٽ ۾ ساڳیو سیٽنگون آھن اھی ان جی پویان آخری پوائنٽون آھن انھن سڀنی کی ضرورت آھی دستخط ٿیل درخواست.
اھو ڪیئن ڪم ڪری ٿو: ھڪ API درخواست کان پوء ان بیلنس تی چارج ڪیو ویندو آھی جیڪو توہان ڏسڻ لاء چونڊیو آھی، جیڪڏھن اھو بیلنس توہان جی حد کان ھیٺ اچی ویو آھی، Nymbot توہان جی ٽاپ اپ رقم لاء انوائس ٺاہی ٿو، توہان جی پرس کی ان کی ادا ڪرڻ لاء پڇی ٿو، ۽ ڪریڊٽ شامل ڪری ٿو مٿی-مٿی حالت ان کی ڪریڊٽ ڏیو
ھڪ ڪنیڪشن اسٽرنگ اجازت ڏئی ٿو جیڪو بہ ان کی رکی ٿو توھان جی پرس کی ادا ڪرڻ لاء پڇی ٿو۔ نمبوٽ ان کی انڪرپٽ ٿیل اسٽور ڪری ٿو ۽ صرف ان کی پنھنجی ٽاپ اپ انوائس ادا ڪرڻ لاء استعمال ڪری ٿو، پر صرف ان لاء ڪنیڪشن ٺاہیو، توہان جی پرس ۾ خرچن جی بجیٽ سان، تنہنڪری اہو سڀ کان وڌیڪ ادا ڪری سگہی ٿو ہڪ نمبر جیڪو توہان چونڊیو pay_invoice.
ھڪ پرس سان ڳنڍیو پیو وڃی
POST https://nymbot.ai/api/v1/nwc-auto-topup/connect - دستخط ڪیو
| فیلڊ | قسم | ضروری آھی | وضاحت |
|---|---|---|---|
nwc_url | اسٽرنگ | ها | رابطي، شروع ڪرڻ nostr+walletconnect://Nymbot پوڄي ٿو. get_info ان کان اڳ، ان کي ان جو استعمال ڪيو ويو آهي. |
threshold_sats | انٽرو | ها | مٿی ڪریو جڏھن بیلنس ھن ڪیترن ئی سیٽ کان ھیٺ اچی ٿو گھٽ ۾ گھٽ 1, 000 |
topup_sats | انٽرو | ها | ہر وقت ڪیترو شامل ڪرڻو آھی۔ 1, 000 کان 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());
چابی کان سواء فی درخواست ادا ڪرڻ
مقرر قیمت جی آخری پوائنٽن کی بجلی تی ہڪ وقت ۾ ہڪ درخواست لاء ادا ڪری سگہجی ٿو، جنہن ۾ ڪا ڪنجی ناہی، ڪو اڪائونٽ ناہی ۽ ڪو بیلنس ناہی POST /images/generations, POST /images/edits,
POST /videos, POST /audio/speech, POST /audio/transcriptions,
POST /audio/translations ۽ POST /embeddingsچیٽ، جواب ۽ پیغام ہمیشہ ہڪ ڪنجی جی ضرورت آھی ہڪ درخواست جنہن ۾ ڪنجی ھوندی آھی عام طئور تی بیلنس تی بل ڪیو ویندو آھی ادائیگی جو وہڪرو صرف ان وقت شروع ٿیندو آھی جڏھن ڪا ڪنجی نہ موڪلی ویندی آھی
Nymbot ہڪ ئی خیال جا ٻہ ورجن ڳالھائیندو آھی ھڪ بیڪ اینڊ مان: لائٽنگ لیبز
هڪ 402 (پڻ ان جی پراڻی نالی تحت قبول ڪیو ویو، LSAT) ۽ IETF مسودو
ادائگی HTTP تصدیق واری منصوبی سان lightning طریقو ۽
charge ارادو۔ جیڪو بہ توہان جو گراہڪ سمجھی ان کی استعمال ڪریو
چابی کان سواء ادائگی صرف ان وقت تی ٿیندی آھی جڏھن API_L402_SECRET گھٽ ۾ گھٽ 32 بی ترتیبی بائٽس رکی ٿو ھیڪس (64 اکرن) یا بیس 64 (44) جی طئور تی openssl rand -hex 32هڪ وڌيڪ يا معياري ڪرڻ واري قيمت هڪ خاصيت کي بند ڪري ٿو ۽ ان جي سبب کي رجوع ڪري ٿو. API_L402_SECRET_PREVIOUS ھڪ ڏینھن لاء: ان جی تحت ٺاہیل سڃاڻپ، حالت یو آر ایل ۽ چیلینج ڪم ڪندا رہن ٿا جیستائین اہی ختم نہ ٿین
چیلینج
نہ سان درخواست موڪلیو Authorization ھیڊر۔ جیڪڏھن اھو صحیح آھی، ڪجھ بہ نہ ھلندو آھی ۽ توھان کی ملندو آھی 402 Payment Required ھن درخواست جی قیمت جی لاء ہڪ انوائس سان گڏ: ساھی قیمت جیڪا ہڪ ڪنجی ادا ڪندی، 10 سیٽ تی ھڪ معیاری ڪریڊٽ یا 100 سیٽ ہڪ پرو ڪریڊٽ ۾ تبدیل ڪیو ویندو ۽ پوری سیٽ تائین گول ڪیو ویندو (گھٽ ۾ گھٽ 1 سیٽ، ۽ گھٽ ۾ گھٽ 0. 05 ڪریڊٽ گھٽ ۾ گھٽ) 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 منٽ حصیداری ڪریو ۽ سڀنی پتی ۾ نمبوٽ مسئلن تی مجموعی حد آھی ہڪ چیلینج ٿیڻ کان اڳ ۾ انڪار ڪیل درخواست (مثال طئور ہڪ جسم سان جیڪو صحیح JSON ناہی) ان طرف شمار نٿو ڪری 429 سان گڊ Retry-After، جسم کی پڙھڻ کان اڳ موڪلیو ویو آھی۔ ادا ڪیل آخری نقطا بغیر ڪنجی یا سند جی ڪال ڪیا ویا آھن عام حد جی طرف شمار ڪیا ویا آھن 120 غیر تصدیق ٿیل درخواستون فی منٽ فی پتو Content-Type نه آهي application/json يا
multipart/form-data ان کان پوءِ به انڪار ڪيو ويو. 415 ڪڏھن به حساب نه ملندو.
انپٽ ۾ ٽوڪن جی اندازی مطابق انبیڊنگ جی قیمت آھی 1.5× ؛ مارجن سان، ڇاڪاڻ تہ حقیقی ڳڻپ صرف بعد ۾ معلوم ٿئی ٿی توہان اصل ۾ استعمال ٿیل ٽوڪن جی ادائیگی ڪریو ٿا، ۽ ادائیگی جو غیر استعمال ٿیل حصو واپسی جی طئور تی اچی ٿو واپسی جو ٽوڪن.
ادائگی موڪلیو
ڪنھن بہ لائٽنگ والیٽ سان انوائس ادا ڪریو۔ والیٽ توہان کی پہرین تصویر ڏئی ٿو، 64 ھیڪس اکر
| یوجنا | ہیڊر |
|---|---|
| هڪ 402 | Authorization: L402 <macaroon>:<preimage> (LSAT ڪم بہ ڪری ٿو) |
| ادائگی | Authorization: Payment <base64url JSON>، جتی JSON آھی {"challenge": {every parameter of the challenge, as sent}, "payload": {"preimage": "<hex>"}} |
ہڪ ادا ڪیل درخواست جو جواب بلڪل ائین ئی آھی جیئن ہڪ ڪنجی سان ڪیو ویو آھی، سواء ان جی تہ nymbot
آبجیکٹ ۾ ڪو بیلنس فیلڊ نہ آھی {"payment": "l402", "tier": "pro", "paid_sats": 237,
"charged_sats": 237}ائین ڪو نہ آھی۔ X-Nymbot-Balance-Sats ہیڊر۔ ادائگی جی منصوبی سان ادا ڪیل درخواست پڻ حاصل ڪری ٿی Payment-Receipt ان جو مطلب اهو آهي ته JSON (base64url JSON with the challenge id) آهي. reference, status ۽
timestamp) ادا ڪیل درخواستون ڪنھن بہ NIM سان جڙیل نہ آھن، تنہنڪری اہی سوال جی تاریخ ۾ ظاھر نہ ٿیون ٿین
| حالت | ڪڏھن |
|---|---|
402 payment_already_used | ہر ادائگی ھڪ درخواست لاء ادا ڪری ٿی۔ جواب ھن درخواست لاء ھڪ تازو چیلینج آھی، تنہنڪری ھڪ گراہڪ جیڪو پنھنجی آخری سند کی ڪیش ڪری ٿو lnget ڪندو آھی) بس وری ادا ڪری ٿو |
402 payment_mismatch | ھڪ ٻئی آخری نقطی لاء سند جاری ڪئی وئی، Content-Type یا جسم، یا ھن درخواست کان گھٽ ادا ڪری ٿو ہاڻی خرچ ٿئی ٿو ھن درخواست لاء ھڪ تازو چیلینج ان سان گڏ اچی ٿو ؛ جیڪڏھن ادائیگی تمام گھٽ ھئی، جیڪو توہان ادا ڪیو آھی واپس اچی ٿو واپسی جو ٽوڪن (refund_token ۽ refund_sats جسم ۾) |
402 payment_expired | چیلینج کان پوء 15 منٽ کان وڌیڪ وقت گذری ویو۔ ہڪ نئین چیلینج ان سان گڏ اچی ٿی۔ جیڪڏھن پہرین تصویر ڏیکاری ٿی تہ توہان ادا ڪیو آھی، جیڪو توہان ادا ڪیو آھی واپس اچی ٿو واپسی جو ٽوڪن (refund_token ۽ refund_sats هڪ ڀيرو، هڪ ڀيرو، هڪ ڀيرو، هڪ ڀيرو، هڪ ڀيرو، هڪ ڀيرو، هڪ ڀيرو. |
401 invalid_preimage | پری امیج انوائس جی ادائگی ھیش کی ھیش نٿو ڪری |
401 invalid_payment_credential | ان جي تصديق کي غلط ڪيو ويو آهي، Nymbot ان کي نازل ڪرڻ کانپوءِ تبديل ڪيو ويو آهي، يا Nymbot لاء ڪو حساب نه نازل ڪيو آهي. |
429 rate_limit_exceeded | 30 کان وڌيڪ اعترافات يا کلیدون جو تصديق ڪرڻ نه ڪيو هو هڪ منٽ ۾ ان پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌري پڌ 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 بجلی واری طریقی سان ادائیگی جی چیلینج کی پاڻ کی سنڀالیندا آھن انھن کی آخری نقطی تی اشارو ڪریو ۽ انھن کی ادا ڪرڻ ڏیو
ویڊیو
ادا ڪرڻ POST /videos جواب ڏیو 202 مثال طور، A 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"(اي پيغمبر) جيڪڏھن اُن (ڪتاب) تي عمل نه ڪبو ته اُن (ڪتاب) تي عمل نه ڪبو.(علامه تاج محمود امروٽي)
refund_sats واپسی واری نوڪری لاء پر ٽوڪن ڪڏھن بہ نہ، تنہنڪری حالت یو آر ایل شیئر ڪرڻ واپسی کی حصیداری نٿو ڪری۔ ٽوڪن کی چیڪ ڪرڻ پڻ ہڪ ناڪام نوڪری کی آباد ڪری ٿو جنہن کی ڪنھن بہ پول نہ ڪیو
واپسی
جيڪڏھن ادا ڪرڻ جو درخواست ناکام ٿي وڃي ۽ پروفيسر Nymbot کي ڪوشش ڪرڻ لاء چارج ڪيو وڃي، تڪليف ائين چوي ٿو. charged_sats، جیئن تہ ہڪ اہم درخواست لاء۔ جیڪڏھن اھو بل ٿیڻ کان سواء ناڪام ٿئی ٿو، غلطی ہڪ واپسی جو ٽوڪن توھان جیڪو ادا ڪیو ان جی قیمت:
{
"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 اعتراض گم ٿیل لاء واپسی جو ٽوڪن رکی ٿو ؛ ہڪ ٽرانسڪرپشن جنہن جی ڊیگہہ اڳیان پڙھائی نہ ٿی سگہی فائل جی گہڻی وقت تائین قیمت ٿی سگہی ٿی (30 منٽن کان وڌیڪ نہ)، ۽ حقیقی ڊیگہہ جو فرق واپسی ٽوڪن جی طئور تی واپس اچی ٿو ؛ جیڪڏھن اھو 30 منٽن کان وڌیڪ ٿی وڃی، ان سان انڪار ڪیو وڃی ٿو 413
۽ سڄی ادائگی واپس اچی ٿی۔ انبیڊنگ واپس ڪری ٿو جیڪو اندازا واپس رکیو ویو آھی۔ ہڪ ناڪام ویڊیو واپسی ٽوڪن ڏانہن ان جی جمع ڪرڻ واپس ڪئی وئی
واپسی جو ٽوڪن ہڪ بی ترتیبی 256-بٽ ڪوڊ آھی۔ Nymbot صرف ان جی ہیش کی اسٽور ڪری ٿو، ۽ اھو 30 ڏینھن کان پوء ختم ٿی ویندو آھی
- ان سان ادا ڪريو. موڪليو
Authorization: Bearer REFUND-…مٿین ڪنھن بہ آخری نقطی تی (ہڪ اوپنائی ایس ڊی ڪی ان کی پنھنجی API ڪنجی جی طئور تی وٺی ٿو) قیمت ٽوڪن مان اچی ٿی ۽ جیڪو بچی ویو آھی ان تی رہی ٿو (refund_token_satsان ۾nymbotاعتراض)۔ درخواست جی جوابن کان گھٽ قیمت وارو ٽوڪن402refund_insufficientہڪ اڻ بل ٿیل ناڪامی سیٽ کی ساڳئی ٽوڪن تی واپس رکی ٿی - چیڪ ڪریو
GET /api/v1/l402/refundsساھی ھیڊر موٽڻ سان{"sats": 237, "status": "open", "expires_at": "..."}. - ھڪ ٽوڪن ھڪ منٽ ۾ وڌ ۾ وڌ 60 دفعا استعمال ڪری سگہجی ٿو
- ان کی nym ڏانہن منتقل ڪریو ان ۾ چپایو هُو هُو هُو، هُو هُو. Nymbot ایپ ۾، یا ڪال ڪریو
POST /api/v1/l402/refunds/redeemای سان گڏ دستخط ٿیل درخواست ۽{"refund_token": "REFUND-...", "balance": "standard"}يا"pro"سجی ڪریڊٽ بیلنس ڏانہن ویندی آھی (10 سیٽ ہر ہڪ معیاری تی، 100 پرو تی) ؛ جیڪی سجی ڪریڊٽ نہ ٺاہیندا آھن 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 } }