Skip nav naverokê
Vegere Nymbot

Bingeha zanînê Dizayner/Pêşveber

Sohbet, Bersiv û Peyaman

Sê rê hene ji modele tiştekî bipirsîn, di sê formata ku mişteriyan bi wan diaxivin de, hemû li ser heman modelan dixebitin û bi heman awayî tên cudakirin.

Temamkirinên Chatê

Formata sohbetê ya OpenAI, û ew yekê ku heman amûrên herêmî piştevaniya wê dikin. Hevpeyvîna heta niha bişîne û peyama bê ya nû werin girtin.

POST https://nymbot.ai/api/v1/chat/completions — pêdivî bi API keyekî heye.

Tenê model û messages pêdivî ye. Parametreyekekî nimûnegerî ku modelê hatiye hilbijartin naxwaze bêyî heteyekê tê daxistin, ji ber vê yekê yek bedelê daxwazê (request body) li ser modelan dixebite. Lîsteya modelan her modelekê dide supported_parametersTiştê ku li şûna berdanê tê redkirin, her tişt e ku model naxwaze bike: wêne ji bo modeleke ku nikare bibîne, amûr ji bo modeleke ku nikare wan bixe tevger.

ZevîTîpPêwîst eWate
modeltîrêjErênymbot/auto (an auto) ji bo rêweriya Nymbot'ê li ser hejmara standard, an jî ID-ya modela katalogê wek mînak anthropic/claude-sonnet-5 li ser hevsengiya Pro. Navên kurt û navên nîşanî yên aplikasyonê jî tên qebûlkirin. Dikare bi a biqede. paşgir.
messagesarrayErêHevpeyvîn. Role system, developer (wekî pergal wergirte), user, assistant û toolNaverok rêz (string) an jî dîmenek (list) ji text û image_url perçeyan; tenê wêneyên di peyamên bikaran de ne. input_audio û parçeyên fîlan têne redkirin.
streambooleanNaBersivê wekî ku hatiye nivîsandin bişîne. Binêre streaming.
stream_optionsobjektNa{"include_usage": true} pêşveçûnek dawî bi hejmara tokenan û bi maliyetê lê zêde dike.
max_tokens
max_completion_tokens
hejmarê tamNaHerî zêde token ji bo nivîsandinê. Heke zêdetir be, tê avêtin ser asta herî mezin a modelê. Her wiha diyar dike ka ji bilansta te çiqas tê ragirtin, lewma hejmarekî piçûk ji bo destpêkirinê kêm kredî dixwaze.
temperature
top_p
hejmarNaKontrolên berfirehkirinê: temperature ji 0 heta 2, top_p ji 0 heta 1.
stoptêgeh (string) an rêz (array)NaTekstê ku bersiv diqête: rêzeke tîpan an jî herî kêm 4 rêzên tîpan, ku her yek herî kêm 256 karakter in. Ji aliyê ne were bikaranîn nymbot/auto.
seedhejmarê tamNaJi bo pejirandina dubare, li wir ku model piştgiriyê dide wê.
presence_penalty
frequency_penalty
hejmarNaKontrolên dubarekirinê, her yek ji -2 heta 2.
response_formatobjektNa{"type": "json_object"} an {"type": "json_schema", "json_schema": {…}}, li cihên ku model piştgiriyê dide wê. Ne ji aliyê ... ve tê bikaranîn nymbot/auto.
tools
tool_choice
parallel_tool_calls
array, string an object, booleanNaBangkirina fînkşonê. Binêre. pêkanên amûran. A web_search amôr vedike gerêdan li webeHerî herî 128 amûr û 512 KB pênase, herî herî 64 qetakî kûr; zêdetir dibe a 400.
reasoning_effort
reasoning
têgeh, objeNa"minimal", "low", "medium" an "high", an jî {"effort": "high"}. "none" an {"enabled": false} vê diqede. Binêre rêzanî.
pluginsarrayNa[{"id": "web", "max_results": 5}] Her tim pêşî li ser weben lêgeriyan dike. Heta 10 encam.
nhejmarê tamNaTenê 1. Her tiştê din vedegere 400.
logit_bias
user
metadata
objekt, string, objektNaGirtî û nehatî şandin. logit_bias bera 300 ID-ên tokenan redên jimarî yên ji -100 heta 100 dike; user bera bi 256 karakteran de ye; metadata bera max serî nade 16 nirxên stringan, kîs (keys) heta 64 karakteran û nirxên heta 512.

Bersiv ê normal e chat.completion, bi costê di hundur de usage.cost (bi dolaran) û di ... de nymbot objekt. model idê modelê hatîye çareserkirin e, wekî ku navê kurt wekî navê tam vegerê. Heke model berî bersivdanê raman kiribe, rêzana wê tê de ye message.reasoning_content, ji bersivê veqetî.

Bersiv

{
  "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 ji tiştê ku vegeriya hatiye hesabkirin, ji ber ku pêşkêşkar bi awayekî cuda rapor dikin: tool_calls dema ku model daxwaza amûran kir, length gava bersiv hemû tokenên destûrberkirî bikar aniya (an jî model hemî wan ji bo razîkirinê qerand û bersiv nivîsandin), content_filter dema pêşkêşkar red kir, û stop bi awayekî din. usage.completion_tokens_details.reasoning_tokens her tim 0 e: veşartî tokens ên ramanê tên hesabkirin, û tên kêmkirin, di completion_tokens.

RewşaKengî
400Na model an messages (missing_required_parameter); beşek deng an fîl, an jî wêneyên ji bo modelê ku nikare wan bibîne (unsupported_content); zêdetirî 20 wêneyan (too_many_images); parametereke nimûnegeriyê ya ji cureekî xelet an jî derveyî mijarê (invalid_value); girêyekî wêneyî ku ne giştî ye (invalid_image_url); amûrên li ser modelekê ku nikarin wan biqêrînin (unsupported_tool); n ji bilî 1; a :thinking paşgir li ser modelek ku nikare raman bikîne (model_not_found); an jî pêşniyar (provider) daxwazê red kir (upstream_rejected).
402Balansa ku model daxist, nikare parastinê biparêze.
403Keşa herî xerab li ser kapa klavye nakeve (key_limit_reached). Jêre max_tokens an jî sînorê bilind bike.
404Bi wî navî model tune ye (model_not_found).
429Sînorê rêya (rate limit) kuncê, an jî yê dabînkerê (upstream_rate_limited).
502, 503Dikekar (provider) ket (fêl) (upstream_error) an jî bi zext hatî (upstream_overloaded, bi Retry-After). Çi tiştek nayê tahsildar kirin heke pêşkêşkar ji bo hewlê faturayê neşandibe.

Kodên statûsê yên ku her endpoint parve dike di bin van têne lîstirin: xeletî.

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

Strimkirin

Bi "stream": true Bersiv di dema ku model dinivîse wekî bûyerên ji aliyê server ve têne şandina tê. Her bûyerek... chat.completion.chunk li ser data: xet, û herikîn bi vê yekê bi dawî dibe data: [DONE]. Rêzîman di ... de digehe delta.reasoning_content, bersiv bi delta.content.

Her tiştê ku dibe ku bêtir ji nêzîkî 100 saniyeyan bikişîne, wek bersiveke dirêj an yek mezin, streaming bike max_tokens an jî modeleke ramanê. Daxwazek ku bi streaming neyê şandin, heta ku bersiv temam nebe tişt naxwîne, û tor di navbera we û Nymbot de dikare piştî nêzî 100 saniyeyan girêdaneke bêkar bigire; model hîn jî temam dibe û tiştê ku nivîsandiye tê xerjandin, lê bersiv winda dibe. Streaming 'keep-alive' dişîne, ji ber vê yekê heta ku model dinivîse, ew vediyê.

Axaftin

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]
  • Rêzên ku bi destpêkirina ... dest pê dikin : comentên keep-alive, her 15 saniyî carekê tên şandin dema model difikire. Klientên SSE wan derbas dikin.
  • Daxwaz bike ji bo "stream_options": {"include_usage": true} ji bo girtina parçeya dawî ya jor, bi yekî vala choices, hejmara tokenan, bihay û... nymbot objekt.
  • Navê pereyan piştî dawîbûna herikîna (stream) tê dîtin. Heke tu girêdanê zû bigirî, model nakeve sekinandin: Nymbot beşa mayî ya herikîna radê (provider) dixwîne, heta 25 saniyeyan, da ku hejmara tokenan bibîne, û tu ew pereyan didî yê ku radê rapor dike. Bêyî wê hejmarê, navê pereyan ji bo girêdanê ji kirina te û ji tiştê hatî nivîsandin tê nirxandin, tevî ku hemû mudaxaleya derûnê (output allowance) ji bo modeleke ku ramanê dike tê lêkirin.
  • Hata beriya parçeya yekem, mînak wekî 401 an 402, wek JSON'ekî asayî bi koda statusê xwe vedigere, ne wekî stream. Xetayek piştî ku stream dest pê kiriye, wekî dawiyê tê. data: {"error": {…}} daxuyat, û herikîn bêyî diqede [DONE].
  • Daxwazên bi amûran û modelan li ser veguhastina Bersivên OpenAI, ji aliyê radê (provider) ve ne stream dikin. Ew hîn jî bi streamekî vala bersiv didin, ku dema bersiv temam dibe tê şandin.

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

Bangirinên amûran

Di ... de finksyonan rave bike tools û model dikare ji bo bersivdanê bi şêwazekî din bixwaze. Tu funksiyona xwe diçirînî, encama wê wekî ... lê zêde dikî tool peyam bi heman tool_call_id, û sohbetê careke din bişîne. Nymbot tu fonksiyonên xwe naxebitîne; daxwaza modelê vedixîne te ve.

tool_choice digire "auto", "none", "required" an {"type": "function", "function": {"name": "…"}}. Lîsteya modelan nîşan dide ka kîjan model dikarin amûran bixwînin (capabilities.tools). Amûr bi ... re têne redkirin 400 unsupported_tool ser nymbot/auto Û li ser ew çend modelên katalogê yên ku li ser veguhastina Responses a OpenAI dixebitin, ku Nymbot nikare amûl bide wan.

Bi "stream": true, daxwazek bi amûran re di yek parçe de tê pêkhatin û paşê wekî rêzeya parçeyên (chunk) asayî tê şandin: rola, parçeyek ku hemû bangên amûran bi îndeks, ID, nav û argumentên xwe re digire, û parçeya dawî. Klientên ku bangên amûran yên streaming dixwînin, wê wekî her tim bi awayekî asayî dikin.

Bersiv, bi beşekî

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

Wêne di daxwazekê de

Modêlên bi capabilities.vision dikare wêneyan bixwîne. Tevçiqan bibe an image_url beşek ji peyama bikarhêner, bi an jî bi peyamek giştî https:// lînk an a data:image/…;base64, URL. Heta 20 wêneyan di her daxwazê de. Wêneyên SVG tên redkirin, her wiha girêdayî (link) ku zêdetirî 4,096 karakter be an jî navê bikarhêner an şîfre tê de hebe jî tên redkirin (400 invalid_image_url). Şêweyekî vebijartî detail ye auto, low an high.

Bi nymbot/auto, daxwazek ku wêneyek tê de heye, tê rêkirin ji bo modeleke standart a ku dikare bibîne. Modeleke kataloğê ya bê capabilities.vision bi ... wêneyan red dike 400 unsupported_contentWêneyên tenê dikarin di peyamên bikarhnêran de bin. Zêdekirina lînkê divê ji hosteyeke giştî re vekirî be; Nymbot wêneyî dişîne radestkara modelê û wê nakefîne.

Wêneyek wekî wan tokenên inputê ku pêşkêşkar ji bo wê hesab dike, mîna beşa din a daxwazê tê hecandin.

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

Hişraniyê

Modêlên bi capabilities.reasoning dikarin berî bersivê bifikirin. Bi wî re bixwazin bêtir an kêmtir reasoning_effort ("minimal", "low", "medium" an "high") an "reasoning": {"effort": "high"}, an jî zêde bike :thinking ji bo navê modelê, ku tê wateya hewldana bilind. Li ser modelek bê fikirkirinê seting tê paşguhkirin. Bi nymbot/auto, :thinking daxwazê dişîne rêya bîrkirina standard.

Li ser modelên Anthropic, hewl dibe budçeyeke ramanê ya nêzîkî 1,000, 2,000, 8,000 an jî 16,000 tokenan, tu carî ji wan bêtir nabe. max_tokens dibe ku were. Dema nayê, fikirîn rawestiyaye tool_choice dibin sedem ku amûrek bi zorê bikişîne, û dema daxwaz berdewam dike çemberek amûreyê (peyama wê ya dawî encameke amûreyê ye), ji ber ku Anthropic پێویست e hişyariya berê ya îmzekirî ji nû ve dest pê bike. Hêmanên weha li ser endpointên Responses û Messages jî tên sepandin.

Rêberî vedigere ve message.reasoning_content, an jî delta.reasoning_content dema streamingê, tu qet naxê bi bersivê re. Razî kirin (Reasoning) derojê ye û wekî wî tê hincab kirin, di hundur de completion_tokensHinek pêşniyarkar (providers) tekstê rênîşandina (reasoning) bi tu awayî nas nakin, lê dîsa jî heqê wê tê girtin.

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

Paşgirên modelan

Zêdekirina peyvekê (suffix) li ser navê modelê bêyî qadeke din, rêya ku daxwaz tê lidarxistin diguhertin. Ew hem li ser ID-yên tam û hem jî li ser navên kurt kar dikin, wek di vê de: anthropic/claude-sonnet-5:online.

PaşgirBandor
:onlinePêşî li ser webê digere, mîna plugins: [{"id": "web"}]Binerin. gerêdan li webe.
:thinkingHewldana hişmendî ya bilind; çalak nymbot/auto, rêya ramanê. Li ser modelek ku nikare bifikire, 400 model_not_found bi “no endpoints found”.
:nitro, :floor, :exacto, :extendedGihandiye û hatî paşguhkirin. Her modelê katalogê rêyekê heye, lewma tu rêya bilindtir, hincirtir an jî dirêjtir tune ku were hilbijartin; pişve (suffixes) têne destûrdan da ku navên modelên ku ji xizmetên din hatine kopîkirin hîn jî bixebitin.

Her ziraviyek (suffix) din tê paşguhkirin. Berî her tişt navê tam tê ceribandin, ji ber vê yekê modelek ku ID-ya wê bi rastî kolonkê (colon) dihewîne hîn jî dixebite; ger wê neyê, ziravî ji dawiya navê yek bi yek tên rakirin heta ku modelek bibe yek. Navê modelê dikare herî herî zêde 200 karakter be û herî herî zêde 4 ziravî bibe; ew êdirêj bi vî rengî tê redkirin. 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);

Her modeleke sohbetê dikare bersivê ji weba zindî bide. Nymbot peyama dawî ya bikarhêner (2,000 karakterên xweş) lêgerînê dike, rûpelên herî baş dixwîne û bi pirsê re dide modelê, ku wekî naveroka derve hatî nîşandan û model divê ji wê talîmatan neqebul bike. Du şêwe hene:

  • Her tim lêgerîn bike: "plugins": [{"id": "web", "max_results": 5}], an jî a :online paşgir li ser modelê.
  • Gereya ku alîkar dibe lê bigerê: "tools": [{"type": "web_search", "parameters": {"max_results": 5}}], her wiha wekî tê qebûlkirin web_search_preview an openrouter:web_searchNymbot tenê dema ku pirs bi awayekî ku hewcedar be bi agahiyên nû xuya bibe lêgerînan dike, ew heman testa ku sepan bikar tîne ye.

max_results bi default 5 e û herî zêde 10 e. Çavkanî di ... de tên. nymbot.web_search.sources, her yek bi title, snippet û url, û wekî url_citation têxistina peyvên li ser peyamê.

Her lêgerînê ku dixîne bi 0.008$ dihێت, ku ji bo sats tê guhertin, li ser tokenan zêde ye, û beşek ji holdê ye. Rûpelên ku lê xwendiye jî tokenên input in, loma bersivek ji webê ji pirsiyareke heman cure ku bêyî wê bêt, bi gelemperî bi gelek caran bi texmîn zêdetir dihێت.

Bersiv, bi beşekî

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

API yên Bersivan

Formata nûتر a OpenAI, ku ji hêla OpenAI Agents SDK û Codex ve tê bikaranîn. Li ser heman model, faturayî û taybetmendiyan wek Chat Completions dixebite.

POST https://nymbot.ai/api/v1/responses — pêdivî bi API keyekî heye.

ZevîTîpPêwîst eWate
modeltîrêjErêJi bo Temamkirinên Chatê, bi spätên jî ve hatine barkirin.
inputtêgeh (string) an rêz (array)ErêTîp, an jî dîlisteyek ji bendan: peyam (rêgeh... user, assistant, system, developer) bi input_text, input_image û output_text perçevan, û function_call û function_call_output Tiştên ji bo amûran. input_image digeire an image_url Link an URL-a datayê, ne ID-ya fîlekê. reasoning û web_search_call karên hatine dûr xistin; item_reference redudiye.
instructionstîrêjNaRênugihdanên sîstemê.
max_output_tokenshejmarê tamNaHerî zêde token ji bo nivîsandinê.
temperature
top_p
hejmarNaKontrolên sampionkirinê, ku model wan digire.
tools
tool_choice
parallel_tool_calls
array, string an object, booleanNaAmûrên fîngşan, di şêweyê Bersivan de ({"type": "function", "name": …, "parameters": …}). A web_search an web_search_preview amôr vedike gerêdan li webe dema alîkar dibe. Amûrên din ên hundurîn têne redkirin.
reasoningobjektNa{"effort": "minimal" | "low" | "medium" | "high"}. xhigh û max wate high; none vê diqetîne.
text.format
response_format
objektNaÇêkirina derouta pêkhatî, wekî şemayeke JSON an jî json_object.
metadataobjektNaDi bersivê de bêguherîn ve hat vegerandin. Di herî kêm 16 nirxên rêzê (string), kerên (keys) heta 64 karakter û nirxên (values) heta 512.
streambooleanNaBingehê wekî di bin de têne danasîn, bûyeran wekî stream bimeşîne.
storebooleanNaGuhdar nekirî. Tu tişt nayê hûnandin, û bersiv her tim dibêje "store": false.
previous_response_id
conversation
background
tîp, obje, booleyanNaPiştgirî nade: 400 unsupported_parameterBersiv ne têna pakirin, lewê hemû guhûrtinê bişîne hundir input her car.

Bersiv

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

Daxwazeke amûr di ... de peyda dibe output wekî function_call bi tekstî call_id, name û arguments; encamê wekî a bişîne vegerîne function_call_output tiştekî bi heman ⚖️ call_id. Hînkirin, dema ku model vedigerîne, ye a reasoning bi tekstî reasoning_text naverok, wek yekem tê lîstkirin. status ye incomplete dema bersiv hat max_output_tokens an jî pêşkêşkar red kir, bi incomplete_details.reason bêje bo max_output_tokens an content_filter. Bersiv jî, wekî ya OpenAI, taybetmendiyên daxwazê (germî, amûr, hilbijartina amûr û hwd.) vedigihîne û ... bi xwe re dihewîne. nymbot biha objekt.

Streaming, her bûyerek wekî... event: xet û a data: xet bi a sequence_number, bi vê rêzikê: response.created, response.in_progress, response.output_item.added, response.content_part.added, her hejmarek ji response.output_text.delta, response.output_text.done, response.content_part.done, response.output_item.done, û di dawiyê de response.completed bi bikaranîn û biçarî. Bersiveke kurt bi vê yekê bi dawî dibe response.incomplete berovajî, û ekwazî piştî ku jîr (stream) dest pê kir bi response.failed. Çîrok wekî mijarek xwe bi ... response.reasoning_text.delta û .done. Bangkirina amûran piştî peyamê tên, her yek wekî bendek bi response.function_call_arguments.delta û .done.

RewşaKengî
400Na model an input; previous_response_id, conversation, background an jî item_reference (unsupported_parameter); amûreke nebarkar an celebê naverokê ne.
402, 403, 404, 429, 502, 503Ji bo Çat 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);

Peyamên Anthropic

Formata Anthropic, ji bo SDK-yên Anthropic û Claude Code. Bi her modelê ku di katalogê de heye re kar dike, ne tenê Claude: daxwaz tê wergerandin, di heman rêberiyê de tê xebitandin, û paşê tê wergerandin.

POST https://nymbot.ai/api/v1/messages — pêdivî bi tîpa API heye, wekî x-api-key an Authorization: Bearer.

Ew anthropic-version û anthropic-beta header têne qebûlkirin û tên paşguhkirin. Navên modelên Anthropic bi katalogê re tên girêdan, ji ber vê yekê Claude Code û SDK bi wan navan dixebitin ku ew êdî bi kar tînin:

  • Navê ku katalog dizane, mînak wekî claude-sonnet-5 an anthropic/claude-opus-5, wekî xwe hatiye bikaranîn.
  • Ji bilî dîrokekê (-20260514), -latest, weşana wekî -v1, wekî taguekî di nav parantezan de wekî [1m] û û anthropic/ an anthropic. Pêşîn tên rakirin, û di versiyonê de xal û şiroçe bi her du şêweyan têne ceribandin (claude-haiku-4-5 dîtin claude-haiku-4.5).
  • Heke ew hîn jî bi tiştekî re ne quite be, malbat (Opus, Sonnet an Haiku) tê bikaranîn, heta ku versiyona katalogê wekhev an nûتر ji ya ku hatî daxwazkirin be.
  • Navê ku bi tiştî re naketizesin vedigerînite 404 not_found_error.
ZevîTîpPêwîst eWate
modeltîrêjErêID-ya modelê katalogê, an navê modeleke Anthropic.
max_tokenshejmarê tamErêHerî zêde token ji bo nivîsandinê.
messagesarrayErêuser û assistant xerandin, bi text, image (çavkaniya base64 an jî URL), tool_use û tool_result bloklar. thinking blokên ji virê ve di qonaxên berê de tên qebûlkirin û tên daxistin.
systemtêgeh (string) an rêz (array)NaPromptê sîstemê, we wekî tîp an blokên nivîsê.
temperature
top_p
hejmarNaKontrolên sampionkirinê, ku model wan digire. top_k tê qebûlkirin û tê daxistin.
stop_sequencesarraya strînganNaTekstê ku bersivê bi dawî dike. Herî kêm 4 rêz, her yek herî kêm 256 karakter.
tools
tool_choice
array, objectNaAmûrên bi name, description û input_schema. A web_search Amûra serwerê çalak dibe gerêdan li webe; Amûrên din ên Anthropic ên hundurîn (bash, redaktora nivîsê, bikaranîna komputerê) bi vê yekê têne redkirin unsupported_tool. tool_choice digire auto, any, tool an none, û disable_parallel_tool_use.
thinkingobjektNa{"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} an {"type": "disabled"}Budçeyê asta hewldanê vedigire: di bin 2,048 de kêm, ji 2,048 ve kêm, ji 8,192 ve navîn, ji 16,384 ve bilind. Adaptive bikar tîne output_config.effort, an jî bilind.
streambooleanNaDi formata bûyerên Anthropic de stream bike.
metadataobjektNaGirtin û paşguhkirin.

Bersiv

{
  "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 dikare bigire jî tool_use blok û a thinking blok, yê ku signature vala ye. stop_reason ye end_turn, max_tokens, tool_use an refusal, bi heman şêweyan hat hesabkirin wekî finish_reason ser Temamkirinên Chatê; stop_sequence her tim e null, dema ku rêzên rawestandina bersivê bi dawî bû jî. input_tokens hejmar tenê daneyên nû; daneya cachekirî di du qadên cache de ye. Çender di... de ye. nymbot objekt û X-Nymbot-Cost-Sats serîlêdan.

Berşopî, bûyerên Anthropic in: message_start, content_block_start, ping, content_block_delta (text_delta, input_json_delta an thinking_delta), content_block_stop, message_delta bi sedema rawestandinê, bikaranîn û ê nymbot objeyê costê, û message_stop. A ping her 15 saniyiyan carekî jî tê şandin dema ku model dixebite. Bangkirinên amûran piştî nivîsê tên, her yek wekî tool_use bi hemû daneyên xwe di yek de blok bixвин input_json_delta.

Şaşiyên li ser vê endpointê şêwazê Anthropicî bikar tînin: {"type": "error", "error": {"type": "not_found_error", "message": "…"}}. A heqeliyeke kurt e 402 billing_error, pêşkêşkarê ku bi daxwazên zêde hatiye bajarkirin 503 overloaded_errorŞaşî piştî destpêkirina streymê wekî an... tê şandin error dîmen.

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

Hesapkirina tokenan

Estîmek ku daxwaza Messages dê çend tokenên inputê bikar bîne, da ku client berî şandina wê kontrol biket. Belaş e, lê dîsa jî pêdivî bi kuncikê heye.

POST https://nymbot.ai/api/v1/messages/count_tokens — pêdivî bi kuncê APIyê heye. Belaş.

Laş wekî ji bo Peyam, bêyî max_tokens; navê modelê divê were resolhkirin. Hesab hesteg e: karakterên prompta pergala, peyaman, bangkirina amûran û pênaseya amûran têne dabeşkirin ser çar, vê re 1,600 ji bo her wêne. Ew tokenizerê xwediyê pakornê nîne, lewma hesabê rastî dikare cuda bibe. Mifteyek ku gihîştiye sînorê xwe dikare hîn jî bikar bîne.

Bersiv

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

Lîsteykirina modelan

Her model û generatoreke ku API qebûl dike, bi bihayên wan re. Lîsteyê ji heman kataloga zindî ya hilbijartina appê tê xwendin, lewma her dem ew e ku server dê bixebitîne.

GET https://nymbot.ai/api/v1/models — tu nekarî neyê kirin. Ji bo pênç deqîqeyan hatiye cachekirin.

GET /api/v1/models/{id} yek kiryar vedigerîne.

ZevîTîpPêwîst eWate
typetîp (pirsiyar)Nachat (yê default,) image, video, audio, embedding an allÇendên dikarin werin dayîn, wekî image,video.

Bihat, bi nav bernameyê û bi qasî qumçikê (margin) di nav de ye, bi dolar û bi sats li gorî bihatê Bitcoinê yê niha ye. balance diêje ka model balanceê li ku derê daxistin dike. nymbot_key navê kurt ê modelê di aplikasyonê de ye. created her tim 0 e, ji ber ku katalog nîşan nade ku model di kengî de hatîye lêzêdekirin. Modelek ku bi rêjeyên tokenê yên weşandî tune be, bi vî rengî bi metîr e per_request di ber.

nymbot/auto her tim yekem e, bi bihayê ... hâtî nirxandin variable, bi a routes lîsteyekê dide her bihema rêya standard bi bihayên xwe. Dîrok û ramanê di nav de diyar dike, lê ampûçan nîşan nade.

GET /api/v1/models/{id} navên û pseudonîmên wekî daxwazê qebûl dike, û nivîsa ku ew nav ji bo modelê têne çareserkirin vedegere.

Bersiv

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

Cureyên din:

  • Wêne tevlî hebûn heye capabilities (accepts_image_url, requires_image_url, edit) û biha per_generation.
  • Vîdyo tevlî hebûn heye max_duration_seconds û resolutions, û biçemekî per_second ji bo her resolûsyonê.
  • Ajio tevlî hebûn heye audio_type speech an transcription, bi bihayî per_1k_chars an per_minute.
  • Embedkirin tevlî hebûn heye dimensions, context_length, max_inputs û biçemeke ji bo her lan yonî bi mîlyonî tukanên di nav de.

Biçîçiya diyar kirî "estimated": true estîmên aplikasyonê ne ji bo generatorekê ku bihayê wê nehatiye weşandin. Nagenê type vegeran 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);