Skip to content

Вакансии ​

GET /integration/v1/vacancies

Область доступа vacancies:read.

Параметры ​

Общие — since, limit, cursor, см. синхронизацию. Плюс свой:

ПараметрЗначенияПо умолчанию
statusopen, paused, closed, archived, draft, allopen

Умолчание open выбрано специально: витрине нужны действующие позиции, и молча отдать ей архив значило бы показать людям то, чего уже нет.

bash
curl -H "X-API-Key: $KEY" \
  "https://api.odamiai.uz/api/integration/v1/vacancies?status=open&limit=200"

Ответ ​

json
{
  "items": [
    {
      "id": "clx7k2p0000abc",
      "title": "Frontend-разработчик (React)",
      "status": "open",
      "city": "Алматы",
      "officeAddress": "ул. Абая, 150",
      "experience": "От 1 года",
      "workFormat": "hybrid",
      "workFormats": ["Гибрид"],
      "salaryFrom": 700000,
      "salaryTo": 1200000,
      "salaryCurrency": "KZT",
      "salaryGross": false,
      "employmentForm": "Полная занятость",
      "workSchedule": ["5/2"],
      "skills": ["React", "TypeScript"],
      "languages": ["Английский (B2)"],
      "professionalRoles": ["Программист, разработчик"],
      "description": "<p>…</p>",
      "responsibilities": "…",
      "positionsCount": 2,
      "sourceUrl": "https://hh.kz/vacancy/123456",
      "publishedAt": "2026-07-24T09:00:00.000Z",
      "createdAt": "2026-07-24T09:00:00.000Z",
      "updatedAt": "2026-08-01T12:00:00.000Z"
    }
  ],
  "nextCursor": null
}

Оговорки, которые сэкономят вам вечер ​

Статусов пять, а не три. paused — позицию временно остановили, она вернётся; closed — наняли или отменили; archived — сняли с показа. Мы не схлопываем их в «открыта / в архиве», потому что это было бы неправдой: пауза не равна закрытию. Если вашей витрине нужны два состояния — решайте на своей стороне, вам виднее, что показывать людям.

Формат работы приходит дважды. workFormat — наша нормализация в remote | office | hybrid | other, workFormats — исходные названия как их отдаёт hh.ru («Удалённо», «На месте работодателя», «Гибрид»). Второе поле есть именно затем, чтобы вы могли не доверять первому: вакансия с «Удалённо» и «На месте» одновременно нормализуется в hybrid, и это трактовка, а не факт.

salaryFrom может равняться salaryTo. У вакансии, где указана только верхняя граница («до 1 200 000»), обе границы совпадут — так устроен импорт с hh.ru, и на нашей стороне «от» и «до» уже неразличимы. Показывать такую вилку как диапазон не стоит.

city — это регион hh, а не всегда город. Для областных вакансий там может оказаться название области. Точный адрес, если он указан, лежит в officeAddress.

description содержит HTML. Он приходит с hh.ru как есть. responsibilities — тот же текст без разметки, если вам нужен plain text.