Snel antwoord
Hoe roep ik LLMwithCrypto aan vanuit Node.js?
Installeer het officiële pakket met npm install openai en maak daarna de client met baseURL: "https://llmwithcrypto.com/api/v1" en apiKey: process.env.LLMWITHCRYPTO_API_KEY. LLMwithCrypto antwoordt client.chat.completions.create() in het OpenAI-formaat voor 12 open-weight modellen, met streaming en tool calls waar het model die ondersteunt, zoals gedocumenteerd op 23 oktober 2026.
Wat je nodig hebt
| Node.js | 18 of nieuwer, ES-modules (.mjs of "type": "module") |
|---|---|
| Pakket | openai (officieel) |
| Base URL | https://llmwithcrypto.com/api/v1 |
| Key | In de omgevingsvariabele LLMWITHCRYPTO_API_KEY, nooit in de code of de browser |
Hoe verstuur ik één zoekopdracht?
Maak de client één keer aan bij het opstarten en hergebruik hem overal. Houd de sleutel op de server: een sleutel die in browsercode meegaat, kan door iedereen die de pagina opent worden gelezen, dus roep de API aan vanuit je backend en stuur alleen het antwoord naar de browser.
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://llmwithcrypto.com/api/v1',
apiKey: process.env.LLMWITHCRYPTO_API_KEY,
});
const resp = await client.chat.completions.create({
model: 'deepseek-v4-pro',
messages: [
{ role: 'system', content: 'Answer in two sentences.' },
{ role: 'user', content: 'What is a context window?' },
],
max_tokens: 200,
});
console.log(resp.choices[0].message.content);
console.log(resp.usage.prompt_tokens, 'in,', resp.usage.completion_tokens, 'out');
Hoe draai ik een batch zonder tegen de rate limit aan te lopen?
Draai een vast aantal zoekopdrachten tegelijk. De kleine helper mapLimit hieronder houdt er vier in de lucht en geeft de resultaten in volgorde terug; er is geen extra pakket nodig. Elk account heeft een limiet per minuut voor requests en tokens, te zien in het dashboard; vraag support en die kan worden verhoogd.
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://llmwithcrypto.com/api/v1',
apiKey: process.env.LLMWITHCRYPTO_API_KEY,
});
async function translate(text) {
const resp = await client.chat.completions.create({
model: 'qwen3-235b-a22b-instruct-2507',
messages: [
{ role: 'system', content: 'Translate into Spanish. Reply with the translation only.' },
{ role: 'user', content: text },
],
max_tokens: 200,
});
return resp.choices[0].message.content;
}
// at most 4 requests in flight
async function mapLimit(items, limit, fn) {
const out = new Array(items.length);
let next = 0;
async function worker() {
while (next < items.length) {
const i = next++;
out[i] = await fn(items[i]);
}
}
await Promise.all(Array.from({ length: limit }, worker));
return out;
}
const lines = ['Your order has shipped.', 'Your payment was received.', 'Your key was revoked.'];
console.log(await mapLimit(lines, 4, translate));
Hoe stream ik het antwoord?
Geef stream: true mee en gebruik for await op het resultaat. Elk chunk bevat een stukje tekst in choices[0].delta.content; met stream_options: { include_usage: true } bevat het laatste chunk de tokenaantallen.
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://llmwithcrypto.com/api/v1',
apiKey: process.env.LLMWITHCRYPTO_API_KEY,
});
const stream = await client.chat.completions.create({
model: 'deepseek-v4.1-flash',
messages: [{ role: 'user', content: 'Write a haiku about latency.' }],
stream: true,
stream_options: { include_usage: true },
max_tokens: 120,
});
for await (const chunk of stream) {
const text = chunk.choices[0]?.delta?.content;
if (text) process.stdout.write(text);
if (chunk.usage) console.log(`\n${chunk.usage.prompt_tokens} in, ${chunk.usage.completion_tokens} out`);
}
Hoe lees ik de resterende credits?
Het credits-endpoint hoort niet bij de OpenAI SDK, dus roep je het aan met fetch. Het is gratis; roep het aan vóór een grote batch om te controleren of de credits ervoor toereikend zijn.
const res = await fetch('https://llmwithcrypto.com/api/v1/credits', {
headers: { Authorization: `Bearer ${process.env.LLMWITHCRYPTO_API_KEY}` },
});
const credits = await res.json();
console.log('credit left:', credits.balance_usd, 'USD');
Hoe ga ik om met fouten?
De SDK gooit een OpenAI.APIError bij elke HTTP-fout, met de status in err.status en de code van de body in err.code. Test op de code, niet op het bericht: insufficient_balance betekent saldo opwaarderen, model_not_found betekent een verkeerd id, rate_limit_exceeded betekent wachten en opnieuw proberen.
De SDK probeert sommige fouten al twee keer opnieuw met een pauze (maxRetries). Houd bij lange batches die standaard aan, begrens de concurrency zoals hierboven, en log de fouten die je opgeeft. De foutenpagina] noemt elke status en welke een nieuwe poging waard zijn. Mislukte aanroepen kosten niets: Je betaalt per token vanaf je saldo: input- en outputtokens worden geteld door de tokenizer van het model zelf en afgerekend tegen de prijs van dat model per 1M tokens. Een call die op een fout eindigt, kost niets.
Hoe verhuis ik een bestaande OpenAI-app?
Wijzig de client-opties, baseURL en apiKey, en vervang elke gpt-…-modelnaam door een id van de modellenpagina]. Prompts, streamingcode en het parsen van choices en usage blijven zoals ze zijn. Draai je tests op het nieuwe model voordat je het verkeer omzet: tool calling en JSON-output volgen wat elk model ondersteunt.
Node.js: veelgestelde vragen
Kan ik de API vanuit de browser aanroepen?
Technisch kan dat, maar nooit met je sleutel in de pagina. Roep de API aan vanuit je server, of vanuit een serverless function die de sleutel bevat.
Werkt de Vercel AI SDK?
Elke library die een OpenAI-compatibele base URL accepteert, werkt. De API spreekt het OpenAI chat completions-formaat: richt de OpenAI SDK, LangChain of elk OpenAI-compatibel hulpmiddel op onze base URL met je sleutel, en verander de modelnaam.
Wat gebeurt er als de credits op zijn?
Aanroepen geven 402 insufficient_balance terug en kosten niets. De foutenpagina] laat zien hoe je moet reageren.