// rest api

API dla
pracodawców.

// publikuj oferty programowo · JSON · Bearer token

Masz ATS, system HR lub własne narzędzia rekrutacyjne? Podłącz je do 2hr.pl przez REST API i publikuj oferty bezpośrednio - bez ręcznego dodawania, bez kopii i wklejania. Oferty trafiają do kandydatów z widełkami w ciągu sekund.

// co możesz zrobić przez API

  • Zarządzaj firmami - utwórz profil firmy z logo i opisem, aktualizuj dane
  • Publikuj oferty - tytuł, lokalizacja, opis, widełki, link do aplikowania, typ zatrudnienia
  • Aktualizuj i zamykaj - edytuj treść oferty lub ustaw status na ended kiedy stanowisko obsadzone
  • Pobieraj listę - GET /jobs zwraca wszystkie aktywne oferty powiązane z Twoim kontem

// jak zacząć

  1. Wyślij zgłoszenie - wypełnij formularz na api.2hr.pl/register/. Możesz zgłosić się jako osoba prywatna lub firma (wymagany NIP).
  2. Token po weryfikacji - po weryfikacji zgłoszenia (1-2 dni robocze) token dostaniesz e-mailem. Zachowaj go - nie możemy go odtworzyć.
  3. Użyj Bearer token - dodaj nagłówek Authorization: Bearer <token> do każdego żądania.
  4. Opublikuj pierwszą ofertę - POST /api/v1/jobs z JSON-em zawierającym tytuł, lokalizację, opis, widełki i link.

// szybki start - przykłady curl

Utwórz firmę:

curl -X POST https://api.2hr.pl/api/v1/companies \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Sp. z o.o.",
    "website": "https://acme.pl",
    "logo_url": "https://acme.pl/logo.png"
  }'

Opublikuj ofertę:

curl -X POST https://api.2hr.pl/api/v1/jobs \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Senior PHP Developer",
    "location": "Warszawa / Zdalna",
    "snippet": "Szukamy doświadczonego PHP developera do zespołu produktowego.",
    "link": "https://acme.pl/kariera/php",
    "company_uuid": "TWOJ_COMPANY_UUID",
    "type": "full-time",
    "salary": {
      "type": "monthly",
      "min": 14000,
      "max": 20000,
      "currency": "PLN"
    }
  }'

Zamknij ofertę:

curl -X PUT https://api.2hr.pl/api/v1/jobs/UUID_OFERTY/status \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"status": "ended"}'

// limity i szczegóły techniczne

  • Rate limit: 10 żądań / minutę na token. Przekroczenie zwraca HTTP 429 z polem retry_after.
  • Format: JSON dla wszystkich żądań i odpowiedzi. Wymagany nagłówek Content-Type: application/json.
  • Widełki wymagane: pola salary.min i salary.max są obowiązkowe - oferty bez wynagrodzenia nie trafiają do kandydatów.
  • Przetwarzanie asynchroniczne: POST /jobs zwraca HTTP 202 natychmiast. Status zmienia się z pending na published w ciągu kilku sekund.
  • Protokół: tylko HTTPS.

// cykl życia oferty

Oferta przechodzi przez stany: pendingpublished (lub requires_reviewpublished po weryfikacji moderatora). Ręcznie możesz ustawić status ended gdy stanowisko obsadzone. Stany failed, ended, rejected są terminalne.


Pełna dokumentacja API →
Wszystkie endpointy, schematy JSON, kody błędów i przykłady odpowiedzi.


Pytania? kontakt@2hr.pl