Версия 1.16 · 08.08.2026 · ООО «АвтоОнлайн»
Инструкция содержит минимальный путь от входа до готового отчёта. Состав данных зависит от приобретённого пакета доступа.
partyid, password и accessId.POST /api/login и сохраните поле token.POST /api/graphql-data с заголовком
Authorization: Bearer <token>.
completed: false, повторяйте тот же запрос через 5–30
секунд.
| Окружение | Базовый URL | GraphQL |
|---|---|---|
| Production | https://avtoonline.pro |
https://avtoonline.pro/api/graphql-data |
| Sandbox | https://int-graphql.avtoonline.tech |
https://int-graphql.avtoonline.tech/api/graphql-data |
curl -X POST https://int-graphql.avtoonline.tech/api/login \
-H "Content-Type: application/json" \
-d '{"partyid":"<PARTY_ID>","password":"<PASSWORD>"}'
{
"token": "<JWT_TOKEN>",
"party": {
"accessPackages": [
{
"id": "<ACCESS_ID>"
}
]
}
}
curl -X POST https://int-graphql.avtoonline.tech/api/graphql-data \
-H "Content-Type: application/json; charset=utf-8" \
-H "Authorization: Bearer <JWT_TOKEN>" \
-d '{
"query": "query History($vin:String!,$accessId:String!){getCarHistoryPackage(vin:$vin,accessId:$accessId){vin completed baseInfo}}",
"variables": {"vin":"<VIN>","accessId":"<ACCESS_ID>"}
}'
{
"data": {
"getCarHistoryPackage": {
"vin": "<VIN>",
"completed": false,
"baseInfo": null
}
}
}
completed: false — штатный ответ: часть данных ещё собирается.
completed: true означает, что все выбранные секции завершены или для них получен
финальный ответ об отсутствии данных.
В GraphQL-запрос включайте только нужные поля:
baseInfo, customs, regActions,
ownershipPeriods, hijacked, mileageHistory,
pledges, repairs, repairsBy, repairsKz,
accidents, auctions, bidCars, encar,
osago, restrictions, taxi, avtoonline,
photos, audatex_photos, fines,
serviceData, marketPrice, recyclingFee.
Машиночитаемый состав полей: car_history_package.openapi.json.
{
"query": `
query History($vin:String!,$accessId:String!,$counterpartyId:String,$encarVehicleId:String) {
getCarHistoryPackage(vin:$vin,accessId:$accessId,counterpartyId:$counterpartyId,encarVehicleId:$encarVehicleId) {
vin
completed
baseInfo
ownershipPeriods
accidents
repairs
bidCars
encar
avtoonline
photos
audatex_photos
fines
serviceData
marketPrice
recyclingFee
}
}
`,
"variables": {
"vin": "<VIN>",
"accessId": "<ACCESS_ID>",
"counterpartyId": null,
"encarVehicleId": null
}
}
Большинство секций возвращается как JSON-строка. Распарсите её на стороне клиента. Типичная обёртка:
{
"value": [],
"success": true,
"status": "completed",
"checkDateTime": "2026-07-21T10:00:00Z",
"createdDateTime": "2026-07-21T10:00:00Z"
}
Поле секции может быть null, если она не входит в пакет, не была запрошена, ещё
не готова или данные не найдены.
Используйте getCarHistoryPackageV2, если повторные обращения должны относиться к
одному заказу. Первый вызов выполняется без orderId:
{
"query": `
query HistoryV2($vin:String!,$accessId:String!,$counterpartyId:String) {
getCarHistoryPackageV2(vin:$vin,accessId:$accessId,counterpartyId:$counterpartyId) {
order {
id
accessId
vin
counterpartyId
expiresAt
requestLimit
requestsUsed
}
package {
vin
completed
baseInfo
}
}
}
`,
"variables": {
"vin": "<VIN>",
"accessId": "<ACCESS_ID>",
"counterpartyId": null
}
}
{
"data": {
"getCarHistoryPackageV2": {
"order": {
"id": "<ORDER_ID>",
"expiresAt": "2026-07-22T10:00:00Z",
"requestLimit": 100,
"requestsUsed": 1
},
"package": {
"vin": "<VIN>",
"completed": false
}
}
}
}
При polling передавайте тот же orderId, accessId, VIN и, если
использовался, тот же counterpartyId. Если заказ истёк или закрыт, начните новый
вызов без orderId.
Если пакет разрешает поиск по госномеру, используйте
getCarHistoryPackageByRegNumber. Для сценария с заказом доступен
getCarHistoryPackageByRegNumberV2.
{
"query": `
query HistoryByReg($reg:String!,$accessId:String!) {
getCarHistoryPackageByRegNumber(regNumber:$reg,accessId:$accessId) {
vin
completed
baseInfo
avtoonline
photos
}
}
`,
"variables": {
"reg": "<ГОСНОМЕР>",
"accessId": "<ACCESS_ID>"
}
}
Разрешённый способ поиска указан в vehicleIdentifierMode пакета:
VIN, REG_NUMBER или VIN_OR_REG_NUMBER.
Запрос оформлен одним компактным блоком:
{
"query": `
query AccessPackage($accessId:String!,$offset:Int!,$limit:Int!,$vin:String) {
getAccessPackage(id:$accessId) {
id
downloadsTotal
startDate
endDate
downloadsRemaining
historyOrderTtlSeconds
forceCloseCompletedHistoryOrders
vehicleIdentifierMode
usageLogs(offset:$offset,limit:$limit,sortOrder:"desc",vinPart:$vin) {
totalCount
offset
limit
logs {
timestamp
accessPackageId
vin
deducted
}
}
}
}
`,
"variables": {
"accessId": "<ACCESS_ID>",
"offset": 0,
"limit": 50,
"vin": null
}
}
photos — фотографии автомобиля AutoOnline. Поля url и
fileName не гарантируются как стабильные ключи для сопоставления.
audatex_photos — фотографии повреждений. Поле
audatex_photos.value[].guid содержит GUID, полученный от Audatex без изменений.
repairs.value[].audaHistoryDetails.caseAttachments.audaHistoryCaseAttachment[].
GUID Audatex не заменяется идентификатором AutoOnline, именем файла, URL или идентификатором заказа. В верхнеуровневой секции и во вложении ремонта для одной фотографии возвращается одно и то же значение.
Временная ссылка открывается без JWT до urlValidTill. Не публикуйте её и не
записывайте целиком в логи. 403 означает повреждённую ссылку, 410 —
истёкший срок. Для новой ссылки повторно запросите готовый пакет.
| HTTP | Причина | Действие |
|---|---|---|
| 400 | Ошибка JSON, query или variables | Сверьте запрос со схемой. |
| 401 | JWT отсутствует или истёк |
Проверьте Authorization: Bearer <token> или получите новый токен.
|
| 403 | Нет прав или способ поиска запрещён пакетом | Проверьте accessId и vehicleIdentifierMode. |
| 429 | Превышен лимит | Снизьте частоту запросов и добавьте задержку. |
| 5xx | Временная ошибка сервиса | Повторите запрос позже. |
GraphQL-ошибки возвращаются в массиве errors. HTTP 200 не гарантирует отсутствие
бизнес-ошибки — всегда проверяйте этот массив.
Технические вопросы: hello@avtoonline.pro. Sandbox GraphQL: https://int-graphql.avtoonline.tech/api/sandbox-data.
В версии 1.16 уточнён контракт guid фотографий Audatex. Обычная секция
photos не содержит GUID Audatex; остальной внешний контракт версии 1.15 сохранён.
