Basis kawruh Pembangunan
Chat, respon lan pesan
Tiga cara kanggo nggoleki model apa-apa, ing tiga format klien wis ngobrol, kabeh mbukak ing model padha lan dihitung ing cara padha.
Kaca iki diterjemahake mesin kanggo penak. Asli Inggris minangka versi sing ditrapake.
Katrangan lengkap
Ing format chatting OpenAI, lan sing sawetara alat ndhukung. Ngirim ngobrol iki lan njaluk pesan liyane.
POST https://nymbot.ai/api/v1/chat/completions Kita kudu nggunakake kunci api.
Sadurunge model lan messages Parameter sampling sing model sing dipilih ora njaluk ditinggalake tanpa kesalahan, supaya siji telinga perminta kerja antarane model. supported_parametersApa sing ditolak lan ora ditinggalake iku apa model ora bisa nindakake: gambar kanggo model sing ora bisa nindakake, alat kanggo model sing ora bisa nindakake.
| Field iku | Tiyang | Diperlukan | Deskripsi |
|---|---|---|---|
model | Ing string | ya wis | nymbot/auto (Ing auto) kanggo routing Nymbot ing saldo standar, utawa id model katalog kayata anthropic/claude-sonnet-5 ing saldo Pro. jeneng sing pendek lan alias aplikasi uga diwenehi. Bisa mbukak ing Tiyang. |
messages | Piyambakipun | ya wis | Ing ngisor iki, peran system, developer (Tindakake minangka sistem), user, assistant lan toolKonten iku string utawa daftar saka text lan image_url bagian; gambar mung ing pesan pengguna. input_audio Karya-karya ing file iku ditolak. |
stream | Boolean | Ing | Tiyang-tayang ing tulisan iki. ndeleng Ngluwihi. |
stream_options | Objektif | Ing | {"include_usage": true} nyedhiyakake bagian pungkasan karo hitungan token lan biaya. |
max_tokensmax_completion_tokens | Ingkang | Ing | Paling token kanggo ditulis. Diwenehi kanggo maksimum model yen luwih dhuwur. uga ngatur berapa banyak dipegang saka saldo, supaya nomer cilik kudu kurang kredit kanggo miwiti. |
temperaturetop_p | Nomer | Ing | Sampel kontrol lan kontrol: temperature Ing taun 0 iki 2, top_p Mulane saka 0 nganti 1. |
stop | string lan array. | Ing | Teks sing ngakhiri jawaban: string utawa paling 4 string, saben paling 256 karakter. nymbot/auto. |
seed | Ingkang | Ing | Kanggo sampel repeatable, ing ngendi model ndhukung. |
presence_penaltyfrequency_penalty | Nomer | Ing | Kontrol repetisi, saben saka -2 kanggo 2. |
response_format | Objektif | Ing | {"type": "json_object"} lan {"type": "json_schema", "json_schema": {…}}, ing ngendi model ndhukung. Tidak digunakake dening nymbot/auto. |
toolstool_choiceparallel_tool_calls | array, string utawa obyek, boolean | Ing | Function calling. ndeleng Alat kanggo panggilanA iku web_search Alat iki dadi Web lan searchIng paling 128 alat lan 512 KB definisi, diwenehi ing paling 64 tingkat dhuwur; luwih 400. |
reasoning_effortreasoning | Ngudhunaké, obyek | Ing | "minimal", "low", "medium" lan "high"Dheweke {"effort": "high"}. "none" lan {"enabled": false} Nglumpukake iku. lihat Argumentasi. |
plugins | Piyambakipun | Ing | [{"id": "web", "max_results": 5}] Sampeyan bisa nggunakake situs web iki. Up to 10 Results. |
n | Ingkang | Ing | 1. apa-apa liyane bakal mbukak. 400. |
logit_biasusermetadata | Objek, obyek lan obyek | Ing | Tembung lan ora dikirim. logit_bias peta ing maksimum 300 token id kanggo nomer saka -100 kanggo 100; user Ing maksimal 256 karakter. metadata nyimpen nganti 16 nilai string, kunci nganti 64 karakter lan nilai nganti 512. |
Jawaban iku biasa. chat.completionKanthi biaya ing usage.cost
(Ing dolar) lan ing nymbot Objek iku. model Model iku id model sing diselesaikan, supaya nama sing sing sing sing sing sing sing sing lengkap. message.reasoning_contentSeparasi saka jawaban.
Jawaban
{
"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 iki dikelompokake saka apa sing balik, amarga penyedia melaporkan sing beda: tool_calls Nalika model ngarepake alat, length nalika jawaban nggunakake saben token diperkenanake (utawa model nggunakake kabeh argumen lan ngandika ora jawaban), content_filter Dheweke bakal nindakake rejeki, lan stop
Uga iku. usage.completion_tokens_details.reasoning_tokens iku selalu 0: token argumen tersembunyi dihitung, lan dibayarkan, ing completion_tokens.
| Statusipun | Nalika |
|---|---|
400 | Ing model lan messages (missing_required_parameter); bagian audio utawa file, utawa gambar kanggo model sing ora bisa nonton (unsupported_content); luwih saka 20 gambar (too_many_images); parameter sampling saka tipe salah utawa out of range (invalid_value); link gambar sing ora umum (invalid_image_url); alat ing model sing ora bisa nelepon (unsupported_tool); n Ing ngisor 1; a :thinking Ing ngisor iki ana ing model sing ora bisa nindakake alasan (model_not_found); utawa penyedia menyang permintaan (upstream_rejected). |
402 | Saldo sing model nggunakake ora bisa mbukak retensi. |
403 | Ing ngisor iki ana ing titik paling dhuwur (key_limit_reachedIng ngisor max_tokens Dheweke bakal ngangkat cap. |
404 | Ing ngisor iki iku (model_not_found). |
429 | Ing ngisor iki, ing ngisor iki, ing ngisor iki, ing ngisor iki (upstream_rate_limited). |
502, 503 | Ing ngisor iki ana ing (upstream_error(Sampunipun ora ana ing ndhuwur)upstream_overloadedDheweke karo Retry-After). Apa sing dibayar nalika penyedia tagihan kanggo percobaan. |
Kode status saben saham endpoint sing disenaraake ing Gampangipun.
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);
Ngluwihi
Dheweke "stream": true Jawaban iki diwenehi minangka acara sing dikirim dening server nalika model nyimpen. chat.completion.chunk lan a data: garis, lan aliran ngakhiri karo data: [DONE]Argumentasi iku ing
delta.reasoning_contentJawaban ing delta.content.
Stream apa-apa sing bisa luwih saka kira-kira 100 detik, kayata jawaban panjang,
max_tokens utawa model argumen. Panggonan sing ora ditransmisikake ora ngirim apa-apa nganti jawaban wis lengkap, lan jaringan antarane sampeyan lan Nymbot bisa ngluwihi koneksi kosong setelah kira-kira 100 detik; model uga diakhiri lan apa sing ditulis ditransmisikake, nanging jawaban wis hilang.
Tembung
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]
- Lines dimulai karo
:Komentar-komentar terus-terusan, dikirimake saben 15 detik nalika model sedang berpikir. - Panggonan kanggo
"stream_options": {"include_usage": true}kanggo njaluk chunk pungkasan ing ndhuwur, karo kosongchoicesIng ngisor iki, biaya lannymbotObjek iku. - Nymbot njaluk sisih provider, kanggo nganti 25 detik, kanggo njaluk hitungan token, lan sampeyan mbayar apa provider melaporkan. Tanpa iki hitungan biaya dianggarake saka input lan apa sing ditulis, ditambah kabutuhan output kabeh kanggo model sing alasan.
- Sampeyan ora bisa nggunakake salah saka pirang-pirang, kaya
401lan402, mbukak minangka JSON biasa karo kode status, ora minangka stream.data: {"error": {…}}acara, lan aliran diwenehi tanpa[DONE]. - Panggonan karo alat, lan model ing OpenAI's Responses transport, ora stream saka provider.
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);
}
Alat kanggo panggilan
Tindakake fungsi ing tools lan model bisa njaluk siji kanggo diwenehi saka nganggur. Sampeyan mbukak fungsi, njaluk hasil minangka tool Panggonan sing padha
tool_call_idNymbot ora mbukak fungsi sampeyan; iku ngirim permintaan model menyang sampeyan.
tool_choice nggawé "auto", "none",
"required" lan {"type": "function", "function": {"name": "…"}}Panjenenganipun ora bisa nggunakake model (capabilities.tools) Alat iki ditolak karo 400 unsupported_tool Dheweke nymbot/auto lan ing sawetara model katalog sing mbukak ing transport Responses OpenAI, kang Nymbot ora bisa ngirim alat kanggo.
Dheweke "stream": true, permintaan karo tool berjalan ing siji bagian lan banjur dikirim minangka urutan chunk normal: peran, siji chunk nglakoni saben call tool karo indeks, id, jeneng lan argumen, lan chunk finish.
Jawaban, ing sawetara
"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 ing permintaan
Model karo capabilities.vision Bisa nggunakake gambar. tambahkan image_url
part kanggo pesan pangguna, karo siji publik https:// Link lan a
data:image/…;base64, URL. Hingga 20 gambar per permintaan. gambar SVG diwenehi, lan iku link luwih saka 4096 karakter utawa siji karo nama pangguna utawa password ing iku (400 invalid_image_urlIng opsi detail Dheweke
auto, low lan high.
Dheweke nymbot/auto, permintaan karo gambar ing iku diaruter menyang model standar sing bisa nonton. capabilities.vision Ngluwihi gambar karo
400 unsupported_contentGambar bisa mung ing pesan pangguna. Link kudu ngandhingake kanggo host umum; Nymbot ngirim gambar kanggo provider model lan ora nyimpen.
A gambar dibayarkan minangka token input provider nghitung kanggo iku, kaya sisih permintaan.
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);
Argumentasi
Model karo capabilities.reasoning Bisa nggawé nggawé nggawé nggawé nggawé nggawé nggawé nggawé nggawé nggawé reasoning_effort ("minimal", "low",
"medium" lan "high") utawa "reasoning": {"effort": "high"}Dheweke bakal nambah :thinking ing jeneng model, sing nyebabake upaya dhuwur. Ing model tanpa alasan setelan diabaikan. nymbot/auto, :thinking ngirim permintaan menyang rute argumentasi standar.
Ing model Anthropic upaya dadi anggaran berpikir saka kira-kira 1,000, 2,000, 8,000 utawa 16,000 token, ora luwih saka max_tokens Piyambakipun. ing ngendi iku ngendi.
tool_choice Nggunakake tool, lan nalika permintaan terus tool loop (message pungkasan iku hasil tool), amarga Anthropic kudu pemikiran sing ditandatangani sadurunge kanggo ngulangake.
Argumen iku balik ing message.reasoning_contentDheweke
delta.reasoning_content Nalika streaming, ora digabungake ing jawaban. Reasoning iku output lan dibayar minangka kaya, ing completion_tokensSawetara penyedia ora ngundhuh teks argumen, lan iku uga dibayarkan.
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);
Model saka suffixes
Sufi ing jeneng model ngganti cara permintaan diproses, tanpa bidang liyane. Mereka nggunakake id lengkap lan jeneng sing pendek, minangka ing anthropic/claude-sonnet-5:online.
| Tiyang | Efek |
|---|---|
:online | Nglumpukake web ing awal, kayata plugins: [{"id": "web"}]Tiyang Web lan search. |
:thinking | Tindakan rasional dhuwur; ing nymbot/autoWektu, ing model sing ora bisa nindakake alasan, 400 model_not_found lan “no endpoints found”. |
:nitro, :floor, :exacto, :extended | Kabeh model katalog duwe satu rute, supaya ora ana sing luwih cepet, luwih murah, utawa luwih panjang kanggo milih; suffixes diizinake supaya jeneng model sing disalin saka layanan liyane uga kerja. |
Apa-apa suffix liyane diwenehi. Nama kabeh diusahake sadurunge, supaya model kang id nyata ngandhut kolon masih kerja; tanpa iki, suffixes diwenehi saka ujung siji ing wektu nganti model cocok. Nama model bisa ing maksimum 200 karakter panjang karo ing paling 4 suffixes; siji liyane ditolak karo 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 lan search
Nymbot njaluk pesan user pungkasan (sebut 2000 karakter utamane), njaluk halaman paling apik lan ngirimake menyang model karo pertanyaan, ditandani minangka konten luar model ora kudu njaluk instruksi saka.
- Tiyang iku:
"plugins": [{"id": "web", "max_results": 5}]Nanging a:onlineSampeyan cukup ing model. - Panggonan nalika iku membantu:
"tools": [{"type": "web_search", "parameters": {"max_results": 5}}]Dheweke uga diwenehi minangkaweb_search_previewlanopenrouter:web_searchNymbot njaluk mung nalika pitakonan tampaknya njaluk informasi saiki, test sing padha nggunakake aplikasi.
max_results iku 5 ing default lan ing maksimum 10. sumber mbukak ing
nymbot.web_search.sourcesDhèwèké kanthi a title, snippet lan
urlDheweke lan as url_citation Anotasi ing pesan.
saben pencarian sing mbukak biaya $ 0.008, diwenehi kanggo sats, ing ndhuwur token, lan iku bagian saka mbukak. kaca sing dibaca minangka token input uga, supaya jawaban saka web biaya luwih saka pertanyaan sing padha pitakonan dingin, kadang-kadang sawetara kali luwih.
Jawaban, ing sawetara
"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);
Jawaban saka api
OpenAI format anyar, digunakake dening OpenAI Agents SDK lan dening Codex. Dheweke mbukak model, tagihan lan fitur padha karo Chat Completions.
POST https://nymbot.ai/api/v1/responses Kita kudu nggunakake kunci api.
| Field iku | Tiyang | Diperlukan | Deskripsi |
|---|---|---|---|
model | Ing string | ya wis | lan kanggo Katrangan lengkapTiyang iku ing suffixes. |
input | string lan array. | ya wis | A string, utawa daftar item: pesan (rol user, assistant, system, developer(Ing input_text, input_image lan output_text Bagean, lan function_call lan function_call_output Karya kanggo alat. input_image Tiyang lan image_url link utawa data URL, ora file id. reasoning lan web_search_call Barang-barang sing ditemokake iku; item_reference Dheweke bakal ditolak. |
instructions | Ing string | Ing | Instructions ing sistem. |
max_output_tokens | Ingkang | Ing | Paling apik kanggo ditulis. |
temperaturetop_p | Nomer | Ing | Sampling kontrol, ing ngendi model njupuk. |
toolstool_choiceparallel_tool_calls | array, string utawa obyek, boolean | Ing | Ing ngisor iki, fungsi fungsi, ing bentuk Response ({"type": "function", "name": …, "parameters": …}) a web_search lan web_search_preview Alat iki dadi Web lan search Nalika iku nyedhiyakake. alat ing built-in liyane ditolak. |
reasoning | Objektif | Ing | {"effort": "minimal" | "low" | "medium" | "high"}. xhigh lan max Miturut high; none Ngluwihi iku. |
text.formatresponse_format | Objektif | Ing | Ngatur output, minangka skema JSON utawa json_object. |
metadata | Objektif | Ing | Ing paling 16 nilai string, kunci nganti 64 karakter lan nilai nganti 512. |
stream | Boolean | Ing | Stream acara minangka dijelaskan ing ngisor iki. |
store | Boolean | Ing | Apa sing disimpen, lan jawaban iku uga ngandika: "store": false. |
previous_response_idconversationbackground | Tiyang, obyek lan boolean | Ing | Iki ora didukung: 400 unsupported_parameterJawaban ora disimpen, supaya ngirim kabeh percakapan ing input Nanging saben kali. |
Jawaban
{
"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 }
}
A tool request muncul ing output lan a function_call Punika ing
call_id, name lan arguments; ngirimake hasil minangka a
function_call_output Tiyang ingkang sama call_idArgumen, nalika model ngirimake iku, iku a reasoning Punika ing reasoning_text Ing ngisor iki, daftar ing pisanan. status Dheweke incomplete Dheweke bakal nindakake respon
max_output_tokens Dheweke bakal nindakake adoh-adoh.
incomplete_details.reason Tiyang max_output_tokens lan
content_filterJawaban uga mbukak setelan permintaan (temperatur, alat, pilihan alat lan liyane) minangka OpenAI nggunakake, lan mbukak nymbot Uga nggawé obyek.
Tiyang-tayang, saben acara iku event: Line lan a data: Line karo a
sequence_numberIng urutan iki: response.created,
response.in_progress, response.output_item.added,
response.content_part.addedApa-apa ing nomer response.output_text.delta,
response.output_text.done, response.content_part.done,
response.output_item.doneLan ing pungkasan response.completed Ing ngisor iki, jawaban sing disusun karo response.incomplete ing ndhuwur, lan kegagalan nalika aliran dimulai karo response.failedRasioning aliran minangka item dhewe karo response.reasoning_text.delta lan .donePanggonan alat iki teka sawise pesan, saben minangka item karo response.function_call_arguments.delta
lan .done.
| Statusipun | Nalika |
|---|---|
400 | Ing model lan input; previous_response_id, conversation, background Nanging an item_reference (unsupported_parameter); alat utawa jenis konten sing ora didukung. |
402, 403, 404, 429, 502, 503 | Ing ngisor iki, chatting lengkap. |
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);
Panggonan antropik
Format Anthropic, kanggo SDK Anthropic lan Claude Code. Bekerake karo kabeh model ing katalog, ora mung Claude: permintaan diterjemahake, mbukak liwat pipeline sing padha, lan diterjemahake.
POST https://nymbot.ai/api/v1/messages — perlu kunci API, minangka x-api-key lan Authorization: Bearer.
lan anthropic-version lan anthropic-beta Nama model anthropic digabungake karo katalog, supaya Claude Code lan SDK-s bekerja karo jeneng sing wis digunakake:
- Katrangan sing ngerti, kayata
claude-sonnet-5lananthropic/claude-opus-5Dheweke digunakake minangka iku. - Ing ngisor iki (
-20260514),-latestVersi iki minangka-v1Tiyang-Tiyang lan Tiyang-Tiyang minangka[1m]Dheweke anaanthropic/lananthropic.Ing ngisor iki, ing ngisor iki, ing ngisor iki, ing ngisor iki, ing ngisor iki, ing ngisor iki, ing ngisor iki, ing ngisor iki, ing ngisor iki (claude-haiku-4-5Tembungclaude-haiku-4.5). - Yen iku uga ora cocog, keluarga (Opus, Sonnet utawa Haiku) digunakake, nalika versi katalog iku padha utawa luwih anyar saka versi sing diminta.
- Nama sing cocog apa-apa mbukak
404not_found_error.
| Field iku | Tiyang | Diperlukan | Deskripsi |
|---|---|---|---|
model | Ing string | ya wis | A katalog model id, utawa nama model Anthropic. |
max_tokens | Ingkang | ya wis | Paling apik kanggo ditulis. |
messages | Piyambakipun | ya wis | user lan assistant Dheweke dadi, karo text, image (base64 utawa sumber URL) tool_use lan tool_result lan blok. thinking Blok-blok saka putaran sadurunge diakui lan diwenehi. |
system | string lan array. | Ing | System prompt, minangka string utawa blok teks. |
temperaturetop_p | Nomer | Ing | Sampling kontrol, ing ngendi model njupuk. top_k Dheweke diwenehi lan ditinggalake. |
stop_sequences | Tembung ing string | Ing | Teks sing ngakhiri jawaban. Paling dhuwur 4 string, paling dhuwur 256 karakter. |
toolstool_choice | Panjenenganipun, obyek | Ing | Alat karo name, description lan input_schemaA iku web_search Server Tool nggunakake Web lan search; Alat-alat dibangun liyane Anthropic (bash, editor teks, nggunakake komputer) ditolak karo unsupported_tool. tool_choice nggawé auto, any, tool lan nonelan disable_parallel_tool_use. |
thinking | Objektif | Ing | {"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} lan {"type": "disabled"}Budget milih tingkat upaya: ing ngisor 2048 minimal, saka 2048 low, saka 8,192 tengah, saka 16,384 dhuwur. output_config.effortDheweke ora dhuwur. |
stream | Boolean | Ing | Stream ing format acara Anthropic. |
metadata | Objektif | Ing | Tembung lan diabaikan. |
Jawaban
{
"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 Dheweke uga bisa nyimpen tool_use Blok lan a thinking
Blok ing ngendi signature Lan iku kosong. stop_reason Dheweke
end_turn, max_tokens, tool_use lan refusalDheweke nggunakake cara padha minangka finish_reason Dheweke
Katrangan lengkap; stop_sequence Iku iku
null, malah nalika urutan stop ngakhiri jawaban. input_tokens Ing ngisor iki, ing ngisor iki, ing ngisor iki, ing ngisor iki, ing ngisor iki, ing ngisor iki.
nymbot Objek lan X-Nymbot-Cost-Sats lan header.
Ing ngisor iki, acara iki antropik: message_start,
content_block_start, ping, content_block_delta
(text_delta, input_json_delta lan thinking_delta),
content_block_stop, message_delta Sampeyan ora bisa ngetokake alasan, penggunaan, lan nymbot Biaya obyek, lan message_stopA iku ping iki uga ngirimake saben 15 detik nalika model wis kerja. panggilan alat kedhaftar teks, saben minangka
tool_use blok karo kabeh input ing siji input_json_delta.
Errors ing endpoint iki nggunakake format Anthropic:
{"type": "error", "error": {"type": "not_found_error", "message": "…"}}Keseimbangan sing pendek iku 402 billing_errorPiyambakipun nyebataken.
503 overloaded_errorA gagal nalika stream wis dimulai dikirim minangka error Event iku.
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);
Menghitung token
Estimasi saka sawetara token input permintaan Messages bakal nggunakake, supaya klien bisa ngetokake sadurunge ngirim.
POST https://nymbot.ai/api/v1/messages/count_tokens — butuh kunci API. gratis.
Tubuh iku padha karo PanggonanDheweke ora max_tokens; jeneng model kudu nguripake. hitungan iku estimasi: watesan panggilan sistem, pesan, panggilan tool lan definisi tool dibagi dening empat, ditambah 1,600 kanggo saben gambar. Iki ora tokenizer dhewe provider, supaya hitungan nyata bisa beda.
Jawaban
{ "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);
Model lan model
Kabeh model lan generator API njaluk, karo apa biaya. daftar dibaca saka katalog langsung padha karo picker aplikasi, supaya iku uga apa server bakal mbukak.
GET https://nymbot.ai/api/v1/models — ora dibutuhake kunci. disimpen kanggo lima menit.
GET /api/v1/models/{id} Ngirim ing 1 entri.
| Field iku | Tiyang | Diperlukan | Deskripsi |
|---|---|---|---|
type | Tiyang (Tiyang) | Ing | chat Dheweke bakal nindakake kekosongan. image, video, audio, embedding lan allSampeyan bisa nindakake akeh, minangka image,video. |
Harga iku apa sampeyan mbayar, karo biaya lan margin wis ing, ing dolar lan ing sats ing harga Bitcoin saiki. balance Ngandika apa balanse model nggunakake.
nymbot_key iku jeneng pendek model ing app. created iku uga 0 amarga katalog ora ngrekam nalika model ditambahake. per_request tinimbang.
nymbot/auto Ing ngisor iki, harga minangka variableDheweke karo a
routes Daftar sing ngandhani tarif saka saben rute standar. Ngandhingake visi lan argumen, nanging ora alat.
GET /api/v1/models/{id} nampa jeneng lan alias padha minangka permintaan, lan ngirim entri kanggo model sing padha ngatur kanggo.
Jawaban
{
"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"
}
]
}
Ing tipe liyane:
- gambar Ing ing ing
capabilities(accepts_image_url,requires_image_url,edit) lan hargaper_generation. - Video lan Ing ing ing
max_duration_secondslanresolutionsDheweke duwe hargaper_secondKanggo saben resolusi. - Audio iku Ing ing ing
audio_typespeechlantranscriptionIng hargaper_1k_charslanper_minute. - Ngluwi Ing ing ing
dimensions,context_length,max_inputslan harga per yuta input token.
Harga ditandatangani "estimated": true iku estimasi aplikasi kanggo generator sing harga ora diterbitake. type Kembali 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);