Ale nan kontni an
Retounen nan Nymbot

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.

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ònKi janRechèchDeskripsyon
modelString nanWinymbot/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.
messagesRechèchWiKonvè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.
streamBoulètpaTcheke repons la kòm li se ekri. wè Streaming nan.
stream_optionsObjèpa{"include_usage": true} ajoute yon ti kras final ak kantite token ak pri a.
max_tokens
max_completion_tokens
EntegrepaPifò 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.
temperature
top_p
NimewopaSampling kontwòl: temperature Soti nan 0 a 2, top_p Soti nan 0 a 1.
stopString oswa arraypaTèks ki fini repons la: yon string oswa maksimòm 4 string, chak nan maksimòm 256 karaktè. Pa itilize pa nymbot/auto.
seedEntegrepaPou echantiyon repete, kote modèl la sipòte li.
presence_penalty
frequency_penalty
NimewopaKòmanse kontwòl, chak soti nan -2 nan 2.
response_formatObjèpa{"type": "json_object"} ou {"type": "json_schema", "json_schema": {…}}, kote modèl la sipòte li. Pa itilize pa nymbot/auto.
tools
tool_choice
parallel_tool_calls
array, string oswa objè, booleanpafonksyon. 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_effort
reasoning
String, Objèpa"minimal", "low", "medium" ou "high"Ou se {"effort": "high"}. "none" ou {"enabled": false} Kòmanse li. wè rezonans.
pluginsRechèchpa[{"id": "web", "max_results": 5}] Toujou rechèch sou entènèt la an premye. Jiska 10 rezilta.
nEntegrepaSe sèlman 1. Tout lòt bagay retounen 400.
logit_bias
user
metadata
Objè, String, ObjèpaTe 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 nanKòm
400pa 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).
402balans ki modèl la pase pa ka kouvri posesyon an.
403Pifò ka pa koresponn ak cap la nan kle a (key_limit_reachedDapre max_tokens Èske ou ogmante cap la.
404Pa gen yon modèl ak non sa a (model_not_found).
429Limite lajan an nan kle a, oswa founisè a (upstream_rate_limited).
502, 503Pwodwi 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 yon choices, token kontan, pri a ak nymbot Objè 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 401 ou 402, 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ènye data: {"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òtiEfè
:onlineRechèch sou entènèt la an premye, tankou plugins: [{"id": "web"}]Li nan Web rechèch.
:thinkingsegondè efò rezonans; sou nymbot/autosou yon modèl ki pa ka rezon, 400 model_not_found ak “no endpoints found”.
:nitro, :floor, :exacto, :extendedTout 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);

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 :online suffix sou modèl la.
  • Rechèch lè li ede: "tools": [{"type": "web_search", "parameters": {"max_results": 5}}]Epitou aksepte kòm web_search_preview ou openrouter: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ònKi janRechèchDeskripsyon
modelString nanWiPou Chat konplètman, suffixes yo enkli.
inputString oswa arrayWiYon 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.
instructionsString nanpaSistèm enstriksyon
max_output_tokensEntegrepaPifò token yo ekri.
temperature
top_p
NimewopaSampling kontwòl, kote modèl la pran yo.
tools
tool_choice
parallel_tool_calls
array, string oswa objè, booleanpaZouti 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.
reasoningObjèpa{"effort": "minimal" | "low" | "medium" | "high"}. xhigh epi max vle di high; none Kòmanse nan.
text.format
response_format
ObjèpaStructured pwodiksyon, kòm yon skèm JSON oswa json_object.
metadataObjèpaRetourne san chanjman nan repons la. Nan maksimòm 16 valè string, kle jiska 64 karaktè ak valè jiska 512.
streamBoulètpaStream evènman kòm deskripsyon ki anba a.
storeBoulètpaIgnore. Pa gen anyen anbake, ak repons la toujou di "store": false.
previous_response_id
conversation
background
String, Objè ak BooleanpaPa 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 nanKòm
400pa 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, 503Kò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-5 ou anthropic/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] Yon anthropic/ ou anthropic. se prefiks yo retire, ak pwen ak dash nan vèsyon an ap eseye tou de fason (claude-haiku-4-5 Rezo claude-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 404 not_found_error.
ZònKi janRechèchDeskripsyon
modelString nanWiYon kataloji id modèl, oswa yon non modèl Anthropic.
max_tokensEntegreWiPifò token yo ekri.
messagesRechèchWiuser 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.
systemString oswa arraypaSistèm prompt, kòm yon string oswa blòk tèks.
temperature
top_p
NimewopaSampling kontwòl, kote modèl la pran yo. top_k Li te aksepte ak dekouvri.
stop_sequencesPwodwi pou StringspaTèks ki fini repons la. Nan maksimòm 4 seri, chak nan maksimòm 256 karaktè.
tools
tool_choice
Objè nanpaZouti 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.
thinkingObjè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è.
streamBoulètpaStream nan fòma evènman an nan Anthropic.
metadataObjèpaTe 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ònKi janRechèchDeskripsyon
typeRègleman nan (Query)pachat (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 pri per_generation.
  • Videyo entèdi yo max_duration_seconds epi resolutionsEpi yon pri per_second Pou chak rezolisyon.
  • Audio nan entèdi yo audio_type speech ou transcriptionPri yo per_1k_chars ou per_minute.
  • Pwodwi entèdi yo dimensions, context_length, max_inputs Epitou 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);