API AgroDO
Через API можно читать и менять всё, что есть в кабинете: заказы, товары, склад, клиентов, деньги. Формат запросов и ответов: JSON:API 1.1.
Адрес
https://ваш-адрес.agrodo.ru/api/v1/{раздел}
У каждого кабинета свой адрес: вместо «ваш-адрес» подставьте адрес своего кабинета.
Первый запрос
curl https://ваш-адрес.agrodo.ru/api/v1/orders?page[size]=5 \
-H "Authorization: Bearer ВАШ_КЛЮЧ"
Ключ и вход
Ключ создаёт владелец кабинета: меню → «Настройки» → «API и webhooks». У ключа есть роль: он видит и меняет только те разделы, которые открыты этой роли. Ключ показывается один раз при создании.
Ключ передаётся в каждом запросе заголовком:
Authorization: Bearer ВАШ_КЛЮЧ
API доступен на платных тарифах.
Списки: отбор, сортировка, страницы
filter[поле]=значение | отбор по полю |
filter[q]=текст | поиск по основным полям раздела |
sort=поле, sort=-поле | сортировка по возрастанию и по убыванию |
page[number]=1&page[size]=25 | номер страницы и её размер |
GET https://ваш-адрес.agrodo.ru/api/v1/orders?filter[status]=confirmed&sort=-id&page[size]=50
В ответе data (записи) и meta: total (сколько всего), size (размер страницы).
Создание и изменение
В attributes передаются только те поля, которые меняются. Поля со звёздочкой обязательны при создании. Поля «только чтение» сервер заполняет сам.
curl -X PATCH https://ваш-адрес.agrodo.ru/api/v1/buyers/42 \
-H "Authorization: Bearer ВАШ_КЛЮЧ" -H "Content-Type: application/json" \
-d '{"data":{"type":"buyers","id":"42","attributes":{"name":"Новое имя"}}}'
Ошибки
{ "errors": [ { "status": "422", "code": "validation", "detail": "Текст для человека" } ] }
401 | нет ключа или он отозван |
402 | лимит тарифа или раздел недоступен на тарифе |
403 | роли ключа раздел закрыт |
404 | записи нет |
409 | время или место уже занято |
422 | данные не прошли проверку, причина в detail |
429 | слишком много запросов |
Деньги, даты, телефоны
- Деньги передаются в копейках целым числом: 1 500 ₽ это
150000. - Дата:
2026-10-12. Дата и время: 2026-10-12 10:30:00. - Телефон: с плюсом и кодом страны,
+79270001122.
Webhooks
Webhook сообщает вашему серверу о событиях в кабинете. Настраивается там же, где ключи: адрес (только https) и список событий.
Событие записывается как раздел.действие: orders.create, buyers.update. Все события раздела: orders.*. Все события: *.
Запрос приходит методом POST. Заголовки: X-Agrodo-Event (событие) и X-Agrodo-Signature: sha256=… (HMAC-SHA256 тела запроса с секретом webhook). Проверяйте подпись перед обработкой.
{
"id": "9f2c1a7b3d4e5f60",
"event": "orders.create",
"created_at": "2026-10-12T07:30:00+00:00",
"data": { "type": "orders", "id": "15", "changes": { "...": "..." } }
}
Кроме событий разделов (create, update, delete) есть события по смыслу:
lk.created | Клиенту создан личный кабинет |
order.created | Создан заказ |
order.status_changed | Изменён статус заказа |
shipment.created | Заказ отгружен |
payment.received | Получена оплата |
task.created | Назначена задача |
message.incoming | Новое сообщение от клиента |
Если ваш сервер не ответил кодом 2xx, доставка повторяется.
Продажи
Покупатели buyers
GET/buyersсписок
GET/buyers/{id}запись
POST/buyersсоздать
PATCH/buyers/{id}изменить
DELETE/buyers/{id}удалить
| Поле | Тип | Описание |
name * | строка | Название или ФИО |
phone | строка | Телефон |
type | одно из: person, company, sole | Тип |
note | текст | Заметка |
email | строка | Email |
price_type_id | ссылка на price-types | Вид цены для заказов |
tax_id | строка | ИНН / УНП / БИН |
kpp | строка | КПП |
reg_number | строка | ОГРН / рег. номер |
legal_address | строка | Юридический адрес |
country | строка | Страна (код, например RU, BY, KZ) |
currency | строка | Валюта расчётов (код) |
orders_count | целое только чтение | Заказов |
orders_total | копейки, целое только чтение | Сумма заказов, ₽ |
debt | копейки, целое только чтение | Долг, ₽ |
last_order | дата и время, UTC только чтение | Последний заказ |
Заказы orders
GET/ordersсписок
GET/orders/{id}запись
POST/ordersсоздать
PATCH/orders/{id}изменить
DELETE/orders/{id}удалить
| Поле | Тип | Описание |
number | строка только чтение | Номер |
created_at | дата и время, UTC только чтение | Создан |
counterparty_id * | ссылка на buyers | Покупатель |
status_id | ссылка на order-statuses только чтение | Статус |
warehouse_id | ссылка на warehouses | Склад отгрузки |
delivery_type | одно из: pickup, delivery, carrier | Получение |
delivery_address | строка | Адрес доставки |
city | строка | Город |
confirm_state | одно из: asked, yes, no только чтение | Подтверждение приёма |
confirm_date | дата только чтение | Дата приёма |
msg_state | одно из: ok, weak, fail, queued только чтение | Последнее сообщение клиенту |
msg_text | строка только чтение | Итог последнего сообщения |
delivery_cost | копейки, целое | Стоимость доставки, ₽ |
wanted_date | дата | Желаемая дата |
wanted_interval | строка | Время (например, 10–14) |
payment_method_id | ссылка на payment-methods | Способ оплаты |
discount | копейки, целое | Скидка на заказ, ₽ |
responsible_user_id | ссылка на users | Ответственный |
comment | текст | Комментарий |
total | копейки, целое только чтение | Сумма |
paid_total | копейки, целое только чтение | Оплачено |
payment_status | одно из: unpaid, partial, paid только чтение | Оплата |
Отгрузки shipments
GET/shipmentsсписок
GET/shipments/{id}запись
| Поле | Тип | Описание |
number | строка только чтение | Номер |
doc_date | дата и время, UTC только чтение | Дата |
counterparty_id | ссылка на buyers только чтение | Покупатель |
order_id | ссылка на orders только чтение | Заказ |
warehouse_id | ссылка на warehouses только чтение | Склад |
total | копейки, целое только чтение | Сумма |
cost_total | копейки, целое только чтение | Себестоимость |
is_return | да/нет только чтение | Возврат |
note | строка только чтение | Комментарий |
Задачи tasks
GET/tasksсписок
GET/tasks/{id}запись
POST/tasksсоздать
PATCH/tasks/{id}изменить
DELETE/tasks/{id}удалить
| Поле | Тип | Описание |
title * | строка | Что сделать |
description | текст | Описание |
assignee_user_id | ссылка на users | Исполнитель (пользователь) |
assignee_employee_id | ссылка на employees | Исполнитель (сотрудник) |
due_at | дата и время, UTC | Срок |
priority | одно из: low, normal, high | Приоритет |
repeat_every | одно из: daily, weekly, monthly | Повторять (нужен срок) |
status | одно из: new, work, review, done, cancelled | Статус |
Товары и склад
Товары и услуги products
GET/productsсписок
GET/products/{id}запись
POST/productsсоздать
PATCH/products/{id}изменить
DELETE/products/{id}удалить
| Поле | Тип | Описание |
sale_price | копейки, целое только чтение | Цена продажи, ₽ |
stock_qty | число только чтение | Остаток |
stock_free | число только чтение | Свободно (без резерва) |
name * | строка | Название |
kind | одно из: product, material, service | Вид |
unit_id | ссылка на units | Единица измерения |
description | текст | Описание (его видит покупатель) |
show_in_forms | да/нет | Показывать в формах заказа |
category_id | ссылка на product-categories | Категория |
purchase_price | копейки, целое | Цена закупки, ₽ |
min_stock | число | Минимальный остаток (ниже него товар попадает в план закупки) |
sku | строка | Артикул |
barcode | строка | Штрихкод |
vat_rate | число | Ставка НДС, % (пусто = без НДС, цены считаются с НДС) |
export_avito | да/нет | Выгружать на Авито |
market | да/нет | Публиковать на маркете AgroDO |
Категории product-categories
GET/product-categoriesсписок
GET/product-categories/{id}запись
POST/product-categoriesсоздать
PATCH/product-categories/{id}изменить
DELETE/product-categories/{id}удалить
| Поле | Тип | Описание |
name * | строка | Название |
parent_id | ссылка на product-categories | Входит в категорию |
sort | целое | Порядок |
Склады warehouses
GET/warehousesсписок
GET/warehouses/{id}запись
POST/warehousesсоздать
PATCH/warehouses/{id}изменить
DELETE/warehouses/{id}удалить
| Поле | Тип | Описание |
name * | строка | Название |
address | строка | Адрес |
responsible_user_id | ссылка на users | Ответственный |
Складские документы stock-docs
GET/stock-docsсписок
GET/stock-docs/{id}запись
POST/stock-docsсоздать
PATCH/stock-docs/{id}изменить
DELETE/stock-docs/{id}удалить
| Поле | Тип | Описание |
number | строка только чтение | Номер |
type * | одно из: receipt, writeoff, transfer, inventory | Вид документа |
doc_date | дата и время, UTC | Дата |
warehouse_id * | ссылка на warehouses | Склад |
warehouse_to_id | ссылка на warehouses | Склад-получатель (для перемещения) |
reason | одно из: purchase, harvest, spoilage, shrinkage, own_needs, samples, other | Причина |
counterparty_id | ссылка на suppliers | Поставщик |
note | текст | Комментарий |
cost_ref | cost | Отнести на сезон поля |
purchase_id | ссылка на purchases только чтение | Закупка |
status | одно из: draft, posted только чтение | Состояние |
total | копейки, целое только чтение | Сумма |
Поставщики suppliers
GET/suppliersсписок
GET/suppliers/{id}запись
POST/suppliersсоздать
PATCH/suppliers/{id}изменить
DELETE/suppliers/{id}удалить
| Поле | Тип | Описание |
name * | строка | Название или ФИО |
phone | строка | Телефон |
type | одно из: person, company, sole | Тип |
note | текст | Заметка |
email | строка | Email |
price_type_id | ссылка на price-types | Вид цены для заказов |
tax_id | строка | ИНН / УНП / БИН |
kpp | строка | КПП |
reg_number | строка | ОГРН / рег. номер |
legal_address | строка | Юридический адрес |
country | строка | Страна (код, например RU, BY, KZ) |
currency | строка | Валюта расчётов (код) |
purchases_count | целое только чтение | Закупок |
purchases_total | копейки, целое только чтение | Сумма закупок, ₽ |
debt | копейки, целое только чтение | Мы должны, ₽ |
Закупка
Заказы поставщикам purchases
GET/purchasesсписок
GET/purchases/{id}запись
POST/purchasesсоздать
PATCH/purchases/{id}изменить
DELETE/purchases/{id}удалить
| Поле | Тип | Описание |
number | строка только чтение | Номер |
doc_date | дата и время, UTC | Дата |
counterparty_id * | ссылка на suppliers | Поставщик |
status | одно из: draft, sent, confirmed, partial, received, cancelled только чтение | Статус |
expected_date | дата | Ожидаем к дате |
warehouse_id | ссылка на warehouses | Склад приёмки |
note | текст | Комментарий |
total | копейки, целое только чтение | Сумма |
paid_total | копейки, целое только чтение | Оплачено |
План закупки purchase-plans
GET/purchase-plansсписок
GET/purchase-plans/{id}запись
POST/purchase-plansсоздать
PATCH/purchase-plans/{id}изменить
DELETE/purchase-plans/{id}удалить
| Поле | Тип | Описание |
product_id * | ссылка на products | Что купить |
qty * | число | Количество |
need_date | дата | Нужно к дате |
counterparty_id | ссылка на suppliers | Поставщик |
expected_price | копейки, целое | Ожидаемая цена, ₽ |
status | одно из: plan, ordered, done, cancelled | Состояние |
purchase_id | ссылка на purchases только чтение | Заказ поставщику |
note | строка | Заметка |
Затраты и услуги expenses
GET/expensesсписок
GET/expenses/{id}запись
POST/expensesсоздать
PATCH/expenses/{id}изменить
DELETE/expenses/{id}удалить
| Поле | Тип | Описание |
expense_date * | дата | Дата |
product_id | ссылка на products | Услуга или статья |
counterparty_id | ссылка на suppliers | Кому заплатили |
qty | число | Количество |
amount * | копейки, целое | Сумма, ₽ |
money_account_id | ссылка на money-accounts | Оплачено со счёта (пусто: ещё не платили) |
cost_ref | cost | Отнести на сезон поля |
purchase_id | ссылка на purchases только чтение | Заказ поставщику |
note | строка | Заметка |
Хозяйство
Поля fields
GET/fieldsсписок
GET/fields/{id}запись
POST/fieldsсоздать
PATCH/fields/{id}изменить
DELETE/fields/{id}удалить
| Поле | Тип | Описание |
season_now | строка только чтение | Что растёт сейчас |
name * | строка | Название |
area | число | Площадь |
area_unit | одно из: ha, sotka | Единица площади |
type | одно из: open, greenhouse, garden, pasture | Тип |
address | строка | Адрес или ориентир |
description | текст | Описание |
status | строка | Статус |
lat | строка | Широта |
lng | строка | Долгота |
Табель timesheets
GET/timesheetsсписок
GET/timesheets/{id}запись
POST/timesheetsсоздать
PATCH/timesheets/{id}изменить
DELETE/timesheets/{id}удалить
| Поле | Тип | Описание |
employee_id * | ссылка на employees | Сотрудник |
work_date * | дата | Дата |
hours | число | Часы (пусто = отработан день) |
piece_qty | число | Сдельная выработка |
cost_ref | cost | Где работал (пусто = общие работы) |
plan_hours | число | Часы по графику |
note | строка | Заметка |
Зарплата payroll-periods
GET/payroll-periodsсписок
GET/payroll-periods/{id}запись
POST/payroll-periodsсоздать
PATCH/payroll-periods/{id}изменить
DELETE/payroll-periods/{id}удалить
| Поле | Тип | Описание |
date_from * | дата | Начало периода |
date_to * | дата | Конец периода |
plan_fund | копейки, целое | Плановый фонд оплаты, ₽ |
accrued | копейки, целое только чтение | Начислено (факт), ₽ |
paid | копейки, целое только чтение | Выплачено, ₽ |
due | копейки, целое только чтение | К выплате, ₽ |
people | целое только чтение | Сотрудников в расчёте |
status | одно из: open, closed только чтение | Состояние |
Сотрудники employees
GET/employeesсписок
GET/employees/{id}запись
POST/employeesсоздать
PATCH/employees/{id}изменить
DELETE/employees/{id}удалить
| Поле | Тип | Описание |
pay_due | копейки, целое только чтение | К выплате, ₽ |
name * | строка | ФИО |
kind | одно из: staff, hired | Вид |
position | строка | Должность |
phone | строка | Телефон |
hired_at | дата | Принят |
fired_at | дата | Уволен |
note | текст | Заметка |
Настройки
Пользователи users
GET/usersсписок
GET/users/{id}запись
POST/usersсоздать
PATCH/users/{id}изменить
DELETE/users/{id}удалить
| Поле | Тип | Описание |
name * | строка | Имя |
phone | строка | Телефон (логин) |
email | строка | Email (логин) |
role_id | ссылка на roles | Роль |
status | одно из: active, blocked | Статус |
password | password | Новый пароль (от 8 символов) |
Роли roles
GET/rolesсписок
GET/roles/{id}запись
POST/rolesсоздать
PATCH/roles/{id}изменить
DELETE/roles/{id}удалить
| Поле | Тип | Описание |
name * | строка | Название |
Дополнительные поля custom-fields
GET/custom-fieldsсписок
GET/custom-fields/{id}запись
POST/custom-fieldsсоздать
PATCH/custom-fields/{id}изменить
DELETE/custom-fields/{id}удалить
| Поле | Тип | Описание |
entity_type * | одно из: counterparty, order, task, product, warehouse, purchase, field, employee | Где показывать |
name * | строка | Название поля |
code * | строка | Код (латиницей, например sort_name) |
type * | одно из: string, number, date, list, bool | Тип |
options | lines | Варианты списка, по одному в строке |
is_required | да/нет | Обязательное |
sort | целое | Порядок |
Единицы измерения units
GET/unitsсписок
GET/units/{id}запись
POST/unitsсоздать
PATCH/units/{id}изменить
DELETE/units/{id}удалить
| Поле | Тип | Описание |
name * | строка | Название |
short_name * | строка | Сокращение |
okei_code | строка | Код ОКЕИ |
Виды цен price-types
GET/price-typesсписок
GET/price-types/{id}запись
POST/price-typesсоздать
PATCH/price-types/{id}изменить
DELETE/price-types/{id}удалить
| Поле | Тип | Описание |
name * | строка | Название |
currency | строка | Валюта (код) |
is_default | да/нет | Основной |
Статусы заказов order-statuses
GET/order-statusesсписок
GET/order-statuses/{id}запись
POST/order-statusesсоздать
PATCH/order-statuses/{id}изменить
DELETE/order-statuses/{id}удалить
| Поле | Тип | Описание |
name * | строка | Название |
kind | одно из: new, work, done, cancel | Этап |
color | строка | Цвет (#RRGGBB) |
reserve | да/нет | Держать резерв на складе |
client_visible | да/нет | Виден клиенту |
client_edit | да/нет | Клиент может сам менять состав заказа в этом статусе |
auto | одно из: none, shipped, done | Ставить автоматически |
client_name | строка | Название для клиента |
sort | целое | Порядок |
Связь
Быстрые ответы quick-replies
GET/quick-repliesсписок
GET/quick-replies/{id}запись
POST/quick-repliesсоздать
PATCH/quick-replies/{id}изменить
DELETE/quick-replies/{id}удалить
| Поле | Тип | Описание |
title * | строка | Короткое название |
text * | текст | Текст ответа |
sort | целое | Порядок |
Рассылки mailings
GET/mailingsсписок
GET/mailings/{id}запись
POST/mailingsсоздать
PATCH/mailings/{id}изменить
DELETE/mailings/{id}удалить
| Поле | Тип | Описание |
name * | строка | Название для себя |
text * | текст | Текст сообщения. Можно {имя} |
channels * | lines | Каналы по порядку: сообщение уйдёт в первый, через который его можно доставить |
recipients | lines | Группы покупателей (ничего не выбрано = все покупатели) |
is_marketing | да/нет | Это реклама: отправлять только давшим согласие и добавить ссылку «Отписаться» |
scheduled_at | дата и время, UTC | Отправить не раньше (пусто = сразу) |
status | одно из: draft, scheduled, sending, done, cancelled только чтение | Состояние |
Группы покупателей counterparty-groups
GET/counterparty-groupsсписок
GET/counterparty-groups/{id}запись
POST/counterparty-groupsсоздать
PATCH/counterparty-groups/{id}изменить
DELETE/counterparty-groups/{id}удалить
| Поле | Тип | Описание |
name * | строка | Название (опт, розница, постоянные) |
Оповещения notification-rules
GET/notification-rulesсписок
GET/notification-rules/{id}запись
POST/notification-rulesсоздать
PATCH/notification-rules/{id}изменить
DELETE/notification-rules/{id}удалить
| Поле | Тип | Описание |
name * | строка | Название |
event * | одно из: lk.created, order.created, order.status_changed, shipment.created, payment.received, task.created, message.incoming | Когда |
recipient * | одно из: client, responsible, assignee, owner, user | Кому |
recipient_user_id | ссылка на users | Пользователь |
channels * | lines | Каналы по порядку |
send_all | да/нет | Отправлять во все каналы. Без отметки сообщение уходит в первый канал, который его принял, остальные не используются |
conditions | lines | Только для статусов заказа (ничего не выбрано = для всех) |
template * | текст | Текст сообщения |
delay_minutes | целое | Задержка отправки, минут |
is_active | да/нет | Включено |
Журнал сообщений outbox
GET/outboxсписок
GET/outbox/{id}запись
| Поле | Тип | Описание |
created_at | дата и время, UTC только чтение | Когда |
channel_type | строка только чтение | Канал |
counterparty_id | ссылка на buyers только чтение | Клиент |
user_id | ссылка на users только чтение | Сотрудник |
text | текст только чтение | Текст |
status | одно из: queued, sent, delivered, error, skipped только чтение | Состояние |
error | строка только чтение | Причина |
sent_via | строка только чтение | Через что ушло |
cost | копейки, целое только чтение | Стоимость, ₽ |
sent_at | дата и время, UTC только чтение | Отправлено |
Выгрузка на Авито avito-feeds
GET/avito-feedsсписок
GET/avito-feeds/{id}запись
POST/avito-feedsсоздать
PATCH/avito-feeds/{id}изменить
DELETE/avito-feeds/{id}удалить
| Поле | Тип | Описание |
name * | строка | Название для себя |
address * | строка | Адрес объявлений (город, улица) |
contact_phone | строка | Телефон в объявлении |
category_id | ссылка на product-categories | Товары только из категории (пусто = все отмеченные) |
price_type_id | ссылка на price-types | Вид цены (пусто = основной) |
hide_zero_stock | да/нет | Не выгружать товары, которых нет на складе |
is_active | да/нет | Включено |
last_generated_at | дата и время, UTC только чтение | Авито забирал файл |
Финансы
Способы оплаты payment-methods
GET/payment-methodsсписок
GET/payment-methods/{id}запись
POST/payment-methodsсоздать
PATCH/payment-methods/{id}изменить
DELETE/payment-methods/{id}удалить
| Поле | Тип | Описание |
name * | строка | Название для клиента |
provider * | одно из: manual | Как принимается |
money_account_id | ссылка на money-accounts | На какой счёт попадают деньги |
is_active | да/нет | Действует |
sort | целое | Порядок |
Статьи прихода и расхода money-categories
GET/money-categoriesсписок
GET/money-categories/{id}запись
POST/money-categoriesсоздать
PATCH/money-categories/{id}изменить
DELETE/money-categories/{id}удалить
| Поле | Тип | Описание |
name * | строка | Название |
direction * | одно из: in, out | Для чего |
sort | целое | Порядок |