Автентифікація
Один ключ на компанію. Ми зберігаємо лише його хеш і показуємо його вам один раз. Ліміт - 60 запитів на хвилину на ключ. Після перевипуску або відкликання ключа запити з ним одразу відхиляються.
https://jobico.io/api/v1curl "https://jobico.io/api/v1/applications?since=2026-10-01T00:00:00Z&limit=50" \
-H "Authorization: Bearer jk_live_..."Ендпоінти
GET /api/v1/jobs- ваші вакансії з id, slug, title, status, url і createdAt, щоб зіставити їх із вакансіями у вашій ATSGET /api/v1/applications- відгуки на ваші вакансії, спочатку найстаріші. Фільтри: job (id вакансії), since (дата ISO), page і limit (до 100)GET /api/v1/applications/:id- один відгук за його id
Дані відгуку
Ви отримуєте лише відгуки, які кандидат подав сам. Контакти та резюме є в даних, коли кандидат розкрив вашій компанії контакти, а при відгуку на Jobico це відбувається завжди. Посилання на резюме - це звичайні URL файлів: якщо кандидат видалить файл, посилання перестане працювати, тож завантажуйте файл одразу після отримання.
{
"data": [
{
"id": "6abc0000000000000000ab12",
"status": "applied",
"appliedAt": "2026-10-01T09:12:33.000Z",
"job": { "id": "6ab1...", "slug": "senior-product-designer", "title": "Senior Product Designer", "url": "https://jobico.io/jobs/senior-product-designer" },
"candidate": { "name": "Olena Shevchenko", "email": "olena@example.com", "phone": "+380..." },
"cv": { "url": "https://...vercel-storage.com/cv/.../resume.pdf", "fileName": "resume.pdf" },
"coverLetter": "...",
"screeningAnswers": [{ "question": "...", "answer": "..." }],
"matchScore": 87,
"url": "https://jobico.io/employer/applications/6abc0000000000000000ab12"
}
],
"page": 1,
"limit": 50,
"total": 1
}Webhook: application.created
Додайте HTTPS-ендпоінт на сторінці API та ATS, і ми надсилатимемо POST з кожним новим відгуком. У тілі - тип події, мітка часу та описані вище дані відгуку в полі data.
POST https://ats.example.com/hooks/jobico
content-type: application/json
user-agent: Jobico-Webhooks/1.0
webhook-id: 6abd1111111111111111cd34
webhook-timestamp: 1791021600
webhook-signature: v1,g0hM9SsE+OTPJTGt/tmIKtSyZlE3uFJELVlNIOLJ1OE=
{ "type": "application.created", "timestamp": "2026-10-03T10:00:00.000Z", "data": { ...application } }Перевірка підпису
Доставки відповідають специфікації Standard Webhooks і мають три заголовки: webhook-id, webhook-timestamp і webhook-signature. Щоб перевірити доставку, з'єднайте id, мітку часу та необроблене тіло запиту крапками й підпишіть цей рядок алгоритмом HMAC-SHA256 із секретом, декодованим з base64. Будь-яка бібліотека Standard Webhooks зробить це за вас.
import { createHmac, timingSafeEqual } from 'node:crypto';
const verifyJobicoWebhook = ({ secret, headers, rawBody }) => {
const key = Buffer.from(secret.replace('whsec_', ''), 'base64');
const signed = `${headers['webhook-id']}.${headers['webhook-timestamp']}.${rawBody}`;
const expected = `v1,${createHmac('sha256', key).update(signed).digest('base64')}`;
return headers['webhook-signature']
.split(' ')
.some((sig) => sig.length === expected.length && timingSafeEqual(Buffer.from(sig), Buffer.from(expected)));
};Повтори та гарантії доставки
Відповідь 2xx протягом 10 секунд (5 секунд для повторних спроб) - і доставку зараховано. Інакше ми пробуємо знову не раніше ніж через 1 хвилину, 5 хвилин, 30 хвилин, 2 години та 8 годин (повторні спроби запускаються кожні 10 хвилин), а потім зупиняємось. Доставка гарантується щонайменше один раз (at-least-once), тож дедуплікуйте за webhook-id.
Поки webhook на паузі, ми нічого не надсилаємо і не накопичуємо: відгуки, що надійшли за цей час, можна забрати через API з фільтром since. Доставки, які вже повторювалися на момент паузи, зачекають і підуть після ввімкнення. Видалення webhook очищає все, що ще чекало.
Інтеграції з ATSНезабаром
Готові конектори до популярних систем відстеження кандидатів уже в роботі. Поки що те саме роблять API та webhook вище. Потрібна насамперед певна система? Напишіть на support@jobico.io.
- Greenhouse
- Lever
- Teamtailor
- PeopleForce
- Workable
Правила використання
- API-ключі та секрети webhook конфіденційні. Ваша компанія відповідає за кожен запит, зроблений з їх використанням, і має перевипустити їх у разі витоку.
- Дані кандидатів, отримані через API або webhook, можна використовувати лише для обробки відгуків на власні вакансії, а на вимогу кандидата їх потрібно видалити.
- Використання регулюється нашими Умовами використання