# Быстрый старт

Возьми ключ, укажи адрес и отправь первый запрос. Konductor принимает запросы в формате OpenAI Chat Completions (`/v1/chat/completions`) и в формате Anthropic Messages (`/v1/messages`).

## Ключ

Нужен ключ компании: строка, которая начинается с `sk-kz-`. Положи её в переменную окружения и не храни в коде:

```bash
export KONDUCTOR_KEY="<ключ>"
```

В каждом запросе ключ идёт в заголовке `Authorization: Bearer $KONDUCTOR_KEY`. Для `/v1/messages` и `/v1/key` подойдёт и заголовок `x-api-key`. Не отправляй два разных ключа в двух заголовках сразу: Konductor ответит 401.

## Адрес

Адрес Konductor — `https://llm.kodzavod.ru`. Пути запросов:

| Путь | Что делает |
|---|---|
| `/v1/chat/completions` | Ответ модели в формате OpenAI |
| `/v1/messages` | Ответ модели в формате Anthropic |
| `/v1/key` | Статус ключа, его лимит и остаток |

Если SDK просит `base_url`, смотри, дописывает ли он `/v1` сам. OpenAI SDK не дописывает, поэтому ему нужен адрес `https://llm.kodzavod.ru/v1`. Anthropic SDK и Claude Code дописывают `/v1/messages` сами, им нужен адрес без `/v1`.

## Модель

Идентификатор модели возьми из каталога на странице [Цены](/konductor/pricing) и положи в переменную:

```bash
export KONDUCTOR_MODEL="<идентификатор модели>"
```

## Первый запрос

curl:

```bash
curl https://llm.kodzavod.ru/v1/chat/completions \
  -H "Authorization: Bearer $KONDUCTOR_KEY" \
  -H "Content-Type: application/json" \
  -d @- <<EOF
{
  "model": "$KONDUCTOR_MODEL",
  "messages": [{"role": "user", "content": "Привет!"}],
  "max_tokens": 256
}
EOF
```

В ответе текст модели лежит в `choices[0].message.content`, а в `usage.cost_rub` — сколько рублей списано с баланса за этот запрос.

Node.js 18 и новее, без зависимостей:

```js
const response = await fetch('https://llm.kodzavod.ru/v1/chat/completions', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.KONDUCTOR_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: process.env.KONDUCTOR_MODEL,
    messages: [{ role: 'user', content: 'Привет!' }],
    max_tokens: 256,
  }),
});

if (!response.ok) {
  throw new Error(`${response.status} ${await response.text()}`);
}

const completion = await response.json();
console.log(completion.choices[0].message.content);
```

Python и OpenAI SDK — на странице [OpenAI SDK через Konductor](/konductor/docs/openai-sdk). Claude Code — на странице [Claude Code через Konductor](/konductor/docs/claude-code).

## Проверь ключ

Запрос к `/v1/key` ничего не списывает и не расходует лимит запросов в минуту. Он возвращает статус ключа, его лимит и остаток:

```bash
curl https://llm.kodzavod.ru/v1/key \
  -H "Authorization: Bearer $KONDUCTOR_KEY"
```

## Если запрос не прошёл

Коды 402, 403 и 429 разобраны на странице [Ошибки 402, 403 и 429](/konductor/docs/errors). Полный список путей, полей и ответов — в [справочнике API](/konductor/docs/api).
