Node.js
A Norlen é compatível com OpenAI, então a SDK oficial openai em Node.js funciona apontando a baseURL para a Norlen.
npm install openaiConfiguração
Seção intitulada “Configuração”import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.norlen.io/v1", apiKey: process.env.NORLEN_API_KEY,});const resp = await client.chat.completions.create({ model: "qwen3.6-35b", messages: [{ role: "user", content: "Olá, Norlen!" }],});console.log(resp.choices[0].message.content);Streaming
Seção intitulada “Streaming”const stream = await client.chat.completions.create({ model: "qwen3.6-35b", messages: [{ role: "user", content: "Conte até cinco." }], stream: true,});for await (const chunk of stream) { process.stdout.write(chunk.choices[0]?.delta?.content ?? "");}Embeddings
Seção intitulada “Embeddings”const resp = await client.embeddings.create({ model: "qwen3-embedding", input: ["primeiro texto", "segundo texto"],});console.log(resp.data[0].embedding.slice(0, 5));A geração de imagem usa outra base URL (app.norlen.io/api/v1) e não passa pela SDK — use fetch:
const r = await fetch("https://app.norlen.io/api/v1/images/generations", { method: "POST", headers: { Authorization: `Bearer ${process.env.NORLEN_API_KEY}`, "Content-Type": "application/json", }, body: JSON.stringify({ model: "qwen-image", prompt: "Um farol ao amanhecer", size: "1024x1024" }),});const { data } = await r.json();const buffer = Buffer.from(data[0].b64_json, "base64");await import("node:fs/promises").then((fs) => fs.writeFile("imagem.png", buffer));