Isi ihe ọmụma Ndị na-arụ ọrụ
Chat, Ngwọta na Messages
Three ways to ask a model something, na atọ formats ndị ahịa na-ekwu, niile na-agba ọsọ na otu ụdị na-akwụ ụgwọ na otu ụzọ.
A sụgharịrị ibe a n'igwe maka ịdị mma. The English mbụ bụ ụdị nke na-emetụta.
Chat Nkọwa
The OpenAI chat format, na otu ihe fọrọ nke nta ọ bụla ngwá ọrụ na-akwado. Tinye nkwurịta okwu n'oge a na-enweta ozi ọzọ.
POST https://nymbot.ai/api/v1/chat/completions Ị chọrọ a API Key.
naanị model na messages A sampling parameter na a chọpụtara model na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị na-adịghị. supported_parametersỌ bụ ihe ndị a na-atụ aro ma ọ bụ ihe ndị a na-atụ aro bụ ihe ndị a na-adịghị ike ịmepụta ihe ọ bụla: photos for a model that cannot see, tools for a model that cannot call them.
| Ọnọdụ | ụdị | Nlekọta | Nkọwa |
|---|---|---|---|
model | Ọnwa | Ee | nymbot/auto (Ọ bụ auto) maka Nymbot routing on the standard balance, ma ọ bụ a catalog model id dị ka anthropic/claude-sonnet-5 na Pro ego. A na-akwụ ụgwọ akaụntụ na akaụntụ akaụntụ nke ngwa. I nwere ike na-akwụ ụgwọ na Ọnụ. |
messages | Ọnọdụ | Ee | Ndị na-ekwu, ọrụ system, developer (Nyocha dị ka usoro), user, assistant na toolContent bụ a string ma ọ bụ a text na image_url Parts; images naanị n'ime user posts. input_audio na akụkụ faịlụ na-atụ aro. |
stream | Ọchịchị | Ọ dịghị | GỤKWUO: GỤKWUO: GỤKWUO: Ịntanetị. |
stream_options | Obere | Ọ dịghị | {"include_usage": true} na-agụnye a ikpeazụ akụkụ na token akụkụ na ego. |
max_tokensmax_completion_tokens | Ntuziaka | Ọ dịghị | Ọtụtụ tokens na-egosi. Na-eme ka ihe kachasị nke nlereanya ma ọ bụ elu. Ọ na-egosi ihe ọ bụla na-egosi site na ego gị, otú a obere nọmba chọrọ obere ego iji malitere. |
temperaturetop_p | nọmba | Ọ dịghị | Nchọpụta sample: temperature site na 0 na 2, top_p 0 ka 1 |
stop | string ma ọ bụ array | Ọ dịghị | Text na-akwụ ụgwọ: a string ma ọ bụ ihe karịrị 4 string, onye ọ bụla karịa 256 characters. nymbot/auto. |
seed | Ntuziaka | Ọ dịghị | N'ihi na ịmepụta sample, ebe ụdị na-akwado ya. |
presence_penaltyfrequency_penalty | nọmba | Ọ dịghị | Ọgwụgwụ Controls, onye ọ bụla site na -2 ka 2. |
response_format | Obere | Ọ dịghị | {"type": "json_object"} ọ {"type": "json_schema", "json_schema": {…}}, ebe ụdị na-akwado ya. Ọ dịghị iji nymbot/auto. |
toolstool_choiceparallel_tool_calls | array, string ma ọ bụ ihe, boolean | Ọ dịghị | Ọrụ na-akpọ. See Ngwá Ọrụ Callsa na web_search Ngwá Ọrụ Turns On Web nchọpụtaNa ihe karịrị 128 ngwá ọrụ na 512 KB nke nchịkọta, gburugburu ihe karịrị 64 ogo; ihe karịrị a 400. |
reasoning_effortreasoning | obere, obere | Ọ dịghị | "minimal", "low", "medium" ọ "high"Ọ bụ {"effort": "high"}. "none" ọ {"enabled": false} Na-agba ọsọ. See nkwado. |
plugins | Ọnọdụ | Ọ dịghị | [{"id": "web", "max_results": 5}] na-agba ọsọ searches the web first. Up to 10 results. |
n | Ntuziaka | Ọ dịghị | Ọ bụ naanị 1. ihe ọ bụla ọzọ na-atụ anya 400. |
logit_biasusermetadata | ihe, string, ihe | Ọ dịghị | Ọ na-enweta na na-adịghị na-enweta. logit_bias maps na ihe karịrị 300 token ids ka nọmba site na -100 ka 100; user Ọnụ ọsọ 256 characters; metadata nwere ihe karịrị 16 string values, keys karịa 64 characters na ihe karịa 512. |
Ntuziaka a na-atụ anya chat.completionN'agbanyeghị ọnụahịa na usage.cost
(na dollar) na na nymbot Obere model Ọ bụrụ na a na-agụnye ụdị id, otú a obere aha na-aga n'ụzọ zuru ezu. Ọ bụrụ na a na-agụnye ụdị tupu na-ekwu, ya na-agụnye na message.reasoning_contentdị iche iche site na ntụziaka.
nzọụkwụ
{
"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 na-arụ ọrụ site na ihe mere, n'ihi na ndị ọrụ na-ekwu, ọ na-akpọ ya dị iche iche: tool_calls Ọ bụrụ na ụdị na-atụ aro maka ngwá ọrụ, length Ọ bụrụ na a na-eji ọ bụla token ahaziri (ma ọ bụ a na-eji ha niile na-eme na-enweghị nsogbu), content_filter Ọ bụrụ na onye na-agba ọsọ, na stop
Ọ dịghị. usage.completion_tokens_details.reasoning_tokens Ọ bụ mgbe niile 0: akpali akpali akpali akpali akpali akpali akpali akpali akpali akpali completion_tokens.
| ọnọdụ | mgbe |
|---|---|
400 | Ọ dịghị model ọ messages (missing_required_parameter); audio ma ọ bụ faịlụ akụkụ, ma ọ bụ images maka ụdị na-enweghị ike ịhụ ha (unsupported_content); ihe karịrị 20 foto (too_many_images); sample parameter nke na-abụghị ụdị ma ọ bụ na-abụghị n'obosara (invalid_value); a foto njikọ na-enweghị akụkọ (invalid_image_url); ngwá ọrụ na model na-enweghị ike na-akpọ ha (unsupported_tool); n Ọ dịghị 1; a :thinking n'ihi na a model na-enweghị mmasị (model_not_found); ma ọ bụ onye na-agba ọsọ ọsọ (upstream_rejected). |
402 | The ego na model na-eji na-enweghị ike na-ekpuchi akụkụ. |
403 | The worst case doesn't fit the key's cap (key_limit_reached) Ọnụ ọkụ max_tokens ma ọ bụ na-emepụta cap. |
404 | Ọ dịghị ụdị nke a aha (model_not_found). |
429 | Ọnụ ọnụ ọgụgụ nke key, ma ọ bụ nke provider (upstream_rate_limited). |
502, 503 | Ndị ọrụ na-adịghị mma (upstream_error) ma ọ bụ na-agba ọsọupstream_overloadedN'ihi na Retry-After). Ọ dịghị ihe ọ bụla na-akwụ ụgwọ ma ọ bụrụ na ndị ọrụ na-akwụ ụgwọ maka mmetụta. |
The status codes onye ọ bụla endpoint akụ na-egosi n'okpuru nzọụkwụ.
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);
Ịntanetị
na "stream": true The mkpuchi na-abịa dị ka ihe na-esonụ site na ndị na-esonụ na ihe na-esonụ ya. Onye ọ bụla ihe chat.completion.chunk a na data: akara, na akara na-agba data: [DONE]Ntuziaka na-abịa na
delta.reasoning_contentỌnụ ọgụgụ na delta.content.
Stream ihe ọ bụla nwere ike na-eme ka ihe karịrị banyere 100 sekọnd, dị ka a ogologo nsogbu, a nnukwu
max_tokens ma ọ bụ a nkwado nlereanya. A na-adịghị na-agba ọsọ na-enweta ihe ọ bụla n'agbanyeghị n'agbanyeghị, na netwọk n'etiti gị na Nymbot nwere ike na-agba ọsọ a na-agba ọsọ njikọ mgbe banyere 100 sekọnd; a nlereanya na-agba ọsọ na ihe ọ na-egwu eji na-akwụ ụgwọ, ma a na-agba ọsọ na-agba ọsọ. A na-agba ọsọ na-enweta na-agba ọsọ, otú ọ na-agba ọsọ mgbe a nlereanya na-agba ọsọ.
Ọnwa
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 na-amalite na
:na-agba ọsọ comments, na-esonụ ọ bụla 15 nkeji n'oge ụdị na-egwu. SSE ndị ahịa na-egwu ha. - ajụjụ
"stream_options": {"include_usage": true}iji nweta ihe na-esote n'elu, na a n'èzíchoices, token na-ekwu, ego nanymbotObere - Ọ bụrụ na ị na-agba ọsọ njikọ na-agba ọsọ, model na-adịghị na-agba ọsọ: Nymbot na-agba ọsọ ndị ọzọ nke provider na-agba ọsọ, n'elu 25 nkeji, iji nweta ya token nọmba, na ị na-enye ihe na provider na-ekwu. Ọ dịghị nke na-agba ọsọ na-agba ọsọ na-agba ọsọ site na gị input na ihe e guzobere, na-agba ọsọ n'ụzọ zuru ezu maka a model na ihe atụ.
- A na-adịghị mma tupu mbụ chunk, dị ka
401ọ402, na-abịa dị ka JSON dị iche iche na koodu ya, na-abịa dị ka akara. A error mgbe akara na-amalite na-abịa dị ka a na-amalite akara.data: {"error": {…}}ihe, na akara na-agba ọsọ[DONE]. - Usoro na ngwá ọrụ, na ụdị na OpenAI's Responses transport, na-adịghị na-agba ọsọ site na ndị na-enye. Ha na-agba ọsọ na-agba ọsọ na-agba ọsọ, na-esonụ mgbe nzọụkwụ bụ zuru ezu.
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);
}
Ngwá Ọrụ Calls
Na-egosi ọrụ na tools na ụdị nwere ike ịchọrọ onye na-akpọ ma ọ bụ na-akpọ. Ị na-agba ọsọ ọrụ, na-agba ọsọ ya dị ka tool Nkọwa nke otu
tool_call_idNymbot na-agba ọsọ ọrụ gị; ọ na-agba ọsọ chọrọ nke model gị.
tool_choice Ọnwa "auto", "none",
"required" ọ {"type": "function", "function": {"name": "…"}}.The model list na-egosi na ụdị nwere ike na-akpọ ngwaọrụ (capabilities.tools) Ngwá ọrụ na-adịghị 400 unsupported_tool ọ nymbot/auto na na ole na ole na ole na ole na ole na ole na ole na ole na ole na ole na ole na ole na ole na ole na ole.
na "stream": true, ajụjụ na ngwá ọrụ na-agba ọsọ n'ime otu akpa na-esonụ dị ka a normal chunk usoro: ọrụ, otu chunk na-agba ọsọ onye ọ bụla ngwá ọrụ na ya index, id, aha na arguments, na na-agba ọsọ. Ndị ahịa na-agba ọsọ na-agba ọsọ ngwá ọrụ na-agba ọsọ ya dị ka obi.
Ntuziaka, akụkụ
"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 na a chọrọ
Ụdị na capabilities.vision Ị nwere ike ịhụ ihe. Tinye a image_url
Part to a user message, na ma ọ bụ na a public https:// Link ma ọ bụ a
data:image/…;base64, URL. Ọbụna 20 images per request. SVG images na-atụ aro, na ya bụ njikọ ihe karịrị 4,096 akara ma ọ bụ otu na aha nchịkọta ma ọ bụ password na ya (400 invalid_image_url) Ọnọdụ optional detail Ọ bụ
auto, low ọ high.
na nymbot/auto, a request na a image n'ime ya na-agbanwe na a standard model na nwere ike ịhụ. A catalog model na-enweghị capabilities.vision Keduzi foto na
400 unsupported_content. Pictures nwere ike ịbụ naanị n'ime ọrụ ozi. A njikọ ga-egosi na a nkwurịta ụka; Nymbot na-agba ọsọ foto na nkwurịta ụka nkwurịta ụka nkwurịta ụka nkwurịta ụka.
A image na-akwụ ụgwọ dị ka input tokens na provider na-akwụ ụgwọ maka ya, dị ka ndị ọzọ nke chọrọ.
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);
nkwado
Ụdị na capabilities.reasoning Ị nwere ike ịmụta ya tupu ha na-ekwu. Kpọmkwem ma ọ bụ obere reasoning_effort ("minimal", "low",
"medium" ọ "high") ma ọ "reasoning": {"effort": "high"}ma ọ bụ ajụjụ :thinking na model aha, nke na-ekwe omume elu. Na a model na-adịghị na-akpali akpali akpali akpali. Na nymbot/auto, :thinking na-agba ọsọ ọsọ na-agba ọsọ na-agba ọsọ.
Na Anthropic ihe omume na-eme ka a na-achọpụta ego nke banyere 1,000, 2,000, 8,000 ma ọ bụ 16,000 tokens, ọ dịghị ihe karịrị max_tokens na-ekwe omume. Na-agba ọsọ mgbe
tool_choice Ọ na-eme ka ọ na-eme ka ọ na-eme ka ọ na-eme ka ọ na-eme ka ọ na-eme ka ọ na-eme ka ọ na-eme ka ọ na-eme ka ọ.
Ntuziaka na-abịa n'ime message.reasoning_contentỌ bụ
delta.reasoning_content mgbe ọ na-agba ọsọ, mgbe ọ na-agba ọsọ na-agba ọsọ na-agba ọsọ na-agba ọsọ na-agba ọsọ na-agba ọsọ completion_tokensỤfọdụ ndị na-arụ ọrụ na-adịghị na-aga n'ụzọ zuru ezu, na ọ na-agba ọsọ.
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);
Ọnụ ọgụgụ
A na-agba ọsọ na ụdị aha na-eme ka ọ bụrụ na a na-agba ọsọ, na-enweghị ihe ọzọ. Ha na-arụ ọrụ na full ids na short names otu, dị ka na anthropic/claude-sonnet-5:online.
| Ọnụ | mmetụta |
|---|---|
:online | Na-achọ site na web mbụ, dị ka plugins: [{"id": "web"}]Nyocha Web nchọpụta. |
:thinking | Ọnụ ọgụgụ dị elu; on nymbot/autoN'ihi na ihe na-adịghị mma, na ihe na-adịghị mma, 400 model_not_found na “enweghị ihe ọ bụla na-enweta ”. |
:nitro, :floor, :exacto, :extended | Onye ọ bụla catalogue nlereanya nwere otu ụzọ, ya mere, ọ dịghị ọ bụla ngwa ngwa, obere ma ọ bụ ogologo iji nhọrọ; ndị na-agba ọsọ na-agba ọsọ maka ụdị aha kopied si ndị ọzọ ọrụ na-arụ ọrụ. |
Ọ bụla ọzọ n'akụkụ na-egbochi. The zuru aha na-agba ọsọ mbụ, otú a nlereanya nke na id na-egbochi a colon na-arụ ọrụ; ọ dịghị nke a, n'akụkụ na-egbochi n'akụkụ otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n'otu n' 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 nchọpụta
Onye ọ bụla nkwado nlereanya nwere ike ikwu site na live web. Nymbot na-achọ ihe na-esonụ ọrụ ozi (na ya mbụ 2,000 akara), na-akpọ ndị kasị mma akụkọ na-enye ha na nlereanya na ajụjụ, na-akpọ n'ihi na ihe ndị ọzọ na nlereanya na-abụghị na-enweta ọmụma. E nwere abụọ usoro:
- ikpeazụ search:
"plugins": [{"id": "web", "max_results": 5}]ọ bụ a:onlineN'ihi na n'ihi na model. - Search mgbe ọ na-enyere:
"tools": [{"type": "web_search", "parameters": {"max_results": 5}}]Ọzọkwa kwadoro dị kaweb_search_previewọopenrouter:web_searchNymbot na-agba ọsọ naanị mgbe ajụjụ dị ka ọ chọrọ ozi ugbu a, nke a na-eji ngwa ahụ.
max_results bụ 5 n'ụzọ zuru ezu na n'elu 10. The isi na-aga na
nymbot.web_search.sourcesOnye ọ bụla nwere a title, snippet na
urlna as url_citation nkọwa na ozi.
Onye ọ bụla search na-agba ọsọ $ 0,008, na-agba ọsọ na sats, n'elu nke tokens, na ọ bụ akụkụ nke na-agba ọsọ. The peeji nke ọ na-agba ọsọ na-agba ọsọ bụ input tokens, otú a mkpọchi site na web na-agba ọsọ karịa otu ajụjụ na-agba ọsọ, ọbụna ọtụtụ oge karịa.
Ntuziaka, akụkụ
"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);
Ngwọta API
OpenAI bụ format nke ọhụrụ, nke a na-eji site na OpenAI Agents SDK na site na Codex. Ọ na-agba ọsọ na ụdị, ịkwụ ụgwọ na atụmatụ dị ka Chat Completions.
POST https://nymbot.ai/api/v1/responses Ị chọrọ a API Key.
| Ọnọdụ | ụdị | Nlekọta | Nkọwa |
|---|---|---|---|
model | Ọnwa | Ee | N'ihi na Chat NkọwaN'ihi na suffixes gụnyere. |
input | string ma ọ bụ array | Ee | A string, ma ọ bụ a nkọwa nke ihe: ozi (ụdị ọrụ) user, assistant, system, developer) na input_text, input_image na output_text akụkụ, na function_call na function_call_output ihe maka ngwá ọrụ. input_image na-eme image_url njikọ ma ọ bụ data URL, ọ bụghị faịlụ id. reasoning na web_search_call ihe ndị na-atụ aro; item_reference Ọ dịghị. |
instructions | Ọnwa | Ọ dịghị | Ngwa usoro. |
max_output_tokens | Ntuziaka | Ọ dịghị | The kasị tokens na-egosi. |
temperaturetop_p | nọmba | Ọ dịghị | Sampling akara, ebe ụdị na-eme ha. |
toolstool_choiceparallel_tool_calls | array, string ma ọ bụ ihe, boolean | Ọ dịghị | Ọrụ ngwá ọrụ, na usoro nchịkọta ({"type": "function", "name": …, "parameters": …}) a web_search ọ web_search_preview Ngwá Ọrụ Turns On Web nchọpụta mgbe ọ na-enyere. Ndị ọzọ na-ebipụta ngwá ọrụ na-adịghị. |
reasoning | Obere | Ọ dịghị | {"effort": "minimal" | "low" | "medium" | "high"}. xhigh na max Ọnụ high; none Kpọọ ya. |
text.formatresponse_format | Obere | Ọ dịghị | Structured output, dị ka a JSON usoro ma ọ bụ json_object. |
metadata | Obere | Ọ dịghị | Gbanwere na-adịghị agbanwe na ntụziaka. Na ihe karịrị 16 akara, akara karịa 64 akara na ihe karịa karịa 512. |
stream | Ọchịchị | Ọ dịghị | Stream ihe dị ka n'okpuru. |
store | Ọchịchị | Ọ dịghị | Ignored. Ọ dịghị ihe ọ bụla na-achịkwa, na mkpọsa mgbe niile na-ekwu "store": false. |
previous_response_idconversationbackground | obere, obere, obere | Ọ dịghị | Ọ dịghị nkwado: 400 unsupported_parameterN'ụzọ zuru ezu, na-enweta n'ụzọ zuru ezu input ọ bụla oge. |
nzọụkwụ
{
"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 na-egosi na output dị ka a function_call Ihe na
call_id, name na arguments; Gbanwee ihe ọ bụla dị ka a
function_call_output item na otu call_idNtuziaka, mgbe ụdị na-ere ya, bụ a reasoning Ihe na reasoning_text Content, na-egosi na mbụ. status Ọ bụ incomplete Ọ bụrụ na mmasị mmasị
max_output_tokens ma ọ bụ onye na-agba ọsọ,
incomplete_details.reason Tinye na max_output_tokens ọ
content_filterThe mkparịta ụka na-egosi na nchịkọta nke nchịkọta (temperature, ngwá ọrụ, ngwá ọrụ nhọrọ, wdg) dị ka OpenAI na-eme, na-eme ka nymbot Ọnụahịa Object
Streamed, ọ bụla event bụ a event: Line na a data: Line na a
sequence_numberna usoro a: response.created,
response.in_progress, response.output_item.added,
response.content_part.addedỌ bụla nọmba response.output_text.delta,
response.output_text.done, response.content_part.done,
response.output_item.doneNa-ekwu response.completed na-eji na ego. A nzọụkwụ na-agba ọsọ response.incomplete n'ezie, na a na-adịghị mma mgbe stream na-amalite na response.failed.Nyocha streams dị ka ihe onwe ya na response.reasoning_text.delta na .doneNgwa ngwá ọrụ na-abịa mgbe ozi, onye ọ bụla dị ka ihe na response.function_call_arguments.delta
na .done.
| ọnọdụ | mgbe |
|---|---|
400 | Ọ dịghị model ọ input; previous_response_id, conversation, background ma ọ bụ item_reference (unsupported_parameter); a na-adịghị na-akwado ngwá ọrụ ma ọ bụ content ụdị. |
402, 403, 404, 429, 502, 503 | N'ihi na Chat Complements. |
cURL
curl https://nymbot.ai/api/v1/responses \
-H "Authorization: Bearer $NYMBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-5",
"instructions": "Answer in one short paragraph.",
"input": "What is a Lightning invoice?"
}'
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://nymbot.ai/api/v1", api_key=os.environ["NYMBOT_API_KEY"])
response = client.responses.create(
model="anthropic/claude-sonnet-5",
instructions="Answer in one short paragraph.",
input="What is a Lightning invoice?",
)
print(response.output_text)
JavaScript
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://nymbot.ai/api/v1", apiKey: process.env.NYMBOT_API_KEY });
const response = await client.responses.create({
model: "anthropic/claude-sonnet-5",
instructions: "Answer in one short paragraph.",
input: "What is a Lightning invoice?",
});
console.log(response.output_text);
Anthropic ozi
The format nke Anthropic, maka Anthropic SDKs na Claude Code. Ọ na-arụ ọrụ na ọ bụla nlereanya na catalogue, ọ bụghị naanị Claude: njikọ na-ekwu, na-agba ọsọ site na otu pipeline, na-ekwu.
POST https://nymbot.ai/api/v1/messages — mkpa a API key, dị ka x-api-key ọ Authorization: Bearer.
The anthropic-version na anthropic-beta Anthropic ụdị aha na-ekwu na catalog, otú Claude Code na SDKs na-arụ ọrụ na aha ha na-eji:
- A na-akpọ Catalogue, dị ka
claude-sonnet-5ọanthropic/claude-opus-5Ọ na-eji ya dị ka ọ bụ. - Ọnụ ọgụgụ (
-20260514),-latest, a version tag dị ka-v1, a bracketed tag dị ka[1m]na aanthropic/ọanthropic.prefix na-agba ọsọ, na dots na dashes na version na-agba ọsọ ụzọ (claude-haiku-4-5ịhụclaude-haiku-4.5). - Ọ bụrụ na nke a na-enweghị ihe ọ bụla, a na-eji ụlọ (Opus, Sonnet ma ọ bụ Haiku) ma ọ bụrụ na version nke catalog bụ otu ma ọ bụ ọhụrụ karịa nke a chọrọ.
- A aha nke na-enweghị ihe ọ bụla na-atụle
404not_found_error.
| Ọnọdụ | ụdị | Nlekọta | Nkọwa |
|---|---|---|---|
model | Ọnwa | Ee | A catalog model id, ma ọ bụ a Anthropic model aha. |
max_tokens | Ntuziaka | Ee | The kasị tokens na-egosi. |
messages | Ọnọdụ | Ee | user na assistant ịgbado ọkụ, na text, image (base64 ma ọ bụ isi URL), tool_use na tool_result nkwado thinking Blocks si gara aga turns na-akwụ ụgwọ na-atụ aro. |
system | string ma ọ bụ array | Ọ dịghị | System prompt, dị ka a string ma ọ bụ text blocks. |
temperaturetop_p | nọmba | Ọ dịghị | Sampling akara, ebe ụdị na-eme ha. top_k Ọ na-enweta na na-abụ. |
stop_sequences | Ọdịdị nke Strings | Ọ dịghị | Text nke na-akwụ ụgwọ. Ọ dịkarịa na 4 string, ọ dịkarịa na ọ dịkarịa na 256 characters. |
toolstool_choice | obere, obere | Ọ dịghị | Ngwá Ọrụ na name, description na input_schemaa na web_search Server Tool na-agba ọsọ Web nchọpụta; Ngwá ọrụ ndị ọzọ nke Anthropic (bash, ederede ederede, iji kọmputa) na-adịghị unsupported_tool. tool_choice Ọnwa auto, any, tool ọ nonena disable_parallel_tool_use. |
thinking | Obere | Ọ dịghị | {"type": "enabled", "budget_tokens": 8192}, {"type": "adaptive"} ọ {"type": "disabled"}The ego na-agba ọsọ: n'okpuru 2.048 dị ala, site na 2.048 dị ala, site na 8.192 dị ala, site na 16.384 dị elu. Adaptive uses output_config.effortma ọ bụ elu. |
stream | Ọchịchị | Ọ dịghị | Stream na Anthropic ihe omume format. |
metadata | Obere | Ọ dịghị | Ọ bụrụ na ị na-enweta ma na-egosi. |
nzọụkwụ
{
"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 Ọzọkwa nwere ike ịdabere tool_use Blocks na a thinking
Blocks, nke signature Ọ bụ n'èzí stop_reason Ọ bụ
end_turn, max_tokens, tool_use ọ refusalna-arụ ọrụ na otu ụzọ dị ka finish_reason ọ
Chat Nkọwa; stop_sequence Ọ bụ mgbe
null, ọbụna mgbe a stop usoro na-akwụ ụgwọ. input_tokens na-egosi naanị ọhụrụ input; cache input bụ na abụọ cache fields. The price bụ na
nymbot Object na ihe X-Nymbot-Cost-Sats Ọnọdụ
Streamed, ihe omume bụ Anthropic's: message_start,
content_block_start, ping, content_block_delta
(text_delta, input_json_delta ọ thinking_delta),
content_block_stop, message_delta na-agba ọsọ ọsọ, iji na nymbot obere ego, na message_stopa na ping na-esonụ ọ bụla 15 nkeji n'oge ụdị na-arụ ọrụ. Ngwa ngwá ọrụ na-abịa mgbe ederede,
tool_use block na ya nile input na otu input_json_delta.
Errors on this endpoint use Anthropic's format:
{"type": "error", "error": {"type": "not_found_error", "message": "…"}}Ọnụ ọgụgụ dị obere 402 billing_errorA na-agba ọsọ ndị na-enye
503 overloaded_errorA na-adịghị mma mgbe stream na-amalite na-esonụ dị ka a error Ọnọdụ
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);
Tinye tokens
Ọnụ ọgụgụ nke ọtụtụ input tokens a Messages request ga-eji, otú a client nwere ike ịzụta tupu ya na-esonụ. Ọ bụ free, ma ọ dị mkpa a key.
POST https://nymbot.ai/api/v1/messages/count_tokens — mkpa a API key. Free.
The ahụ bụ otu dị ka nkwadoỌ dịghị max_tokens; model aha ga-ekpuchi. The akara bụ a akara: ndị akara nke usoro akara, ozi, ngwa ngwa na ngwa akara na-agụmakwụkwọ na-agba ọsọ, plus 1,600 maka onye ọ bụla image. Ọ bụghị tokenizer onwe ya, ya mere na akara ahụ nwere ike ịbụ dị iche. A akara na-ewe ka ya cap nwere ike na-eji ya.
nzọụkwụ
{ "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);
Ọnụ ọgụgụ
Onye ọ bụla nlereanya na generator na API na-enweta, na ihe ọ bụla ọ ga-eri. The ndepụta na-akpọ site na otu live catalog dị ka picker nke ngwa, otú ahụ bụ mgbe niile nke na-arụ ọrụ na-arụ ọrụ.
GET https://nymbot.ai/api/v1/models — na-adịghị mkpa key. Mmadụ maka 5 nkeji.
GET /api/v1/models/{id} Otu n'ime 1 entry
| Ọnọdụ | ụdị | Nlekọta | Nkọwa |
|---|---|---|---|
type | ọkọlọtọ (Query) | Ọ dịghị | chat (Ọ na-adịghị mma) image, video, audio, embedding ọ allỌ bụrụ na ị nwere ike ịnweta ọtụtụ, dị ka image,video. |
Prices bụ ihe ị na-enye, na ụgwọ na margins na-enweta, na dollars na in sats na ugbu a Bitcoin price. balance na-ekwu na nke ụdị na-eji.
nymbot_key bụ aha ntanetị nke ụdị na ngwa. created bụ mgbe niile 0, n'ihi na catalog na-adịghị na-egosi mgbe a nlereanya e jiri. A nlereanya na-enweghị a na-ekpebi token price per_request kama.
nymbot/auto Ọ bụ mgbe niile mbụ, price as variablena a
routes Listing na-enye ọnụ ọgụgụ nke onye ọ bụla nkọwa ụzọ. Ọ na-esonụ vision na akụkọ ihe mere eme, ma ọ bụghị ngwá ọrụ.
GET /api/v1/models/{id} na-enweta otu aha na alias dị ka ajụjụ, na-ekpuchi nkọwa maka ụdị ha na-ekpuchi.
nzọụkwụ
{
"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"
}
]
}
Ndị ọzọ:
- Ngwaahịa entries nwere
capabilities(accepts_image_url,requires_image_url,edit) na a priceper_generation. - Ngwaahịa entries nwere
max_duration_secondsnaresolutionsna a priceper_secondn'ihi na ihe ọ bụla. - ekwentị entries nwere
audio_typespeechọtranscriptionỌnụahịaper_1k_charsọper_minute. - Ngwuputa entries nwere
dimensions,context_length,max_inputsna a price per million input tokens.
Ụdị price "estimated": true bụ ihe na-ekwu nke ngwa maka generator nke price a na-adịghị na-ekwu. A unknown type ịkwụ ụgwọ 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);