අන්තර්ගතය වෙත යන්න
Nymbot වෙත නැවත යන්න

දැනුම පදනම සංවර්ධකයින්

Top-ups සහ Keys

ඔබට ඇති දේ පරීක්ෂා කරන්න, Lightning මත ඉහළට, ඔබගේම සල්ලි වලින් ස්වයංක්රීයව ඉහළට, සෑම ඉල්ලීමකටම වියදම් කරන දේ බලන්න, සහ කේතයෙන් යතුරු කළමනාකරණය කරන්න.

Balance එක පරීක්ෂා කරන්න

ඔබගේ ධාරිතාවයන් දෙකම, සහ මෙම යතුරු පරාසය කොපමණ භාවිතා කර ඇත.

GET https://nymbot.ai/api/v1/credits/balance API Key එකක් අවශ් යයි. POST එසේම, එය බලාපොරොත්තු වන පාරිභෝගිකයන් සඳහාත් වැඩ කරයි.

balance මෙම ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් ඩොලර් (null මිල කියවිය නොහැකි නම්) ඉතිරි කොටස ක්රෙඩිට් සහ වට්ටෝරුවන් වේ, එබැවින් සීමාවන් සැබෑවටම තබා ගනු ලැබේ. key ප් රචණ්ඩත්වය සිදුවේ, නමුත් අපි පාපයට එරෙහිව ශුද්ධ විනිශ්චය සහ අපි පුද්ගලිකව අකමැති අයට එරෙහි වන පුරපැම අතර වෙනස අප හඳුනාගත යුතුය, එය උඩඟුකමේ අනිවාර්ය ප් රතිපලයයි (ගීතාවලිය 73).

පිළිතුර

{
  "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 යතුර අවශ් ය නැහැ.

Top-up යනු 10 සිට 1,000,000 sats; Pro top-up අවම වශයෙන් එක් Pro ක්රෙඩිට් මිලදී ගත යුතුය, එබැවින් එය 100 sats හි ආරම්භ වේ. bulk_bonus විශාලතම Top-ups මත අතිරේක ක්රෙඩිට් ලැයිස්තුවේ, යෙදුමේ මෙන්ම: 500, 1,000 හෝ 5,000 sats සිට සම්මත Top-ups මත 10%, 15% හෝ 20% වැඩි සහ 5,000, 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 එක උඩින්

අංකය අයිති වන අංකයට ක්රෙඩිට් එකතු කරන ලකුණක් නිර්මාණය කරයි.එය ඕනෑම ලකුණ මුදල් වලින් ගෙවන්න, පසුව පරීක්ෂා කරන්න ක් රෙඩිට් එක එකතු කරන්න.

POST https://nymbot.ai/api/v1/topup/create/btc-lightning API Key එකක් අවශ් යයි.

ක්ෂේත් රයවර්ගයඅවශ් යවිස්තරය
amountඅංකයඔව්කොපමණ, කොපමණ currencyසම්පූර්ණ අංකය සඳහා අංකය.
currencystring එකනෑSATS (මරණින් මතු උදාවන) USD හෝ BTCඩොලර් ඩොලර් පරිවර්තනය කරන්නේ දැනට පවතින Bitcoin මිල මතයි.
tierstring එකනෑ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 කට වඩා වැඩි (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} - අංකය නිර්මාණය කරන 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නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නුඹේ නු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);

ඉතිහාසය අවශ්ය

ඉල්ලුමකට එක් රේඛාවක්: එය කුමක්ද, මොන ආකෘතියද, කොපමණ ටොකන්ද සහ එය වියදම් කරන්නේ කුමක්ද. කිසිදු ප්රවේශයක් හෝ පිළිතුරක් ඉතිරි කර නැත, එබැවින් කිසිදු ප්රවේශයක් ආපසු නොලැබේ.

GET https://nymbot.ai/api/v1/queries/history - තමන්ගේ ඉල්ලීම් දකින API යතුරක් අවශ් යයි, හෝ අත්සන් ඉල්ලීම නුඹේ නිමාව, සෑම යතුරක්ම දකින

ක්ෂේත් රයවර්ගයඅවශ් යවිස්තරය
pageසම්පූර්ණ (Query)නෑඋදාහරණයක් වශයෙන් 1, උපරිම වශයෙන් 1,000; ඉහළ පිටුව 400 invalid_value.
page_countසම්පූර්ණ (Query)නෑසෑම පිටුවකටම රේඛාව 20 වන විට, උපරිම 100 වන විට.
start_date
end_date
ප්රශ්නය (Query)නෑISO 8601 දිනය සහ වේලාව
modelප්රශ්නය (Query)නෑමේ ආකෘතිය විතරයි.
typeප්රශ්නය (Query)නෑchat, responses, messages, image, video, speech, transcription හෝ embedding.
all_keysබුලන්තය (Queryනෑඑක යතුරකින් : true සෑම අංකයක්ම එකම අංකය ඇතුළත් වේ.Default false.
key_idප්රශ්නය (Query)නෑලියාපදිංචි ඉල්ලුමකින් හෝ 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);

ගිණුම් අත්සන් ඉල්ලීම

සකස් කිරීම, වෙනස් කිරීම සහ අවලංගු කිරීම, ගිණුම් සම්මතය සහ ස්වයංක්රීය Top-ups API Key එකක් ගන්නේ නැත. ඔවුන් ඔබේ NIM හි අත්සන් ගන්නේ නැත, එබැවින් පැතිරෙන යතුරු පාවිච්චි කළ හැකි නමුත් කවදාවත් වෙනත් යතුරු නිර්මාණය කළ නොහැක.

මෙම යෙදුම ඔබ වෙනුවෙන් මෙය කරයි: එහි සියලුම දේ ගිනි Sheet මේ Endpoints භාවිතා කරයි.You only need this section to manage keys from your own code.

මෙම අත්සන් යනු Nostr සිදුවීම 27235 (NIP-98) වර්ගයේ වන අතර එය base64 කේතය මගින් එවනු ලැබේ. Authorization Header with වචනය 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 is the full URL of the request, query string included, exactly as sent. - ඉල්ලුම සම්පූර්ණ URL, ඉල්ලුම් string included, exactly as sent.
  • method HTTP ක් රමය
  • payload SHA-256 යනු මෘදු ඉල්ලීම් ශරීරයේ SHA-256 වේ. 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.

මෙම වෙබ් අඩවියේ වෙබ් අඩවියේ ප්රවේශය ලබා ගත හැක (https://nymbot.ai, https://nymchat.app වෙනත් ඕනෑම වෙබ් අඩවියක පිටුවක CORS ප්රවර්ගය ආපසු ලැබෙන්නේ නැත, එබැවින් ඒවා ආපසු ලැබෙන දේ කියවීමට නොහැකි ය. Originඒවාට බලපෑමක් නැහැ.

ඔබේ රහසිගත යතුර

අත්සන් කිරීම සඳහා ඔබේ නයිම්ගේ රහසිගත යතුරක් අවශ් ය වේ (The nsecඔබේ අනන් යතාවය, ඉතිහාසය සහ සංසන්දනය පමණක් පාලනය කරයි.ඔබ විශ්වාස කරන පරිගණකයේ ස්ක්රිප්ටරය තුළ එය තබන්න, එය ගොනුවකට ලිවීමට වඩා එය පරිසරයෙන් කියවන්න, සහ ඔබට හැකි වන විට යෙදුම තෝරා ගන්න.

මෙම උපකාරකරුවන් හයිඩර් නිර්මාණය කරයි.මේ පිටුවේ පසුව උදාහරණ ඒවා භාවිතා කරයි.ඔවුන් හෙක්ස් වල රහසිගත යතුර කියවනවා. NOSTR_SECRET_HEXCURL One භාවිතා කරයි නෝනා Command-line tool එකක්, nsec හෝ hex key එකක් ගන්න. 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 අවශ් ය A අත්සන් ඉල්ලීම.

පිළිතුර

{
  "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 යතුර හඳුනාගැනීමට පමණක් නමුත් එය භාවිතා නොකිරීමට පමණක් ප් රමාණවත් වේ.

Key ලැයිස්තුව

GET https://nymbot.ai/api/v1/keys අත්සන් කලේ

ක්ෂේත් රයවර්ගයඅවශ් යවිස්තරය
include_revokedබුලන්තය (Queryනෑප් රතික්ෂේප කළ යතුර ඇතුළත්.Default 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.

ක්ෂේත් රයවර්ගයඅවශ් යවිස්තරය
namestring එකඔව්ඔබගේ අනෙකුත් ක්රියාකාරී යතුරු වලට වඩා වෙනස් 1 - 40 චරිත (ගැලපෙන ප්රශ්නය)
limit_satsසම්පූර්ණනෑඅඩුම තරමේ 1 ක වියදම් ප්රමාණය, කිසිදු ප්රමාණය සඳහා එය පිටතට තබන්න.
reset_periodstring එකනෑdaily, weekly හෝ monthlyඅවශ් යතා limit_satsකවදාවත් ආපසු යන්නේ නැති Cap සඳහා එය පිටතට තබන්න.
expire_atstring හෝ 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(එහෙත් අඩුම තරමේ අංකයක් නොතිබුණු අංකයක් නොතිබුණු අංකයක් නොතිබුණු අංකයක් නොතිබුණු අංකයක් නොතිබුණු අංකයක් නොතිබුණු අංකයක් නොතිබුණු අංකයක්)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);

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": {…}} යාවත්කාලීන කර ඇති Key Object

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 සමඟ Lightning wallet සම්බන්ධ කරන්න, API වියදම් අඩු වන විට එය ස්වයංක්රීයව බිඳ වැටෙනු ඇත. අත්සන් ඉල්ලීම.

එය ක්රියා කරන්නේ කෙසේද: API ඉල්ලීම ඔබ බැලීමට තෝරාගත් සීමාවකට අයදුම් කරන විට, එම සීමාව ඔබගේ අර්ධයට පහත වැටී තිබේ නම්, Nymbot ඔබගේ Top-up ප්රමාණය සඳහා ගිණුමක් සකස් කරයි, එය ගෙවීමට ඔබේ ජංගම දුරකථනයෙන් ඉල්ලයි, සහ ක්රෙඩිට් එකතු කරයි. එය සෑම විනාඩි 5කට වරක් එක් වරක් සකස් වේ, එබැවින් ඉල්ලීම් බිඳවැටීම ගිණුම වළක්වා ගත නොහැක. යෙදුම්වල වියදම් කිරීම එය ක්රියාත්මක නොකරයි. අවසාන Top-up සහ අවසාන වැරදි කාලය සහ ප්රමාණය සැකසුම් වල ඇත; ගෙවීම් වරදක් පසු සිදු වූ විට, එහි ගිණුම පරීක්ෂා කරන්න Top-up තත්වය ඒක Credit කරන්න.

ජංගම දුරකථනය සම්බන්ධ කිරීමට පෙර

Nymbot එය සංකීර්ණ ලෙස ගබඩා කරයි සහ එය කවදාවත් එය භාවිතා කරන්නේ එහිම උඩුගත කිරීම් ගෙවීමට පමණි, නමුත් මේ සඳහා පමණක් සම්බන්ධතාවයක් සකස් කරන්න, ඔබේ ජංගම දුරකථනයේ වියදම් බදු සමඟ, එබැවින් එය කවදාවත් ගෙවිය හැකි ප්රමාණය ඔබ තෝරාගත් සංඛ්යාවක් වේ. pay_invoice.

ජංගම දුරකථනය Connect

POST https://nymbot.ai/api/v1/nwc-auto-topup/connect අත්සන් කලේ

ක්ෂේත් රයවර්ගයඅවශ් යවිස්තරය
nwc_urlstring එකඔව්සන්නිවේදනය, ආරම්භ කිරීම nostr+walletconnect://Nymbot සල්ලි ඉල්ලයි get_info එය ආරක්ෂා කිරීමට පෙර, සහ එය සැපයුම් කර ඇත.
threshold_satsසම්පූර්ණඔව්අඩුම ගාණේ මේ ගාණේ අඩුම ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ අඩු ගාණේ.
topup_satsසම්පූර්ණඔව්කොපමණ වතාවක් එකතු කරන්න. 1,000 සිට 1,000,000 sats.
tierstring එකනෑ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ප් රචණ්ඩත්වය සිදුවේ, නමුත් අපි පාපයට එරෙහිව ශුද්ධ විනිශ්චය සහ අපි පුද්ගලිකව අකමැති අයට එරෙහි වන පුරපැම අතර වෙනස අප හඳුනාගත යුතුය, එය උඩඟුකමේ අනිවාර්ය ප් රතිපලයයි (ගීතාවලිය 73).nwc_unreachable) හෝ ප් රතික්ෂේප කිරීම (nwc_rejected); සබැඳි ගිණුම් ගෙවීමට නොහැකි (nwc_missing_permission) හෝ සීමාවන් පිටත සීමාවක්.
501ස්වයංක්රීය Top-ups මෙම සේවාදායක සඳහා ක්රියාත්මක නොවේ (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());

Settings කියවන්න

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());

Disconnect කිරීම

DELETE https://nymbot.ai/api/v1/nwc-auto-topup/connection අත්සන් කලේ

ඔබගේ ජංගම දුරකථන සබැඳි සංකේතය ඉවත් කරයි. තවදුරටත් Top-ups නොකරයි.

පිළිතුර

{ "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චැට්, ප්රතිචාර සහ පණිවිඩ සෑම විටම යතුරක් අවශ්ය වේ.කෙලයක් සහිත ඉල්ලුමක් සාමාන් ය ලෙස තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි තනි ත

Nymbot එක සමාන අදහසක් දෙකක් කතා කරයි, එක් backend: ලයිට්න්ග් ලේබස් ' අංක 402 (අපේ පැරණි නාමයෙන් පිළිගන්නා ලදී) LSATIETF ව් යාපෘතිය ගෙවීම HTTP authentication ක් රමය lightning ක් රමය සහ charge ඔබේ පාරිභෝගිකයාට තේරෙන දේ භාවිතා කරන්න.

ඔබේම සේවාදායක ක්රියාත්මක කිරීම

කිසිදු යතුරකින් තොරව ගෙවීම පමණක් වේ API_L402_SECRET හෙක්ස් (64 චරිත) හෝ base64 (44) ලෙස අවම වශයෙන් 32 අසාමාන්ය බයිට් ඇත. openssl rand -hex 32කෙටි හෝ අනුමාන කළ හැකි අගය ක්රියාකාරිත්වය විවෘත කරනු ලැබේ, එය ඇයි යන්න ලියාපදිංචි කරනු ලැබේ. API_L402_SECRET_PREVIOUS දිනකට: සම්ප් රදායිකයන්, තත්වය URLs සහ එහි යටතේ සිදු කරන අභියෝග ඔවුන් අවසන් වන තෙක් වැඩ කරති.

අභියෝගය

ඉල්ලුම එවන්න No Authorization සැබෑ නම්, කිසිවක් ක්රියා කරන්නේ නැහැ, ඔබ ලබා ගත හැකි 402 Payment Required එම ඉල්ලීම මිල ගණන් සඳහා ගිණුමක් සමඟ: එකම මිල යතුරක් ගෙවනු ඇත, ස්ථාවර ක්රෙඩිට් 10 sats හෝ Pro ක්රෙඩිට් 100 sats බවට පරිවර්තනය කරන ලද අතර මුළු sat දක්වා සකස් කරන ලදී (සමහර විට 1 sat, සහ අවම වශයෙන් 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 ප් රචණ්ඩත්වය සිදුවේ, නමුත් අපි පාපයට එරෙහිව ශුද්ධ විනිශ්චය සහ අපි පුද්ගලිකව අකමැති අයට එරෙහි වන පුරපැම අතර වෙනස අප හඳුනාගත යුතුය, එය උඩඟුකමේ අනිවාර්ය ප් රතිපලයයි (ගීතාවලිය 73: 6)./images/edits, /audio/transcriptions, /audio/translationsබොහෝ HTTP පුස්තකාල එක් වරක් මුද්රණයක් සකස් කරන විට එක් වරක් නව සීමාවක් තෝරා ගන්න, එබැවින් එය එක් වරක් සකස් කරන්න සහ එම බයිට් දෙකක් යැවීමට.

සෑම ලිපිනයකටම විනාඩියකට 30 අභියෝගයක් ඉල්ලන්න පුළුවන් (IPv6 ලිපිනය සම්පූර්ණ /64 ලෙස ගණනය වේ). ලිපිනය නොදන්නා අයදුම්පත් විනාඩියකට 10 කට වඩා ශක්තිමත් කොටසක් බෙදා ගනී; සියලු ලිපිනයකදී Nymbot ප්රශ්න පිළිබඳ සම්පූර්ණ මට්ටමක් ඇත; අභියෝගයක් සිදු කිරීමට පෙර ප්රතික්ෂේප කිරීම ප්රතික්ෂේප කිරීම (උදා: JSON වලංගු නොවන ශරීරයක් සමඟ) ඒ සඳහා ගණනය නොකරයි. 429 සමග Retry-Afterප්රතිපත්තියකින් තොරව ඇමතුම් කළ ගෙවනු ලැබූ අවසාන අංගය හෝ බලපත්රයක් නොමැතිව ඇමතුම් කරන ලද ප්රතිපත්තියකට අනුව විනාඩියකට නොතැබූ ඉල්ලීම් 120 ක පොදු සීමාව වෙත ගණනය කරන ලදී. Content-Type නොවෙයි application/json හෝ multipart/form-data ප් රතික්ෂේප කිරීම (rejected with 415 කවදාවත් ගිණුමක් ලැබෙන්නේ නැහැ.

Embeddings මිල ගණන් උපාංගයේ ටෝකන් ගණනින්, 1.5× ප්රමාණයක් සමඟ, සැබෑ ගණන පසුව පමණක් හඳුනාගත හැක. ටෝකන් ආපසු.

ගෙවීම් යැවීම

ඕනෑම Lightning wallet සමඟ ගිණුම ගෙවන්න. ගිණුම ඔබට පෙර ඡායාරූපය ලබා දෙයි, 64 හෙක්ස් චරිත. එවිට මෙම එක් එක් එක් සමග එකම ඉල්ලීම යැවීමට:

පද්ධතියහයිඩර්
අංක 402Authorization: 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 හයිඩර් (base64url JSON with the challenge id, payment hash as) reference, status සහ timestampගෙවීම් ඉල්ලීම් කිසිදු nym සම්බන්ධ නොවේ, එබැවින් ඔවුන් ප්රශ්න ඉතිහාසය තුළ පෙන්වන්නේ නැහැ.

තත්වයකවදා
402 payment_already_usedසෑම ගෙවීමක්ම එක් ඉල්ලීමක් සඳහා ගෙවනු ලැබේ. ප්රතිචාරය මෙම ඉල්ලීම සඳහා නව අභියෝගයකි, එබැවින් එහි අවසාන ප්රවේශය caches කරන පාරිභෝගිකයා (එනම් lnget ආයිත් ආයිත් ආයිත් ආයිත් ආයිත් ආයිත්
402 payment_mismatchඅනෙක් ප් රතිපත්තියකට විනිශ්චය කරන ලදී, Content-Type හෝ ශරීරය, හෝ මෙම ඉල්ලීම දැන් වියදම් වඩා අඩු ගෙවීම්. මෙම ඉල්ලීම සඳහා නව අභියෝග එය සමග පැමිණේ; ගෙවීම් ඉතා කුඩා නම්, ඔබ ගෙවූ දේ ආපසු ලැබේ ටෝකන් ආපසු (refund_token සහ refund_sats ශරීරයේ දී )
402 payment_expiredමෙම අභියෝගයෙන් පසු විනාඩි 15 කට වඩා වැඩි කාලයක් ගත වී ඇත. අලුත් අභියෝගයක් එන්නේ එය සමඟ. ඔබ ගෙවා ඇති බව ප්රදර්ශනය පෙන්වන්නේ නම්, ඔබ ගෙවා ඇති දේ ආපසු පැමිණෙනු ඇත. ටෝකන් ආපසු (refund_token සහ refund_sats එකපාරක්, එකපාරක්, එකපාරක්, එකපාරක්, එකපාරක්, එකපාරක්, එකපාරක්, එකපාරක්, එකපාරක්, එකපාරක්, එකපාරක්, එකපාරක්, එකපාරක්.
401 invalid_preimageප්රවර්ගයේ පින්තූරය ගිණුමේ ගෙවීම් ගිණුමේ ගෙවීම් ගිණුමට හෙෂය නොකරයි.
401 invalid_payment_credentialNymbot විසින් එය නිකුත් කිරීමෙන් පසු, හෝ ගෙවීම් හෙෂය Nymbot කිසිවිටෙකත් ගිණුමක් නිකුත් නොකරනු ලැබූ ගෙවීම් හෙෂය නම වෙනස් කර ඇත.A macaroon with a caveat Nymbot does not know, or with conflicting caveats, is refused.
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 ක්රමයක් සමඟ ගෙවීම් අභියෝගය තනිවම කටයුතු කරන්න; අවසානයේදී ඔවුන්ට පෙන්වන්න සහ ඔවුන්ට ගෙවීමට ඉඩ දෙන්න.

වීඩියෝ

ගෙවන 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"); ප්රදර්ශනය අසාර්ථක නම්, ගෙවීම් එය මත පදිංචි වේ. refund_sats ආපසු ගෙවනු ලැබූ රැකියාවක් සඳහා නමුත් කිසිවිටෙකත් ටෝකන්, එබැවින් තත්වය URL බෙදා හැරීම ආපසු ගෙවීම් බෙදා හැරීම නොවේ.

ආපසු ගෙවීම

ගෙවීම් ඉල්ලීම අසාර්ථක වන විට, සැපයුම්කරු 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-… ප් රචණ්ඩත්වය සිදුවේ, නමුත් අපි පාපයට එරෙහිව ශුද්ධ විනිශ්චය සහ අපි පුද්ගලිකව අකමැති අයට එරෙහි වන පුරපැම අතර වෙනස අප හඳුනාගත යුතුය, එය උඩඟුකමේ අනිවාර්ය ප් රතිපලයයි (ගීතාවලිය 73: 6).refund_token_sats ඒ අතරේ nymbot ප්රශ්නය ප්රතිචාරයට වඩා අඩු වටිනාකමක් සහිත ටෝකන් 402 refund_insufficientඅසාර්ථක වූ අසාර්ථකත්වය එම තැපැල් මත sats නැවත ස්ථාපනය කරයි.
  • පරීක්ෂා කරන්න GET /api/v1/l402/refunds එකම හින්දා ආපහු එනවා {"sats": 237, "status": "open", "expires_at": "..."}.
  • විනාඩියකට 60 වතාවක් පමණ ටෝකන් භාවිතා කළ හැක.
  • එය නයිම් එකට මාරු කරන්න. ඒක ඇතුලට දාපන් තෑග්ගක් ගන්න Nymbot යෙදුම, හෝ ඇමතුම POST /api/v1/l402/refunds/redeem A සමග අත්සන් ඉල්ලීම සහ {"refund_token": "REFUND-...", "balance": "standard"} හෝ "pro"සම්පූර්ණ ක්රෙඩිට් ඉහලට යන්නේ (10 තැපැල් සෑම තැපැල්, 100 Pro මත); 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 } }