# SuperJob API: Авторизовать пользователя и показать контакты вакансии

Сценарий из mcp-everything. Актуально на 2026-10-24.

Для сервисов соискателя: вход через SuperJob и доступ к контактам работодателя.

1. Отправь пользователя на https://www.superjob.ru/authorize/ с client_id, redirect_uri и state.
2. Обменяй код на токен: GET /2.0/oauth2/access_token/ с code, client_id, client_secret и redirect_uri. Для приложений без браузера есть вход по паролю — POST /2.0/oauth2/password/ (не больше 10 ошибок входа в час).
3. Передавай токен в заголовке Authorization: Bearer <access_token> вместе с X-Api-App-Id. Проверь вход: GET /2.0/user/current/.
4. Запроси вакансию с контактами: GET /2.0/vacancies/{id}/. Истёкший токен вернёт 401 с error = invalid_token — обнови его через /2.0/oauth2/refresh_token/.

```bash
curl https://api.superjob.ru/2.0/vacancies/<id>/ \
  -H "X-Api-App-Id: $SJ_APP_KEY" \
  -H "Authorization: Bearer $SJ_ACCESS_TOKEN"
```

## Базовые URL

- Боевой: `https://api.superjob.ru`
- Формат: `https://api.superjob.ru/:version/method_name/:params`

## Авторизация

Тип: OAuth 2.0

- Секретный ключ приложения передаётся в каждом запросе в заголовке `X-Api-App-Id`.
- Для методов с авторизацией — `Authorization: Bearer <access_token>`.
- Авторизация пользователя: `GET https://www.superjob.ru/authorize/` (`client_id`, `redirect_uri`, `state`) → код → `https://api.superjob.ru/2.0/oauth2/access_token/` (`code`, `client_id`, `client_secret`, `redirect_uri`).
- Обновление: `GET https://api.superjob.ru/2.0/oauth2/refresh_token/` (`refresh_token`, `client_id`, `client_secret`).
- Для desktop-приложений — вход по паролю `POST /2.0/oauth2/password/`.

## Методы сценария

### GET /2.0/oauth2/access_token/ — Получение access token

Также поддерживается POST; PUT по этому адресу инвалидирует токен, DELETE — удаляет.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `code` | query | string | да | Код из редиректа авторизации |
| `client_id` | query | string | да | ID приложения |
| `client_secret` | query | string | да | Секрет приложения |
| `redirect_uri` | query | string | да | Адрес возврата |

### POST /2.0/oauth2/password/ — Авторизация по паролю

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `login` | body | string | да | Логин |
| `password` | body | string | да | Пароль |
| `client_id` | body | string | да | ID приложения |
| `client_secret` | body | string | да | Секрет приложения |
| `hr` | body | integer | нет | Вход работодателя |

### GET /2.0/vacancies/{id}/ — Вакансия по ID

Авторизация нужна только для контактов.

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `id` | path | integer | да | ID вакансии |

### GET /2.0/user/current/ — Текущий пользователь

Требует авторизации.

## Нюансы

- Через API можно получить не больше 500 записей выдачи (`page` × `count`).
- В поиске вакансий массив `ids` — не больше 500 ID.
- Параметры `published`, `published_all`, `archive`, `not_archive` работают только при авторизации работодателя при поиске своих вакансий.
- Ошибки авторизации дополнительно возвращают машиночитаемый `error` (например, `invalid_token`) и заголовок `X-Oauth-Error`.
- Документация помечена как актуальная для версии 2.20; свежая версия — `https://api.superjob.ru/doc/`.

## Другие сценарии

- [Найти вакансии по запросу](https://mcp-everything.ru/integrations/superjob/scenarios/nayti-vakansii-po-zaprosu.md)
- [Найти компанию работодателя](https://mcp-everything.ru/integrations/superjob/scenarios/nayti-kompaniyu-rabotodatelya.md)

---

Если этого недостаточно — официальная документация: https://api.superjob.ru/
Вся интеграция одним документом: https://mcp-everything.ru/integrations/superjob.md
