API та ATS

Приватний API лише для читання, через який ваша ATS отримує відгуки на вакансії вашої компанії. Ключ видає адміністратор компанії на сторінці API та ATS у кабінеті роботодавця, а кожен запит передає його як Bearer-токен.

Ключами та webhook керують адміністратори вашої компанії на сторінці API та ATS. Відкрити API та ATS

Автентифікація

Один ключ на компанію. Ми зберігаємо лише його хеш і показуємо його вам один раз. Ліміт - 60 запитів на хвилину на ключ. Після перевипуску або відкликання ключа запити з ним одразу відхиляються.

https://jobico.io/api/v1
curl "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, щоб зіставити їх із вакансіями у вашій ATS
  • GET /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, можна використовувати лише для обробки відгуків на власні вакансії, а на вимогу кандидата їх потрібно видалити.
  • Використання регулюється нашими Умовами використання