Neidio i'r cynnwys
Yn ôl i Nymbot

Sylfaen wybodaeth Ymchwiliad

Pwysau, Top-ups a Keys

Ychwanegwch y mae gennych, top up o Lightning, top up yn awtomatig o'ch wallet, gwelwch sut mae'r cyswllt pob yn cost, a rheoli sleigiau o cod.

Chwilio'r balansiad

Mae'r ddau o'ch sylfaennau, ac o'r nifer o'r cap hwn yn cael ei ddefnyddio.

GET https://nymbot.ai/api/v1/credits/balance Ydych chi'n rhaid i'r API Key. POST Mae'n gweithio hefyd, ar gyfer cwsmeriaid sy'n chwilio am.

balance is the two balances together in dollars at the current Bitcoin price, for tools that expect a single number (null Os yw'r rest yn credyd a sats, sy'n hyn y mae'r balances yn cael eu hysbysebu. key Mae'r cyswllt sy'n dod â'r cyswllt sy'n dod â'r cyswllt sy'n dod â'r cyswllt sy'n dod â'r cyswllt.

Ymchwiliad

{
  "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"
  }
}
statwsYmladd
401Mae'r cofnodion yn falch, unknown, revoked, or expired.

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

Metodau Pecynnu

Ydych chi'n canolbwyntio, ac y llinellau. Lightning yw'r un metel.

GET https://nymbot.ai/api/v1/topup/payment-methods Mae'n cael ei angen i chi.

Mae top-up yn 10 i 1,000,000 sats; Mae top-up Pro yn rhaid i chi brynu ychydig o credyd Pro, felly mae'n dechrau ar 100 sats. bulk_bonus Mae'r credyd ychwanegol ar y top-ups mawr, yn unol â'r app: 10%, 15% neu 20% mwy ar y top-ups standard o 500, 1,000 neu 5,000 sats, a ar y top-ups Pro o 5,000, 10,000 neu 50,000 sats.

Ymchwiliad

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

Ymchwiliad ar y Lightning

Mae'n gwneud ffatri Lightning sy'n ychwanegu credyd i'r nym sy'n hoffi. Ychwanegu Yn cael y credyd ychwanegwyd.

POST https://nymbot.ai/api/v1/topup/create/btc-lightning Ydych chi'n rhaid i'r API Key.

YmchwiliadYmchwiliadYmchwiliadDisgrifiad
amountcyfresOesMae'n fwy, yn currencyMae'r cyfres yn llawn ar gyfer sats.
currencyYmchwiliadynSATS (Ydych chi'n cael y defnyddiadau), USD Yn BTCMae doler yn cael ei convertio ar y pris Bitcoin rhad ac yn awr.
tierYmchwiliadynpro (Ydych chi'n cael y defnyddiadau) neu standard: y cyfanswm sy'n mynd i'r credyd.

Mae credyd safonol yn 10 sats a pro credyd 100 sats, yn ogystal â bonws bulk; credits Ydych chi'n dod i'r cyfrif hwn.

Ymchwiliad

{
  "invoice_id": "b7d41e0c95a2f38e6c1d0e9a4b7f2c61d3e8a05f9b2c4d7e1a6f3b8c0d5e2a9f4",
  "payment_request": "lnbc100u1p5...",
  "amount_sats": 10000,
  "credits": 115,
  "tier": "pro",
  "expires_at": "2026-09-30T09:27:00Z",
  "status": "pending"
}
statwsYmladd
400Mae'r ffordd arall yn y ffordd (unsupported_method(Ydych chi'n cael ei adnabod)unsupported_currency) neu tier, cyfansoddiad amrywiol, neu amrywiol isod o'r minym (amount_too_small), dros 1 000 000 sats (amount_too_large) neu wedi'i adnabod gan y wallet Lightning (amount_out_of_range).
429Yn fwy na 60 ffeiliau ar gyfer y nym hwn, neu 120 o'r swydd hwn, yn un munud (rate_limit_exceededYn ôl Retry-After).
502Gellir ei wneud yn awr (invoice_unavailableYn ôl 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);

Ymchwiliad Top-up

Mae'n ymgynghori os yw'r ffatri wedi'i gwerthu a, unwaith y mae'n cael, yn ychwanegu'r credyd. Mae'r gwerthu yw'r beth yn credyd, felly ar ôl gwerthu, gwerthu hyd at y statws yw creditedMae'n ddiogel i'w gwirio yn ôl: mae'r credyd yn dod yn unwaith, os ydych chi'n chwilio.

GET https://nymbot.ai/api/v1/topup/status/{invoice_id} - mae'n rhaid i chi chwilio o'r nym sy'n gwneud y cyfrif.

status Yn pending (Yn cael ei gwerthu nawr), paid (Add-fynd, ond nid yw'n cael ei credyd; gwelwch yn ôl), credited (ar eich balansiad) neu expired (Gwrthdaro mewn amser). Mae'r llinellau sylfaenol yw ar gyfer y llinellau sy'n cwmpasu ar y ffatri.

Ymchwiliad

{
  "invoice_id": "b7d41e0c95a2f38e6c1d0e9a4b7f2c61d3e8a05f9b2c4d7e1a6f3b8c0d5e2a9f4",
  "status": "credited",
  "amount_sats": 10000,
  "credits": 115,
  "tier": "pro",
  "expires_at": null,
  "balance_credits": 523.33,
  "balance_sats": 52333
}
statwsYmladd
400Mae'r id yw'r id 64-chrif o'r cyswllt crewyd.
404Rwy'n chwilio am eich cyfieithu (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);

Dylunio History

Un llinell ar gyfer gwestiynau: beth yw'n, mae'r model, mae'r nifer o tokenau ac mae'n cost. Ni allbwn neu adolygiadau yn cael ei ryddhau, felly ni allbwn yn cael ei ryddhau. Mae'r llinellau yn cael ei ryddhau am 90 diwrnod, mae'r newyddion yn gyntaf. Mae'r cleiant sy'n cyrraedd y llwyfan hefyd yn gallu lleoli'r historiad.

GET https://nymbot.ai/api/v1/queries/history — mae'n rhaid i'r cyswllt API, sy'n edrych ar eich gofynion, neu a Gwestiynau o'ch nym, sy'n gweld yr un o'r cleifiau.

YmchwiliadYmchwiliadYmchwiliadDisgrifiad
pagecyfieithu (query)ynDewisol 1, yn fwy na 1000; yn fwy na 400 invalid_value.
page_countcyfieithu (query)ynRwsiau ar gyfer dudalen. Defawr 20, yn fwy na 100.
start_date
end_date
Ymchwiliad (query)ynISO 8601 data a amser.
modelYmchwiliad (query)ynYn unig y model.
typeYmchwiliad (query)ynchat, responses, messages, image, video, speech, transcription Yn embedding.
all_keysYmchwiliad (Query)ynYn ôl â chwisg: true Mae'n cynnwys pob key o'r un nym. Default false.
key_idYmchwiliad (query)ynYmchwiliad â gofynion, neu gyda all_keys=trueYn unig mae'r cofnodion.

Ymchwiliad

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

Cwestiynau cyfrif

Ychwanegu, newid a rhyddhau llaiadau, y rhestr cyfrif a top-ups awtomatig yn dod â phost API. Mae'n dod â rhestr o'ch nym, felly mae'r key leaked yn gallu gwneud hyd at ei cap, ond nid yw'n gallu gwneud y key arall neu gwella'r cap ei hun.

Mae'r app yn gwneud hyn am eich bod: yr holl yn ei Ymchwiliad Mae'r cyswllt hwn yn cael ei ddefnyddio gan ddefnyddio'r endpoints. Mae'n rhaid i chi dim ond i'r rhan hwn i reoleiddio'r cyswllt o'ch cyswllt.

Mae'r rhyddhau yn ddiddordeb Nostr o'r math 27235 (NIP-98), a wnaed yn base64-coddio yn y Authorization Header gyda'r Word Nostr Yn ôl:

Ymchwiliad

{
  "kind": 27235,
  "created_at": 1790726400,
  "tags": [
    ["u", "https://nymbot.ai/api/v1/keys"],
    ["method", "POST"],
    ["nonce", "9c4e21f07a3b...16 random bytes in hex"],
    ["payload", "3f1a0d7c8e2b...sha256 of the exact request body in hex"]
  ],
  "content": "",
  "pubkey": "your public key in hex",
  "id": "...",
  "sig": "..."
}
  • u is the full URL of the request, query string included, precisely as sent.
  • method Mae'n y ffordd HTTP.
  • payload is the SHA-256 of the raw request body, yn hex. Mae'n angen ar POST a PATCH, a mae'r corff y mae'n rhaid i chi yn byte i byte y mae'n hashed.
  • created_at Mae'n rhaid i chi fod yn uniongyrchol o 60 munud o'r cloc server.
  • Mae pob event yn gweithio unwaith, a GET yn cynnwys, felly mae'r header sy'n cael ei chwarae'n ôl. Dylunio un newydd ar gyfer pob gwestiynau. nonce Mae'r cyswllt yn cael ei adnabod gyda'r werth rhad ac mae'r dosbarthiadau sy'n cael ei adnabod yn uniongyrchol yn uniongyrchol.
  • Gall bod y corff o gwestiynau sy'n rhyddhau yn fwy na 64 KB, ac mae bod y corff angen Content-Type: application/json.

Gwrthdaro ar gyfer Event Missing 401 missing_nostr_auth; un sy'n cael ei ffurfio'n anhygoel, sy'n rhyddhau'n anhygoel, yn agored iawn, neu ar gyfer URL, metodau neu corff arall invalid_nostr_auth, gyda'r moethus yn y misol; yn cael eu defnyddio'n ôl nostr_auth_replayedMae'r rhyddhau yn cael eu gwella yn ôl i'r corff yn cael ei leoli, ac mae'r pob adref yn cael ei gwella 30 o'r munud (y adref IPv6 yn cyfrif fel ei holl /64); yna mae'n cael ei gael 429 Yn Retry-After.

Mae'r browsers yn gallu chwilio i'r endpoints hyn yn unig o'r gwefan Nymbot (https://nymbot.ai, https://nymchat.app a'r subdomeiniadau). Mae'r dudalen ar unrhyw safle arall yn cael unrhyw adrannau CORS yn ôl, felly ni all fod yn gallu lleoli'r adrannau. OriginYdych chi'n ddiddordeb.

Ychwanegwch eich clei

Mae'r cyfrif yn angen eich nym's secret key (y nsec), sy'n rheoli bob amser: eich hun, eich historiad a'ch rheswm. Rhowch i'r scriptiau ar peiriant y mae gennych chi'n ddiogel, i lawr o'r amgylchedd yn oed yn ôl i'w scribio i'r ffeil, ac yn awgrymu'r app pan fyddwch chi'n gallu.

Mae'r adolygiadau hyn yn adeiladu'r header. Mae'r ystyriediau nesaf ar y dudalen hon yn defnyddio'r ystyriediau. NOSTR_SECRET_HEXMae'r cURL yn defnyddio'r Ymweld peiriant llinell comando, sy'n cymryd nsec neu hex, a sha256sum ar gyfer 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");
}

Rhestr y cyfrif

Mae'r swyddfa API y app yn dangos yn y gorchymyn: eich dewis public, mae'r ddau sylfaennau, mae'r nifer o dewisiau yn effeithiol (no'r wedi'u reoli neu wedi'u gwblhau), a'r Awtomatig Top-up Ymchwiliad, neu null Os yw'r server yn cynnig ei.

GET https://nymbot.ai/api/v1/account Dylunio a Gwestiynau.

Ymchwiliad

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

Ymchwiliad Keys

Mae'r rhan fwyaf o'r rhan fwyaf yn cael ei ddefnyddio i'r cyswllt. Mae pob un o'r rhan fwyaf yn angen GwestiynauMae'r cyswllt yn cael ei gynyddu yn y ffurflen hwn, gyda amser yn ISO 8601 a chyfres yn sats:

Object Cyd-fynd

{
  "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 Mae'r cyswllt yn cael ei adnabod, ond nid yw'n cael ei ddefnyddio, mae'r cyswllt yn cael ei adnabod yn unwaith, pan fydd yn cael ei wneud.

Llwytho i lawr

GET https://nymbot.ai/api/v1/keys Ymchwiliad

YmchwiliadYmchwiliadYmchwiliadDisgrifiad
include_revokedYmchwiliad (Query)ynYchwanegwch y cyswllt. Default false.

Ymchwiliad

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

Ychwanegwch â'r key

POST https://nymbot.ai/api/v1/keys Ymchwiliad 201.

YmchwiliadYmchwiliadYmchwiliadDisgrifiad
nameYmchwiliadOes1 i 40 cartegwyr, yn adnabyddus o'ch cyswllt eraill yn gweithio (gyfeillgar cyswllt).
limit_satsYmchwiliadynMae'r cyswllt yn cael ei ddibynnu, yn fwy na 1.
reset_periodYmchwiliadyndaily, weekly Yn monthlyYmchwiliad limit_satsRwy'n dod ar gyfer cap sy'n golygu bob amser.
expire_atString neu integerynOs yw'r taith yn rhad ac yn gweithio: amser ISO 8601, neu millisecondiau ers 1970.

Ymchwiliad (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"
  }
}
statwsYmladd
400Mae'r enw wedi'i gymryd neu'r enw wedi'i ddefnyddio (duplicate_name); cap sy'n cael y cyfres cyffredinol o hyd yn fwy na 1; cyfres reset heb cap; llwytho i'r bywyd; field unknown (unknown_parameter); neu 25 nodweddion wedi'i wneud yn awr (too_many_keys).
429Yn fwy na 60 nodweddion a gynhyrchir gan y nym hwn, neu 120 o'r swydd hwn, yn unwaith (rate_limit_exceededYn ôl 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);

Lleoliad Un Key

GET https://nymbot.ai/api/v1/keys/{id} Ymchwiliad

Ymchwiliad {"data": {…}} gyda'r ganlyniadau cryfder, neu 404 key_not_found Os nad oes gennych eich 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);

Cyfeiriad: Chwilio Key

PATCH https://nymbot.ai/api/v1/keys/{id} Ymchwiliad

Ffoniwch unrhyw un name, limit_sats, reset_period a expire_at, gyda'r uniongyrchol o'r rheoli fel wrth gwneud chwisg. null Mae'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf.400 key_revokedYmchwiliad {"data": {…}} gyda'r Object Key wedi'i updated.

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

Ymchwiliad Key

DELETE https://nymbot.ai/api/v1/keys/{id} Ymchwiliad

Mae'r cyswllt yn cael ei wneud yn unwaith. Mae'r cyswllt yn cael ei wneud yn unwaith. revoked_at Mae'n cael ei wneud, ac yn cael ei weld gyda include_revoked=trueMae'r cyswllt wedi'i reoli wedi'i reoli wedi'i reoli wedi'i reoli wedi'i reoli wedi'i reoli wedi'i reoli wedi'i reoli wedi'i reoli wedi'i reoli.

Ymchwiliad

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

Ymchwiliad NWC Auto-top-up

Cyd-fynd â wallet Lightning gyda Nostr Wallet Connect a Nymbot yn dod i mewn i'r cyfanswm ar ei hun pan fydd y broses API yn rhedeg yn isel. Gwestiynau.

Sut mae'n gweithio: ar ôl y gwestiynau API yn cael ei gyfrifo i'r cyfathrebu a dewisodd i'w chwilio, os mae'r cyfathrebu wedi bod yn isod o dan eich thramor, mae Nymbot yn gwneud ffôn ar gyfer eich cyfathrebu top-up, mae'n croeso i'ch cyfathrebu, ac mae'n ychwanegu'r credyd. Mae'n gyfrifo yn uchaf yn fwy na un o'r 5 munud ar gyfer pob nym a'r cyfathrebu, felly ni allbwn o gwestiynau yn caniatáu i'r cyfathrebu. Ni allbwn mewn'r apps yn ymgynghori ei. Mae'r amser a maint y top-up diweddar, a'r defnyddiad diweddar, yn y setiau; os y cyfathrebu Ymchwiliad top-up Credyd i ni.

Wedi'i gysylltu â wallet

Mae Nymbot yn storio'n encrypted a ddefnyddir yn unig i'w defnyddio i brynu'r cyfrifau top-up ei hun, ond gwneud cysylltiad yn unig ar gyfer hyn, gyda buddsoddiad gasglu yn eich wallet, felly mae'r mwyaf sy'n gallu gwneud i'w gwerthu yw'r rhif i chi. pay_invoice.

Cyd-fynd â wallet

POST https://nymbot.ai/api/v1/nwc-auto-topup/connect Ymchwiliad

YmchwiliadYmchwiliadYmchwiliadDisgrifiad
nwc_urlYmchwiliadOesMae'r cyswllt yn dechrau nostr+walletconnect://Nymbot yn chwilio am y wallet get_info Yn ôl i'w archebu, mae'n cael ei archebu yn encrypted.
threshold_satsYmchwiliadOesMae'r cyswllt yn dod o hyd i'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf.
topup_satsYmchwiliadOesYdych chi'n addasu bob amser. 1000 i 1,000,000 sats.
tierYmchwiliadynpro (Ydych chi'n cael y defnyddiadau) neu standard: y balanse i amddiffyn a top up.

Ymchwiliad

{
  "data": {
    "connected": true,
    "threshold_sats": 5000,
    "topup_sats": 20000,
    "tier": "pro",
    "last_topup_at": null,
    "last_topup_sats": null,
    "last_error": null
  }
}
statwsYmladd
400Mae'r cyswllt wedi'i gymryd (invalid_nwc_urlMae'r cyswllt wedi'i gymryd â'r cyswllt (nwc_unreachable) neu ryddhau'r gwerthu (nwc_rejected); mae'r cysylltiad yn gallu dewis cyfrifon (nwc_missing_permission); neu nifer o hyd at y llinellau.
501Mae'r cyswllt yn cael ei addasu i'r cyswllt (nwc_unavailable) Mae'n cael ei ddefnyddio ar gyfer y dosbarth eraill.

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

Llwytho i'r settings

GET https://nymbot.ai/api/v1/nwc-auto-topup Ymchwiliad

Gwrthdu'r dyfais yn unol â'r cysylltiad, gyda connected: false Mae'r rhannau eraill null Mae'r cyswllt yn cael ei gysylltu â'r cyswllt, ac mae'r cyswllt yn cael ei gysylltu â'r cyswllt.

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

Disgrifiad

DELETE https://nymbot.ai/api/v1/nwc-auto-topup/connection Ymchwiliad

Rhowch y strwythur cysylltiad sy'n archebu. Nid yw'n cael ei wneud yn fwy top-ups. I gael gwisgo, gallwch hefyd rhyddhau'r cysylltiad yn eich wallet.

Ymchwiliad

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

Pecynnu ar un o'r gwestiynau

Mae'r rhad ac amodau cyfredol yn cael eu gwerthu am un defnyddiwr o'r amser yn ystod Lightning, nid oes cleiant, nid yw'r cyfrif a nid yw'r saldon: POST /images/generations, POST /images/edits, POST /videos, POST /audio/speech, POST /audio/transcriptions, POST /audio/translations a POST /embeddingsMae'r gofynion sy'n cael ei gymryd i'r cyfathrebu fel arfer; mae'r flws prynu yn dechrau dim ond nid yw'r gofynion yn cael eu chwilio.

Nymbot yn ddwy fersiwn o'r un ideol, o un backend: Lightning Labs' Ymchwiliad 240 (Ydych chi'n cael ei adnabyddus yn ôl ei enw, LSAT) a phrofiad IETF Ymchwiliad HTTP Authentication Scheme gyda'r lightning Meddalwedd a charge Ydych chi'n ddiddordeb i'ch cwsmeriaid.

Mewngofnodi eich server

Pecyn gyda chydrannau yn unig API_L402_SECRET Mae pob 32 bythau yn cael ei drin, fel hex (64 cyfres) neu base64 (44). openssl rand -hex 32Mae'r rhad ac amrywiol o'r rhad ac amrywiol yn ymgorffori'r swyddogaethau ac yn log i'r defnyddiadau. API_L402_SECRET_PREVIOUS ar gyfer un diwrnod: credentials, URLs statws a thramorau wedi'i wneud o dan y byddant yn gweithio hyd at eu cynhwyso.

Dylunio

Ffoniwch y cyswllt gyda No Authorization Mae'r cyswllt yn cael ei wneud, mae'n cael ei wneud, ac mae'n 402 Payment Required gyda chyfrifiad ar gyfer y mae'r bris y gofynion:'r un pris a chyfleusodd, yn cael eu trosi at 10 sats a credit standard neu 100 sats a credit Pro ac yn cael ei rhedeg i'r holl sat (maint 1 sat, ac am ddim 0.05 credyd minimum). WWW-Authenticate Dylunio ar gyfer yr un cyfnod:

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

Ymchwiliad request Mae'r parametr yn base64url JSON: {"amount":"237","currency":"sat","methodDetails":{"invoice":"lnbc...","network":"mainnet","paymentHash":"..."}}.

Mae'r cyfieithu yn gysylltiedig â'r endpoint, i'r Content-Type (yn math deunyddiau a, ar gyfer multipart, y llinell) ac i'r SHA-256 o'r byth corff uniongyrchol a chadw 15 munud. Ymchwiliad Ymchwiliad: Mae'r un arall Content-Type a'r un o'r bythau JSON, neu ar gyfer y rhannau endpoints multipart (/images/edits, /audio/transcriptions, /audio/translationsMae'r rhan fwyaf o'r libraryau HTTP yn dewis llinellau newydd bob amser mae'n coddio fform, felly coddio'r ffurflen unwaith a send y bythion hyn dos.

Mae pob adref yn gallu chwilio am 30 ymgynghoriadau am munud (y adref IPv6 yn cael ei cyfrifo fel ei holl /64). Mae ymgynghoriadau sy'n cael ei adref yn cael ei ddylunio yn fwy na 10 yn y munud, ac mae ganddo llwyfan cyffredinol ar y ymgynghoriadau ymgynghoriadau Nymbot o'r holl adrefiau; mae'r ymgynghoriadau a ddylunio cyn ei wneud ymgynghoriad (per exemple gyda corff sy'n cael ei gilydd JSON) yn cael ei cyfrifo i'r ystyried. 429 Yn Retry-AfterMae'r nodweddion a chyfrifiadau a chyfrifiadau a chyfrifiadau a chyfrifiadau a chyfrifiadau a chyfrifiadau a chyfrifiadau a chyfrifiadau a chyfrifiadau a chyfrifiadau a chyfrifiadau a chyfrifiadau a chyfrifiadau a chyfrifiadau a chyfrifiadau. Content-Type Nid yw application/json Ymchwiliad multipart/form-data Ymchwiliad â gofynion 415 Ydych chi'n cael y cyfrif.

Mae'r cynhyrchion yn cael eu prynu o'r cynhwysedd o'r token yn y bwydo, gyda margedd 1.5; mae'r cyfrif real yn cael ei adnabod yn ôl. Mae'n cael eu prynu ar gyfer y token a ddefnyddir, ac mae'r rhan heb ei ddefnyddio yn dod yn ôl fel Ymchwiliad token.

Ymchwiliad Payment

Pwylo'r cyfrif gyda unrhyw wallet Lightning. Mae'r wallet yn darparu eich preimage, 64 cartegiau hex. Yna, rhowch yr un gofynion gyda un o'r hyn:

YmchwiliadYmchwiliad
Ymchwiliad 240Authorization: L402 <macaroon>:<preimage> (LSAT Mae'n gweithio hefyd)
YmchwiliadAuthorization: Payment <base64url JSON>, lle mae'r JSON {"challenge": {every parameter of the challenge, as sent}, "payload": {"preimage": "<hex>"}}

Mae'r gofynion rhad ac am ddim yn adolygu fel y gofynion wedi'i wneud gyda chwisg, ond mae'r nymbot Mae'r ganlyniadau yn cael ei baratoi: {"payment": "l402", "tier": "pro", "paid_sats": 237, "charged_sats": 237}Yma mae'n no X-Nymbot-Balance-Sats Mae'r gwestiynau a wnaed gyda'r schemau Payment hefyd yn cael a Payment-Receipt header (base64url JSON gyda'r challenge id, mae'r hash gwerthu fel reference, status a timestamp(Payed requests are not bound to any nym, so they do not appear in the query history.)

statwsYmladd
402 payment_already_usedMae'r cyswllt yn cyfieithu newydd ar gyfer y cyswllt hwn, felly mae'r cwsmer sy'n cache'r credential diweddaraf (as lnget Ydych chi'n unig yn dod yn ôl.
402 payment_mismatchMae'r credential wedi'i embed ar gyfer un endpoint arall, Content-Type neu'r corff, neu'n darparu mwy na'r gwestiynau hwn. Mae'r gofynion newydd ar gyfer y gwestiynau hwn yn dod â'i; os yw'r gwerthu'n isel, mae'r hyn o'ch gwerthu yn dod yn ôl Ymchwiliad token (refund_token a refund_sats Yn y corff)
402 payment_expiredMae'n fwy na 15 munud o'r rhyfel. Mae'r rhyfel newydd yn dod â'r rhyfel. Os mae'r preimagine yn dangos y mae'n cael eu gwerthu, mae hyn sy'n cael eu gwerthu yn dod yn ôl. Ymchwiliad token (refund_token a refund_sats yn y corff), unwaith; mae'r credential yn cael ei ddefnyddio.
401 invalid_preimageMae'r preimage yn cael ei hamgryptio i'r hamgryptio payout o'r ffôn. Mae'r payout yn cael ei ddefnyddio.
401 invalid_payment_credentialMae'r credential wedi'i fformio, wedi'i newid ar ôl Nymbot wedi'i embed, neu'r enw y hash gwerthu Nymbot nid wedi'i embed ffatri ar gyfer. Mae'r macaroon gyda'r adolygiad Nymbot yn gwybod, neu gyda'r adolygiadau cofrestru, yn cael ei adnabod.
429 rate_limit_exceededMae mwy na 30 credentials neu keys sy'n awgrymu yn dod o'r adran hwn yn un munud, neu un token rhad ac am ddim wedi'u sent mwy na 60 amser yn un munud. 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"));

Mae cwsmeriaid yn cael ei adeiladu mppx Mae'r metel Lightning yn galluogi'r dewis Payment yn ei hun; yn arbenigo i'r endpoint ac yn caniatáu i'w gwerthu.

fideo

Ymchwiliad POST /videos Ymchwiliad 202 fel a, yn ogystal â a status_url: GET Mae'n cyfieithu ac yn gweithio am 24 awr, os yw'r swydd yn cael ei hwyluso.

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

Rhowch y refund_token Ymchwiliad: Mae'r fideo yn cael ei ddibynnu i'r fideo (GET /api/v1/l402/refunds Ymchwiliad "status": "pending"); os yw'r render yn awgrymu, mae'r gwerthu yn lleoli ar ei. Mae'r URL statws yn dangos refund_sats ar gyfer gwaith gwerthuso, ond nid yw'r token, felly ni allbwn y URL lle mae'r gwerthuso yn ddiddordeb. Mae'r gwerthu ar y token hefyd yn ymgynghori gwaith gwerthuso a dim ond ni'n ymgynghori.

Ymchwiliad

Os yw'r gofynion rhad ac mae'r cyflenwr yn cael ei leoli gan Nymbot ar gyfer y brofiad, mae'r prynu yn cael ei rhedeg ac mae'r erthygl yn digwydd, gyda charged_sats, yn unol â'r gofynion cychwyn. Os yw'r gofynion yn awgrymiad, mae'r gofynion yn cychwyn Ymchwiliad token Mae'n werth y mae'n cael eu prynu:

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

Mae'r rhannau heb ei defnyddiwyd yn dod â'r unwaith: os ydych chi'n chwilio am ddwy lluniau a un wedi'u gwblhau, mae'r adolygiad yn effeithiol. nymbot Mae'r obiect yn caru token rhad ac amodau ar gyfer y defnyddiwr; mae'r cyfrif sy'n cael ei ddylunio yn ôl yn cael eu prynu i'r ffeil yn fwy na 30 munud (gyda'n fwy na 30 munud), ac mae'r gwahanu i'r llong real yn dod yn ôl fel token rhad ac os yw'n dod yn fwy na 30 munud, mae'n cael ei rhad ac amodau. 413 Mae'r fideo wedi'i ryddhau i'r token sy'n cael ei ryddhau. Mae'r fideo wedi'i ryddhau i'r token wedi'i ryddhau.

Mae token rhad ac amddiffynnol yn cod 256-bit. Mae Nymbot yn storio dim ond ei hash, ac mae'n golygu ar ôl 30 diwrnod. Mae ganddo saledd sat, ac gallwch:

  • Ffoniwch â ni. Ymchwiliad Authorization: Bearer REFUND-… Mae'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf o'r rhan fwyaf (refund_token_sats Yn y nymbot . . . . . . . . . . . . . . . . 402 refund_insufficientMae'r defnyddiwr yn dod â'r cyswllt yn dod â'r cyswllt.
  • Ychwanegu â ni. GET /api/v1/l402/refunds gyda'r un o'r header yn ôl {"sats": 237, "status": "open", "expires_at": "..."}.
  • Mae'r token yn cael ei ddefnyddio yn fwy na 60 o'r munud.
  • Ychwanegu i mewn i niw. Ychwanegu i mewn Gwrthdaro i'r Darnia Yn y app Nymbot, neu Call POST /api/v1/l402/refunds/redeem Yn a Gwestiynau a {"refund_token": "REFUND-...", "balance": "standard"} Ymchwiliad "pro"). Credydiau cyfan yn dod i'r cydweithrediad (10 sats yr un ar standard, 100 ar Pro); Credydiau sy'n gwneud un credyd cyfan ar y token ar gyfer gwestiynau 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"

Ymchwiliad

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