How to Call an AI API in Node.js (2026): JavaScript Quickstart

A copy-paste Node.js/JavaScript quickstart for calling LLMs, image and video models over one API — fetch, auth, streaming, retries, and switching models in one line.

How to Call an AI API in Node.js (2026): JavaScript Quickstart

Calling an AI API in Node.js

From zero to a working call in JavaScript — LLMs, images and video — using one key so you can switch models without new SDKs. Get a key first: how to get an API key.

Setup

Node 18+ has fetch built in. Keep your key in an env var:

export LINKMODEL_API_KEY="sk_live_..."

Your First LLM Call

const res = await fetch("https://api.linkmodel.ai/v1/chat/completions", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.LINKMODEL_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    model: "claude-sonnet-4-6",
    messages: [{ role: "user", content: "Explain event loops in 2 sentences." }],
  }),
});
if (!res.ok) throw new Error(`HTTP ${res.status}`);
console.log(await res.json());

Swap model to gpt-5.6-terra, gemini-3.5-flash, or deepseek-v4-flash — one key, no new client. See multimodal AI API.

Generating an Image (Async)

const r = await fetch("https://api.linkmodel.ai/api/v1/image-generation", {
  method: "POST",
  headers: { "Authorization": `Bearer ${process.env.LINKMODEL_API_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({ model: "seedream-5.0-pro", prompt: "Hero banner, clean type, 2K" }),
}).then(x => x.json());
const taskId = r.data.task_id;   // then poll GET /api/v1/query/image-generation?task_id=

Poll GET /api/v1/query/image-generation?task_id=... for images or GET /v1/videos/generations/{task_id} for videos until the task reports success, then read the result URL.

Never Ship Keys to the Browser

Call the AI API from your backend / serverless function, not client-side — a key in frontend JS is trivially stolen. For apps, proxy through your server (same idea as AI API for mobile apps).

Retries with Backoff

async function call(body, tries = 4) {
  for (let i = 0; i < tries; i++) {
    const r = await fetch(URL, { method: "POST", headers: H, body: JSON.stringify(body) });
    if (r.status !== 429) return r.json();
    await new Promise(s => setTimeout(s, 2 ** i * 1000)); // exponential backoff
  }
  throw new Error("rate limited");
}

See AI API rate limits.

Bottom Line

fetch, one key, and a model string gets you LLMs, images and video from Node — call it server-side, add backoff, and stream long outputs (streaming guide). Confirm endpoints in the docs.

Start free with a $1 credit and run your first call.

About the author

Claire Lowe

Claire Lowe

AI and API researcher at LinkModel

Claire Lowe is an AI and API researcher at LinkModel, specializing in generative AI models, API pricing, provider comparisons, and multimodal infrastructure. Her work is grounded in official documentation, primary-source pricing data, and hands-on research, with a focus on helping developers and businesses make informed decisions about AI models and API providers.

Related Posts