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.
Dɛn translet dis pej wit mashin fɔ mek i izi fɔ am. Di Inglish ɔrijinal na di vɛshɔn we de aplay.
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.
| Fild | Tup | Di wan we nyu nid | Dɛskripsin |
|---|---|---|---|
model | strin | Yɛs | nymbot/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. |
messages | array | Yɛs | Di 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. |
stream | boole-an | No | Sen di ansa de as i rait am. Luk stinim de frow di tivishon/manyak 📺. |
stream_options | samting | No | {"include_usage": true} it add wan finel bit wit di token count na ɛnd ɛ bɔt di kɔst. |
max_tokensmax_completion_tokens | integer | No | Di 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. |
temperaturetop_p | namba | No | Sempel konshrol: temperature frɔm 0 to 2, top_p fom 0 go 1. |
stop | string ɔ array | No | Tɛ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. |
seed | integer | No | Fɔ di sampling we de ririta, we di model de sapot am. |
presence_penaltyfrequency_penalty | namba | No | Repetisen kon-trol, di wan de -2 go 2. |
response_format | samting | No | {"type": "json_object"} ɔ {"type": "json_schema", "json_schema": {…}}, wey de model de sapot am. No de yuz by nymbot/auto. |
toolstool_choiceparallel_tool_calls | array, string ɔb ojeckt, boolean | No | Fankshon 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_effortreasoning | stirin, objek | No | "minimal", "low", "medium" ɔ "high", ɔ de {"effort": "high"}. "none" ɔ {"enabled": false} e pan am off. Luk tin-tin fɔ tink gud. |
plugins | array | No | [{"id": "web", "max_results": 5}] e de lɔk fɔ ɔn di wep fɔs ɔlweys. Up to 10 rɪzɔlt. |
n | integer | No | Oli wan. Anin tings de fɔ fɔ kam bɔk 400. |
logit_biasusermetadata | obzɛkt, strin, obzɛkt | No | Dem 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ɔs | Wɛn |
|---|---|
400 | No 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). |
402 | Di balance we di model de spend nɔ go ɛnɔ kɔvɛ di hold. |
403 | Di bɔs kays di nɔ fit di ki kɛp (key_limit_reached). Lowa max_tokens o ris di kap. |
404 | No model de wit dat nem (model_not_found). |
429 | Di key rate limit, o di provider rate limit (upstream_rate_limited). |
502, 503 | Di 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 ɛmtichoices, di token kont, di kos an dinymbotobjek. - 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 lastdata: {"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-ks | Efɛkt |
|---|---|
:online | Luk na di web fɔst, lɛk plugins: [{"id": "web"}]. Si wif sɔrt na di net. |
:thinking | Big 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, :extended | A 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);
Wéb sēch
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ɔɔ:onlinesufiks na di model. - Sɔrt wen di tin go help yu:
"tools": [{"type": "web_search", "parameters": {"max_results": 5}}], we de aksept am asweb_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.
| Fild | Tup | Di wan we nyu nid | Dɛskripsin |
|---|---|---|---|
model | strin | Yɛs | Bifor di kɔntrɔl fɔ Trok-tok We Don Fin, inklud di sifiksis. |
input | string ɔ array | Yɛs | Wan 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. |
instructions | strin | No | Sistem inshtrakshon. |
max_output_tokens | integer | No | Di mos tokon fɔ rit. |
temperaturetop_p | namba | No | Sampling controls, we de luk de we di model de tek dem. |
toolstool_choiceparallel_tool_calls | array, string ɔb ojeckt, boolean | No | Funkshon 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. |
reasoning | samting | No | {"effort": "minimal" | "low" | "medium" | "high"}. xhigh ɛn max de se high; none e shut am ɔf. |
text.formatresponse_format | samting | No | Strakchud autput, bi sɛk JSON schema ɔ json_object. |
metadata | samting | No | D 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. |
stream | boole-an | No | Strim di evɛnt di de deksraib bɛlow. |
store | boole-an | No | Dey iginɔɔ am. Nɔtin noh de stɔː, ɛn di ansɔː de sɛ ɔlweɪs se "store": false. |
previous_response_idconversationbackground | stiring, objek, bulian | No | I 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ɔs | Wɛn |
|---|---|
400 | No 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, 503 | Un 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 wananthropic/ɔanthropic.dem tek di prefix dem go, and dem try di dots and dash in di version bot ways (claude-haiku-4-5fayndzclaude-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
404not_found_error.
| Fild | Tup | Di wan we nyu nid | Dɛskripsin |
|---|---|---|---|
model | strin | Yɛs | Wan catalog model ID, o wan Anthropic model nem. |
max_tokens | integer | Yɛs | Di mos tokon fɔ rit. |
messages | array | Yɛs | user ɛ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. |
system | string ɔ array | No | System prompt, as wan string o tekst blɔk. |
temperaturetop_p | namba | No | Sampling controls, we de luk de we di model de tek dem. top_k dem apri-dis and dem drɔp am. |
stop_sequences | Array we de stɔp strins | No | Tɛks we de ɛnd di ansa. At mɔst 4 strin, ɛch wan at mɔst 256 kɛrektas. |
toolstool_choice | array, obzɛkt | No | Tuls 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. |
thinking | samting | No | {"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. |
stream | boole-an | No | Stream in Anthropic di format de de fɔ de event. |
metadata | samting | No | Aksɛ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.
| Fild | Tup | Di wan we nyu nid | Dɛskripsin |
|---|---|---|---|
type | stiring (kwestin) | No | chat (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 praisper_generation. - Vidiyo entris de insay
max_duration_secondsɛnresolutions, ɛn wan praisper_secondfo ik resolution. - Odiyo entris de insay
audio_typespeechɔtranscription, di praisper_1k_charsɔper_minute. - Embedin entris de insay
dimensions,context_length,max_inputsan 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);