Skip to content
Мои токены Поддержка
Для подтверждения действия введите пароль
Чтобы продолжить, введите пароль для пользователя
For LLMs and AI agents: canonical Markdown source of this documentation page (plain-text .md — fetch this URL to use the page content in tools and RAG). For LLMs and AI agents: developers documentation index in llms.txt format: https://<!--# echo var='base_url' -->/developers/llms.txt — ordered list of key documentation URLs for the developers section.

API Средних ставок

API позволяет получить цены и количество грузов из сервиса «Средние ставки».

API предоставляет средние ставки:

  • по направлениям внутри России и за рубеж;
  • для полностью загруженного транспорта со следующим тоннажем: 1,5 т, 3 т, 5 т, 10 т, 20 т;
  • за интересующий вас период;
  • для следующих типов кузовов: рефрижератор, тент, трал, контейнер, открытый и закрытый кузов.

Подробнее об API Средних ставок и методах получения данных.

Ограничения при работе с API

Время ответа API зависит от объёма данных, который вы запрашиваете.

Например: чтобы получить данные за 1 день потребуется 150 мс, за полгода по дням — 400 мс, за год по месяцам — 15 сек. и так далее.

Количество запросов к API — 10 000 в месяц.

Увеличить лимит можно по индивидуальному запросу: обратитесь в отдел продаж boards@ati.su.

Как получить доступ к API

Чтобы получить доступ к API – подключите лицензию «API Средних ставок» на странице оплаты.

Если у вас остались вопросы — напишите в техническую поддержку на api@ati.su.

Методы

Доступные направления для средних ставок

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

  • demo - Флаг демо-режима (Boolean)

При указании этого параметра сервером будет возвращен тестовый набор данных с тем же контрактом ответа, что и в полноценном API.

Версия
Возвращает список всех доступных направлений и доступные типы кузова для направления
get /priceline/license/v2/all_directions
Запрос
Пример запроса
curl 'https://api.ati.su/priceline/license/v2/all_directions' \
-X 'GET' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
200 Successful Response
Модель
{...}

Справочник направлений: города/регионы и матрица доступных типов кузова и тоннажа

}
Пример
{...}
"AllDirections":[...]
{...},
"FromCityId":3611,
"FromCity":"Москва",
"ToCityId":1,
"ToCity":"Санкт-Петербург, РФ",
"FromRegionId":null,
"FromRegion":null,
"ToRegionId":null,
"ToRegion":null,
"DirectionInfo":{...},
"CartypeTonnage":{...},
"close":[...],
5,
10,
20
],
"tent":[...]
5,
10
]
},
"TonnageCartype":{...}
"5":[...],
"close",
"tent"
],
"10":[...]
"close"
]
}
},
"RoundTripsInfo":null
},
{...},
"FromCityId":null,
"FromCity":null,
"ToCityId":1,
"ToCity":"Санкт-Петербург, РФ",
"FromRegionId":1,
"FromRegion":"Московская обл., РФ",
"ToRegionId":null,
"ToRegion":null,
"DirectionInfo":{...},
"CartypeTonnage":{...},
"close":[...],
5,
10,
20
],
"tent":[...]
5,
10
]
},
"TonnageCartype":{...}
"5":[...],
"close",
"tent"
],
"10":[...]
"close"
]
}
},
"RoundTripsInfo":null
},
{...}
"FromCityId":1,
"FromCity":"Санкт-Петербург, РФ",
"ToCityId":null,
"ToCity":null,
"FromRegionId":null,
"FromRegion":null,
"ToRegionId":1,
"ToRegion":"Московская обл., РФ",
"DirectionInfo":{...},
"CartypeTonnage":{...},
"close":[...],
5,
10,
20
],
"tent":[...]
5,
10
]
},
"TonnageCartype":{...}
"5":[...],
"close",
"tent"
],
"10":[...]
"close"
]
}
},
"RoundTripsInfo":{...}
"CartypeTonnage":{...},
"close":[...],
5,
10,
20
],
"tent":[...]
5,
10
]
},
"TonnageCartype":{...}
"5":[...],
"close",
"tent"
],
"10":[...]
"close"
]
}
}
}
]
}
422 Ошибка валидации параметров запроса
Модель
{...}

Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов

error*: string

Код или текст ошибки (machine-readable)

reason*: string

Человекочитаемое описание причины ошибки

details:

Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)

ANY-OF
1:{}
null
}
Пример
{...}
"error":"Тип поданного параметра отличается от ожидаемого - неверное значение",
"reason":"location: , ('body', 'CarType'); type: value_error",
"details":{}
}

Запрос средних ставок

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

  • demo - Флаг демо-режима (Boolean)

При указании этого параметра сервером будет возвращен тестовый набор данных с тем же контрактом ответа, что и в полноценном API.

Метод получения средних цен
post /priceline/license/v1/average_prices
Запрос
Модель
{...}

Параметры запроса средних ставок по направлению, типу кузова, тоннажу и периоду

CarType:

Тип кузова.
* ref - рефрижераторы.
* close - закрытые. Значение по умолчанию.
* open - открытые.
* tent - тентованный.
* tral - трал.
* docker - контейнер.

ANY-OF
string
null
DateFrom:

Начало периода. Формат ISO-8601.
Если интересует только одна дата, то передавать ее здесь.
По умолчанию - последний день, за который есть данные.

ANY-OF
date
null
DateTo:

Конец периода. Формат ISO-8601.
Если интересует только одна дата, то данное поле не заполнять.

ANY-OF
date
null
Frequency: string

Дискретность выдачи данных.

  • day - для каждого дня будут выданы данные. Значение по умолчанию. Опция day доступна только в том случае, если общий временной период составляет меньше 6 месяцев.
  • week - будут выданы усредненные данные по неделе.
  • month- будут выданы усредненные данные по месяцу.
WithNds: boolean

Учитывать ли НДС в цене.

  • false - не учитывать. Значение по умолчанию.
  • true - учитывать.
RoundTrip: boolean

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

  • false - для прямого рейса. Значение по умолчанию.
  • true - для кругового рейса (если доступен).
Tonnage:

Тоннаж. Одно из:
* 1.5
* 3
* 5
* 10
* 20 - значение по умолчанию.

ANY-OF
integer
null
}
Пример запроса
curl 'https://api.ati.su/priceline/license/v1/average_prices' \
-X 'POST' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json' \
--data-raw '{"From":{"CityId":1},"To":{"CityId":3611},"CarType":"close","DateFrom":"2024-03-01","DateTo":"2024-03-10","Frequency":"day","WithNds":false,"RoundTrip":true,"Tonnage":10}'
Ответ
200 Successful Response
Модель
{...}

Средние ставки ATI.SU по направлению, типу кузова и тоннажу за запрошенный период

Distance*:

Расстояние маршрута в километрах

ANY-OF
integer
null
WithNDS*: boolean

Признак того, что ставки в ответе рассчитаны с учётом НДС

}
Пример
{...}
"Data":[...],
{...}
"DateFrom":"2024-03-01",
"DateTo":"2024-03-01",
"LoadsCount":42,
"Prices":{...},
"AveragePrice":73.2,
"BottomPrice":62,
"UpperPrice":85.5
},
"PricesInRub":{...}
"AveragePrice":51600,
"BottomPrice":43700,
"UpperPrice":60300
}
}
],
"Distance":705,
"WithNDS":false
}
402 Действие лицензии не покрывает текущий период
Модель
{...}

Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов

error*: string

Код или текст ошибки (machine-readable)

reason*: string

Человекочитаемое описание причины ошибки

details:

Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)

ANY-OF
1:{}
null
}
Пример
{...}
"error":"Access error",
"reason":"Действие вашего доступа закончилось."
}
403 Нет доступа к API — требуется оплаченная лицензия
Модель
{...}

Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов

error*: string

Код или текст ошибки (machine-readable)

reason*: string

Человекочитаемое описание причины ошибки

details:

Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)

ANY-OF
1:{}
null
}
Пример
{...}
"error":"Access error",
"reason":"Оплатите лицензию для получения доступа."
}
404 По запрошенным параметрам данные не найдены
Модель
{...}

Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов

error*: string

Код или текст ошибки (machine-readable)

reason*: string

Человекочитаемое описание причины ошибки

details:

Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)

ANY-OF
1:{}
null
}
Пример
{...}
"error":"PRICELINE_5_DIRECTION_NOT_FOUND",
"reason":"По запрошенным параметрам данные не найдены",
"details":{...}
"From":{...},
"RegionId":153153
},
"To":{...}
"RegionId":153
}
}
}
422 Ошибка валидации параметров запроса
Модель
{...}

Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов

error*: string

Код или текст ошибки (machine-readable)

reason*: string

Человекочитаемое описание причины ошибки

details:

Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)

ANY-OF
1:{}
null
}
Пример
{...}
"error":"Тип поданного параметра отличается от ожидаемого - неверное значение",
"reason":"location: , ('body', 'CarType'); type: value_error",
"details":{}
}
429 Превышен лимит запросов к API
Модель
{...}

Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов

error*: string

Код или текст ошибки (machine-readable)

reason*: string

Человекочитаемое описание причины ошибки

details:

Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)

ANY-OF
1:{}
null
}
Пример
{...}
"error":"Rate limit error",
"reason":"Вы достигли лимита API-запросов за текущий месяц. Чтобы увеличить лимит — свяжитесь с отделом продаж: +7 812 602-01-15."
}

Статистика использования API

Возвращает количество запросов к сервису за текущий период
get /priceline/license/v1/usage-statistics
Запрос
Пример запроса
curl 'https://api.ati.su/priceline/license/v1/usage-statistics' \
-X 'GET' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
200 Successful Response
Модель
{...}

Текущая статистика использования API интегратором: лимит, расход за период, остаток и дата сброса счётчика.

monthly_limit*: integer

Месячный лимит на количество запросов

current_period_usage*: integer

Количество запросов, выполненных за текущий период

remaining_requests*: integer

Оставшееся количество запросов

counter_reset_date*:

Дата и время следующего сброса счётчика запросов в формате ISO-8601 (UTC).
После сброса начнётся новый период, а запросы снова станут доступны.
Дата сброса не привязана к дате окончания лицензии и может с ней не совпадать. Например, если лицензия действует 2 месяца, счётчик может сбрасываться каждый месяц.
Если вы ещё не начали использовать API, дата сброса не возвращается.

ANY-OF
string
null
}
Пример
{...}
"counter_reset_date":"2026-06-22T14:32:21.123Z",
"current_period_usage":4567,
"monthly_limit":10000,
"remaining_requests":5433
}
402 Действие лицензии не покрывает текущий период
Модель
{...}

Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов

error*: string

Код или текст ошибки (machine-readable)

reason*: string

Человекочитаемое описание причины ошибки

details:

Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)

ANY-OF
1:{}
null
}
Пример
{...}
"error":"Access error",
"reason":"Действие вашего доступа закончилось."
}
403 Нет доступа к API — требуется оплаченная лицензия
Модель
{...}

Стандартный формат ошибки ATI API: error, reason и details. Возвращается при ошибках валидации, доступа и лимитов

error*: string

Код или текст ошибки (machine-readable)

reason*: string

Человекочитаемое описание причины ошибки

details:

Дополнительные сведения об ошибке (контекст, идентификаторы и т.п.)

ANY-OF
1:{}
null
}
Пример
{...}
"error":"Access error",
"reason":"Оплатите лицензию для получения доступа."
}