> For the complete documentation index, see [llms.txt](https://goauth.gitbook.io/goauth-documentation/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://goauth.gitbook.io/goauth-documentation/api-reference.md).

# API Reference

#### Инициализация OAuth

**Endpoint:** `POST https://goauth.top/api/auth/init`

**Content-Type:** `application/json`

**Параметры запроса**

| Параметр       | Тип    | Обязательный | Описание                                                                                                                     |
| -------------- | ------ | ------------ | ---------------------------------------------------------------------------------------------------------------------------- |
| `project_key`  | string | Да           | Ваш публичный ключ проекта (pk\_...)                                                                                         |
| `provider`     | string | Да           | Провайдер: `google`, `yandex`, `vk`, `telegram`                                                                              |
| `signature`    | string | Да           | HMAC-SHA256 подпись запроса                                                                                                  |
| `redirect_url` | string | Нет          | URL для редиректа после успешной авторизации. Если параметр не указан, используется URL перенаправления из настроек проекта. |

**Генерация подписи**

Подпись создается так:

```
signature = HMAC-SHA256(project_key + provider, project_secret)
```

Где:

* `project_key` — ваш публичный ключ
* `provider` — название провайдера
* `project_secret` — ваш секретный ключ

**Ответ при успехе (200)**

```json
{
  "auth_url": "https://accounts.google.com/o/oauth2/v2/auth?...",
  "state": "st_abc123def456...",
  "expires_in": 600
}
```

**Поля ответа:**

* `auth_url` — ссылка для редиректа юзера на страницу авторизации
* `state` — токен состояния (для защиты от CSRF, опционально)
* `expires_in` — время жизни state токена в секундах

**Возможные ошибки**

**400 Bad Request:**

* Не указаны обязательные поля
* Провайдер не настроен или неактивен

**401 Unauthorized:**

* Неверный `project_key`
* Неверная подпись `signature`

**429 Too Many Requests:**

* Превышен rate limit (10 запросов за 5 минут с одного IP)

**Что делать дальше?**

1. Перенаправьте юзера на `auth_url`
2. Юзер авторизуется через выбранный сервис
3. GoAuth обработает OAuth flow
4. Юзер вернется на ваш `redirect_url` с данными профиля
