BUNKERFUELPRICES
Разработчикам

API для поставщиков

Один эндпоинт. Отправьте массив цен, получите обратно, что опубликовано и что задержано. Нет SDK для установки и нет интеграции, о которой нужно назначать созвон — если в вашей системе уже есть сегодняшние цифры, это один HTTP-запрос.

Получите ключ

Откройте портал поставщика с адреса, с которого котирует ваш деск. Пришедшая ссылка выполнит вход, а ваш ключ будет на этой странице. Ключи начинаются с bfps_ и никогда не истекают; вы можете сменить ключ на той же странице.

Относитесь к нему как к паролю. Любой, кто им владеет, может размещать цены от вашего имени, а неверная цена, приписанная вам, хуже для вас, чем для нас.

Размещение цен

POST https://bunkerfuelprices.com/api/v1/supplier/prices

curl -X POST https://bunkerfuelprices.com/api/v1/supplier/prices \
  -H "Authorization: Bearer bfps_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prices": [
      { "port": "SGSIN", "grade": "VLSFO", "amount": 784.50 },
      { "port": "SGSIN", "grade": "MGO",   "amount": 1146.00 },
      { "port": "AEFJR", "grade": "VLSFO", "amount": 795.00,
        "minMt": 200, "validHours": 24, "basis": "delivered" }
    ]
  }'

Поля

ПолеТипПримечания
portstringrequiredUN/LOCODE, пять букв — SGSIN, NLRTM, AEFJR. Не название порта. Неизвестный код отклоняется только для этой строки; остальные всё равно размещаются.
gradeenumrequiredVLSFO · HSFO · MGO · ULSFO · LNG · B24 · B30
amountnumberrequiredЦена, в валюте и единице ниже.
currencyUSD | EURoptionalПо умолчанию USD. EUR конвертируется по актуальному справочному курсу ECB на этот день.
unitmt | litre | m3optionalПо умолчанию mt. Цены за литр конвертируются с использованием плотности сорта.
basisdelivered | ex_wharf | foboptionalПо умолчанию delivered. Это важно: цена ex-wharf, показанная как delivered, занижает то, что платит покупатель, а мы сравниваем только в пределах одного базиса.
minMtnumberoptionalМинимальная партия, к которой применяется цена.
validHours1–168optionalКак долго цена действует. По умолчанию 24, после чего она помечается как устаревшая, а не показывается как актуальная.
taxIncludedbooleanoptionalПо умолчанию false. Актуально в основном для яхтенных причалов.

Ответ

{
  "accepted": 3,
  "published": 2,
  "held": 1,
  "results": [
    { "port": "SGSIN", "grade": "VLSFO", "ok": true, "published": true,
      "submissionId": "..." },
    { "port": "SGSIN", "grade": "MGO",   "ok": true, "published": true,
      "submissionId": "..." },
    { "port": "AEFJR", "grade": "VLSFO", "ok": true, "published": false,
      "heldForReview": ["38% away from the $795 median across 6 other ports"] }
  ]
}

Строка, далёкая от рынка в других портах, задерживается для проверки человеком, а не публикуется. Это не сомнение в вас — это то, что не даёт одной ошибочно набранной цифре стать значением, по которому действует покупатель, и это защищает ваше имя больше, чем наше. Задержанные цены обычно освобождаются в тот же день.

Строки независимы. Плохая строка не отклоняет весь пакет.

Считайте то, что мы храним

curl https://bunkerfuelprices.com/api/v1/supplier/prices \
  -H "Authorization: Bearer bfps_YOUR_KEY"

Возвращает ваши последние сто отправок с их статусом, чтобы вы могли сверяться, не ведя собственный журнал того, что мы приняли.

Публичная ценовая доска

Открыта, ключ не нужен, и полезна для проверки того, как ваша цена соотносится с остальным рынком, прежде чем вы её разместите.

curl "https://bunkerfuelprices.com/api/v1/prices?grade=VLSFO&limit=50"

Ошибки и лимиты

СтатусЗначение
200Обработано. Проверьте results — 200 не означает, что каждая строка опубликована.
400Тело не распарсилось. Ответ называет поле.
401Отсутствующий, неверный или приостановленный ключ.

До 200 цен на запрос. Размещайте так часто, как хотите — большинство десков размещают один раз утром и ещё раз, если рынок движется. Повторное размещение того же порта и сорта заменяет прежнюю цену, а не дублирует её.

Что мы с этим делаем

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

Мы не поставщик топлива, не трейдер и не брокер и не занимаем торговую позицию ни по какому грузу, поэтому у нас нет интереса к вашей цене, кроме её точности. Полные подробности в Политике по данным и ценам. Отзовите в любой момент через портал или напишите на data@bunkerfuelprices.com.