Grok API на TypeScript и Node.js
Обновлено:
Минимальная рабочая интеграция Grok API Dev с официальным TypeScript OpenAI SDK: запрос из Node.js, server-side endpoint и потоковый ответ.
Установка TypeScript SDK
npm
npm install openai.env
GROK_API_DEV_KEY=sk-lg-YOUR_API_KEYПервый запрос к Grok API Dev
TypeScript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.GROK_API_DEV_KEY,
baseURL: "https://api.llm-gate.tech/v1",
timeout: 3_600_000,
maxRetries: 2,
});
const response = await client.responses.create({
model: "grok-4.5",
input: "Explain the event loop in two sentences.",
});
console.log(response.output_text);
console.log(response.usage);Запрос из Next.js
Next.js route
// app/api/grok/route.ts
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.GROK_API_DEV_KEY,
baseURL: "https://api.llm-gate.tech/v1",
});
export async function POST(request: Request) {
const { input } = await request.json();
const response = await client.responses.create({
model: "grok-4.5",
input,
});
return Response.json({ text: response.output_text });
}Streaming
TypeScript streaming
const stream = await client.responses.create({
model: "grok-4.5",
input: "Write a short TypeScript example.",
stream: true,
});
for await (const event of stream) {
if (event.type === "response.output_text.delta") {
process.stdout.write(event.delta);
}
}Повторы и таймауты
В OpenAI SDK уже есть механизм повторных запросов. Свой механизм ретраев добавлять не нужно: задайте maxRetries и timeout при создании клиента.
TypeScript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.GROK_API_DEV_KEY,
baseURL: "https://api.llm-gate.tech/v1",
maxRetries: 2,
timeout: 3_600_000,
});- 401: проверьте ключ и серверную переменную окружения. Повтор без исправления не поможет.
- 404: проверьте ID модели и Base URL.
- 429: дождитесь Retry-After и уменьшите параллелизм.
- 500, 504 или 529: ограниченно повторите запрос с backoff и jitter.
Полный список кодов и способы их обработки собраны на странице «Ошибки API».