Məzmuna keçin
Yenə Nymbot

Bilik bazası Developerlər

Top-up və Key

Hesab etdiyiniz şeyləri kontrol edin, Lightning-in üstünü açın, öz cüzdanınızdan otomatik olaraq üstünüzü açın, hər bir istehlakın nə qədər maliyeti olduğunu görün və koddan anahtarları idarə edin.

Balansını kontrol etmək

Hər ikisi sizin bilansiyalarınız, və bu anahtarın qapının nə qədər istifadə edilir.

GET https://nymbot.ai/api/v1/credits/balance İhtiyacınız var ki, bir API Key. POST Bunu da müştərilər gözləyir.

balance ABŞ-ın “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkəti “Bitcoin” şirkətinull Qiymətin oxunması mümkün deyil).Rest kreditlərdə və satslardadir, bu da balansların real olaraq saxlanması ilə bağlıdır. key Bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir neçə ildir.

Reaksiya

{
  "balance": 49.18,
  "balance_sats": 42037,
  "standard": { "credits": 120.4, "sats": 1204 },
  "pro": { "credits": 408.33, "sats": 40833 },
  "key": {
    "id": "4f0c9a1be27d3856",
    "name": "laptop scripts",
    "limit_sats": 20000,
    "period_used_sats": 3412,
    "total_used_sats": 18230,
    "reset_period": "monthly",
    "reset_at": "2026-10-01T00:00:00Z"
  }
}
StatistikaNə vaxt
401Anahtarın eksik, bilinməz, iptal edildiyi və ya expirated olduğunu.

cURL

curl https://nymbot.ai/api/v1/credits/balance \
  -H "Authorization: Bearer $NYMBOT_API_KEY"

Python

import os
import requests

res = requests.get(
    "https://nymbot.ai/api/v1/credits/balance",
    headers={"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]},
)
balance = res.json()
print(balance["standard"]["sats"], balance["pro"]["sats"])

JavaScript

const res = await fetch("https://nymbot.ai/api/v1/credits/balance", {
  headers: { "Authorization": "Bearer " + process.env.NYMBOT_API_KEY },
});
const balance = await res.json();
console.log(balance.standard.sats, balance.pro.sats);

Paylaşma metodları

Bəlkə də, bu problemlər həll olunacaqdır, bu problemlər də həll olunacaqdır.

GET https://nymbot.ai/api/v1/topup/payment-methods Anahtar lazım deyil.

Bir top-up 10 ilə 1,000,000 sats; bir Pro top-up ən azından bir Pro kredit almaq lazımdır, bu yüzden 100 sats başlayır. bulk_bonus Daha böyük top-uplarda isə 10%, 15% və ya 20% daha çox standart top-uplarda 500, 1000 və ya 5000 sats, Pro top-uplarda isə 5,000, 10,000 və ya 50,000 sats.

Reaksiya

{
  "supported_methods": [
    {
      "method": "btc-lightning",
      "display_name": "Bitcoin Lightning",
      "supported_currencies": ["SATS", "USD", "BTC"],
      "limits": {
        "SATS": { "min": 10, "max": 1000000 },
        "USD": { "min": 0.02, "max": 1170 },
        "BTC": { "min": 1e-7, "max": 0.01 }
      },
      "tiers": ["standard", "pro"],
      "default_tier": "pro",
      "tier_min_sats": { "standard": 10, "pro": 100 },
      "sats_per_credit": { "standard": 10, "pro": 100 },
      "bulk_bonus": [
        { "bonus": 0.1, "standard_sats": 500, "pro_sats": 5000 },
        { "bonus": 0.15, "standard_sats": 1000, "pro_sats": 10000 },
        { "bonus": 0.2, "standard_sats": 5000, "pro_sats": 50000 }
      ]
    }
  ]
}

cURL

curl https://nymbot.ai/api/v1/topup/payment-methods

Python

import requests

methods = requests.get("https://nymbot.ai/api/v1/topup/payment-methods").json()
print(methods["supported_methods"][0]["limits"])

JavaScript

const methods = await (await fetch("https://nymbot.ai/api/v1/topup/payment-methods")).json();
console.log(methods.supported_methods[0].limits);

“Lightning”in üstündə

“Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıstanda” “Qazaxıst Kontrol etmək Krediti artırmaq lazımdır.

POST https://nymbot.ai/api/v1/topup/create/btc-lightning İhtiyacınız var ki, bir API Key.

FieldəTipiİhtiyaçAçıqlama
amountNumaralarıBəliNə qədər, nə qədər currencyBütün sayı satmaq lazımdır.
currencyStringlərYəqinSATS (Mənim fikrim də bu idi) USD və ya BTCDollarlar Bitcoin qiyməti ilə çevrilir.
tierStringlərYəqinpro (Müsəlmanlar və ya standardKrediti nə qədər ödəyirlər.

Bir standart kredit 10 sats və bir Pro kredit 100 sats, plus hər hansı bulk bonusudur; credits Bu faktura nə əlavə ediləcək.

Reaksiya

{
  "invoice_id": "b7d41e0c95a2f38e6c1d0e9a4b7f2c61d3e8a05f9b2c4d7e1a6f3b8c0d5e2a9f4",
  "payment_request": "lnbc100u1p5...",
  "amount_sats": 10000,
  "credits": 115,
  "tier": "pro",
  "expires_at": "2026-09-30T09:27:00Z",
  "status": "pending"
}
StatistikaNə vaxt
400Başqa bir yol (unsupported_methodƏsas səhifə (unsupported_currencyƏsas səhifə / Dərslər / Dərslər / Dərslər / Dərslər / Dərsləramount_too_small1 milyon avro (amount_too_large“Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”in “Qəbələ”nin “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”n”in “Qəbələ”nin” [...]amount_out_of_range).
429Bu barədə “Xəzər Lənkəran” jurnalına istinadən xəbər verir ki, bu barədə “Xəzər Lənkəran” jurnalına istinadən xəbər verir.rate_limit_exceededilə Retry-After).
502Şimali Qəhrəman (invoice_unavailableilə Retry-After).

cURL

curl https://nymbot.ai/api/v1/topup/create/btc-lightning \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount": 10000, "currency": "SATS", "tier": "pro"}'

Python

import os
import requests

res = requests.post(
    "https://nymbot.ai/api/v1/topup/create/btc-lightning",
    headers={"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]},
    json={"amount": 10000, "currency": "SATS", "tier": "pro"},
)
invoice = res.json()
print(invoice["payment_request"])

JavaScript

const res = await fetch("https://nymbot.ai/api/v1/topup/create/btc-lightning", {
  method: "POST",
  headers: {
    "Authorization": "Bearer " + process.env.NYMBOT_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ amount: 10000, currency: "SATS", tier: "pro" }),
});
const invoice = await res.json();
console.log(invoice.payment_request);

Top-up xəritədə

Hesabın ödənildiyini soruşur və bir dəfə, krediti daxil edər.Checking nə krediti verir, bu yüzden ödəndikdən sonra statusa qədər baxın creditedDaha sonra yenə baxmaq təhlükəlidir: kredit bir dəfə, nə qədər dəfə soruşursanız.

GET https://nymbot.ai/api/v1/topup/status/{invoice_id} - Faturasını etdiyiniz nymdən bir anahtar lazımdır.

status İŞİD pending (Şübhəsiz ki, bu barədə məlumat verilməyib) paid Əsas səhifə » Xəbərlər » Əsas səhifə » Əsas səhifə credited (Sizin hesabınızda) və ya expired Əsas səhifə » Xəbərlər » Əsas səhifə » Əsas səhifə » Əsas səhifə

Reaksiya

{
  "invoice_id": "b7d41e0c95a2f38e6c1d0e9a4b7f2c61d3e8a05f9b2c4d7e1a6f3b8c0d5e2a9f4",
  "status": "credited",
  "amount_sats": 10000,
  "credits": 115,
  "tier": "pro",
  "expires_at": null,
  "balance_credits": 523.33,
  "balance_sats": 52333
}
StatistikaNə vaxt
400Bu, 64-cü dəqiqədir ki, telefonun yaradılması mümkün olmayacaq.
404Bu barədə “Neftçi”nin məlumatına görə, bu barədə məlumat verilməyib.invoice_not_found).

cURL

curl https://nymbot.ai/api/v1/topup/status/$INVOICE_ID \
  -H "Authorization: Bearer $NYMBOT_API_KEY"

Python

import os, time
import requests

headers = {"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]}
url = "https://nymbot.ai/api/v1/topup/status/" + invoice["invoice_id"]

while True:
    status = requests.get(url, headers=headers).json()["status"]
    if status in ("credited", "expired"):
        break
    time.sleep(3)
print(status)

JavaScript

const headers = { "Authorization": "Bearer " + process.env.NYMBOT_API_KEY };
const url = "https://nymbot.ai/api/v1/topup/status/" + invoice.invoice_id;

let status;
do {
  await new Promise((r) => setTimeout(r, 3000));
  status = (await (await fetch(url, { headers })).json()).status;
} while (status !== "credited" && status !== "expired");
console.log(status);

Tarix istəyir

VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu.

GET https://nymbot.ai/api/v1/queries/history - öz istəkləri görən bir API çayı, ya da İstehsal prosesi Sizin hər anahtarınızı görürsünüz.

FieldəTipiİhtiyaçAçıqlama
pageƏsas səhifə (query)Yəqin1 ildir ki, ən çox 1000-dir. 400 invalid_value.
page_countƏsas səhifə (query)YəqinƏsas səhifə » Əsas səhifə » Əsas səhifə » 20
start_date
end_date
Qəbələ (Qəbələ)YəqinISO 8601 dataları və saatları
modelQəbələ (Qəbələ)YəqinSadəcə bu model
typeQəbələ (Qəbələ)Yəqinchat, responses, messages, image, video, speech, transcription və ya embedding.
all_keysTədbirlər (Qəbələ)YəqinBir anahtarı ilə: true Hər bir nüsxə, hər bir nüsxə ilə bağlıdır. false.
key_idQəbələ (Qəbələ)Yəqinİstehsal etmək üçün, ya da all_keys=trueYalnız bu anahtar

Reaksiya

{
  "data": [
    {
      "id": "q_71c4e9a0",
      "timestamp": "2026-09-30T08:12:00Z",
      "model": "anthropic/claude-sonnet-5",
      "type": "chat",
      "input_tokens": 1240,
      "output_tokens": 380,
      "cached_tokens": 0,
      "cost_sats": 16.2,
      "cost_usd": 0.01895,
      "balance": "pro",
      "key_id": "4f0c9a1be27d3856",
      "web_search": false,
      "status": "ok"
    }
  ],
  "pagination": { "page": 1, "page_count": 20, "total": 311, "total_pages": 16 }
}

cURL

curl "https://nymbot.ai/api/v1/queries/history?page_count=50&type=chat" \
  -H "Authorization: Bearer $NYMBOT_API_KEY"

Python

import os
import requests

res = requests.get(
    "https://nymbot.ai/api/v1/queries/history",
    headers={"Authorization": "Bearer " + os.environ["NYMBOT_API_KEY"]},
    params={"page_count": 50, "type": "chat"},
)
for row in res.json()["data"]:
    print(row["timestamp"], row["model"], row["cost_sats"])

JavaScript

const res = await fetch("https://nymbot.ai/api/v1/queries/history?page_count=50&type=chat", {
  headers: { "Authorization": "Bearer " + process.env.NYMBOT_API_KEY },
});
for (const row of (await res.json()).data) console.log(row.timestamp, row.model, row.cost_sats);

Hesabatın imzalanması

Əsas səhifə » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm »

App sizin üçün bunu edir: hər şey onun Atəşkəs Bu işləyə bilmək lazımdır ki, bu işləyə bilmək lazımdır, bu işləyə bilmək lazımdır.

Dərslər 27235 (NIP-98) və 27235 (NIP-98) türünün bir Nostr hadisəsidir. Authorization Header sözləri Nostr Öncəki →

Əməkdarlıq

{
  "kind": 27235,
  "created_at": 1790726400,
  "tags": [
    ["u", "https://nymbot.ai/api/v1/keys"],
    ["method", "POST"],
    ["nonce", "9c4e21f07a3b...16 random bytes in hex"],
    ["payload", "3f1a0d7c8e2b...sha256 of the exact request body in hex"]
  ],
  "content": "",
  "pubkey": "your public key in hex",
  "id": "...",
  "sig": "..."
}
  • u İndi isə bütün problemlər həll olunacaq, bütün problemlər həll olunacaq.
  • method HTTP metodudur.
  • payload VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltmasıdır. POST və PATCH“Sənə göndərdiyiniz “Qəbələ”ni “Qəbələ” adlandırmaq lazımdır.
  • created_at Serverin saatının 60 saniyədə olması lazımdır.
  • Hər bir iş bir dəfə, bir GET Əsas səhifə » Xəbərlər » Əsas səhifə » Əsas səhifə » Əsas səhifə nonce Təsadüfi bir qiymətlə işarə edin ki, aynı saniyədə imzalanmış iki istehlak hala fərqlidir.
  • VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltmasıdır. Content-Type: application/json.

Missing Events qayıdır 401 missing_nostr_authYaxşı formalaşmış, pis imzalanmış, çox yaşlı, ya da başqa bir URL, metod və ya vücud üçün qaytarılan invalid_nostr_authƏsas səhifə » Xəbərlər » Əsas səhifə » Əsas səhifə nostr_auth_replayedVVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsil edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. 429 ilə Retry-After.

Növbəti xəbərNeftçi.az-a istinadən xəbər verir ki, bu barədə “Neftçi.az” saytında məlumat yayıb.https://nymbot.ai, https://nymchat.app Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə OriginOnlara zərər verilmir.

Gizli anahtarınız

“Neftçi”nin “Neftçi”nin “Neftçi”nin “Neftçi”nin “Neftçi”nin “Neftçi”ni nsecBu, hər şeyi kontrol edir: kimliyinizi, tarixinizi və balansınızı. Yalnız güvəndiyiniz bir maşında scriptdə yerləşdirin, çevrəyindən oxuyun, dosyaya yazmayın və mümkün olduğunda appdan istifadə edin.

Bu layihə ilə bağlı məlumatlar aparılır, bu layihə ilə bağlı məlumatlar aparılır. NOSTR_SECRET_HEX“Qəbələ”də 1 nəfər iştirak edib Nəsimi “Neftçi” və ya “Neftçi” klubları ilə görüşüb sha256sum MacOS üçün shasum -a 256).

cURL

nostr_auth() {
  method="$1"; url="$2"; body="$3"
  nonce=$(openssl rand -hex 16)
  if [ -n "$body" ]; then
    hash=$(printf '%s' "$body" | sha256sum | cut -d' ' -f1)
    event=$(nak event --sec "$NOSTR_SECRET_HEX" -k 27235 -t "u=$url" -t "method=$method" -t "nonce=$nonce" -t "payload=$hash")
  else
    event=$(nak event --sec "$NOSTR_SECRET_HEX" -k 27235 -t "u=$url" -t "method=$method" -t "nonce=$nonce")
  fi
  printf 'Nostr %s' "$(printf '%s' "$event" | base64 | tr -d '\n')"
}

Python

# pip install coincurve requests
import base64, hashlib, json, os, time
from coincurve import PrivateKey, PublicKeyXOnly

SECRET = bytes.fromhex(os.environ["NOSTR_SECRET_HEX"])

def nostr_auth(method, url, body=b""):
    pubkey = PublicKeyXOnly.from_secret(SECRET).format().hex()
    tags = [["u", url], ["method", method], ["nonce", os.urandom(16).hex()]]
    if body:
        tags.append(["payload", hashlib.sha256(body).hexdigest()])
    created_at = int(time.time())
    serialized = json.dumps([0, pubkey, created_at, 27235, tags, ""], separators=(",", ":"), ensure_ascii=False)
    event_id = hashlib.sha256(serialized.encode()).digest()
    event = {
        "id": event_id.hex(),
        "pubkey": pubkey,
        "created_at": created_at,
        "kind": 27235,
        "tags": tags,
        "content": "",
        "sig": PrivateKey(SECRET).sign_schnorr(event_id).hex(),
    }
    return "Nostr " + base64.b64encode(json.dumps(event).encode()).decode()

JavaScript

// npm install nostr-tools
import { createHash, randomBytes } from "node:crypto";
import { finalizeEvent } from "nostr-tools/pure";

const secret = Buffer.from(process.env.NOSTR_SECRET_HEX, "hex");

export function nostrAuth(method, url, body = "") {
  const tags = [["u", url], ["method", method], ["nonce", randomBytes(16).toString("hex")]];
  if (body) tags.push(["payload", createHash("sha256").update(body).digest("hex")]);
  const event = finalizeEvent(
    { kind: 27235, created_at: Math.floor(Date.now() / 1000), tags, content: "" },
    secret,
  );
  return "Nostr " + Buffer.from(JSON.stringify(event)).toString("base64");
}

Hesabın Sumqayıt

Applikanın API saytı üstündə nə göstərir: public keyiniz, hər iki balans, neçə-neçə anahtarlar aktifdir (təkrarlanmamış və ya expirated deyil) və Top-up sistemləri Qiymətlər və ya null Serverlər bunu etmir.

GET https://nymbot.ai/api/v1/account İhtiyaç a İstehsal prosesi.

Reaksiya

{
  "data": {
    "pubkey": "3bf0c63fcb93463407af97a5e5ee64fa883d107ef9e558472c4eb9aaaefa459d",
    "balances": {
      "standard": { "credits": 120.4, "sats": 1204 },
      "pro": { "credits": 408.33, "sats": 40833 }
    },
    "keys_active": 3,
    "nwc_auto_topup": {
      "connected": true, "threshold_sats": 5000, "topup_sats": 20000, "tier": "pro",
      "last_topup_at": null, "last_topup_sats": null, "last_error": null
    }
  }
}

cURL

URL=https://nymbot.ai/api/v1/account
curl "$URL" -H "Authorization: $(nostr_auth GET "$URL")"

Python

import requests

url = "https://nymbot.ai/api/v1/account"
print(requests.get(url, headers={"Authorization": nostr_auth("GET", url)}).json())

JavaScript

const url = "https://nymbot.ai/api/v1/account";
const res = await fetch(url, { headers: { "Authorization": nostrAuth("GET", url) } });
console.log(await res.json());

Anahtarların idarə edilməsi

“Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in” İstehsal prosesiHər anahtar bu formada qaytarılır, zamanlar ISO 8601 və sayı sats:

Key objekti

{
  "id": "4f0c9a1be27d3856",
  "name": "laptop scripts",
  "hint": "sk-nymbot-Qm7x…c2Lw",
  "limit_sats": 20000,
  "reset_period": "monthly",
  "reset_at": "2026-10-01T00:00:00Z",
  "expire_at": null,
  "period_used_sats": 3412,
  "total_used_sats": 18230,
  "created_at": "2026-08-14T09:21:07Z",
  "updated_at": "2026-09-02T17:40:55Z",
  "last_used_at": "2026-09-30T08:12:00Z",
  "revoked_at": null
}

hint Bir anahtarı tanımaq kifayətdir, lakin onu istifadə etməməkdir.

Listə anahtarı

GET https://nymbot.ai/api/v1/keys imzalanmışdır

FieldəTipiİhtiyaçAçıqlama
include_revokedTədbirlər (Qəbələ)YəqinƏsas səhifə Etiketlər: Default false.

Reaksiya

{ "data": [ { "id": "4f0c9a1be27d3856", "name": "laptop scripts", "hint": "sk-nymbot-Qm7x…c2Lw", "...": "..." } ] }

cURL

URL=https://nymbot.ai/api/v1/keys
curl "$URL" -H "Authorization: $(nostr_auth GET "$URL")"

Python

import requests

url = "https://nymbot.ai/api/v1/keys"
for key in requests.get(url, headers={"Authorization": nostr_auth("GET", url)}).json()["data"]:
    print(key["id"], key["name"], key["period_used_sats"], key["limit_sats"])

JavaScript

const url = "https://nymbot.ai/api/v1/keys";
const { data } = await (await fetch(url, { headers: { "Authorization": nostrAuth("GET", url) } })).json();
for (const key of data) console.log(key.id, key.name, key.period_used_sats, key.limit_sats);

Anahtarı yaratmaq

POST https://nymbot.ai/api/v1/keys İstirahət - qayıtma 201.

FieldəTipiİhtiyaçAçıqlama
nameStringlərBəli1 - 40 işarə, diğer aktiv anahtarlarınızdan fərqlidir (fəsad törətmək).
limit_satsİnterYəqinƏsas səhifə » Gündəm » Əsas səhifə » Əsas səhifə » Əsas səhifə » Gündəm
reset_periodStringlərYəqindaily, weekly və ya monthlyİstehsal limit_satsOnu heç vaxt geri qaytarmayan bir qapı üçün tərk edin.
expire_atString və IntegralYəqinISO 8601 vaxtı, ya da 1970-ci ildən bu yana millisekundlar.

Əməkdaşlıq (201)

{
  "data": {
    "id": "4f0c9a1be27d3856",
    "name": "laptop scripts",
    "hint": "sk-nymbot-Qm7x…c2Lw",
    "limit_sats": 20000,
    "reset_period": "monthly",
    "key": "sk-nymbot-Qm7x...c2Lw",
    "...": "the rest of the key object"
  }
}
StatistikaNə vaxt
400Əsas səhifə / Əsas səhifə / Əsas səhifə / Əsas səhifəduplicate_nameBir neçə ildir ki, bir neçə ildir ki, bir neçə ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir ki, bir ildir.unknown_parameterƏsas səhifə / 25 dəqiqə (too_many_keys).
429Bu barədə “Xəzər Lənkəran”a istinadən xəbər verir ki, bu barədə “Xəzər Lənkəran”ın “Xəzər Lənkəran”a istinadən məlumat yayıb.rate_limit_exceededilə Retry-After).

cURL

URL=https://nymbot.ai/api/v1/keys
BODY='{"name":"laptop scripts","limit_sats":20000,"reset_period":"monthly"}'
curl "$URL" \
  -H "Authorization: $(nostr_auth POST "$URL" "$BODY")" \
  -H "Content-Type: application/json" \
  -d "$BODY"

Python

import json
import requests

url = "https://nymbot.ai/api/v1/keys"
body = json.dumps({"name": "laptop scripts", "limit_sats": 20000, "reset_period": "monthly"}).encode()
res = requests.post(
    url,
    data=body,
    headers={"Authorization": nostr_auth("POST", url, body), "Content-Type": "application/json"},
)
print(res.json()["data"]["key"])

JavaScript

const url = "https://nymbot.ai/api/v1/keys";
const body = JSON.stringify({ name: "laptop scripts", limit_sats: 20000, reset_period: "monthly" });
const res = await fetch(url, {
  method: "POST",
  headers: { "Authorization": nostrAuth("POST", url, body), "Content-Type": "application/json" },
  body,
});
console.log((await res.json()).data.key);

Bir anahtarı oxumaq

GET https://nymbot.ai/api/v1/keys/{id} imzalanmışdır

Dönüşlər {"data": {…}} “Key objekti” və ya 404 key_not_found Əgər sizdə bu kodu yoxdursa.

cURL

URL=https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856
curl "$URL" -H "Authorization: $(nostr_auth GET "$URL")"

Python

import requests

url = "https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856"
print(requests.get(url, headers={"Authorization": nostr_auth("GET", url)}).json()["data"])

JavaScript

const url = "https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856";
console.log((await (await fetch(url, { headers: { "Authorization": nostrAuth("GET", url) } })).json()).data);

Anahtarı dəyişmək

PATCH https://nymbot.ai/api/v1/keys/{id} imzalanmışdır

Hər hansı bir name, limit_sats, reset_period və expire_atAnahtarı seçməkdə olduğu kimi. null Əsas səhifə » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm »400 key_revoked• Geri qayıtma {"data": {…}} Güncellenmiş objekti ilə.

cURL

URL=https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856
BODY='{"limit_sats":50000,"expire_at":null}'
curl -X PATCH "$URL" \
  -H "Authorization: $(nostr_auth PATCH "$URL" "$BODY")" \
  -H "Content-Type: application/json" \
  -d "$BODY"

Python

import json
import requests

url = "https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856"
body = json.dumps({"limit_sats": 50000, "expire_at": None}).encode()
res = requests.patch(
    url,
    data=body,
    headers={"Authorization": nostr_auth("PATCH", url, body), "Content-Type": "application/json"},
)
print(res.json()["data"])

JavaScript

const url = "https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856";
const body = JSON.stringify({ limit_sats: 50000, expire_at: null });
const res = await fetch(url, {
  method: "PATCH",
  headers: { "Authorization": nostrAuth("PATCH", url, body), "Content-Type": "application/json" },
  body,
});
console.log((await res.json()).data);

Anahtarı geri qaytarmaq

DELETE https://nymbot.ai/api/v1/keys/{id} imzalanmışdır

Bir neçə dəqiqə sonra, o, listə daxil olub. revoked_at Görünür ki, onunla birlikdə include_revoked=trueƏvvəlki məqaləİnteraktiv.az-a istinadən xəbər verir ki, bu barədə “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin” “Qəbələ”nin “Qəb

Reaksiya

{ "data": { "id": "4f0c9a1be27d3856", "revoked": true } }

cURL

URL=https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856
curl -X DELETE "$URL" -H "Authorization: $(nostr_auth DELETE "$URL")"

Python

import requests

url = "https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856"
print(requests.delete(url, headers={"Authorization": nostr_auth("DELETE", url)}).json())

JavaScript

const url = "https://nymbot.ai/api/v1/keys/4f0c9a1be27d3856";
const res = await fetch(url, { method: "DELETE", headers: { "Authorization": nostrAuth("DELETE", url) } });
console.log(await res.json());

NBC-nin avtobusu

VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. İstehsal prosesi.

Əsas səhifə » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Top-up statusu Bunu kredit edir.

Cüzdanı bağlamadan əvvəl

Nymbot onu şifrələndirir və yalnız öz top-up fakturalarını ödənmək üçün istifadə edir, lakin bu üçün bir əlaqə yaratın, cüzdanınızda bir xərclərin bütçəsi ilə, belə ki, heç vaxt ödənə biləcəyiniz ən çox sizə seçilmiş bir sayıdır. pay_invoice.

Cüzdan bağlama

POST https://nymbot.ai/api/v1/nwc-auto-topup/connect imzalanmışdır

FieldəTipiİhtiyaçAçıqlama
nwc_urlStringlərBəliQrupun başlanğıcı ilə bağlı nostr+walletconnect://Nymbot cüzdanı istəyir get_info Əvvəla, bu barədə məlumat yayıb.
threshold_satsİnterBəliBir neçə ildir ki, bu sərnişinlərin sayı 1000-dən çoxdur.
topup_satsİnterBəliHər dəfə 1000-dən 1000-ə qədər artmaq lazımdır.
tierStringlərYəqinpro (Müsəlmanlar və ya standardGözləmək və gözləmək lazımdır.

Reaksiya

{
  "data": {
    "connected": true,
    "threshold_sats": 5000,
    "topup_sats": 20000,
    "tier": "pro",
    "last_topup_at": null,
    "last_topup_sats": null,
    "last_error": null
  }
}
StatistikaNə vaxt
400Əsas səhifə (invalid_nwc_url“Qəbələ”nin “Qəbələ”nin “Qəbələ”ni qəbul etmədinwc_unreachableVVD - Hollandiyada futbolçu bu adla tanımır.nwc_rejectedƏsas səhifə (nwc_missing_permissionVə yaxud limitdən başqa bir şey.
501Avtomobillərin təchizatı aparılmır (nwc_unavailableBaşqa iki finalda da belədir.

cURL

URL=https://nymbot.ai/api/v1/nwc-auto-topup/connect
BODY='{"nwc_url":"nostr+walletconnect://...","threshold_sats":5000,"topup_sats":20000,"tier":"pro"}'
curl "$URL" \
  -H "Authorization: $(nostr_auth POST "$URL" "$BODY")" \
  -H "Content-Type: application/json" \
  -d "$BODY"

Python

import json, os
import requests

url = "https://nymbot.ai/api/v1/nwc-auto-topup/connect"
body = json.dumps({
    "nwc_url": os.environ["NWC_URL"],
    "threshold_sats": 5000,
    "topup_sats": 20000,
    "tier": "pro",
}).encode()
res = requests.post(
    url,
    data=body,
    headers={"Authorization": nostr_auth("POST", url, body), "Content-Type": "application/json"},
)
print(res.json())

JavaScript

const url = "https://nymbot.ai/api/v1/nwc-auto-topup/connect";
const body = JSON.stringify({
  nwc_url: process.env.NWC_URL,
  threshold_sats: 5000,
  topup_sats: 20000,
  tier: "pro",
});
const res = await fetch(url, {
  method: "POST",
  headers: { "Authorization": nostrAuth("POST", url, body), "Content-Type": "application/json" },
  body,
});
console.log(await res.json());

Setinqləri oxumaq

GET https://nymbot.ai/api/v1/nwc-auto-topup imzalanmışdır

İstehsalçılıqla bağlı problemlər də var. connected: false Başqa alanlar null Qazaxıstanın baş məşqçisiyindən biri isə “Qazaxıstan”ın baş məşqçisi olub.

cURL

URL=https://nymbot.ai/api/v1/nwc-auto-topup
curl "$URL" -H "Authorization: $(nostr_auth GET "$URL")"

Python

import requests

url = "https://nymbot.ai/api/v1/nwc-auto-topup"
print(requests.get(url, headers={"Authorization": nostr_auth("GET", url)}).json())

JavaScript

const url = "https://nymbot.ai/api/v1/nwc-auto-topup";
console.log(await (await fetch(url, { headers: { "Authorization": nostrAuth("GET", url) } })).json());

Bağlanmaq

DELETE https://nymbot.ai/api/v1/nwc-auto-topup/connection imzalanmışdır

Xatırladaq ki, bir neçə ildir ki, bir neçə ildir ki, bu problemlər həll olunmasa, bir neçə ildir ki, bu problemlər həll olunmur.

Reaksiya

{ "data": { "connected": false, "threshold_sats": null, "topup_sats": null, "tier": null, "last_topup_at": null, "last_topup_sats": null, "last_error": null } }

cURL

URL=https://nymbot.ai/api/v1/nwc-auto-topup/connection
curl -X DELETE "$URL" -H "Authorization: $(nostr_auth DELETE "$URL")"

Python

import requests

url = "https://nymbot.ai/api/v1/nwc-auto-topup/connection"
print(requests.delete(url, headers={"Authorization": nostr_auth("DELETE", url)}).json())

JavaScript

const url = "https://nymbot.ai/api/v1/nwc-auto-topup/connection";
const res = await fetch(url, { method: "DELETE", headers: { "Authorization": nostrAuth("DELETE", url) } });
console.log(await res.json());

Anahtarı olmadan xərcləmək

"Lightning" üçün bir dəfə bir prosedura görə, heç bir anahtar, hesabat və balansla ödənilə bilər: POST /images/generations, POST /images/edits, POST /videos, POST /audio/speech, POST /audio/transcriptions, POST /audio/translations və POST /embeddingsXat, Yanıt və Mesajlar hər zaman bir anahtar lazımdır.Anahtarı gətirən bir istefa normal olaraq hesablanır; ödəniş aksiyası yalnız anahtar göndərilmədikdə başlayır.

Nymbot iki versiyadan danışır: “Lightning Labs” 402 dəfə baxılıb Əvvəla adı ilə qəbul edilmişdir. LSATIFA-nın proqnozları Paytaxt HTTP autentifikasiya sistemi lightning metod və charge Müştərilərinizin bildiyinə görə istifadə edin.

Kendi serverinizlə işləmək

Anahtar olmadan ödənmək yalnız API_L402_SECRET Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə openssl rand -hex 32Bir neçə ildir ki, bir neçə ildir ki, bu problemlər həll olunacaq, bir neçə ildir ki, bu problemlər həll olunacaq. API_L402_SECRET_PREVIOUS Bir gün üçün: Credentials, status URL-lər və onun altında etdiyiniz meydanlar sonlanana qədər işləyir.

meydan

İstehsal etmək üçün “no” Authorization Əgər bir şey baş verirsə, heç bir şey baş vermir. 402 Payment Required Hesabatla tamamilə nə istədiyinə görə qiymətlər: anahtarın ödənəcəyi qiymət, standart kreditə 10 sats və ya Pro kreditə 100 sats və bütün sat (ən azı 1 sat və ən azı 0.05 kredit minimumuna) çevrilir. WWW-Authenticate Təsadüfi problemlər var:

HTTP/1.1 402 Payment Required
Content-Type: application/problem+json; charset=utf-8
Cache-Control: no-store
WWW-Authenticate: L402 macaroon="AgJC...", invoice="lnbc2370n1..."
WWW-Authenticate: LSAT macaroon="AgJC...", invoice="lnbc2370n1..."
WWW-Authenticate: Payment id="kM9x...", realm="nymbot", method="lightning", intent="charge",
    request="eyJhbW91bnQiOiIyMzciLC...", description="Nymbot API POST /images/generations (237 sats)",
    digest="sha-256=:X48E9qOokqqrvdts8nOJRJN3OWDUoyWxBf7kbu9DBPE=:", expires="2026-09-30T12:15:00.000Z",
    opaque="eyJlbmRwb2ludCI6IlBPU1QgL2ltYWdlcy9nZW5lcmF0aW9ucyJ9"

{
  "type": "https://paymentauth.org/problems/payment-required",
  "title": "Payment Required",
  "status": 402,
  "detail": "This request costs 237 sats. Pay the Lightning invoice, then send the identical request again ...",
  "challengeId": "kM9x...",
  "amount_sats": 237,
  "invoice": "lnbc2370n1...",
  "payment_hash": "9db1370f...",
  "expires_at": "2026-09-30T12:15:00.000Z",
  "error": { "message": "This request costs 237 sats. ...", "type": "payment_required", "code": "payment_required", "param": null }
}

Paytaxtı request Dərslər base64url JSON: {"amount":"237","currency":"sat","methodDetails":{"invoice":"lnbc...","network":"mainnet","paymentHash":"..."}}.

Bu problemin sonuncu səbəbi, sonuncu səbəbi Content-Type Əsas səhifə » Xəbərlər » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə identitə Bir daha soruşdum: Aynı Content-Type Əsas səhifə / Xəbərlər / Dərslər / Dərslər / Dərslər (/images/edits, /audio/transcriptions, /audio/translationsBir çox HTTP kütləvi, bir formunu kodladıqda hər dəfə yeni bir limit seçir, bu yüzden onu bir dəfə kodlayın və bu baytları iki dəfə göndərin.

Bir IPv6 adresi bütün /64-i hesab edir.İstər adresi bilmədiyi istəklər dəqiqə 10-ə bölünür və bütün adreslərdə Nymbot problemləri ilə bağlı bir ümumi limit vardır; bir istintaq meydan vermədən öncə reddən (təkcə, JSON-ə uyğun olmayan bir vücudla) buna görə hesabat verməz. 429 ilə Retry-AfterVVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. Content-Type Əksinə application/json və ya multipart/form-data Əsas səhifə / Əsas səhifə 415 “Həqiqətən, heç vaxt bir faktura vermirəm.

VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. TOKEN qaytarılması.

Ödənişini göndərmək

Xatırladaq ki, hər hansı bir “Lightning” cüzdanı ilə fatura ödəmək olar.

PlanlaşdırmaHeç bir
402 dəfə baxılıbAuthorization: L402 <macaroon>:<preimage> (LSAT O da işləyir)
PaytaxtAuthorization: Payment <base64url JSON>Nəhayət, JSON {"challenge": {every parameter of the challenge, as sent}, "payload": {"preimage": "<hex>"}}

Paylaşmış bir istefa tamamilə anahtarla hazırlanan bir istefa kimi cavab verir, ancaq nymbot Objektin balans alanı yoxdur: {"payment": "l402", "tier": "pro", "paid_sats": 237, "charged_sats": 237}“Həqiqətən də, yoxdur X-Nymbot-Balance-Sats “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”nin “Qəbələ”in “Qəbələ”nin “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in “Qəbələ”in”in “Qəbələ Payment-Receipt Əsas səhifə » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm » Gündəm reference, status və timestampPaylaşmış istehlaklar heç bir nym ilə bağlanmır, bu nedenle sorğu tarixində görünməzlər.

StatistikaNə vaxt
402 payment_already_usedHər bir paytaxt üçün bir proseduru ödəmək lazımdır.Bu prosedür üçün yeni bir problemdir, bu səbəbdən bir müştərinin son proseduru ( lnget O, təkcə yenə dünyaya gəlmişdi.
402 payment_mismatchBaşqa bir layihəyə dəvət olunmuşdur. Content-Type VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu. TOKEN qaytarılması (refund_token və refund_sats Vücudun içində
402 payment_expired15 dəqiqədən çox vaxt keçib, yeni bir meydan gətirilir.Əgər ön görüntü sizə ödəndiyinizi göstərirsə, ödəndiyin şey bir meydan olaraq qaytarılır. TOKEN qaytarılması (refund_token və refund_sats Bir neçə ildir ki, o, bu prosesdə iştirak etmişdir.
401 invalid_preimageƏvvəlki məqaləPublika.az-a istinadən xəbər verir ki, bu barədə məlumat verilməyib.
401 invalid_payment_credentialVVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı olmayan ulduzdu.
429 rate_limit_exceededBir dəqiqədə bu adresdən gəlməmiş 30-dan çox kredit və ya anahtar göndərildi və ya bir dəqiqədə 60-dan çox dəfə bir qaytarma token göndərildi. Retry-After.

cURL

BODY='{"model":"nano-banana","prompt":"a lighthouse at dusk","response_format":"b64_json"}'
URL=https://nymbot.ai/api/v1/images/generations

# 1. Get the challenge
CH=$(curl -s -D - -o /dev/null "$URL" -H "Content-Type: application/json" -d "$BODY" | grep -i '^www-authenticate: L402')
MAC=$(echo "$CH" | sed -E 's/.*macaroon="([^"]+)".*/\1/')
INVOICE=$(echo "$CH" | sed -E 's/.*invoice="([^"]+)".*/\1/')

# 2. Pay $INVOICE with your wallet and copy the preimage
PREIMAGE=...

# 3. Send the identical request with the credential
curl "$URL" -H "Content-Type: application/json" -H "Authorization: L402 $MAC:$PREIMAGE" -d "$BODY"

lnget

# lnget (Lightning Labs) pays L402 challenges from your own lnd node and retries for you
lnget -X POST -H "Content-Type: application/json" \
  -d '{"model":"nano-banana","prompt":"a lighthouse at dusk","response_format":"b64_json"}' \
  https://nymbot.ai/api/v1/images/generations

Python

import base64, json, re
import requests

url = "https://nymbot.ai/api/v1/images/generations"
body = json.dumps({"model": "nano-banana", "prompt": "a lighthouse at dusk", "response_format": "b64_json"}).encode()
headers = {"Content-Type": "application/json"}

challenge = requests.post(url, data=body, headers=headers)
assert challenge.status_code == 402
info = challenge.json()
print("Pay", info["amount_sats"], "sats:", info["invoice"])

preimage = pay_with_your_wallet(info["invoice"])  # 64 hex characters

# L402
mac = re.search(r'L402 macaroon="([^"]+)"', challenge.headers["WWW-Authenticate"]).group(1)
res = requests.post(url, data=body, headers={**headers, "Authorization": f"L402 {mac}:{preimage}"})
print(res.json()["nymbot"])

JavaScript

const url = "https://nymbot.ai/api/v1/images/generations";
const body = JSON.stringify({ model: "nano-banana", prompt: "a lighthouse at dusk", response_format: "b64_json" });
const headers = { "Content-Type": "application/json" };

const challenge = await fetch(url, { method: "POST", headers, body });
const www = challenge.headers.get("www-authenticate");

// The Payment scheme: echo every challenge parameter back with the preimage
const start = www.indexOf("Payment ");
const params = Object.fromEntries([...www.slice(start + 8).matchAll(/(\w+)="((?:[^"\\]|\\.)*)"/g)].map((m) => [m[1], m[2]]));
const { invoice } = JSON.parse(Buffer.from(params.request, "base64url").toString()).methodDetails;
const preimage = await payWithYourWallet(invoice);

const credential = Buffer.from(JSON.stringify({ challenge: params, payload: { preimage } })).toString("base64url");
const res = await fetch(url, { method: "POST", headers: { ...headers, Authorization: `Payment ${credential}` }, body });
console.log((await res.json()).nymbot, res.headers.get("payment-receipt"));

Müştərilər yaradılıb mppx Bir neçə ildir ki, bu problemlər həll olunacaq, bu problemlər həll olunacaq, bu problemlər həll olunacaq.

Videoşəkillər

Paytaxt POST /videos Cəmiyyət 202 Birincisi, daha çox a status_url: GET O, 24 saat işləyir və işləyə biləcək qədər işləyir.

{
  "id": "vid_...",
  "status": "in_progress",
  "status_url": "https://nymbot.ai/api/v1/videos/vid_...?exp=1790000000&sig=...",
  "nymbot": {
    "payment": "l402", "tier": "pro", "paid_sats": 4800, "charged_sats": 4800,
    "refund_token": "REFUND-5E0B..."
  }
}

Təbii ki, refund_token Bu videoya baxmayaraq, bu videoya baxmaq mümkün deyil. (GET /api/v1/l402/refunds Cəmiyyət "status": "pending"“Bakı”da “Qazaxıstanda” qələbə qazanıb refund_sats Bir iş üçün qaytarılmış iş, lakin heç vaxt token, bu yüzden status URL-ni paylaşmaq qaytarma payı paylaşmaz.

qaytarılmaq

Əgər borclu bir istintaq başarısız olursa və provider Nymbot-u istintaq üçün cəzalandırırsa, ödəniş tutulur və hata belə deyər. charged_satsBir neçə ildir ki, bu problemlər həll olunmayıb, bir neçə ildir ki, bu problemlər həll olunacaq. TOKEN qaytarılması Paylaşdığınız qiymətlər:

{
  "error": {
    "message": "The image generator failed. Nothing was charged. Please try again. The 237 sats you paid are on refund token REFUND-...",
    "type": "api_error",
    "code": "upstream_error",
    "refund_token": "REFUND-0C15DBED145D59131BA70298A413ADEB3D9B9AB082C476EA70A5BD38FCA5DE6D",
    "refund_sats": 237,
    "refund_expires_at": "2026-10-30T12:00:00.000Z"
  }
}

İstehsal etmədiyiniz iki fotoşəkil üçün soruşduğunuzda və birinin hesablanmadığını soruşduğunuzda, uğurlu cavab nymbot Objektin ekspertizası üçün bir qaytarma token daşıyır; uzunluğu oxunmaq mümkün olmayan bir transkripsiya filmin mümkün olduğu qədər uzun olduğu üçün qiymətləndirilir (heç vaxt 30 dəqiqədən çox olmamalıdır) və real uzunluğa olan fərq bir qaytarma token kimi qaytarılır; 30 dəqiqədən çox olduğu ortaya çıxdığında, o, geri qaytarılır. 413 Belə ki, bir neçə ildir ki, bir neçə ildir ki, bu problemlər həll olunacaq, bir ildir ki, bu problemlər həll olunacaq.

VVD - Hollandiyada futbolçu bu adla tanımır, orada VVD daha çox mərkəz-sağı təmsilən edən siyasi partiyanın adının qısaltması kimi bilinir - artıq sorğu-suala ehtiyacı var.

  • Ona görə də ödənin. Göndər Authorization: Bearer REFUND-… Əsas səhifə » Xəbərlər » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifə » Əsas səhifərefund_token_sats Şirkətdə nymbot Əsas səhifə / Xəbərlər / Cəmi bir ildir ki, Cəmi bir ildir 402 refund_insufficientBir neçə ildir ki, bu problemlər yenə də başa çatıb.
  • Bunu kontrol edin. GET /api/v1/l402/refunds Aynı header ilə qayıdır {"sats": 237, "status": "open", "expires_at": "..."}.
  • Bir dəqiqədə maksimum 60 dəfə istifadə edilə bilər.
  • Ona görə də NM-ə getmək lazımdır. Bunu içərisində Bir cərimə verin Nymbot app və ya telefon POST /api/v1/l402/refunds/redeem A ilə İstehsal prosesi və {"refund_token": "REFUND-...", "balance": "standard"} və ya "pro"Bütün kreditlər balansına gedir (10 sats hər biri standartda, 100 on Pro); API istəklər üçün tokendə bütün kredit qalmayan satslar.

cURL

URL=https://nymbot.ai/api/v1/l402/refunds/redeem
BODY='{"refund_token":"REFUND-...","balance":"standard"}'
curl "$URL" \
  -H "Authorization: $(nostr_auth POST "$URL" "$BODY")" \
  -H "Content-Type: application/json" \
  -d "$BODY"

Reaksiya

{ "data": { "credited": 23, "tier": "standard", "balance_credits": 123, "remaining_sats": 7 } }