Skip to di tin dɛn we de insay
Go bak to Nymbot

Di tin dɛn we pɔsin fɔ no bɔt Dɛvɛlɔpɔs

Tɔk, Ansa, ɛn Mesij

Trey wey yu kin ask wan model kuestin, na di tri difren fmt we klaien de ɔlwey de tok, ɔl de run na di sem wan model we de bin de bil yu na di sem wey.

Trok-tok We Don Fin

Di OpenAI chat format, an di wan we den ɔl túl de sapɔt. Sen di kɔnvɛrsɛshɔn we de go so far an get di nɛks mɛsɛj bɛk.

POST https://nymbot.ai/api/v1/chat/completions — nid an API key.

Yis model ɛn messages dem na we i nid. Wan sampling parameter we di model we i bin chooz nɔ de tek, i go drop wikaut ɛni error, so wan request body de wok pan ɔl di models. Di model list de gi di ɛch model in supported_parameters. Wetin dem yu-refuz ded, rather mek dem drop, na anything wey di model no fit do at all: pikutcha fɔ wan model wey no fit si, tools fɔ wan model wey no fit call dem.

FildTupDi wan we nyu nidDɛskripsin
modelstrinYɛsnymbot/auto (o auto) fɔ Nymbot's routing pan di standard balance, ɔ wan catalog model id sɔt as anthropic/claude-sonnet-5 na di Pro balance. Di app di kyet smɔl nem mɛn ɛnd ɛliase mɛn ɔl so. I de ɛn na a sufiks.
messagesarrayYɛsDi tɔk-tɔk. Roulz system, developer (dem de koot am as sistem), user, assistant ɛn tool. Kuntent na wan strin o wan list fo text ɛn image_url pata; pika onli na yu-ser mesij. input_audio an foyl pat de rifius.
streamboole-anNoSen di ansa de as i rait am. Luk stinim de frow di tivishon/manyak 📺.
stream_optionssamtingNo{"include_usage": true} it add wan finel bit wit di token count na ɛnd ɛ bɔt di kɔst.
max_tokens
max_completion_tokens
integerNoDi mek kray di tokɛn fɔ rait. Dɔn kɔmɔn am fɔ di model maksimim if ɛ kɔmɔn pas am. A ɛ set ɔl ɔmɔ di pɔsin dɛn fɔ kɔmɔn fɔm yu bælans, so wan smɔl namba go nid lɛs kredɛt fɔ stat.
temperature
top_p
nambaNoSempel konshrol: temperature frɔm 0 to 2, top_p fom 0 go 1.
stopstring ɔ arrayNoTɛks we de ɛnd di ansa: wan strin ɔ at mos 4 strin, ɛch wan at mos 256 kɛrɛktas. No de yus am fɔ nymbot/auto.
seedintegerNoFɔ di sampling we de ririta, we di model de sapot am.
presence_penalty
frequency_penalty
nambaNoRepetisen kon-trol, di wan de -2 go 2.
response_formatsamtingNo{"type": "json_object"} ɔ {"type": "json_schema", "json_schema": {…}}, wey de model de sapot am. No de yuz by nymbot/auto.
tools
tool_choice
parallel_tool_calls
array, string ɔb ojeckt, booleanNoFankshon kɔling. Luk. tul kols. A web_search tūl on de wif sɔrt na di net. At mɔst 128 tuls an 512 KB difinisin, we de go in kastom 64 levels dip; mo na a 400.
reasoning_effort
reasoning
stirin, objekNo"minimal", "low", "medium" ɔ "high", ɔ de {"effort": "high"}. "none" ɔ {"enabled": false} e pan am off. Luk tin-tin fɔ tink gud.
pluginsarrayNo[{"id": "web", "max_results": 5}] e de lɔk fɔ ɔn di wep fɔs ɔlweys. Up to 10 rɪzɔlt.
nintegerNoOli wan. Anin tings de fɔ fɔ kam bɔk 400.
logit_bias
user
metadata
obzɛkt, strin, obzɛktNoDem bin aksɛpt am, bɔt dem nɔ sɛnt am on. logit_bias e map at mɔs 300 token id dɛn de tɔːm namba frɔm -100 go 100; user e no go pass 256 characters; metadata e de hol at mos 16 string valyu, di kii de go up to 64 karakter, and di valyu de go up to 512.

Di ansah na wan de oridineri chat.completion, wit di kos in usage.cost (in dolas) an in de nymbot objek. model na di resolved model id, so wan smol nem de kam bak as di ful wan. If di model bin reason bifo e ans-wer, e reasoning de in. message.reasoning_content, mek am difren frɔm di ansaw.

Ansa

{
  "id": "chatcmpl-5f1c0a9e27d84b3c",
  "object": "chat.completion",
  "created": 1790726400,
  "model": "anthropic/claude-sonnet-5",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "A Lightning invoice is a one-time payment request..."
      },
      "logprobs": null,
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1240,
    "completion_tokens": 380,
    "total_tokens": 1620,
    "prompt_tokens_details": { "cached_tokens": 0 },
    "completion_tokens_details": { "reasoning_tokens": 0 },
    "cost": 0.01895
  },
  "nymbot": {
    "balance": "pro",
    "charged_credits": 0.162,
    "charged_sats": 16.2,
    "balance_credits": 412.425,
    "balance_sats": 41242.5
  }
}

finish_reason Dɛm mek am bas on wetin kam bak, bikoz di wan we de provay de rita am wan difren wan: tool_calls wen di model ask fɔ tus, length wen di ansul i jus yus ɔl di tokin de kɛm (o di modɛl i spɛnt ɔl dem fɔ rīznin ɛn i nɔ rīt ɔn ansul), content_filter wɛn di provayda refjuz, an stop en nɔmɔ bɔt. usage.completion_tokens_details.reasoning_tokens e de awols 0: hidin reasoning tokens de kount, and dem de kach, in completion_tokens.

StetɔsWɛn
400No model ɔ messages (missing_required_parameter); wan odio o fayl pat, o pikcha fɔ wan modèl we no kin si dem (unsupported_content); mɔː bɛtan 20 piksa (too_many_images); sampling parameter de wrong typ o de out of range (invalid_value); wan pikin fɔ pikchur link we nɔ public (invalid_image_url); tul na wan modèl we i no de kɔn dem (unsupported_tool); n pas 1; a :thinking sufiks on wan model we de mek fashin we nɔ de rason (model_not_found); o di provider difuz di ridist 👨‍💻 (upstream_rejected).
402Di balance we di model de spend nɔ go ɛnɔ kɔvɛ di hold.
403Di bɔs kays di nɔ fit di ki kɛp (key_limit_reached). Lowa max_tokens o ris di kap.
404No model de wit dat nem (model_not_found).
429Di key rate limit, o di provider rate limit (upstream_rate_limited).
502, 503Di provayda feyl (upstream_error) ɔ ɛf de we de kɔntrol di kòntrol (upstream_overloaded, wit Retry-After). Nɔting nɔ de deba nɔ mɛn de bɛl de fɔ de at, ɛksɛp de fɔ de provider bɛl fɔ de at.

Di status koud we evri endpoint de sha de lisin unda mistaeks.

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "messages": [
      {"role": "system", "content": "Answer in one short paragraph."},
      {"role": "user", "content": "What is a Lightning invoice?"}
    ],
    "max_tokens": 400
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[
        {"role": "system", "content": "Answer in one short paragraph."},
        {"role": "user", "content": "What is a Lightning invoice?"},
    ],
    max_tokens=400,
)
print(reply.choices[0].message.content)
print(reply.usage.cost)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  messages: [
    { role: "system", content: "Answer in one short paragraph." },
    { role: "user", content: "What is a Lightning invoice?" },
  ],
  max_tokens: 400,
});
console.log(reply.choices[0].message.content);
console.log(reply.usage.cost);

Strimin

Wit "stream": true ansua de kam usin server-sent events we de mek wen de model de rayt it. Icha ivɛnt na a chat.completion.chunk pon wan data: lain, an di strem finii wit data: [DONE]. Reason de kam in delta.reasoning_content, de ansa in delta.content.

Strim eniting wey fit tek mɔ nɛk 100 sekɔnd, de pɔsin lɛk ɔn lɛng ansɔ, ɔ bɔɔg ✍️ max_tokens os o reasoning model. Wan request wey no di stream nɔ send anything til di ansa don finis, an di network de we de go betwin yu an Nymbot fɔ kloz an idle connection afta ɔbaut 100 sekon; di model stil finis an wetin e rita de kɔst, bɔt di ansa go los. Wan stream de send keep-alives, so e go de op fɔ ɔl di tɛm we di model de rita.

Strim

data: {"id":"chatcmpl-5f1c0a9e27d84b3c","object":"chat.completion.chunk","created":1790726400,"model":"anthropic/claude-sonnet-5","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}

data: {"id":"chatcmpl-5f1c0a9e27d84b3c","object":"chat.completion.chunk","created":1790726400,"model":"anthropic/claude-sonnet-5","choices":[{"index":0,"delta":{"content":"A Lightning invoice"},"finish_reason":null}]}

: keep-alive

data: {"id":"chatcmpl-5f1c0a9e27d84b3c","object":"chat.completion.chunk","created":1790726400,"model":"anthropic/claude-sonnet-5","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: {"id":"chatcmpl-5f1c0a9e27d84b3c","object":"chat.completion.chunk","created":1790726400,"model":"anthropic/claude-sonnet-5","choices":[],"usage":{"prompt_tokens":1240,"completion_tokens":380,"total_tokens":1620,"cost":0.01895},"nymbot":{"balance":"pro","charged_credits":0.162,"charged_sats":16.2,"balance_credits":412.425,"balance_sats":41242.5}}

data: [DONE]
  • Lin we de stat wit : di keep-alive kɔment dem, dem de sɛnt evri 15 sekɔn we di modèl de tink. SSE kłayɛnt dem de skay dem.
  • Ask fɔ "stream_options": {"include_usage": true} fɔ get di las tɔnk di bɔv, wit ɔn ɛmti choices, di token kont, di kos an di nymbot objek.
  • Di bil di setel afta di stream de fin. If yu klous di konekshon ɛli, dɛn de no stop di model: Nymbot de rɛd di ɛrest di provider strim, fɔ ɛn tiŋ ɔpɔ di 25 sekɔnd, fɔ fɛnd ɔ tin token count, ɛn yu de pe wetin di provider rɪpɔt. Widakɔt dat kɔnt, dɛn de ɛstimet di bil frɔm wetin yu tink ɛn wetin bin rɪt, plɔs di ful autput alaɔns fɔ wan model we de rɪzɔn.
  • An error bifo di fes chunk, lɛk as 401 ɔ 402, i de kam bak as ordinary JSON wit in status code, no as stream. An error afta di stream bin stat i de kam as last data: {"error": {…}} evɛnt, ɛn di strim ɛn witout [DONE].
  • Di requests wey get tools, an di models na OpenAI's Responses transport, dɛn nɔ stiam frɔm di provider. Dɛn stil ansa wit wan valid stiam, we dɛn sɛn wan ɛf di ansa de kɔmplit.

cURL

curl -N https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "nymbot/auto",
    "stream": true,
    "stream_options": {"include_usage": true},
    "messages": [{"role": "user", "content": "Write a haiku about sats."}]
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

stream = client.chat.completions.create(
    model="nymbot/auto",
    stream=True,
    stream_options={"include_usage": True},
    messages=[{"role": "user", "content": "Write a haiku about sats."}],
)
for chunk in stream:
    if chunk.choices:
        print(chunk.choices[0].delta.content or "", end="", flush=True)
    elif chunk.usage:
        print("\ncost:", chunk.usage.cost)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const stream = await client.chat.completions.create({
  model: "nymbot/auto",
  stream: true,
  stream_options: { include_usage: true },
  messages: [{ role: "user", content: "Write a haiku about sats." }],
});
for await (const chunk of stream) {
  if (chunk.choices.length) process.stdout.write(chunk.choices[0].delta.content || "");
  else if (chunk.usage) console.log("\ncost:", chunk.usage.cost);
}

Tul kɔl

Ɛksplein fɔnshɔn in tools and di model kin aks fɔ mek wan fɔ kɔl instead di ansa. Yu rɔn di fɔnksyen, ɛn ɛd in risɔlt as a tool mesij wit di sem tool_call_id, and sen di konvëshon agin. Nymbot nid fɔ ran yu fɔnkshon; in de pass di modɛl rikwest bak to yu.

tool_choice tek am "auto", "none", "required" ɔ {"type": "function", "function": {"name": "…"}}. Di model lisi mark di model wey kin ɔp tuls (capabilities.tools). Tuls dem de refius wit 400 unsupported_tool on nymbot/auto an na di smɔl katɔlog mɔdel de rɔn na OpenAI di Responses transport, we Nymbot no de ɛbil tɔul go to.

Wit "stream": true, wan rikwest wit tuls run in wan pìs, den dem sen am as wan nòmal sîkwens ef tinf: de ròul, wan tinf we de keri evri tůl kòl wit in in-deks, aid, nem, and arkument, and de finisht tinf. Klaint we de rid stritimd tůl kòls, dem de hanul am as den de du am bof.

Ansa, in pan na pan

"choices": [
  {
    "index": 0,
    "message": {
      "role": "assistant",
      "content": null,
      "tool_calls": [
        {
          "id": "call_7d2e",
          "type": "function",
          "function": { "name": "get_invoice_status", "arguments": "{\"invoice_id\":\"a41f\"}" }
        }
      ]
    },
    "finish_reason": "tool_calls"
  }
]

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "messages": [{"role": "user", "content": "Has invoice a41f been paid?"}],
    "tools": [{
      "type": "function",
      "function": {
        "name": "get_invoice_status",
        "description": "Look up whether an invoice is paid.",
        "parameters": {
          "type": "object",
          "properties": {"invoice_id": {"type": "string"}},
          "required": ["invoice_id"]
        }
      }
    }]
  }'

Python

import json, os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

tools = [{
    "type": "function",
    "function": {
        "name": "get_invoice_status",
        "description": "Look up whether an invoice is paid.",
        "parameters": {
            "type": "object",
            "properties": {"invoice_id": {"type": "string"}},
            "required": ["invoice_id"],
        },
    },
}]
messages = [{"role": "user", "content": "Has invoice a41f been paid?"}]

reply = client.chat.completions.create(model="anthropic/claude-sonnet-5", messages=messages, tools=tools)
call = reply.choices[0].message.tool_calls[0]
args = json.loads(call.function.arguments)

messages.append(reply.choices[0].message)
messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps({"paid": True})})

final = client.chat.completions.create(model="anthropic/claude-sonnet-5", messages=messages, tools=tools)
print(final.choices[0].message.content)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const tools = [{
  type: "function",
  function: {
    name: "get_invoice_status",
    description: "Look up whether an invoice is paid.",
    parameters: {
      type: "object",
      properties: { invoice_id: { type: "string" } },
      required: ["invoice_id"],
    },
  },
}];
const messages = [{ role: "user", content: "Has invoice a41f been paid?" }];

const reply = await client.chat.completions.create({ model: "anthropic/claude-sonnet-5", messages, tools });
const call = reply.choices[0].message.tool_calls[0];
const args = JSON.parse(call.function.arguments);

messages.push(reply.choices[0].message);
messages.push({ role: "tool", tool_call_id: call.id, content: JSON.stringify({ paid: true }) });

const final = await client.chat.completions.create({ model: "anthropic/claude-sonnet-5", messages, tools });
console.log(final.choices[0].message.content);

Pikchua in wan rikwest

Modul wit capabilities.vision kin riid pikcha. Ad an image_url pɔt na wan usɛ masij, wit ɔda wan de pɔblɪk https:// link o a data:image/…;base64, URL. Yu kin sen up to 20 piktcha fɔ ɛvri rɪkwest. SVG piktcha nɔ go ɛksɛpt, ɛn lin we lɔŋɡa ɛn ɛm pas 4,096 kɛrɛktas ɔ lin we de yu sɛm (username) ɔ paswɔd (password) in nɔ go ɛksɛpt (400 invalid_image_url). Wan we yu bin de kon di wan de op detail na auto, low ɔ high.

Wit nymbot/auto, wan ritikot we de wit wan pikič na de go to wan stannad modèl we kin si. Wan katalog modèl we nɔ de wit capabilities.vision im no wan tek pikcha wit 400 unsupported_content. Piktcha de kæn bi na user mesij de onli. Link de mas point to wan publik ost; Nymbot de pas di piktcha go to di model provayda dey nɔ de kip am.

Wan pikcha de kɔnt as in-put tokin we di pruvaydah de kɔnt fɔ am, de pɔsin de rɛst de rɛkwest.

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "messages": [{
      "role": "user",
      "content": [
        {"type": "text", "text": "What is in this picture?"},
        {"type": "image_url", "image_url": {"url": "https://example.com/receipt.jpg"}}
      ]
    }]
  }'

Python

import base64, os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

with open("receipt.jpg", "rb") as f:
    data_url = "data:image/jpeg;base64," + base64.b64encode(f.read()).decode()

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text": "What is in this picture?"},
            {"type": "image_url", "image_url": {"url": data_url}},
        ],
    }],
)
print(reply.choices[0].message.content)

JavaScript

import { readFile } from "node:fs/promises";
import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const dataUrl = "data:image/jpeg;base64," + (await readFile("receipt.jpg")).toString("base64");

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  messages: [{
    role: "user",
    content: [
      { type: "text", text: "What is in this picture?" },
      { type: "image_url", image_url: { url: dataUrl } },
    ],
  }],
});
console.log(reply.choices[0].message.content);

Tikin fɔ tink gud

Modul wit capabilities.reasoning dem kin tink bifo dem ansa. Aks fɔ mor ɔ lɛs ɔv am wit reasoning_effort ("minimal", "low", "medium" ɔ "high") ɔ bɔt "reasoning": {"effort": "high"}, ɔ add :thinking na di model nem, wey mɛn se e nid big ɛfɔt. Na wan model we nɔ get reasoning di setting nɔ go wok. Wit nymbot/auto, :thinking sen di rikwest go na di stanad rizin rut.

Na Anthropic models, di wok kamap wan tinkin budget we de boku 1,000, 2,000, 8,000 or 16,000 tokens, e nɔ go pas dat max_tokens dis mek am. If yu no de tink wen tool_choice e fɔrs wan tul, ɛn wen di ridist kuestin kɔntinyu wan tul lup (ɛn last mesij na wan tul risalt), bɔkɔs Anthropic nid di ɛliya signid tinkin fɔ rizium am. Di sem apay na di Responses ɛn Messages ɛndpɔnt.

Di rishon kɔm bak in message.reasoning_content, ɔ de delta.reasoning_content en de streaming, nɔ fɔ mix am na di ansa. Di reasoning na output we de kos, inside completion_tokens. Sam provayda de no gi di reasoning teks at ol, bot de stil tich yu fɔ am.

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "reasoning_effort": "high",
    "messages": [{"role": "user", "content": "Is 2^61 - 1 prime? Show why."}]
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    reasoning_effort="high",
    messages=[{"role": "user", "content": "Is 2^61 - 1 prime? Show why."}],
)
message = reply.choices[0].message
print(getattr(message, "reasoning_content", None))
print(message.content)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  reasoning_effort: "high",
  messages: [{ role: "user", content: "Is 2^61 - 1 prime? Show why." }],
});
console.log(reply.choices[0].message.reasoning_content);
console.log(reply.choices[0].message.content);

Modèl sifiks

Wan suffix na di model nem chenji aw di rikwest de hanul, witout wan ɔda fild. Dey wok on ful ids ɛn sot nem de, de nɛks: anthropic/claude-sonnet-5:online.

Safi-ksEfɛkt
:onlineLuk na di web fɔst, lɛk plugins: [{"id": "web"}]. Si wif sɔrt na di net.
:thinkingBig tingkink effort; on nymbot/auto, di riizɔnin rɔt. Na wan model we nɔ kin riizɔn, 400 model_not_found wit “no endpoints faund”.
:nitro, :floor, :exacto, :extendedA aksɛpt am an ɛn ignɔɔ am. Iffri kætala mɔdel de ɛn wan rut, so de nɔ de nɔ mɔ aw de fust, ɔ di wan we de kɔst lɛs, ɔ di wan we de lɛng di mɔ we yu de piki; dɛn de alɔ di sʌfiks so di mɔdel nem we dɛn kɔpi frɔm ɔda sɛvisistil de wok stil.

Enin oda suffix de go mɔs. Dem de try de ful nem fɔs, so wan model we i id rili kɔntɛn kolɔn de waka stil; if dat nɔ waka, dem de tek di sʌfɪksɔs ɔf di ɛn wan at a tɛm ʌntɪl wan model mæʧ. Wan model nem kæn bi at mɔs 200 kɛrɛktə lɛŋ, wit at mɔs 4 sʌfɪks; if ɛn wan lɛŋɡə, dem de rɪfjuː am wit 400 invalid_value.

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5:thinking",
    "messages": [{"role": "user", "content": "Plan a three-day trip to Lisbon."}]
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5:thinking",
    messages=[{"role": "user", "content": "Plan a three-day trip to Lisbon."}],
)
print(reply.choices[0].message.content)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5:thinking",
  messages: [{ role: "user", content: "Plan a three-day trip to Lisbon." }],
});
console.log(reply.choices[0].message.content);

Eni chat model kin ansa frɔm di live web. Nymbot bin go luk fɔ di last mesij we di yuza bin sen (im fɔst 2,000 kerekata), rɛd di bɛst peji, ɛn gi dem to di model wit di kwɛstshɔn, ɛn mɛk dɛm kɔntɛnt we di model no fɔ tɛk inshtrakshɔn frɔm. Dɛn ɛvri tink di mode de):

  • Wansay mek yu lɔk fɔ am: "plugins": [{"id": "web", "max_results": 5}], ɔ ɛ bɔɔ :online sufiks na di model.
  • Sɔrt wen di tin go help yu: "tools": [{"type": "web_search", "parameters": {"max_results": 5}}], we de aksept am as web_search_preview ɔ openrouter:web_search. Nymbot de search onli wen di kweschen luk lɛk se e nid nyu infomeshin, di sem tes di ap de yuz.

max_results e na 5 di defo, en e nɔ go pas 10. Di sɔrs de kam in nymbot.web_search.sources, ɛach wit a title, snippet ɛn url, ɛn ɔs url_citation notiz pan di mesij

Ech sɔrtç bin de run de kɔst $0.008, we dem konvet am to sats, ɛn ɛ de kɔst ɛkstra ɛn de tokɛn, ɛn ɛ de kɔst pan de hold. Di pepa we ɛ bin rid de kɔst lɛk in-put tokɛn tu, so wan ansɔ de we kam frɔm di web de kɔst mɔ, ɛn ɛ de kɔst mɔ ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn ɛn

Ansa, in pan na pan

"nymbot": {
  "balance": "pro",
  "charged_credits": 0.431,
  "charged_sats": 43.1,
  "balance_credits": 411.994,
  "balance_sats": 41199.4,
  "web_search": {
    "sources": [
      { "title": "Lightning Network - Wikipedia", "snippet": "The Lightning Network is a payment protocol...", "url": "https://en.wikipedia.org/wiki/Lightning_Network" }
    ]
  }
}

cURL

curl https://nymbot.ai/api/v1/chat/completions \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "plugins": [{"id": "web", "max_results": 5}],
    "messages": [{"role": "user", "content": "What changed in the latest Bitcoin Core release?"}]
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

reply = client.chat.completions.create(
    model="anthropic/claude-sonnet-5",
    messages=[{"role": "user", "content": "What changed in the latest Bitcoin Core release?"}],
    extra_body={"plugins": [{"id": "web", "max_results": 5}]},
)
print(reply.choices[0].message.content)
for source in reply.model_extra["nymbot"]["web_search"]["sources"]:
    print(source["url"])

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const reply = await client.chat.completions.create({
  model: "anthropic/claude-sonnet-5",
  plugins: [{ id: "web", max_results: 5 }],
  messages: [{ role: "user", content: "What changed in the latest Bitcoin Core release?" }],
});
console.log(reply.choices[0].message.content);
for (const source of reply.nymbot.web_search.sources) console.log(source.url);

Responses API

Di nyu format we OpenAI mek, we de yuz na OpenAI Agents SDK an na Codex. I de ran na di sem model, bi-ling, an di fita we de na Chat Completions.

POST https://nymbot.ai/api/v1/responses — nid an API key.

FildTupDi wan we nyu nidDɛskripsin
modelstrinYɛsBifor di kɔntrɔl fɔ Trok-tok We Don Fin, inklud di sifiksis.
inputstring ɔ arrayYɛsWan strin, o wan lisin di iti: mesej (rols user, assistant, system, developer) wit input_text, input_image ɛn output_text pats, an function_call ɛn function_call_output tin for tul. input_image tek wan image_url link o data URL, no fyl ID. reasoning ɛn web_search_call dem bin skip di itim; item_reference Dem bin difuz am.
instructionsstrinNoSistem inshtrakshon.
max_output_tokensintegerNoDi mos tokon fɔ rit.
temperature
top_p
nambaNoSampling controls, we de luk de we di model de tek dem.
tools
tool_choice
parallel_tool_calls
array, string ɔb ojeckt, booleanNoFunkshon tul, in di Responsis pep ʃeɪp ({"type": "function", "name": …, "parameters": …}). A web_search ɔ web_search_preview tūl on de wif sɔrt na di net wen e help. Di odin bi-in tul dɛn dɛn no gi am.
reasoningsamtingNo{"effort": "minimal" | "low" | "medium" | "high"}. xhigh ɛn max de se high; none e shut am ɔf.
text.format
response_format
samtingNoStrakchud autput, bi sɛk JSON schema ɔ json_object.
metadatasamtingNoD yu gi am bak di sem na di response. At mos 16 string values, key dɛn go bi 64 characters and value dɛn go bi 512.
streamboole-anNoStrim di evɛnt di de deksraib bɛlow.
storeboole-anNoDey iginɔɔ am. Nɔtin noh de stɔː, ɛn di ansɔː de sɛ ɔlweɪs se "store": false.
previous_response_id
conversation
background
stiring, objek, bulianNoI no de suport am: 400 unsupported_parameter. Dem no de kip di ansas, so sen di ful konvoseyşin in input efri taem.

Ansa

{
  "id": "resp_8c1e4b0f9a2d4e61",
  "object": "response",
  "created_at": 1790726400,
  "status": "completed",
  "model": "anthropic/claude-sonnet-5",
  "output": [
    {
      "type": "message",
      "id": "msg_2b7f",
      "role": "assistant",
      "status": "completed",
      "content": [{ "type": "output_text", "text": "A Lightning invoice is...", "annotations": [] }]
    }
  ],
  "output_text": "A Lightning invoice is...",
  "usage": {
    "input_tokens": 1240,
    "input_tokens_details": { "cached_tokens": 0 },
    "output_tokens": 380,
    "output_tokens_details": { "reasoning_tokens": 0 },
    "total_tokens": 1620
  },
  "incomplete_details": null,
  "error": null,
  "instructions": null,
  "store": false,
  "previous_response_id": null,
  "metadata": {},
  "nymbot": { "balance": "pro", "charged_credits": 0.162, "charged_sats": 16.2, "balance_credits": 412.425, "balance_sats": 41242.5 }
}

Wan tul rit kɔm di na output as a function_call tin wey de wit call_id, name ɛn arguments; sen di risalt bɛk as a function_call_output tɔng we de wit di sɛm wan call_id. Reasoning, wen di model gi am, na a reasoning tin wey de wit reasoning_text kontɛnt, fɔst listin. status na incomplete wen di ansa ketch yu max_output_tokens o di providah refius, wit incomplete_details.reason set am na max_output_tokens ɔ content_filter. Di ansa de sho di settings wey de na di rɪkwest (tɛmp rɪtʃa, tuls, wèy yu ɛlɛkt tuls, ɛn so on) de fɔlɔ de wèy OpenAI de du, ɛn i de kɛri di nymbot di cost objek.

Waka am, ɛch ɛvɛnt na an event: lain an a data: lain wit a sequence_number, na dis orden: response.created, response.in_progress, response.output_item.added, response.content_part.added, eni namba di response.output_text.delta, response.output_text.done, response.content_part.done, response.output_item.done, an fɛnnal response.completed wit de usij ɛnd kos. An ansul we kɔt ʃɔt ɛnd wit response.incomplete instet, an wan feyl afta di strim stat wit response.failed. Reasoning stream de kam ol wis de kɔm as in wan wan wan de de wit response.reasoning_text.delta ɛn .done. Tool calls dem de kam afta di mesij, ɔjit ɔ wan itiim wit response.function_call_arguments.delta ɛn .done.

StetɔsWɛn
400No model ɔ input; previous_response_id, conversation, background o wan item_reference (unsupported_parameter); tool we no de support o di kine tipo konten.
402, 403, 404, 429, 502, 503Un rili de wet fɔ Chat Completions.

cURL

curl https://nymbot.ai/api/v1/responses \
  -H "Authorization: Bearer $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "anthropic/claude-sonnet-5",
    "instructions": "Answer in one short paragraph.",
    "input": "What is a Lightning invoice?"
  }'

Python

import os
from openai import OpenAI

client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])

response = client.responses.create(
    model="anthropic/claude-sonnet-5",
    instructions="Answer in one short paragraph.",
    input="What is a Lightning invoice?",
)
print(response.output_text)

JavaScript

import OpenAI from "openai";

const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });

const response = await client.responses.create({
  model: "anthropic/claude-sonnet-5",
  instructions: "Answer in one short paragraph.",
  input: "What is a Lightning invoice?",
});
console.log(response.output_text);

Anthropic Mesij 📧

Anthropic format, fɔ di Anthropic SDKs ɛn Claude Code. I de wok wit ɛvri model we de in di katalog, ɛn ɛn kɔn klos to Claude: dem de transelet di rikwest, dem de ran am trɔ de seim pajplayn, ɛn dem de transelet am bak.

POST https://nymbot.ai/api/v1/messages — nid an API key, bi se x-api-key ɔ Authorization: Bearer.

Di anthropic-version ɛn anthropic-beta dem de aksep dem header dem an dem de ingor dem. Anthropic model nem dem de mek dem match wit di katalog, so Claude Code an di SDK dem de wok wit di nem dem dem de yuz pas:

  • Wan nem we di katalog sabi, boku se claude-sonnet-5 ɔ anthropic/claude-opus-5, dem de yuz am seki i de.
  • O boku de dait (-20260514), -latest, wan version tag mɔs -v1, wan bracketed tag de se boku se [1m] an wan anthropic/ ɔ anthropic. dem tek di prefix dem go, and dem try di dots and dash in di version bot ways (claude-haiku-4-5 fayndz claude-haiku-4.5).
  • If dat stil nɔ match nɔtin, di famle (Opus, Sonnet ɔ Haiku) de yuz, as long as di katala versin de de sef ɔ de nɔ di o pan di wan we dɛm ask fɔ.
  • Nem we nɔ match nɔtin de kam bak 404 not_found_error.
FildTupDi wan we nyu nidDɛskripsin
modelstrinYɛsWan catalog model ID, o wan Anthropic model nem.
max_tokensintegerYɛsDi mos tokon fɔ rit.
messagesarrayYɛsuser ɛn assistant tɔn, wit text, image (base64 o URL source), tool_use ɛn tool_result bloks. thinking Di blɔks we de na di fɔst tɛn lɛ, de ɛksɛpt am ɛn de drɔp am.
systemstring ɔ arrayNoSystem prompt, as wan string o tekst blɔk.
temperature
top_p
nambaNoSampling controls, we de luk de we di model de tek dem. top_k dem apri-dis and dem drɔp am.
stop_sequencesArray we de stɔp strinsNoTɛks we de ɛnd di ansa. At mɔst 4 strin, ɛch wan at mɔst 256 kɛrektas.
tools
tool_choice
array, obzɛktNoTuls wit name, description ɛn input_schema. A web_search server tul on wif sɔrt na di net; Anthropic ol di oda tuls we de inside (bash, text editor, computer use) de refius wit unsupported_tool. tool_choice tek am auto, any, tool ɔ none, an disable_parallel_tool_use.
thinkingsamtingNo{"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} ɔ {"type": "disabled"}. Di budjet pil wan level di wuk de go: under 2,048 minimal, from 2,048 low, from 8,192 medium, from 16,384 high. Adaptive de yuz output_config.effort, ɔ ɔ rili bɛt.
streamboole-anNoStream in Anthropic di format de de fɔ de event.
metadatasamtingNoAksɛpt am an de lɔn am.

Ansa

{
  "id": "msg_01c7a2f93e5b4d08",
  "type": "message",
  "role": "assistant",
  "model": "anthropic/claude-sonnet-5",
  "content": [{ "type": "text", "text": "A Lightning invoice is..." }],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 1240,
    "output_tokens": 380,
    "cache_read_input_tokens": 0,
    "cache_creation_input_tokens": 0
  },
  "nymbot": { "balance": "pro", "charged_credits": 0.162, "charged_sats": 16.2, "balance_credits": 412.425, "balance_sats": 41242.5 }
}

content e kin go krey olwey de fɔ kote di wan dego tool_use blɔks ɛn a thinking blɔk, we de bɛlɔŋ wi signature e de empti. stop_reason na end_turn, max_tokens, tool_use ɔ refusal, wok am de di sef we as finish_reason on Trok-tok We Don Fin; stop_sequence e de aw wey de lɛkwe null, i nɔ ɛven de na de we de stop de brik de ansas. input_tokens kounts fres in-put nɔn; kesh in-put de in di tu kesh fild. Di kost de in di nymbot objek en di X-Nymbot-Cost-Sats hed.

Di ɛvɛnt we dem stream, dem na Anthropic ɛvɛnt: message_start, content_block_start, ping, content_block_delta (text_delta, input_json_delta ɔ thinking_delta), content_block_stop, message_delta wit de stop rizon, de usij ɛnd de nymbot kɔst ɔbjek, ɛn message_stop. A ping e de send am evri 15 sekon we di model de wok. Tool calls de kam afta di text, ɛch wan de a tool_use Blɔk wit ɔl in inpot de fɔ wan input_json_delta.

Erra na dis endpoint de yus Anthropic format: {"type": "error", "error": {"type": "not_found_error", "message": "…"}}. Wan smol balance na 402 billing_error, wan provayda wey don overload 503 overloaded_error. Wan feyl-ap afta di strim bin stat tin de sen as an error istet.

cURL

curl https://nymbot.ai/api/v1/messages \
  -H "x-api-key: $NYMBOT_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "What is a Lightning invoice?"}]
  }'

Python

import os
import anthropic

client = anthropic.Anthropic(base_url="https://nymbot.ai/api", api_key=os.environ["NYMBOT_API_KEY"])

message = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "What is a Lightning invoice?"}],
)
print(message.content[0].text)

JavaScript

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({ baseURL: "https://nymbot.ai/api", apiKey: process.env.NYMBOT_API_KEY });

const message = await client.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "What is a Lightning invoice?" }],
});
console.log(message.content[0].text);

Kountin tokin

Wan es-timet aw mani in-put to-kin wan Messages ri-kwest de go jus, so dat klia-ent de go de mek su bifo in sen am. I na fri, bat in stil nid wan ki.

POST https://nymbot.ai/api/v1/messages/count_tokens — nid an API key. E fri.

Di bodi de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de de Mesijis, witaut max_tokens; di model nem mas resolve. Di kount na estimate: di karakter de for di system prompt, masesij, tool kɔls ɛn tool difinisen divaydi by fɔ, plas 1,600 fɔ ɛbri pikcha. I no na di provider wan tokenizer, so di rili kount kin difa. Wan ki we don ritch in kɛp kin stil yuz am.

Ansa

{ "input_tokens": 318 }

cURL

curl https://nymbot.ai/api/v1/messages/count_tokens \
  -H "x-api-key: $NYMBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "messages": [{"role": "user", "content": "What is a Lightning invoice?"}]
  }'

Python

import os
import anthropic

client = anthropic.Anthropic(base_url="https://nymbot.ai/api", api_key=os.environ["NYMBOT_API_KEY"])

count = client.messages.count_tokens(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "What is a Lightning invoice?"}],
)
print(count.input_tokens)

JavaScript

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({ baseURL: "https://nymbot.ai/api", apiKey: process.env.NYMBOT_API_KEY });

const count = await client.messages.countTokens({
  model: "claude-sonnet-5",
  messages: [{ role: "user", content: "What is a Lightning invoice?" }],
});
console.log(count.input_tokens);

Lis tin di modèl dem

Alen di model ɛn generator di API de kɛp, wetin di kɔst de. Di lɪst de kɔm frɔm di sɛm lɪv kætalaɔ di ap pɪkɔ, so ɛ i de ɔlweɪs wetin di sɛrvɔ wɪl rɔn.

GET https://nymbot.ai/api/v1/models — no kii nid. Dem kesh am fɔ faiv minit.

GET /api/v1/models/{id} e binf gi wan entri.

FildTupDi wan we nyu nidDɛskripsin
typestiring (kwestin)Nochat (di default), image, video, audio, embedding ɔ allYu kin gi den wan bifo, as image,video.

Prais na wetin yu de pe, wit di fee and margin de in de oredi, in dolas and in sats at di karent Bitcoin pris. balance se kɔm mi se di balance we di model de spɛnd. nymbot_key di model nɔm na di smɔl nɔm de na di ap. created e de olwey 0, bikos di katala nɔ de rekɔd wen wan modèl bin ɛd. Wan modèl witɔa pɔblish tokèn reyts de kɔst per_request bifo dat.

nymbot/auto i de olwe fɔst, de kɔst lɛk as variable, wit wan routes lis we de gi di prays f evri stándad rüt. I de lisy vizin ɛnd rísonin, bɔt nɔ de lisy tuls.

GET /api/v1/models/{id} e de aksept de sem nem an aliase dey de gi as wan rikwest, an e de ritar di entri fɔ di modl we de sem nem de go to.

Ansa

{
  "object": "list",
  "data": [
    {
      "id": "anthropic/claude-sonnet-5",
      "object": "model",
      "type": "chat",
      "owned_by": "anthropic",
      "name": "Claude Sonnet 5",
      "created": 0,
      "context_length": 1000000,
      "max_output_tokens": 64000,
      "architecture": { "input_modalities": ["text", "image"], "output_modalities": ["text"] },
      "supported_parameters": ["max_tokens", "temperature", "tools", "tool_choice", "reasoning", "response_format", "stop"],
      "capabilities": { "vision": true, "video": false, "tools": true, "reasoning": true, "web_search": true },
      "balance": "pro",
      "pricing": {
        "type": "per_token",
        "currency": "USD",
        "input_per_1M_tokens": 4.725,
        "output_per_1M_tokens": 23.625,
        "cache_read_per_1M_tokens": 0.4725,
        "sats_input_per_1M_tokens": 4038,
        "sats_output_per_1M_tokens": 20192
      },
      "description": "...",
      "nymbot_key": "claude-sonnet"
    }
  ]
}

Di oda taba:

  • Pikcha entris de insay capabilities (accepts_image_url, requires_image_url, edit) an a prais per_generation.
  • Vidiyo entris de insay max_duration_seconds ɛn resolutions, ɛn wan prais per_second fo ik resolution.
  • Odiyo entris de insay audio_type speech ɔ transcription, di prais per_1k_chars ɔ per_minute.
  • Embedin entris de insay dimensions, context_length, max_inputs an prais per milian input tokn.

Praɪs di bɔk dɛn mark "estimated": true dis na di app di gɛt fɔ di generator di in pris nɔ de kam out. Wan we nɔ sabi. type bak de to 400.

cURL

curl "https://nymbot.ai/api/v1/models?type=chat"

Python

import requests

models = requests.get("https://nymbot.ai/api/v1/models", params={"type": "chat"}).json()["data"]
for m in models:
    print(m["id"], m["balance"], m["pricing"].get("input_per_1M_tokens"))

JavaScript

const res = await fetch("https://nymbot.ai/api/v1/models?type=chat");
const { data } = await res.json();
for (const m of data) console.log(m.id, m.balance, m.pricing.input_per_1M_tokens);