API

API «История АО+»

Версия 1.16 · 08.08.2026 · ООО «АвтоОнлайн»

Инструкция содержит минимальный путь от входа до готового отчёта. Состав данных зависит от приобретённого пакета доступа.

1. Первый запрос

  1. Получите partyid, password и accessId.
  2. Выполните POST /api/login и сохраните поле token.
  3. Отправьте запрос на POST /api/graphql-data с заголовком Authorization: Bearer <token>.
  4. Если ответ содержит 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

1.1. Получение JWT

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>"
      }
    ]
  }
}

1.2. Минимальный GraphQL-запрос

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 означает, что все выбранные секции завершены или для них получен финальный ответ об отсутствии данных.

2. Доступные секции

В 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, если она не входит в пакет, не была запрошена, ещё не готова или данные не найдены.

3. Запрос с заказом

Используйте 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.

4. Запрос по государственному номеру

Если пакет разрешает поиск по госномеру, используйте 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.

5. Проверка пакета доступа

Запрос оформлен одним компактным блоком:

{
  "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
  }
}

6. Фотографии и временные ссылки

  • 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 — истёкший срок. Для новой ссылки повторно запросите готовый пакет.

7. Ошибки

HTTP Причина Действие
400 Ошибка JSON, query или variables Сверьте запрос со схемой.
401 JWT отсутствует или истёк Проверьте Authorization: Bearer <token> или получите новый токен.
403 Нет прав или способ поиска запрещён пакетом Проверьте accessId и vehicleIdentifierMode.
429 Превышен лимит Снизьте частоту запросов и добавьте задержку.
5xx Временная ошибка сервиса Повторите запрос позже.

GraphQL-ошибки возвращаются в массиве errors. HTTP 200 не гарантирует отсутствие бизнес-ошибки — всегда проверяйте этот массив.

8. Поддержка и версия

Технические вопросы: hello@avtoonline.pro. Sandbox GraphQL: https://int-graphql.avtoonline.tech/api/sandbox-data.

В версии 1.16 уточнён контракт guid фотографий Audatex. Обычная секция photos не содержит GUID Audatex; остальной внешний контракт версии 1.15 сохранён.

  • API «История АО+»
  • 1. Первый запрос
  • 2. Доступные секции
  • 3. Запрос с заказом
  • 4. Запрос по государственному номеру
  • 5. Проверка пакета доступа
  • 6. Фотографии и временные ссылки
  • 7. Ошибки
  • 8. Поддержка и версия
Стать клиентом
После получения Запроса мы свяжемся с Вами по телефону или e-mail в течение 24 часов в рабочее время.
Вы хотите
Продавать
Покупать
Укажите контактные данные