> ## Documentation Index
> Fetch the complete documentation index at: https://platform.doodocs.kz/llms.txt
> Use this file to discover all available pages before exploring further.

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

> Получите Developer API-ключ и сделайте первый запрос

## Что понадобится

<Steps>
  <Step title="Аккаунт в Doodocs People">
    Роль администратора тенанта — только она даёт доступ к разделу интеграций.
  </Step>

  <Step title="Developer API-ключ">
    Настройки → Интеграции → **Developer API** → *Создать ключ*. Ключ показывается один раз, сохраните его в менеджере секретов.

    <Warning>
      Ключ даёт доступ к данным всего тенанта. Не коммитьте его в репозиторий и не используйте во фронтенде.
    </Warning>
  </Step>

  <Step title="Проверка ключа">
    Убедитесь, что ключ принят, прежде чем строить интеграцию.
  </Step>
</Steps>

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

<CodeGroup>
  ```bash cURL theme={null}
  curl https://app.doodocs.kz/api/developer/v1/api_key/_verify \
    -H "X-API-Key: ddp_bF49eXwgysLgkZkLDczavSoJ_nx7JYFVQ5Jn2ZEM"
  ```

  ```ts TypeScript theme={null}
  const res = await fetch(
    "https://app.doodocs.kz/api/developer/v1/api_key/_verify",
    { headers: { "X-API-Key": process.env.DOODOCS_API_KEY! } },
  );

  if (!res.ok) throw new Error(`Ключ отклонён: ${res.status}`);
  ```

  ```go Go theme={null}
  req, _ := http.NewRequest(http.MethodGet,
      "https://app.doodocs.kz/api/developer/v1/api_key/_verify", nil)
  req.Header.Set("X-API-Key", os.Getenv("DOODOCS_API_KEY"))

  resp, err := http.DefaultClient.Do(req)
  if err != nil {
      return err
  }
  defer resp.Body.Close()
  ```

  ```python Python theme={null}
  import os, requests

  resp = requests.get(
      "https://app.doodocs.kz/api/developer/v1/api_key/_verify",
      headers={"X-API-Key": os.environ["DOODOCS_API_KEY"]},
  )
  resp.raise_for_status()
  ```
</CodeGroup>

Успешный ответ — пустой JSON-объект со статусом `200`:

```json Ответ theme={null}
{}
```

<Check>
  Получили `200` — ключ активен, можно переходить к загрузке данных.
</Check>

## Загрузка сотрудников

Эндпоинт `POST /developer/v1/ingest/{source_type}` принимает пачку записей из
внешней системы. Область `ingest:write` доступна только ключам
супер-администраторов, а заголовок `Idempotency-Key` обязателен — он защищает от
двойной загрузки при повторе запроса.

```bash theme={null}
curl -X POST https://app.doodocs.kz/api/developer/v1/ingest/KEDO \
  -H "X-API-Key: $DOODOCS_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: quickstart-persons-001" \
  -d '{
    "payload_type": "PERSONS",
    "create_missing": true,
    "records": [
      { "external_id": "E-1024", "first_name": "Каныш", "last_name": "Сатпаев", "email": "k.satbayev@example.kz" }
    ]
  }'
```

Запрос ставится в асинхронную обработку:

```json theme={null}
{
  "ingest_request_id": "8f4e1c2a-…",
  "status": "ACCEPTED",
  "record_count": 1
}
```

Источники, типы пейлоадов и полные схемы записей — в
[справочнике Ingest](/ru/api-reference/ingest).

## Дальше

<Columns cols={2}>
  <Card title="Аутентификация" icon="key" href="/ru/api-reference/authentication">
    Как хранить и ротировать ключи.
  </Card>

  <Card title="Ошибки" icon="triangle-exclamation" href="/ru/api-reference/errors">
    Коды ошибок и что с ними делать.
  </Card>
</Columns>
