# Grok API на TypeScript и Node.js

Минимальная рабочая интеграция Grok API Dev с официальным TypeScript OpenAI SDK: запрос из Node.js, server-side endpoint и потоковый ответ.

## Установка TypeScript SDK

```bash
npm install openai
```

```bash
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

```typescript
// 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
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](https://grok-api.dev/ru/docs/errors)

## Связанные страницы

- [Messages API](https://grok-api.dev/ru/docs/messages)
- [Streaming API](https://grok-api.dev/ru/docs/streaming)
- [Python](https://grok-api.dev/ru/docs/python)
- [cURL](https://grok-api.dev/ru/docs/curl)
