API HuntShare
Поиск и проверка кандидатов. Базовый адрес — https://cm-api.huntshare.tech, авторизация — заголовок Authorization: Bearer ваш_ключ.
С чего начать
Первым делом — GET /v1/balance. Он отдаёт остаток, действующие цены всех операций и флаг allowed по каждой. Цены меняются без релиза документации, поэтому читать их надо оттуда, а не из таблицы ниже: интеграция с зашитыми ценами однажды потратит больше, чем рассчитывала.
curl -s https://cm-api.huntshare.tech/v1/balance \ -H "Authorization: Bearer ВАШ_КЛЮЧ"
Дальше — поиск. Это самая дешёвая осмысленная операция.
curl -s -X POST https://cm-api.huntshare.tech/v1/search \
-H "Authorization: Bearer ВАШ_КЛЮЧ" \
-H "Content-Type: application/json" \
-d '{
"position_filters": [{"positions": ["product manager"], "timeframe": "now"}],
"countries": [],
"size": 20
}'Как считаются деньги
Квота — в токеновах, а не в запросах. Один токен равен 10 копейкам, и точка отсчёта — открытие профиля: оно стоит ровно токенову. Так дорогая операция не съедает ту же квоту, что и дешёвая.
- Списываем по факту успеха. Операция, упавшая на нашей стороне, не стоит ничего. Пустой результат — это успех, и он тарифицируется: работа выполнена, а ответ «в базе нет» — тоже ответ.
- Упавшая проверка возвращает токеновы. Не сработали мы, значит это не ваши деньги.
- Опрос статуса бесплатен. Сколько бы раз вы ни спросили «готово?», заплатите один раз — за готовый отчёт.
- Повтор с тем же
client_request_idне спишет дважды. Повтор после сетевого обрыва не стоит ничего.
402 с полями needed и available. Токеновы при этом не списываются. Продукты и доступ
API делится на три продукта, и подключаются они по отдельности: поиск кандидатов, получение резюме и антифрод. Ключ при этом один — второй набор кредов означал бы второе место, где их можно потерять, и второй остаток, который пришлось бы складывать с первым.
Что вам подключено, видно в GET /v1/balance, блок services: у каждого продукта есть enabled, а у каждой операции внутри — allowed. Прочитайте это на старте, а не выясняйте из 403 в бою.
403 service_not_allowed— продукт не подключён. Полеserviceговорит, какой именно,enabled_services— что подключено. Лечится договором, а не ожиданием.403 operation_not_allowed— продукт подключён, но конкретная операция закрыта. Лечится одной правкой на нашей стороне.402 quota_exceeded— доступ есть, кончились токеновы. Лечится оплатой или ожиданием сброса (reset_at).
Операции
| Код | Что делает | Продукт | Токенов | Ручка |
|---|---|---|---|---|
search | Поиск кандидатов | search | 5 | POST /v1/search |
deep_search | Поиск на сыром Query DSL | search | 10 | POST /v1/search/deep |
profile | Профиль LinkedIn | resume | 1 | GET /v1/linkedin/{username} |
person_lookup | Найти человека в базе | resume | 20 | POST /v1/person/lookup |
profile_history | История правок профиля | resume | 20 | POST /v1/profile_history |
colleagues | Коллеги по пересечению | resume | 30 | POST /v1/colleagues |
contacts | Верифицированные контакты | resume | 50 | GET /v1/contacts/{username} |
antifraud_check | Проверка кандидата | antifraud | 2000 | POST /v1/antifraud/check |
Таблица справочная. Действующие цены — в поле operations ответа /v1/balance.
Бесплатны и не трогают квоту: /v1/balance, /v1/dashboard/stats, /v1/search/fields, /v1/search/expression и опрос статуса проверки.
Проверка кандидата
Проверка сверяет резюме с профилем, с описаниями коллег того же периода, с историей правок профиля и с независимыми упоминаниями. Занимает 40–90 секунд на человека, поэтому асинхронная: заявка возвращает 202 и check_id, дальше опрашиваете статус.
# 1. Убедиться, что проверяем того человека — 20 токенов
curl -s -X POST https://cm-api.huntshare.tech/v1/person/lookup \
-H "Authorization: Bearer ВАШ_КЛЮЧ" -H "Content-Type: application/json" \
-d '{"full_name": "Иван Петров", "company": "Сбер"}'
# 2. Заказать проверку — 2000 токенов. client_request_id обязателен на практике
curl -s -X POST https://cm-api.huntshare.tech/v1/antifraud/check \
-H "Authorization: Bearer ВАШ_КЛЮЧ" -H "Content-Type: application/json" \
-d '{"resume_link": "l/3155249", "client_request_id": "petrov-2026-09-02"}'
# 3. Опрашивать до status=done — бесплатно
curl -s https://cm-api.huntshare.tech/v1/antifraud/check/CHECK_ID \
-H "Authorization: Bearer ВАШ_КЛЮЧ"resolved: кого именно проверили и как нашли. Вердикт про однофамильца выглядит ровно так же уверенно, как верный. Если по вашему запросу совпало несколько человек, проверка не запустится вовсе — придёт 409 ambiguous_person со списком, и токеновы не спишутся: выбираете вы. Пачка до 25 человек — POST /v1/antifraud/batch. Каждый кандидат тарифицируется и закрывается отдельно: упавший возвращает свои токеновы и не влияет на остальных.
Подключение агента (MCP)
У API есть MCP-сервер: вставляете адрес и доступ в настройки Claude Desktop, Cursor или своего агента — и он сам видит доступные инструменты с описаниями и ценами.
https://cm-api.huntshare.tech/mcpНе отдавайте агенту основной ключ. Заведите отдельный доступ на странице «Доступы для агентов»: его можно отозвать по одному, не трогая свою интеграцию, и ограничить набором операций — например, разрешить поиск и профиль, но не проверку за 2000 токенов.
Квота у агента общая с вашим ключом: это ограничение доступа, а не отдельный кошелёк. Сколько сжёг конкретный агент, видно в списке токенов.
Ошибки
Тело ошибки всегда {"error": "код", "message": "текст"} плюс поля, зависящие от кода. Ни одна ошибка не списывает токеновы.
| Код | Что значит | Списано? |
|---|---|---|
401 unauthorized | Нет ключа или он неверный | нет |
402 quota_exceeded | Кончились токеновы; смотрите needed / available | нет |
403 service_not_allowed | Продукт не подключён — смотрите поле service | нет |
403 operation_not_allowed | Продукт подключён, но операция закрыта | нет |
404 person_not_found | Человека нет в базе и не передан resume_text | нет |
409 ambiguous_person | Совпало несколько человек — выбираете вы | нет |
400 invalid_resume_link | Ссылка не вида l/12345 | нет |
422 | Превышен потолок постраничности или тело не разобрано | нет |
503 *_unavailable | Лежит наш бэкенд или источник | нет |
В ответах никогда нет нашей себестоимости, внутренних журналов, трассировок и сырого разбора резюме: наружу поля проходят через белый список, поэтому новое внутреннее поле не может утечь в вашу интеграцию случайно.