Konesans baz Devlopè
Chat, repons ak mesaj
Twa fason yo mande yon modèl yon bagay, nan twa fòma kliyan deja pale, tout kouri sou modèl yo menm ak factured nan menm fason.
Paj sa a se machin-tradui pou konvenyans. Orijinal angle a se vèsyon ki aplike a.
Chat konplètman
OpenAI chat fòma, ak youn nan prèske tout zouti sipòte. voye konvèsasyon an jodi a ak jwenn mesaj la pwochen tounen.
POST https://nymbot.ai/api/v1/chat/completions - ou bezwen yon kle API.
Se sèlman model epi messages se nesesè. Yon paramèt echantiyon ki modèl la chwazi pa pran se retire san yon erè, se konsa yon kò demann travay atravè modèl. Listi a modèl bay kat modèl la supported_parametersKi sa ki refize anvan kite se sa ki modèl la pa kapab fè anyen: imaj pou yon modèl ki pa ka wè, zouti pou yon modèl ki pa ka rele yo.
| Zòn | Ki jan | Rechèch | Deskripsyon |
|---|---|---|---|
model | String nan | Wi | nymbot/auto (Ou nan auto) pou routaj la nan Nymbot sou balans la estanda, oswa yon kataloji id modèl tankou anthropic/claude-sonnet-5 sou balans la Pro. Non koutim yo ak alias yo nan app a aksepte tou. Ki ka fini nan yon Sòti. |
messages | Rechèch | Wi | Konvèsasyon. Role system, developer (Travay kòm yon sistèm), user, assistant epi toolKontni se yon string oswa yon lis nan text epi image_url pati; imaj sèlman nan mesaj itilizatè. input_audio ak pati dosye yo refize. |
stream | Boulèt | pa | Tcheke repons la kòm li se ekri. wè Streaming nan. |
stream_options | Objè | pa | {"include_usage": true} ajoute yon ti kras final ak kantite token ak pri a. |
max_tokensmax_completion_tokens | Entegre | pa | Pifò token yo ekri. Baje nan maksimòm la nan modèl la si pi wo. Epitou mete kantite lajan ki te kenbe soti nan balans ou, se konsa yon nimewo ti bezwen mwens kredi yo kòmanse. |
temperaturetop_p | Nimewo | pa | Sampling kontwòl: temperature Soti nan 0 a 2, top_p Soti nan 0 a 1. |
stop | String oswa array | pa | Tèks ki fini repons la: yon string oswa maksimòm 4 string, chak nan maksimòm 256 karaktè. Pa itilize pa nymbot/auto. |
seed | Entegre | pa | Pou echantiyon repete, kote modèl la sipòte li. |
presence_penaltyfrequency_penalty | Nimewo | pa | Kòmanse kontwòl, chak soti nan -2 nan 2. |
response_format | Objè | pa | {"type": "json_object"} ou {"type": "json_schema", "json_schema": {…}}, kote modèl la sipòte li. Pa itilize pa nymbot/auto. |
toolstool_choiceparallel_tool_calls | array, string oswa objè, boolean | pa | fonksyon. wè Zouti nan apèla nan web_search Zouti yo nan Web rechèchNan maksimòm 128 zouti ak 512 KB definisyon, enkli nan maksimòm 64 nivo fondamantal; plis se yon 400. |
reasoning_effortreasoning | String, Objè | pa | "minimal", "low", "medium" ou "high"Ou se {"effort": "high"}. "none" ou {"enabled": false} Kòmanse li. wè rezonans. |
plugins | Rechèch | pa | [{"id": "web", "max_results": 5}] Toujou rechèch sou entènèt la an premye. Jiska 10 rezilta. |
n | Entegre | pa | Se sèlman 1. Tout lòt bagay retounen 400. |
logit_biasusermetadata | Objè, String, Objè | pa | Te aksepte epi pa voye sou. logit_bias kat nan maksimòm 300 id token nan nimewo soti nan -100 a 100; user se nan maksimòm 256 karaktè; metadata kenbe pou yon maksimòm de 16 valè string, kle pou jiska 64 karakter ak valè pou jiska 512. |
Yon repons se nòmal chat.completion, ak pri a nan usage.cost
(nan dola) ak nan nymbot Objè nan model se id modèl la rezoud, se konsa yon non kout vini tounen kòm yon sèl plen. Si modèl la rezonab anvan reponn, rezonab li se nan message.reasoning_contentSepare de repons la.
Reply
{
"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 se travay soti nan sa ki te tounen, depi founisè rapòte li diferan: tool_calls lè modèl la mande pou zouti, length lè repons la itilize tout token ki pèmèt (oswa modèl la te pase yo tout rezon ak ekri pa gen okenn repons), content_filter lè founisè a refize, ak stop
Se konsa. usage.completion_tokens_details.reasoning_tokens Toujou se 0: token rezon ki kache yo konsidere, ak chaje, nan completion_tokens.
| Status nan | Kòm |
|---|---|
400 | pa model ou messages (missing_required_parameter); yon pati odyo oswa dosye, oswa imaj pou yon modèl ki pa ka wè yo (unsupported_content); plis pase 20 foto (too_many_images); yon paramèt echantiyon nan kalite erè oswa soti nan jaden (invalid_value); yon lyen imaj ki pa piblik (invalid_image_url); zouti sou yon modèl ki pa ka rele yo (unsupported_tool); n plis pase 1; a :thinking suffiks sou yon modèl ki pa ka rezon (model_not_found); oswa founisè a refize demann la (upstream_rejected). |
402 | balans ki modèl la pase pa ka kouvri posesyon an. |
403 | Pifò ka pa koresponn ak cap la nan kle a (key_limit_reachedDapre max_tokens Èske ou ogmante cap la. |
404 | Pa gen yon modèl ak non sa a (model_not_found). |
429 | Limite lajan an nan kle a, oswa founisè a (upstream_rate_limited). |
502, 503 | Pwodwi pou Telefòn (upstream_error) oswa se overloaded (upstream_overloadedak Retry-After). Pa gen anyen se chaje san yo pa founisè a chaje pou eseye. |
Kòd estasyon pou chak aksyon Endpoint yo lis anba Erè.
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);
Streaming nan
ak "stream": true repons la rive kòm evènman te voye nan sèvè pandan y ap modèl la ekri li. Chak evènman se yon chat.completion.chunk se yon data: liy, ak flux la fini ak data: [DONE]rezon ki vini nan
delta.reasoning_contentYon repons nan delta.content.
Streame nenpòt ki bagay ki ka pran plis pase apeprè 100 segonn, tankou yon repons long, yon
max_tokens oswa yon modèl rezonans. Yon demann ki pa streame pa voye pa gen anyen jiskaske repons la se konplè, ak rezo a ant ou ak Nymbot ka fèmen yon koneksyon vye granmoun apre apeprè 100 segonn; modèl la toujou fini ak sa li ekri se chaje, men repons la se pèdi. Yon stream voye kenbe viv, se konsa li rete louvri pou tan ke modèl la ekri.
Stream nan
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]
- Liy kòmanse ak
:se kòmantè rete vivan, voye chak 15 segonn pandan y ap modèl la ap panse. Kliyan SSE pase yo. - Demann pou
"stream_options": {"include_usage": true}pou jwenn dènye ti kras la pi wo a, ak yonchoices, token kontan, pri a aknymbotObjè nan - Karaktè a sove apre kouri a fini. Si ou fèmen koneksyon an byen bonè, modèl la se pa sispann: Nymbot li resan nan kouri a nan founisè a, pou jiska 25 segonn, pou jwenn kantite token li yo, epi ou peye sa ki founisè a rapòte. San yo pa kantite sa a, chaj la se estime soti nan antrepriz ou ak sa ki te ekri, plis tout adisyon a pwodiksyon pou yon modèl ki rezon.
- Yon erè anvan premye chunk, tankou
401ou402, vin tounen kòm JSON nòmal ak kòd estati li yo, pa kòm yon flux. Yon erè apre flux la te kòmanse rive kòm yon dènyedata: {"error": {…}}evènman, ak flux la fini san yo pa[DONE]. - Rechèch ak zouti, ak modèl sou OpenAI responses transpò, pa kouri soti nan founisè a. Yo toujou reponn ak yon kouri valab, voye yon fwa repons la se konplè.
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);
}
Zouti nan apèl
Deskripsyon fonksyon nan tools ak modèl la ka mande pou yon sèl yo dwe rele olye pou reponn. Ou kouri fonksyon an, ajoute rezilta li kòm yon tool Mesaj nan menm
tool_call_idNymbot pa janm kouri fonksyon ou; li pase demann la nan modèl la tounen nan ou.
tool_choice Tèm "auto", "none",
"required" ou {"type": "function", "function": {"name": "…"}}List la modèl montre ki modèl yo ka rele zouti (capabilities.tools) Zouti yo se refize ak 400 unsupported_tool nan nymbot/auto ak sou kèk modèl kataloz ki kouri sou OpenAI la Responses transpò, ki Nymbot pa ka pase zouti nan.
ak "stream": true, yon demann ak zouti kouri nan yon sèl pati ak Lè sa a, li te voye kòm yon seri chunk nòmal: wòl la, yon chunk ki pote chak apèl zouti ak indeks li yo, id, non ak argòm yo, ak chunk nan fini. Kliyan ki li apèl zouti streamed sove li kòm nòmalman.
Reply nan pati nan
"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);
Foto nan yon demann
Modèl ak capabilities.vision ka li imaj. Ajoute yon image_url
nan yon mesaj itilizatè, ak tou de yon piblik https:// Lyen oswa a
data:image/…;base64, URL. Jiska 20 imaj pou chak demann. imaj SVG yo refize, epi li se tou yon lyen ki gen plis pase 4096 karaktè oswa youn ak yon non itilizatè oswa senp nan li (400 invalid_image_url) Yon opsyon detail se
auto, low ou high.
ak nymbot/auto, yon demann ak yon imaj nan li se route nan yon modèl estanda ki ka wè. Yon modèl katalog san yo pa capabilities.vision Refuse foto ak
400 unsupported_content. imaj ka sèlman nan mesaj itilizatè. Yon lyen dwe peze nan yon òdinatè piblik; Nymbot pase imaj la nan founisè modèl la ak pa kenbe li.
Yon imaj se chaje kòm token antrepriz yo ki founisè a konsidere pou li, tankou lòt moun nan demann la.
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);
Rechèch
Modèl ak capabilities.reasoning ka panse anvan yo reponn. mande pou plis oswa mwens nan li ak reasoning_effort ("minimal", "low",
"medium" ou "high") oswa "reasoning": {"effort": "high"}Ou ajoute :thinking nan non modèl la, ki vle di efò segondè. Sou yon modèl san yo pa rezonab, anviwònman an se ignoré. Avèk nymbot/auto, :thinking voye demann la nan wout la rezonans estanda.
Sou modèl Anthropic efò devlope yon budgèt panse nan apeprè 1,000, 2,000, 8,000 oswa 16,000 token, pa janm plis pase max_tokens pèmèt. Pwensipal la se kite lè
tool_choice force yon zouti, ak lè demand la kontinye yon loop zouti (si dènye mesaj li yo se yon rezilta zouti), paske Anthropic bezwen panse anvan an sigare pou retabli li. Epitou sa a aplike sou repons ak Mesaj Endpoints.
Refleksyon an ap vini tounen nan message.reasoning_contentOu se
delta.reasoning_content lè streaming, pa janm blese nan repons la. Reasoning se pwodiksyon ak se chaje kòm sa, nan completion_tokensYon kèk founisè pa retire tèks la rezonabl nan tout, epi li se toujou chaje.
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 suffixes
Yon suffiks sou non modèl la chanje ki jan demann la se trete, san yon lòt jaden. Yo travay sou id plen ak nimewo kout menm jan an, tankou nan anthropic/claude-sonnet-5:online.
| Sòti | Efè |
|---|---|
:online | Rechèch sou entènèt la an premye, tankou plugins: [{"id": "web"}]Li nan Web rechèch. |
:thinking | segondè efò rezonans; sou nymbot/autosou yon modèl ki pa ka rezon, 400 model_not_found ak “no endpoints found”. |
:nitro, :floor, :exacto, :extended | Tout modèl kataloz gen yon sèl wout, se konsa pa gen okenn pi vit, pi bon mache oswa pi long yo chwazi; suffiks yo pèmèt konsa non modèl kopye soti nan lòt sèvis toujou ap travay. |
Nenpòt lòt suffiks yo ignore. Tout non an se eseye premye, se konsa yon modèl ki id li gen reyèlman gen yon kolòn toujou ap travay; san yo pa sa, suffiks yo retire soti nan fen an youn nan yon fwa jiskaske yon modèl koresponn. Yon non modèl ka gen maksimòm 200 karakter long ak maksimòm 4 suffiks; yon pi long se refize ak 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);
Web rechèch
Nenpòt modèl chat ka reponn soti nan entènèt la viv. Nymbot ap chèche pou dènye mesaj itilizatè a (premye 2,000 karaktè li yo), li paj yo pi byen ak bay yo nan modèl la ak kesyon an, etidye kòm kontni deyò modèl la pa ta dwe pran enstriksyon soti nan. Gen de mòd:
- Toujou rechèch:
"plugins": [{"id": "web", "max_results": 5}]Ou se yon:onlinesuffix sou modèl la. - Rechèch lè li ede:
"tools": [{"type": "web_search", "parameters": {"max_results": 5}}]Epitou aksepte kòmweb_search_previewouopenrouter:web_searchNymbot ap chèche sèlman lè kesyon an sanble li bezwen enfòmasyon aktyèl, menm tès la ki itilize pa app a.
max_results se 5 pa default ak nan maksimòm 10. Sòti yo vini tounen nan
nymbot.web_search.sourcesTout moun ak yon title, snippet epi
urlEpi kòm url_citation Anotasyon sou mesaj la.
Tout rechèch ki kouri koute $ 0.008, konvèti nan sats, sou tèt la nan token yo, epi li se yon pati nan depo a. Paj sa yo li li yo token envantè tou, se konsa yon repons soti nan entènèt la koute plis pase menm kesyon an te mande cho, pafwa plizyè fwa plis.
Reply nan pati nan
"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);
Reply nan API
Yon fòma pi nouvo nan OpenAI, ki itilize pa OpenAI Agents SDK ak pa Codex. Li kouri sou modèl yo menm, faktirasyon ak karakteristik tankou Chat Konplètman.
POST https://nymbot.ai/api/v1/responses - ou bezwen yon kle API.
| Zòn | Ki jan | Rechèch | Deskripsyon |
|---|---|---|---|
model | String nan | Wi | Pou Chat konplètman, suffixes yo enkli. |
input | String oswa array | Wi | Yon strè, oswa yon lis eleman: mesaj (roles user, assistant, system, developer) ak input_text, input_image epi output_text pati yo, ak function_call epi function_call_output Item pou zouti. input_image pran yon image_url lyen oswa done URL, pa yon id dosye. reasoning epi web_search_call Item yo se skippe; item_reference Li te refize. |
instructions | String nan | pa | Sistèm enstriksyon |
max_output_tokens | Entegre | pa | Pifò token yo ekri. |
temperaturetop_p | Nimewo | pa | Sampling kontwòl, kote modèl la pran yo. |
toolstool_choiceparallel_tool_calls | array, string oswa objè, boolean | pa | Zouti fonksyon, nan fòm Responses ({"type": "function", "name": …, "parameters": …}a) nan web_search ou web_search_preview Zouti yo nan Web rechèch lè li ede. Yon lòt zouti entegre yo refize. |
reasoning | Objè | pa | {"effort": "minimal" | "low" | "medium" | "high"}. xhigh epi max vle di high; none Kòmanse nan. |
text.formatresponse_format | Objè | pa | Structured pwodiksyon, kòm yon skèm JSON oswa json_object. |
metadata | Objè | pa | Retourne san chanjman nan repons la. Nan maksimòm 16 valè string, kle jiska 64 karaktè ak valè jiska 512. |
stream | Boulèt | pa | Stream evènman kòm deskripsyon ki anba a. |
store | Boulèt | pa | Ignore. Pa gen anyen anbake, ak repons la toujou di "store": false. |
previous_response_idconversationbackground | String, Objè ak Boolean | pa | Pa sipòte nan: 400 unsupported_parameterRepons yo pa sove, se konsa voye konvèsasyon an nan input Tout tan. |
Reply
{
"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 }
}
Yon demann zouti ap parèt nan output kòm a function_call Item nan
call_id, name epi arguments; voye rezilta a kòm yon
function_call_output Item ak menm bagay call_idrezonans, lè modèl la retire li, se yon reasoning Item nan reasoning_text kontni, ki enskri premye. status se incomplete Lè repons la koute
max_output_tokens Ofisye a refize, ak
incomplete_details.reason Pwodwi pou max_output_tokens ou
content_filterRespon a tou echanje anviwònman an nan demann la (temperatur, zouti, chwa zouti, elatriye) kòm OpenAI a fè, ak pote nan nymbot Objè nan pri.
Streamed, chak evènman se yon event: liy ak a data: Liy ak a
sequence_numberNan lòd sa a: response.created,
response.in_progress, response.output_item.added,
response.content_part.addedNenpòt nimewo nan response.output_text.delta,
response.output_text.done, response.content_part.done,
response.output_item.doneEpi finalman response.completed ak itilizasyon ak pri. Yon repons koupe nan fen kout ak response.incomplete anviwònman an, ak yon erè apre flux la te kòmanse ak response.failedReasoning streams kòm atik pwòp li yo ak response.reasoning_text.delta epi .doneZouti apèl vini apre mesaj la, chak kòm yon atik ak response.function_call_arguments.delta
epi .done.
| Status nan | Kòm |
|---|---|
400 | pa model ou input; previous_response_id, conversation, background Ou yon item_reference (unsupported_parameter); yon zouti oswa kalite kontni ki pa sipòte. |
402, 403, 404, 429, 502, 503 | Kòm pou konplètman chat. |
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);
Mesaj Antropik
Format nan Anthropic, pou SDKs nan Anthropic ak Claude Kòd. Li travay ak tout modèl nan kataloz la, pa sèlman Claude: demann an se tradui, kouri nan menm tiyo a, ak tradui tounen.
POST https://nymbot.ai/api/v1/messages — bezwen yon kle API, tankou x-api-key ou Authorization: Bearer.
nan anthropic-version epi anthropic-beta anthropic modèl non yo koresponn ak kataloz la, se konsa Claude Code ak SDKs travay ak non yo ki deja itilize:
- Yon non catalogue konnen, tankou
claude-sonnet-5ouanthropic/claude-opus-5Li se itilize kòm li se. - Nan yon dat (
-20260514),-latest, yon vèsyon tag tankou-v1, yon tag bracketed tankou[1m]Yonanthropic/ouanthropic.se prefiks yo retire, ak pwen ak dash nan vèsyon an ap eseye tou de fason (claude-haiku-4-5Rezoclaude-haiku-4.5). - Si sa a toujou pa koresponn ak anyen, se fanmi an (Opus, Sonnet oswa Haiku) itilize, si vèsyon an nan kataloz la se menm oswa pi nouvo pase vèsyon an mande pou.
- Yon non ki koresponn ak pa gen anyen retire
404not_found_error.
| Zòn | Ki jan | Rechèch | Deskripsyon |
|---|---|---|---|
model | String nan | Wi | Yon kataloji id modèl, oswa yon non modèl Anthropic. |
max_tokens | Entegre | Wi | Pifò token yo ekri. |
messages | Rechèch | Wi | user epi assistant Kòmanse, ak text, image (base64 oswa sous URL), tool_use epi tool_result Blòk nan thinking blòk soti nan ranje anvan yo aksepte ak retire. |
system | String oswa array | pa | Sistèm prompt, kòm yon string oswa blòk tèks. |
temperaturetop_p | Nimewo | pa | Sampling kontwòl, kote modèl la pran yo. top_k Li te aksepte ak dekouvri. |
stop_sequences | Pwodwi pou Strings | pa | Tèks ki fini repons la. Nan maksimòm 4 seri, chak nan maksimòm 256 karaktè. |
toolstool_choice | Objè nan | pa | Zouti ak name, description epi input_schemaa nan web_search Zouti nan sèvè se sou Web rechèch; Antropic lòt zouti entegre (bash, editè tèks, itilizasyon òdinatè) se refize ak unsupported_tool. tool_choice Tèm auto, any, tool ou noneE disable_parallel_tool_use. |
thinking | Objè | pa | {"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} ou {"type": "disabled"}Budjè a chwazi yon nivo efò: anba 2.048 minimòm, soti nan 2.048 ki ba, soti nan 8.192 mwayèn, soti nan 16.384 segondè. output_config.effortOu nan segondè. |
stream | Boulèt | pa | Stream nan fòma evènman an nan Anthropic. |
metadata | Objè | pa | Te aksepte ak ignore. |
Reply
{
"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 Epitou ka kenbe tool_use Blòk ak a thinking
Blòk, ki nan signature Li se san danje. stop_reason se
end_turn, max_tokens, tool_use ou refusal, travay nan menm fason ki jan finish_reason nan
Chat konplètman; stop_sequence Toujou
null, menm lè yon seri stop fini repons la. input_tokens se sèlman entwodiksyon nouvo konsidere; entwodiksyon cache se nan de jaden cache yo. Kou a se nan
nymbot Objè a ak X-Nymbot-Cost-Sats nan header.
Streamed, evènman yo se nan Anthropic: message_start,
content_block_start, ping, content_block_delta
(text_delta, input_json_delta ou thinking_delta),
content_block_stop, message_delta pa gen okenn rezon, itilize ak nymbot Objè pri, ak message_stopa nan ping se tou voye chak 15 segonn pandan ke modèl la ap travay. Atik apèl rive apre tèks la, chak kòm yon
tool_use blòk ak tout entwodiksyon li nan yon sèl input_json_delta.
Errors sou endpoint sa a sèvi ak fòma nan Anthropic:
{"type": "error", "error": {"type": "not_found_error", "message": "…"}}Yon balans kout se 402 billing_error, yon founisè souflè
503 overloaded_errorYon erè apre yo te kòmanse flux la se voye kòm yon error Evènman nan.
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);
Konte token
Yon estime nan kantite token envantè ki pral itilize nan yon demann Mesaj, se konsa yon kliyan ka tcheke anvan li voye. Li se gratis, men toujou bezwen yon kle.
POST https://nymbot.ai/api/v1/messages/count_tokens — bezwen yon kle API. gratis.
se kò a menm jan an pou MesajPa gen max_tokens; non modèl la dwe rezoud. Konte a se yon estime: karaktè yo nan pwopòsyon sistèm la, mesaj, apèl zouti ak definisyon zouti divize pa kat, plis 1,600 pou chak imaj. Li pa tokenizer pwòp yo nan founisè a, se konsa konte reyèl la ka diferan. Yon kle ki te rive nan cap li yo kapab toujou sèvi ak li.
Reply
{ "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);
Modèl lis
Tout modèl ak jeneratè ki aksepte API a, ak sa ki koute li. Listi a se li soti nan kataloz la menm viv kòm piksèl la nan app a, se konsa li toujou sa ki sèvè a pral kouri.
GET https://nymbot.ai/api/v1/models — pa gen okenn kle nesesè. Kite pou senk minit.
GET /api/v1/models/{id} Retourne yon sèl antre.
| Zòn | Ki jan | Rechèch | Deskripsyon |
|---|---|---|---|
type | Règleman nan (Query) | pa | chat (pou yon defèt) image, video, audio, embedding ou all. plizyè ka bay, kòm image,video. |
Pri yo se sa ou peye, ak frè a ak marje deja nan, nan dola ak nan sats nan pri a kounye a Bitcoin. balance di ki balanse ki modèl la chanje.
nymbot_key se non an kout nan modèl la nan app la. created se toujou 0, paske kataloz la pa anrejistre lè yon modèl te ajoute. Yon modèl ki pa te pibliye pri a se pri per_request pito.
nymbot/auto se toujou premye, pri kòm variableak yon
routes lis ki bay pousantaj yo nan chak wout estanda. Li lis vizyon ak rezonans, men pa zouti.
GET /api/v1/models/{id} aksepte yo menm non ak alias yo kòm yon demann, ak retire enskripsyon an pou modèl la yo resous nan.
Reply
{
"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"
}
]
}
Tout lòt kalite:
- imaj entèdi yo
capabilities(accepts_image_url,requires_image_url,edit) ak yon priper_generation. - Videyo entèdi yo
max_duration_secondsepiresolutionsEpi yon priper_secondPou chak rezolisyon. - Audio nan entèdi yo
audio_typespeechoutranscriptionPri yoper_1k_charsouper_minute. - Pwodwi entèdi yo
dimensions,context_length,max_inputsEpitou yon pri pou chak milyon token antrepriz.
Pwodwi pou Telefòn "estimated": true se estime a nan app a pou yon jeneratè ki pri a se pa pibliye. Yon type Retounen 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);