Агуулга руу алгасах
Nymbot руу дарна уу

Мэдлэгийн бааз Үйлдвэрлэгчид

Баланс, top-ups болон ключ

Татай морилно уу, Lightning дээр дарна уу, автоматаар өөрийн хуванцар дээр дарна уу, бүр хүсэл зардал үзнэ үү, код-аас ширээг удирдах.

Баланс шалгаж

Таны баланс, энэ ключ нь хавтгай ашиглаж байна.

GET https://nymbot.ai/api/v1/credits/balance — API ключ хэрэгтэй. POST Энэ нь үйлчлүүлэгчдэд хэрэглэж байна.

balance Bitcoin-ийн одоогийн үнэ дээр доллар дахь хоёр салбарт нэгтгэсэн байна, нэг тоо хүсэж байгаа хэрэгсэл нь (null үнэ уншсангүй бол). Өнгөрсөн зүйл нь кредит болон sats юм, энэ нь бодисоо нь бодисоор хадгалж байна. 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);

Үнэлгээний арга

Хэрэв та татаж авах боломжтой вэ, болон хязгаарлалт. Lightning нэг арга юм.

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, 1000, 5000 sats-аас стандарт top-ups дээр 10%, 15% эсвэл 20% илүү, 5000, 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

Lightning фактурын үүсгэх нь ключтай нь кредит нэмнэ. Ямар ч Lightning гарын үсэгээс төлбөр, дараа нь Сэтгэгдэл кредит нэмнэ үү.

POST https://nymbot.ai/api/v1/topup/create/btc-lightning — API ключ хэрэгтэй.

БайгалийнБүтээгдэхүүнҮйлчилгээнийҮзүүлэлт
amountНийтТиймээӨнгөрсөн цаг, in currency. sats нь бүрэн тоо.
currencyТүлхүүрҮнэгүйSATS (Хуувцаслалт нь) USD эсвэл BTCДоллар нь одоогийн Bitcoin үнэ дээр конвертируулдаг.
tierТүлхүүрҮнэгүй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 гаруй sats (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} — тавтай морилно уу, тавтай морилно уу. — needs a key from the nym that made the invoice.

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
}
ҮйлчилгээҮнэндээ
400ID нь үүсгэсэн дуудлагатай 64-ийн ID биш юм.
404Ямар ч энэ ID нь таны нэмж (invoice_not_found).

cURL

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

Python

import os, time
import requests

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

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

JavaScript

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

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

Хэрэглээний түүх

Захиалга бүр нэг жагсаалт: энэ нь юу байсан, ямар загвар, хэд хэдэн токен, ямар ч үнэтэй юм. Захиалга, хариу ямар ч хадгалж байна, учир нь ямар ч орд байна. Захиалга нь 90 хоногийн хугацаанд хадгалж байна, хамгийн сүүлийн үеийн эхлээд. Хамгийн сүүлийн үеийн ключ нь түүний түүхээ унших болно.

GET https://nymbot.ai/api/v1/queries/history — API ключ хэрэгтэй, энэ нь өөрийн хүсэлтийг үздэг, эсвэл Сэтгэгдэл үлдээх Таны нэмм, бүх ключ нь харах болно.

БайгалийнБүтээгдэхүүнҮйлчилгээнийҮзүүлэлт
pageБүтээгдэхүүний талаархи мэдээлэлҮнэгүйХадгаламжийн 1, хамгийн их 1000; өндөр хуудас 400 invalid_value.
page_countБүтээгдэхүүний талаархи мэдээлэлҮнэгүйХувцаслалт хуудсууд. Хэвийн 20, хамгийн их 100.
start_date
end_date
ҮйлчлүүлэгчидҮнэгүйISO 8601 огноо, цаг.
modelҮйлчлүүлэгчидҮнэгүйЗөвхөн энэ загвар
typeҮйлчлүүлэгчидҮнэгүйchat, responses, messages, image, video, speech, transcription эсвэл embedding.
all_keysБоолийн (Query)Үнэгүйнэг ключ нь: true нэг нь нэг нь бүх ключ агуулдаг. Үнэлгээ false.
key_idҮйлчлүүлэгчидҮнэгүйНийтлэгдсэн хүсэлттэй, эсвэл all_keys=true: зөвхөн энэ ключ.

Сэтгэгдэл

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

cURL

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

Python

import os
import requests

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

JavaScript

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

Сэтгэгдэл үлдээх

Бүртгүүлэх, өөрчлөх, хуваалцлага, акаунт хуваалцлага, автомат шилжүүлэлт нь API-ийн шилжүүлэлт байхгүй. Тэд таны шилжүүлэлтээс сигналыг олж авахын тулд шилжүүлэлттэй шилжүүлэлт нь өөрийн шилжүүлэлттэй хүртэл ашиглаж болно боловч өөр нэг шилжүүлэлт хийх эсвэл өөрийн шилжүүлэлттэй авч чадахгүй.

Апп нь танд энэ хийж байна: өөрийн бүх зүйл Өргөтгөл Та энэ хэсэг нь зөвхөн таны өөрийн код нь тавтай морилно уу.

Нийлүүлэг нь 27235 (NIP-98) төрлийн Nostr үйл явдал юм. Authorization Header нь үг 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 нь хэт ягаан тусламжийн биеийн, hex. Энэ нь 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.

Браузерүүд нь Nymbot-ийн өөрийн сайтуудээс зөвхөн энэ эцсийн тоноглогдсон болно (https://nymbot.ai, https://nymchat.app бусад вэбсайтын хуудсууд нь ямар ч CORS хавхлагатай байх болно, тиймээс энэ нь тэднийг уншихгүй болно. Скрипт болон нарийн апп, ямар ч OriginЭнэ нь нөлөөгүй байна.

Таны тайван ключ

Идэвхжүүлэх нь таны нэмгийн тайны ключ хэрэгтэй (The nsec), энэ нь бүх зүйлийг хянах болно: таны мэдлэг, таны түүх, таны баланс. Зөвхөн танд итгэж байгаа машин дээр скрипт дээр байршуулаад, файлуудыг бүртгүүлэхийн тулд байнга байнга байнга байнга байнга байлгах, та хүсч байгаа бол апп-ийг сонгоно.

Эдгээр тусламжчид хавхлага үүсгэдэг. Энэ хуудсанд дараагийн жишээ нь тэднийг ашигладаг. Тэд нь хексик хэлбэрээр хавхлага унших NOSTR_SECRET_HEX; cURL нэг нь ашигладаг Үнэгүй command-line хэрэгсэл, нь nsec эсвэл hex түлхүүр ашигладаг, болон 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 А Сэтгэгдэл үлдээх.

Сэтгэгдэл

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

cURL

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

Python

import requests

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

JavaScript

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

Тавтай морилно уу

Аппын ключ жагсаалттай эцэст нь. Тэдний бүх нь Сэтгэгдэл үлдээхБүх ключ нь энэ хэлбэрээр, ISO 8601 үед цаг, sats-д хэмжээтэй байна:

Хамгийн чухал зүйл

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

hint Энэ нь тавтай морилно уу, энэ нь тавтай морилно уу. Тавтай морилно уу, энэ нь тавтай морилно уу.

Үйлчилгээний ключ

GET https://nymbot.ai/api/v1/keys Сэтгэгдэл

БайгалийнБүтээгдэхүүнҮйлчилгээнийҮзүүлэлт
include_revokedБоолийн (Query)ҮнэгүйХамгийн сүүлийн үеийн мэдээ false.

Сэтгэгдэл

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

cURL

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

Python

import requests

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

JavaScript

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

Тавтай морилно

POST https://nymbot.ai/api/v1/keys Сэтгэгдэл үлдээх 201.

БайгалийнБүтээгдэхүүнҮйлчилгээнийҮзүүлэлт
nameТүлхүүрТиймээ1 нь 40 хэлбэр, таны бусад идэвхтэй түлхүүрүүдээс янз бүрийн (хэвчлэлийг мэдэрч байгаа).
limit_satsӨнгөрсөнҮнэгүйҮнэгүй зардал хавтгай, найдвартай 1. Үнэгүй зардал хавтгай.
reset_periodТүлхүүрҮнэгүйdaily, weekly эсвэл monthlyҮйлчилгээ limit_sats. Энэ нь хэзээ ч шинэчлэгддэг хавхлагатай.
expire_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); тавтай морилно уу, хамгийн бага нь 1 нь бүрэн тоо биш юм; тавтай морилно уу ямар ч хугацааны хугацаа; урт хугацааны хугацааны хугацаа; мэдэгддэг газар (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);

Эдүүлбэр » One 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": {…}} шинэчлэгдсэн ключ объект нь.

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 автомашины тоног төхөөрөмж

Nostr Wallet Connect болон Nymbot нь Lightning Wallet-ийг холбох, API-ийн зардал бага байх үед энэ нь зүгээр л тэнцвэртэй байх болно. Апп-ийн API хуудас нь нэг тохиргооны байдаг; Эдгээр нь эндэйн томоохон юм. Тэдний бүх нь Сэтгэгдэл үлдээх.

Энэ нь хэрхэн ажилладаг: API-ийн асуултанд татаж авахын тулд сонгосон салбарт ачаалалтай дараа, энэ салбарт таны хязгаарлагдмал доор буцаж байгаа бол Nymbot-ийн тавтай морилно уу, тавтай морилно уу, кредит нэмнэ. Энэ нь 5 минутын бүр нэг удаа татаж авахын тулд тавтай морилно уу. Тавтай морилно уу. Аппп-д зарцуулах нь энэ нь идэвхжүүлэхгүй. Хамгийн сүүлийн үеийн тавтай морилно уу, хамгийн сүүлийн үеийн алдаа нь тохиргоог дээр байдаг; Тавтай морилно уу, тавтай морилно уу. Top-Up статус Үйлчилгээ үү.

Портфель холбох өмнө

Nymbot нь шифрлэгдсэн хадгалж, зүгээр л өөрсдийн шифрлэгдсэн фактуудыг хуваалцахын тулд ашигладаг боловч энэ нь зүгээр л нэг холболт хийх, тавцан дээр зар сурталчилгааны урамшуулалтай, Тиймээс энэ нь ямар ч хэзээ ч төлбөр авах боломжтой хамгийн их нь та сонгосон тоо юм. pay_invoice.

Гар утас холбох

POST https://nymbot.ai/api/v1/nwc-auto-topup/connect Сэтгэгдэл

БайгалийнБүтээгдэхүүнҮйлчилгээнийҮзүүлэлт
nwc_urlТүлхүүрТиймээХолбоо барих string, эхлэх nostr+walletconnect://. Nymbot тавтай морилно уу get_info өмнө нь хадгалах, шифрлэгдсэн хадгалах.
threshold_satsӨнгөрсөнТиймээТавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу!
topup_satsӨнгөрсөнТиймээБүх удаа нэмнэ үү. 1000 нь 1,000,000 sats.
tierТүлхүүрҮнэгүйpro (Барилга) эсвэл standard: Баланс үзэх, дээд хүртэл.

Сэтгэгдэл

{
  "data": {
    "connected": true,
    "threshold_sats": 5000,
    "topup_sats": 20000,
    "tier": "pro",
    "last_topup_at": null,
    "last_topup_sats": null,
    "last_error": null
  }
}
ҮйлчилгээҮнэндээ
400Холбоо барих (invalid_nwc_url); портфель өөрийн релейг хариугүй (nwc_unreachable) эсвэл хяналтыг хүлээн зөвшөөрсөн (nwc_rejected); холбооны төлбөрийн төлбөргүй (nwc_missing_permission); эсвэл хязгаарлагдмал тоо.
501Энэ сервер дээр автоматаар шилжүүлэх биш юм (nwc_unavailable) Үүнээс гадна бусад хоёр эцэст.

cURL

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

Python

import json, os
import requests

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

JavaScript

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

Сэтгэгдэл үлдээх

GET https://nymbot.ai/api/v1/nwc-auto-topup Сэтгэгдэл

Энэ нь холбогдсон зүйлс нь, connected: false болон бусад газар null Тавтай морилно уу, ямар ч утас холбогдсон бол. Тавтай морилно уу.

cURL

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

Python

import requests

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

JavaScript

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

Холбоо барих

DELETE https://nymbot.ai/api/v1/nwc-auto-topup/connection Сэтгэгдэл

Хадгасан холболтын цуврал илрүүлэх. Дараа нь тавтай морилно уу, та нар ч бас тавтай морилно уу.

Сэтгэгдэл

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

cURL

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

Python

import requests

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

JavaScript

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

Үнэгүй төлбөр, ключгүй

Хязгаарлагдмал үнэтэй эцсийн тооны нь Lightning-д нэг удаа нэг хүсэлтийг төлбөргүй, ямар ч ключ, ямар ч данс, ямар ч салбарт төлбөргүй болно: POST /images/generations, POST /images/edits, POST /videos, POST /audio/speech, POST /audio/transcriptions, POST /audio/translations болон POST /embeddingsЧат, Reply, Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу!

Nymbot нэг backend нь нэг санаа нь хоёр хувилбар хэлдэг: Lightning Labs' Ажлын 402 (Өнгөрсөн нэрээр хүлээн зөвшөөрсөн, LSAT) болон IETF төсөл Үнэгүй HTTP автентичлалын систем нь lightning Метод болон charge Үйлчлүүлэгч таны хэрэглэгчдэд мэдэж байгаа зүйлийг ашиглах.

Таны өөрийн серверг ажиллуулах

Үйлчлэх ямар ч ключ нь зөвхөн API_L402_SECRET хязгаарлагдмал 32 байт, хязгаарлагдмал (64 символ) эсвэл base64 (44) зэрэг агуулдаг. openssl rand -hex 32. Хамгийн сүүлийн үеийн үнэ цэнэтэй үнэ цэнэтэй үнэ цэнэтэй үнэ цэнэтэй үнэ цэнэтэй үнэ цэнэтэй байдаг. API_L402_SECRET_PREVIOUS Өдөрт: итгэмжлэгдсэн, статусын URL-ийг, энэ дагуу хийсэн асуултууд нь ихэвчлэн дууссан хүртэл ажилладаг.

Ажлын

Тавтай морилно уу No Authorization header. Хэрэв энэ нь тохиромжтой бол ямар ч ажиллуулах, та 402 Payment Required тавтай морилно уу, тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу WWW-Authenticate Эдүүлбэр / Эдүүлбэр / Эдүүлбэр / Эдүүлбэр

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

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

Бүртгүүлэх request параметр нь base64url JSON юм: {"amount":"237","currency":"sat","methodDetails":{"invoice":"lnbc...","network":"mainnet","paymentHash":"..."}}.

ЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэр Content-Type (ийн медиа төрөл, олон хэсэг нь, түүний хязгаар) болон SHA-256 нь зөв биеийн байт та илгээсэн бөгөөд 15 минут байх болно. Үнэгүй төлбөрийн дараа, илгээх Бүртгүүлэх Сэтгэгдэл үлдээх: Үүнтэй Content-Type нэг JSON байт, эсвэл олон хэсэг эртний тоног төхөөрөмж (/images/edits, /audio/transcriptions, /audio/translationsХамгийн их HTTP библиотек нь хэлбэрээр шифрлэдэг бүх удаа шинэ шифрлэдэг бөгөөд энэ нь нэг удаа шифрлэдэг бөгөөд эдгээр байтын хоёр удаа илгээнэ үү.

Бүх хаяг нь минутын 30 туршид хүсэж болно (IPv6 хаяг нь түүний бүрэн /64 гэж тооцож байна). Хаяг нь мэдэгдэж байгаагүй бол 10 минутын хувьд илүү нарийвчлалтай хуваалцах, бүх хаяг дээр Nymbot-ийн туршид асуудал дээр ихээхэн хүрээтэй байдаг; туршид хийх өмнө хязгаарлагдмал хүсэл (жишээ нь JSON-ийн тохиромжтой бус биеийн хувьд) үүнийг харьцуулах биш юм. 429 Нөхцөл Retry-AfterҮйлчлүүлэгчид тавтай морилно уу. Үйлчлүүлэгчид тавтай морилно уу. Үйлчлүүлэгчид тавтай морилно уу. Content-Type Үгүй application/json эсвэл multipart/form-data Татаж авахыг хүсч байгаа бол 415 Өнгөрсөн үнэ төлбөргүй.

Тавтай морилноор ашиглаж байгаа токенов нь үнэ цэнэтэй байдаг, 1.5× маржинтай, бодит тоо нь дараа нь зөвхөн мэдэгдэж байна. Та ашиглаж байгаа токенов нь үнэ цэнэтэй бөгөөд төлбөр нь ашиглажгүй хэсэг нь үнэ цэнэтэй байна Бүртгүүлэх Token.

Үнэгүй Payment

Бичлэгийг ямар ч Lightning гарын үсэгээр төлбөр. Гарын үсэг нь 64 хавтгай дөрвөлжин хэлбэртэй урьдчилан зургийг танд санал болгож байна. Дараа нь дараа нь энэ нэг нь тусламж илгээх:

СүлжээнийЭдүүлбэр
Ажлын 402Authorization: L402 <macaroon>:<preimage> (LSAT Үүнээс гадна)
ҮнэгүйAuthorization: Payment <base64url JSON>, JSON нь {"challenge": {every parameter of the challenge, as sent}, "payload": {"preimage": "<hex>"}}

Үнэгүй асуултууд тавтай морилно уу, харин тавтай морилно уу nymbot Object нь байнгын газар биш юм: {"payment": "l402", "tier": "pro", "paid_sats": 237, "charged_sats": 237}, , ямар ч X-Nymbot-Balance-Sats header. Payment scheme-тэй төлбөр авсан асуултууд нь Payment-Receipt header (base64url JSON нь туршилтын ID, төлбөрийн хашиг reference, status болон timestamp). Үнэгүй хүсэлт нь ямар ч нэмжтэй холбогдсон биш бөгөөд тэд хүсэлтийн түүхд харуулсан биш юм.

ҮйлчилгээҮнэндээ
402 payment_already_usedТавтай морилно уу! Тавтай морилно уу! Тавтай морилно уу! lnget Энэ нь зүгээр л шинэчлэгдсэн байна.
402 payment_mismatchЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэрЭдүүлбэр Content-Type эсвэл бие, эсвэл энэ хүсэл нь одоо төлбөр илүү бага байна. Энэ хүсэл нь шинэ асуултууд нь энэ нь туслах болно; төлбөр маш бага байсан бол, та үүнийг төлбөр авсан зүйл нь үнэ цэнэтэй юм. Бүртгүүлэх Token (refund_token болон refund_sats Энэ нь биеийн).
402 payment_expiredЗахидал хойш 15 минутын дээш өнгөрсөн. Шинэ асуултууд нь туслах болно. Хэрэв урьдчилан зураг та зарласан гэж үзэж байгаа бол, та зарласан зүйл нь ачаалал болгон авчирдаг Бүртгүүлэх Token (refund_token болон refund_sats биед), нэг удаа; credential дараа нь ашиглаж байна.
401 invalid_preimagePreimage нь фактурын төлбөр хашааг хашааг хашааг хуваалцахгүй.
401 invalid_payment_credentialNymbot-ийн төлбөрийн хашаа Nymbot-ийн төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй төлбөргүй.
429 rate_limit_exceeded30 гаруй баталгаажуулалт эсвэл ключ, тавтай морилно уу, энэ хаяг нь минутын дотор орно, эсвэл нэг тавтай морилно уу тавтай морилно уу 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-ийн арга хэрэгсэл нь Payment Challenge-ийг өөрсдийн ажиллуулах; тэднийг эцсийн тоноглогдсон, тэднийг төлөхыг хүсч байна.

Видео

Үнэгүй 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"); Үнэлгээ аваагүй байгаа бол, төлбөр энэ дээр оршдог. Статуйн URL refund_sats Үйлчлүүлэгчид тавтай морилно уу, тавтай морилно уу!

Үйлчилгээ

Тавтай морилно уу, тавтай морилно уу, тавтай морилно уу. charged_sats, тавтай морилно уу, тавтай морилно уу. Тавтай морилно уу, тавтай морилно уу. Бүртгүүлэх Token Та худалдан авах үнэтэй:

{
  "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 Object нь хязгаарлагдмал нэг нь тавтай морилно ууны токен агуулдаг; ямар ч урт нь уншиж чадахгүй байна өмнө нь файлын хамгийн урт нь үнэтэй байна (ямар ч 30 минутын илүү), болон бодит урт нь янз бүрийн тавтай морилно ууны токен болгон байна; Хэрэв энэ нь 30 минутын илүү урт байсан бол, энэ нь тавтай морилно уу 413 Татаж авахын тулд татаж авахыг хүсч байна. Татаж авахыг хүсч байна. Татаж авахыг хүсч байна. Татаж авахыг хүсч байна. Татаж авахыг хүсч байна.

Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу, Тавтай морилно уу!

  • Энэ нь төлбөр. Сэтгэгдэл Authorization: Bearer REFUND-… Хамгийн сүүлийн үеийн дэлгэрэнгүй дэлгэрэнгүй дэлгэрэнгүй дэлгэрэнгүй дэлгэрэнгүй дэлгэрэнгүй дэлгэрэнгүй дэлгэрэнгүй дэлгэрэнгүй дэлгэцrefund_token_sats Энэ нь nymbot Object). Токен нь асуултуудын хариу нь бага байна 402 refund_insufficient; Үнэлгээгүй ач холбогдолтой ач холбогдолтой ач холбогдолтой ач холбогдолтой ач холбогдолтой ач холбогдолтой.
  • Тоглоомын GET /api/v1/l402/refunds Эдүүлбэр / Header Returns {"sats": 237, "status": "open", "expires_at": "..."}.
  • Нэг token нь минутын 60 удаа ашиглаж болно.
  • Энэ нь NIM-д дамжуулах болно. Татаж авах Өнгөрсөн мэдээ Nymbot-ийн програм хангамж дээр, эсвэл POST /api/v1/l402/refunds/redeem А Сэтгэгдэл үлдээх болон {"refund_token": "REFUND-...", "balance": "standard"} эсвэл "pro"). Бүх кредит нь салбарт (Standard дээр 10 sats, Pro дээр 100 sats); 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 } }