Главная / API для разработчиков

API для разработчиков

Программный доступ к закупкам, откликам и уведомлениям для интеграции с вашими системами.

Быстрый старт

Получите API-ключ в личном кабинете (Настройки → API) и сделайте первый запрос:

# Список активных закупок по категории «ИТ-инфраструктура» curl https://m-dom.xyz/api/v1/tenders?category[]=ИТ-инфраструктура \ -H "Authorization: Bearer ВАШ_API_КЛЮЧ"

Все ответы приходят в формате JSON, кодировка UTF-8, даты — ISO 8601.

Авторизация

Каждый запрос должен содержать личный API-ключ в заголовке Authorization. Ключ будет выдаваться в личном кабинете после подключения тарифа с доступом к API.

GET /api/v1/tenders HTTP/1.1 Host: m-dom.xyz Authorization: Bearer ВАШ_API_КЛЮЧ

Base URL: https://m-dom.xyz/api/v1

Лимиты запросов

ТарифЗапросов в минутуЗапросов в день
Базовый302 000
Расширенный12020 000

При превышении лимита API вернёт 429 Too Many Requests.

Формат ошибок

Все ошибки возвращаются в едином формате с HTTP-кодом и телом ответа:

{ "error": { "code": "validation_error", "message": "Поле budget обязательно для заполнения" } }
КодЗначение
400Некорректный запрос (ошибка валидации)
401Неверный или отсутствующий API-ключ
403Ключ не имеет доступа к этому действию (например, у роли покупателя нет доступа к созданию отклика)
404Объект не найден
429Превышен лимит запросов
500Внутренняя ошибка сервера

Закупки

GET /tenders
Список активных закупок с фильтрами — те же параметры, что в веб-каталоге.
ПараметрТипОписание
qstringПоиск по названию/категории
category[]string[]Фильтр по категориям
regionstringФильтр по региону
okpd2stringФильтр по коду ОКПД2
budget_min / budget_maxnumberДиапазон бюджета, ₽
page / per_pagenumberПагинация (по умолчанию per_page=20, максимум 100)
// Пример ответа { "data": [ { "id": 9, "ref": "BP-2026-0009", "title": "Поставка офисной мебели", "category": "Мебель", "okpd2_code": "31.01", "region": "Москва", "budget": 500000, "deadline_date": "2026-12-31", "bids_count": 3 } ], "meta": { "page": 1, "total": 42 } }
GET /tenders/{id}
Полная карточка одной закупки, включая описание, ТЗ и список документов.
POST /tenders
Публикация новой закупки. Доступно только ключам с ролью «покупатель».
// Пример запроса { "title": "Поставка ноутбуков", "category": "ИТ-инфраструктура", "okpd2_code": "26.20.11", "region": "Москва", "description": "...", "budget": 5000000, "deadline_date": "2026-12-31" }
PATCH /tenders/{id}/close
Досрочное закрытие своей закупки.

Отклики

GET /bids
Список своих откликов (для поставщика) или откликов по своим закупкам (для покупателя).
POST /tenders/{id}/bids
Отклик на закупку. Доступно только ключам с ролью «поставщик». Списывает стоимость отклика с баланса — при недостатке средств вернёт 402 Payment Required.
// Пример запроса { "price": 4800000, "delivery_days": 15, "comment": "Готовы поставить в срок" }
PATCH /bids/{id}/accept
Принятие отклика. Доступно только покупателю — владельцу закупки, к которой относится отклик.
PATCH /bids/{id}/reject
Отклонение отклика.

Профиль компании

GET /me
Данные компании, к которой привязан API-ключ: название, ИНН, КПП, ОГРН, юридический адрес, баланс, роль.
// Пример ответа { "id": 14, "role": "supplier", "company_name": "ООО «Пример»", "inn": "7707083893", "kpp": "770701001", "ogrn": "1027700132195", "legal_address": "г. Москва, ...", "balance": 42000.00 }
GET /me/balance/transactions
История операций по балансу — списания за отклики, пополнения.

Справочники

GET /catalogs/okpd2?q=мебель
Поиск по классификатору ОКПД2 (20 979 позиций) — тот же справочник, что используется в веб-версии при создании закупки.
// Пример ответа { "results": [ { "code": "31.01", "name": "Мебель для офисов и предприятий торговли" }, { "code": "31.09", "name": "Мебель прочая" } ] }
GET /catalogs/regions
Список регионов, встречающихся в активных закупках — для построения фильтров у себя в интерфейсе.

Webhooks

Уведомления о событиях на ваш URL в реальном времени, без опроса API.

СобытиеКогда срабатывает
tender.bid_receivedНовый отклик на вашу закупку
bid.status_changedВаш отклик приняли или отклонили
chat.message_receivedНовое сообщение в чате по сделке
// Тело запроса, который придёт на ваш webhook URL { "event": "bid.status_changed", "bid_id": 42, "status": "accepted", "timestamp": "2026-12-01T10:15:00Z" }

SDK и библиотеки

Официальные клиенты для популярных языков — оборачивают запросы к API и подписывают webhook-события.

ЯзыкПакет
PHPcomposer require procurehub/api-client
Node.jsnpm install @procurehub/api-client
Pythonpip install procurehub-api