உள்ளடக்கத்திற்கு செல்க
மீண்டும் Nymbot

அறிவு அடிப்படை டெவலப்பர்கள்

Top-ups மற்றும் keys

உங்களிடம் உள்ளதைச் சரிபார்க்கவும், மின்னல் மீது டாப் அப் செய்யவும், உங்கள் சொந்த பணப்பையிலிருந்து தானாகவே டாப் அப் செய்யவும், ஒவ்வொரு கோரிக்கையின் விலையையும் பார்க்கவும், குறியீட்டிலிருந்து விசைகளை நிர்வகிக்கவும்.

சமநிலையை சரிபார்க்கவும்

இவ்விரு வகையிலும், எவ்வளவு இத்தகைய கடிதங்கள் பயன்படுத்தப்படுகின்றன.

GET https://nymbot.ai/api/v1/credits/balance - ஒரு ஏபிஐ விசை தேவை. 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);

Payment வழிமுறைகள்

நீங்கள் எப்படி டாப் அப் செய்ய முடியும், மற்றும் வரம்புகள். மின்னல் மட்டுமே ஒரே வழி.

GET https://nymbot.ai/api/v1/topup/payment-methods - எந்த சாவியும் தேவையில்லை.

ஒரு டாப்-அப் 10 முதல் 1,000,000 சாட்ஸ் ஆகும்; ஒரு புரோ டாப்-அப் குறைந்தபட்சம் ஒரு புரோ கிரெடிட்டை வாங்க வேண்டும், எனவே இது 100 சாட்ஸில் தொடங்குகிறது. டாலர் வரம்புகள் பிட்காயின் விலையைப் பின்பற்றுகின்றன. bulk_bonus பயன்பாட்டில் உள்ளதைப் போலவே பெரிய டாப்-அப்களில் கூடுதல் கிரெடிட்டை பட்டியலிடுகிறதுஃ 500,1,000 அல்லது 5,000 சாட்களிலிருந்து நிலையான டாப்-அப்களில் 10 சதவீதம், 15 சதவீதம் அல்லது 20 சதவீதம் அதிகமாகவும், 5,000,10,000 அல்லது 50,000 சாட்களிலிருந்து புரோ டாப்-அப்களிலும்.

பதில்

{
  "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);

ஒளிப்பதிவு Over Lightning

ஒரு மின்னல் விலைப்பட்டியலை உருவாக்குகிறது, அது விசைக்குச் சொந்தமான nym க்கு கிரெடிட்டைச் சேர்க்கிறது. அதை எந்த மின்னல் பணப்பையிலிருந்து செலுத்தவும், பின்னர் பாருங்க கடன் சேர்க்கப்பட வேண்டும்.

POST https://nymbot.ai/api/v1/topup/create/btc-lightning - ஒரு ஏபிஐ விசை தேவை.

விமானம்வகைதேவைப்பட்டது.விளக்கம்
amountஎண்.ஆம்எவ்வளவு, எவ்வளவு currency. சாட்ஸ் ஒரு முழு எண்.
currencyStringஇல்லை.SATS (முன்னிருப்பாக), USD அல்லது BTCஅமெரிக்க டாலர்கள் தற்போதைய Bitcoin விலைக்கு மாற்றப்படுகின்றன.
tierStringஇல்லை.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 சாட்ஸ் (amount_too_large) அல்லது ஒளிபரப்பும் பட்ஜெட் (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);

ஒரு மேல்புறத்தை சரிபார்க்கிறது

கேட்கிறது, பணம் செலுத்தப்பட்டுவிட்டதா என்று மற்றும், ஒருமுறை அது உள்ளது, கடன் சேர்க்கிறது. Check is what credits it, so after payment, check until the status is creditedபின்னர் மீண்டும் கண்காணிப்பு பாதுகாப்பானது: கடன் ஒரு முறை, நீங்கள் எத்தனை முறை கேட்டாலும்.

GET https://nymbot.ai/api/v1/topup/status/{invoice_id} - தேவைப்படும் ஒரு கிளிக் NIMM க்கு கிடைத்தது.

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ஐடி என்பது உருவாக்க அழைப்பிலிருந்து 64 எழுத்துக்கள் கொண்ட ஐடி அல்ல.
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);

விரும்பும் History

ஒரு வரிக்கு ஒரு அழைப்பு: அது என்ன இருந்தது, எந்த மாதிரி, எவ்வளவு டாக்டர்கள் மற்றும் அது எவ்வளவு செலவாகும். எந்த ஆலோசனைகள் அல்லது பதில்கள் சேமிக்கப்படுகின்றன, எனவே யாரும் திரும்பப்படுவதில்லை. ஆலோசனைகள் 90 நாட்களாக சேமிக்கப்படுகின்றன, புதிய முதல். ஒரு கிளிக் அவரது அட்டவணையை அடைந்துள்ளது இன்னும் அவரது ஆராய்ச்சி படிக்க முடியும்.

GET https://nymbot.ai/api/v1/queries/history - ஒரு API key தேவை, அதன் சொந்த தேவைகளை பார்க்க, அல்லது ஒரு கையொப்பமிடப்பட்ட கோரிக்கை எல்லோரையும் பார்க்கும் உன் மார்பில்

விமானம்வகைதேவைப்பட்டது.விளக்கம்
pageமுழு எண் (வினவல்)இல்லை.முன்னிருப்பு 1, அதிகபட்சம் 1,000; ஒரு உயர்ந்த பக்கம் 400 invalid_value.
page_countமுழு எண் (வினவல்)இல்லை.20 சதவிகிதம், 100 சதவிகிதம்
start_date
end_date
கேப்டன் (Queryஇல்லை.ஐஎஸ்ஓ 8601 தேதிகள் அல்லது நேரங்கள்.
modelகேப்டன் (Queryஇல்லை.இந்த மாதிரி மட்டுமே
typeகேப்டன் (Queryஇல்லை.chat, responses, messages, image, video, speech, transcription அல்லது embedding.
all_keysபூலியன் (வினவல்)இல்லை.ஒரு திறமை : 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);

கணக்கு கோரிக்கைகளில் கையெழுத்திடுதல்

இதே சூழல், ஒவ்வொரு ஆண்டும் தொடர் கதையாக இருந்தும், அதிகாரிகள் போதிய கவனம் செலுத்த முன்வரவில்லை. .............................................................................................. இது எத்தனையாவது [...]

பயன்பாடு உங்களுக்காக இதைச் செய்கிறதுஃ அதன் உள்ள அனைத்தும் ஏபிஐ தாள் இந்த இறுதிப் புள்ளிகளைப் பயன்படுத்துகிறது. உங்கள் சொந்த குறியீட்டிலிருந்து விசைகளை நிர்வகிக்க உங்களுக்கு இந்த பிரிவு மட்டுமே தேவை.

இது ஒரு Nostr event of kind 27235 (NIP-98), sent base64-coded in the 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அதேபோல், நீங்கள் அனுப்பிய உடல் நீங்கள் hashed என்று ஒரு byte ஒரு byte இருக்க வேண்டும்.
  • created_at சேவையகத்தின் கடிகாரத்திலிருந்து 60 விநாடிகளுக்குள் இருக்க வேண்டும்.
  • ஒவ்வொரு நிகழ்ச்சியும் ஒரு முறை, a GET சேர்க்கப்பட்டது, எனவே கைப்பற்றப்பட்ட தலைப்பை மீண்டும் இயக்க முடியாது. ஒவ்வொரு கோரிக்கைக்காகவும் புதிதாக கையெழுத்திடவும். ஒரு சேர்க்கவும் nonce அதே நேரத்தில் எழுதப்பட்ட இரண்டு அழைப்புகள் இன்னும் வேறுபடுகின்றன.
  • ஒரு எழுதப்பட்ட கேள்வியின் உடல் அதிகபட்சமாக 64 KB இருக்கலாம், மற்றும் ஒரு உடல் தேவை Content-Type: application/json.

இழந்த நிகழ்வு திரும்புகிறது 401 missing_nostr_authஒரு தவறாக உருவாக்கப்பட்ட, தவறாக எழுதப்பட்ட, பழைய, அல்லது வேறு URL, வழி அல்லது உடல் திரும்பும் invalid_nostr_auth, செய்தியில் உள்ள காரணத்துடன்; மீண்டும் பயன்படுத்தப்பட்ட ஒன்று திரும்புகிறது nostr_auth_replayedஇந்த இறுதிப் புள்ளிகளுக்கு அனுப்பப்படும் ஒரு ஏபிஐ விசை நிராகரிக்கப்படுகிறது. உடல் படிக்கப்படுவதற்கு முன்பு கையொப்பம் சரிபார்க்கப்படுகிறது, மேலும் ஒவ்வொரு முகவரியும் நிமிடத்திற்கு 30 முறை தோல்வியடையக்கூடும் (ஒரு ஐபிவி 6 முகவரி அதன் முழு/64 ஆக கணக்கிடப்படுகிறது); அதன் பிறகு அது பெறப்படுகிறது 429 உடன் Retry-After.

Browsers can call these endpoints only from Nymbot's own sites (https://nymbot.ai, https://nymchat.app மற்றும் அவற்றின் துணை டொமைன்கள்). வேறு எந்தத் தளத்திலும் உள்ள ஒரு பக்கத்திற்கு எந்த சிஓஆர்எஸ் தலைப்புகளும் திரும்பப் பெறப்படுவதில்லை, எனவே அவை எதைத் திருப்பித் தருகின்றன என்பதைப் படிக்க முடியாது. ஸ்கிரிப்ட்கள் மற்றும் சொந்த பயன்பாடுகள், அவை இல்லை என்று அனுப்புகின்றன. Origin, பாதிக்கப்படுவதில்லை.

உன் secret key

கையெழுத்திடுவதற்கு உங்கள் நிமின் ரகசிய விசை தேவை ( nsec), இது எல்லாவற்றையும் கட்டுப்படுத்துகிறதுஃ உங்கள் அடையாளம், உங்கள் வரலாறு மற்றும் உங்கள் இருப்பு. அதை நீங்கள் நம்பும் இயந்திரத்தில் ஒரு ஸ்கிரிப்ட்டில் மட்டுமே வைக்கவும், அதை கோப்பில் எழுதுவதை விட சூழலில் இருந்து படிக்கவும், உங்களால் முடிந்தவரை பயன்பாட்டை விரும்பவும்.

இந்த உதவியாளர்கள் தலைப்பை உருவாக்குகிறார்கள். இந்தப் பக்கத்தில் உள்ள பிந்தைய எடுத்துக்காட்டுகள் அவற்றைப் பயன்படுத்துகின்றன. ஹெக்ஸில் உள்ள ரகசிய விசையை அவர்கள் படிக்கிறார்கள் NOSTR_SECRET_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");
}

கணக்கெடுப்பு Summary

பயன்பாட்டின் ஏபிஐ தாள் மேலே என்ன காட்டுகிறதுஃ உங்கள் பொது விசை, இரு நிலுவைகளும், எத்தனை விசைகள் செயலில் உள்ளன (ரத்து செய்யப்படவில்லை அல்லது காலாவதியானது அல்ல), மற்றும் தானியங்கி மேல்-மேல் அமைவுகள், அல்லது 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());

கதவுகளை மேற்கொள்ள

பயன்பாட்டின் முக்கிய பட்டியலுக்குப் பின்னால் உள்ள இறுதிப் புள்ளிகள். அவை அனைத்திற்கும் ஒரு தேவை கையொப்பமிடப்பட்ட கோரிக்கைஒவ்வொரு விசையும் ஐஎஸ்ஓ 8601 இல் உள்ள நேரங்கள் மற்றும் சாட்டுகளில் உள்ள அளவுகளுடன் இந்த வடிவத்தில் திருப்பித் தரப்படுகிறதுஃ

முக்கிய பொருள்

{
  "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.

விமானம்வகைதேவைப்பட்டது.விளக்கம்
nameStringஆம்1 முதல் 40 எழுத்துக்கள், உங்கள் மற்ற செயலில் உள்ள விசைகளிலிருந்து வேறுபட்டது (வழக்கை புறக்கணிக்கிறது).
limit_satsமுழுமையாகஇல்லை.செலவுக்கான வரம்பு குறைந்தபட்சம் 1. அதை எந்த வரம்பும் இல்லாமல் விட்டுவிடுங்கள்.
reset_periodStringஇல்லை.daily, weekly அல்லது monthly. தேவைகள். limit_satsஅதை ஒருபோதும் மறுதொடக்கம் செய்யாத ஒரு தொப்பிக்கு விட்டு விடுங்கள்.
expire_atstring அல்லது integerஇல்லை.விசை வேலை செய்வதை நிறுத்தும்போதுஃ ஒரு ஐஎஸ்ஓ 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 சதவிகிதம் மாணவர்கள், 100 சதவிகிதம் மாணவர்கள், 100 சதவிகிதம் மாணவர்கள் (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": {…}} புதுப்பிக்கப்பட்ட 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 படப்பிடிப்பு

Connect a Lightning wallet with Nostr Wallet Connect and Nymbot tops up a balance by itself when API spending runs it low. The app's API sheet has the same settings; these are the endpoints behind it. All of them need a கையொப்பமிடப்பட்ட கோரிக்கை.

How it works: after an API request is charged to the balance you chose to watch, if that balance has fallen below your threshold, Nymbot makes an invoice for your top-up amount, asks your wallet to pay it, and adds the credit. It tops up at most once every 5 minutes for each nym and balance, so a burst of requests cannot drain the wallet. Spending in the apps does not trigger it. The time and size of the last top-up, and the last error, are in the settings; if a payment went through after an error, checking its invoice with Top-Up நிலைமை அதற்குக் கிரெடிட் கொடுங்கள்.

பணப்பையை இணைப்பதற்கு முன்

A connection string lets whoever holds it ask your wallet to pay. Nymbot stores it encrypted and only ever uses it to pay its own top-up invoices, but make a connection just for this, with a spending budget in your wallet, so the most it could ever pay is a number you chose. The wallet has to support pay_invoice.

பணப்பையை இணைத்தல்

POST https://nymbot.ai/api/v1/nwc-auto-topup/connect கையெழுத்திட்டார்.

விமானம்வகைதேவைப்பட்டது.விளக்கம்
nwc_urlStringஆம்தொடர் தொடர் தொடர் தொடர் தொடர் nostr+walletconnect://Nymbot கேட்கிறது wallet for get_info இதனை முன்னிலைப்படுத்தும் முன்னேற்றம் ஏற்பட்டுள்ளது.
threshold_satsமுழுமையாகஆம்இத்தகைய எண்ணிக்கையை விட அதிகமானது 1000 ரூபாயை விட அதிகமானது.
topup_satsமுழுமையாகஆம்ஒவ்வொரு முறையும் எவ்வளவு சேர்க்க வேண்டும். 1,000 முதல் 1,000,000 சாட்கள்.
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); பணப்பை அதன் ரிலே மீது பதிலளிக்கவில்லை (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 பேசுகிறது இரண்டு பதிப்புகள் அதே யோசனை, ஒரு backend இருந்து: ஒளிப்பதிவுகள் Labs ' லெவல்402 (அதுவும் அவரது பழைய பெயரைப் போலவே, LSAT) மற்றும் ஐ. இ. டி. எஃப் வரைவு பணம் செலுத்துதல் HTTP அங்கீகாரத் திட்டம் lightning Method மற்றும் charge எதைப் புரிந்து கொள்வது, எதைப் புரிந்து கொள்வது, எதைப் புரிந்து கொள்வது.

உன்னோட server க்கு

விசை இல்லாமல் பணம் செலுத்துவது அப்போதுதான் இயங்குகிறது API_L402_SECRET இதில் 32 சதவிகிதம் ஹெக்ஸ் (64 அம்சங்கள்) அல்லது base64 (64 அம்சங்கள்) இருக்கும். openssl rand -hex 32ஒரு சிறிய அல்லது அறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகுறிகள் API_L402_SECRET_PREVIOUS ஒரு நாள்: அறிகுறிகள், நிலை URLs மற்றும் அதன் கீழ் செய்யப்பட்ட பிரச்சினைகள் அவர்கள் முடிந்த வரை வேலை செய்கிறது.

சவால்

இல்லை என்ற நிபந்தனையுடன் கோரிக்கையை அனுப்பவும் 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 மற்றும் அதே ஜேஎஸ்ஓஎன் பைட்டுகள், அல்லது பல பகுதி இறுதிப் புள்ளிகளுக்கு (/images/edits, /audio/transcriptions, /audio/translations) ஒரே பன்மடங்கு பொருள் ஒரே எல்லையுடன். பெரும்பாலான HTTP நூலகங்கள் ஒவ்வொரு முறையும் ஒரு படிவத்தை குறியாக்கம் செய்யும்போது ஒரு புதிய எல்லையைத் தேர்ந்தெடுக்கின்றன, எனவே அதை ஒரு முறை குறியாக்கம் செய்து அந்த பைட்டுகளை இரண்டு முறை அனுப்பவும்.

ஒவ்வொரு முகவரியும் ஒரு நிமிடத்தில் 30 பிரச்னைகளை கேட்க முடியும் (ஒரு IPv6 முகவரியை அதன் முழு /64 எனக் கருதப்படுகிறது). அறியப்படாத முகவரியைக் கொண்ட பிரச்னைகள் ஒரு நிமிடத்தில் ஒரு கடுமையான 10 ஐ பகிர்ந்து கொள்ளலாம், மற்றும் அனைத்து முகவரிகளில் Nymbot பிரச்னைகள் மீது ஒரு பொதுவான அளவு உள்ளது; ஒரு பிரச்னை செய்ய முன் ஒரு பிரச்னை செய்யப்பட்ட ஒரு பிரச்னை (எனவே, ஒரு உடல் இல்லை JSON சரியான) அதை எதிர்கொள்ளாது. 429 உடன் Retry-Afterஇதே சூழல், ஒவ்வொரு ஆண்டும் தொடர் கதையாக இருந்தும், அதிகாரிகள் போதிய கவனம் செலுத்த முன்வரவில்லை. .............................................................................................. இது எத்தனையாவது [...] Content-Type இல்லை application/json அல்லது multipart/form-data திருவள்ளுவர் திருவள்ளுவர் திருவள்ளுவர் 415 எப்போதும் கடன் கிடைக்காது.

உட்பொதிப்புகள் உள்ளீட்டில் உள்ள டோக்கன்களின் மதிப்பீட்டில் இருந்து விலை நிர்ணயிக்கப்படுகின்றன, ஒரு 1.5× விளிம்புடன், ஏனெனில் உண்மையான எண்ணிக்கை பின்னர் மட்டுமே அறியப்படுகிறது. உண்மையில் பயன்படுத்தப்பட்ட டோக்கன்களுக்கு நீங்கள் பணம் செலுத்துகிறீர்கள், மேலும் செலுத்துதலின் பயன்படுத்தப்படாத பகுதி ஒரு மதிப்பீடாக திரும்ப வருகிறது பணத்தைத் திருப்பிச் செலுத்தும் டோக்கன்.

பணம் அனுப்பும்

Pay the invoice with any Lightning wallet. The wallet gives you the preimage, 64 hex characters. Then send the same request with one of these:

திட்டம்தலைப்பு
லெவல்402Authorization: L402 <macaroon>:<preimage> (LSAT மேலும் வேலை)
பணம் செலுத்துதல்Authorization: Payment <base64url JSON>ஜேஎஸ்ஓஎன் எங்கே உள்ளது {"challenge": {every parameter of the challenge, as sent}, "payload": {"preimage": "<hex>"}}

ஒரு கட்டண கோரிக்கை ஒரு சாவியைக் கொண்டு செய்யப்பட்டதைப் போலவே பதிலளிக்கிறது, தவிர nymbot பொருள் எந்த விலையுமில்லை: {"payment": "l402", "tier": "pro", "paid_sats": 237, "charged_sats": 237}, and there is no X-Nymbot-Balance-Sats பணம் செலுத்துவதற்கான வழிகாட்டுதலின் மூலம், ஒரு Payment-Receipt header (base64url JSON with the challenge id, the payment hash as) reference, status மற்றும் timestamp). கட்டண கோரிக்கைகள் எந்த nym உடன் பிணைக்கப்படவில்லை, எனவே அவை வினவல் வரலாற்றில் காட்டப்படுவதில்லை.

அந்தஸ்துஎப்போது?
402 payment_already_usedஒவ்வொரு கட்டணமும் ஒரு கோரிக்கைக்கு பணம் செலுத்துகிறது. இந்த கோரிக்கைக்கு பதிலளிப்பது ஒரு புதிய சவாலாகும், எனவே ஒரு வாடிக்கையாளர் தனது கடைசி நற்சான்றுகளை தற்காலிகமாக சேமிக்கிறார் ( lnget செய்கிறது) வெறுமனே மீண்டும் செலுத்துகிறது.
402 payment_mismatchமற்றொரு இறுதிப் புள்ளிக்கு நற்சான்றிதழ் வழங்கப்பட்டது, Content-Type அல்லது உடல், அல்லது இந்த கோரிக்கையை விட குறைவாக செலுத்துகிறது இப்போது செலவாகும். இந்த கோரிக்கைக்கு ஒரு புதிய சவால் அதனுடன் வருகிறது; பணம் செலுத்துதல் மிகவும் சிறியதாக இருந்தால், நீங்கள் செலுத்திய பணம் திரும்ப வரும் பணத்தைத் திருப்பிச் செலுத்தும் டோக்கன் (refund_token மற்றும் refund_sats உடலில்).
402 payment_expiredஒரு முதியவன் பாதாளங்களைத் தாண்டும் தன் மந்திரக்கோலால் சாய்த்தபடியிருக்கிறான் நாட்சத்திரங்களை. .............................................................................................................................................................................. இது எத்தனையாவது [...] பணத்தைத் திருப்பிச் செலுத்தும் டோக்கன் (refund_token மற்றும் refund_sats அதேபோல், ஒரு முறை, ஒரு முறை, அதேபோல ஒரு முறை, அதேபோல ஒரு முறை, அதேபோல ஒரு முறை, அதேபோல ஒரு முறை, அதேபோல ஒரு முறை, அதேபோல ஒரு முறை.
401 invalid_preimageவிலைப்பட்டியலின் கட்டண ஹாஷ் மீது முன்கணிப்பு ஹேஷ் செய்யவில்லை. பணம் பயன்படுத்தப்படவில்லை.
401 invalid_payment_credentialNymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nymbot என்ற பெயரில், Nym
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 ஒரு விசை போன்றது, பிளஸ் அ 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 பகிர்வு திரும்ப பணம் பகிர்ந்து கொள்ளாது.

பணத்தைத் திருப்பிச் செலுத்துதல்

If a paid request fails and the provider billed Nymbot for the attempt, the payment is kept and the error says so, with 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 அதேபோல், பணம் திரும்பப் பெறுவதற்கும், பணம் திரும்பப் பெறுவதற்கும், பணம் திரும்பப் பெறுவதற்கும், பணம் திரும்பப் பெறுவதற்கும், பணம் திரும்பப் பெறுவதற்கும், பணம் திரும்பப் பெறுவதற்கும், பணம் திரும்பப் பெறுவதற்கும் உண்டு.

A refund token is a random 256-bit code. Nymbot stores only its hash, and it expires after 30 days. It holds a sat balance, and you can:

  • அதனுடன் பணம் செலுத்துங்கள். அனுப்புங்கள். Authorization: Bearer REFUND-… மேலே உள்ள எந்த இறுதிப் புள்ளியிலும் (ஒரு ஓபன்ஏஐ எஸ்டிகே அதை அதன் ஏபிஐ விசையாக எடுத்துக்கொள்கிறது). விலை டோக்கனில் இருந்து வருகிறது, எஞ்சியிருப்பது அதில் இருக்கும் (refund_token_sats அதில் nymbot பொருள்). கோரிக்கை பதில்களை விட குறைவான மதிப்புள்ள ஒரு டோக்கன் 402 refund_insufficientஒரு கட்டப்படாத தோல்வி சாட்டுகளை அதே டோக்கனில் மீண்டும் வைக்கிறது.
  • அதைச் சரிபார்க்கவும். GET /api/v1/l402/refunds அதே தலைப்புடன் திரும்பும் {"sats": 237, "status": "open", "expires_at": "..."}.
  • ஒரு நிமிடத்தில் 60 முறைக்கு மேல் ஒரு டாக்டர் பயன்படுத்த முடியும்.
  • அதை ஒரு nym க்கு நகர்த்தவும். அதில் ஒட்டவும். ஒரு திருப்தி in the Nymbot app, or call POST /api/v1/l402/refunds/redeem உடன் அ. கையொப்பமிடப்பட்ட கோரிக்கை மற்றும் {"refund_token": "REFUND-...", "balance": "standard"} அல்லது "pro"முழு கடன் செலவு (Standard of 10 Sats, Pro of 100 Sats) - API Requests for token-ல் முழு கடன் செலவு செய்யாது.

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 } }