API General

Основні конвенції для FonProxy API: автентифікація, заголовки, формат помилок, пагінація, ідентифікатори, валюта та обмеження швидкості.

Updated 2026-05-03 00:00:00
API General

Базовий URL: https://api.fonproxy.io

Аутентифікація

Усі захищені кінцеві точки вимагають API ключ:

МетодЗаголовок/ПараметрПриклад
API Key (header)x-api-key: <key>x-api-key: fnp_3eab...
API Key (query)?apikey=<key>/api/v1/resource?apikey=fnp_3eab...

Згенеруйте API ключ у вашому обліковому записі: API Keys.

Локаль

API використовує заголовок fp-locale для визначення мови користувача.

fp-locale: uk

Поведінка

  • Кожен запит: бекенд читає fp-locale і використовує його для контенту, згенерованого на сервері (електронні листи, сповіщення Telegram).
  • Авторизовані користувачі: якщо значення заголовка відрізняється від збереженої локалі, бекенд автоматично оновлює локаль користувача в базі даних (асинхронно, без додаткового запиту).
  • Підтримувані локалі: en (англійська, за замовчуванням), uk (українська).
  • Отримати поточний список локалей під час виконання: GET /locales
  • Резерв: якщо заголовок відсутній або локаль невідома, використовується en.

Що Перекладається

КаналПерекладаєЯк
Електронна пошта (теми, тіло)БекендПерекладається перед рендерингом в HTML
Повідомлення TelegramБекендПерекладається перед відправкою
Повідомлення про помилки APIФронтендБекенд повертає сирі ключі (наприклад, order.not_found), фронтенд перекладає
Сповіщення в додаткуФронтендБекенд зберігає сирі ключі в БД, фронтенд відображає

Поле locale завжди повертається в профілі користувача (GET /user/me), щоб фронтенд міг відповідно ініціалізувати свою локалізацію.

Загальні Заголовки

ЗаголовокОбов'язковийОпис
x-api-keyТак (захищені маршрути)API ключ для автентифікації
fp-localeНіКод локалі інтерфейсу (en, uk). Автоматично синхронізується з профілем користувача.
Content-TypeТак (POST/PATCH)application/json

Формат Відповіді

Усі відповіді є в форматі JSON. Успішні відповіді повертають дані безпосередньо:

{
  "user": { "id": "k5Xz9qR2Wp", "name": "John", ... }
}

Відповіді на помилки:

{
  "message": "order.not_found",
  "path": "/orders/80-12345",
  "timestamp": "2026-04-01T12:00:00.000Z"
}

Поле message є ключем перекладу — фронтенд перекладає його у читабельний рядок.

СутністьПриклад IDФормат
Користувачk5Xz9qR2WpАлфавітно-цифровий
Замовлення80-472109X0-YYYYY (числовий)
API KeyQxPYVp4dy9Алфавітно-цифровий
ТранзакціяaBcDeFgHАлфавітно-цифровий
ПоповненняxYzAbCdEАлфавітно-цифровий

Пагінація

Кінцеві точки з пагінацією приймають:

ПараметрЗа замовчуваннямМаксОпис
page1Номер сторінки (починається з 1)
limit20100Кількість елементів на сторінку

Відповідь містить:

{
  "items": [ ... ],
  "total": 142,
  "page": 1,
  "pages": 8
}

Валюта

  • Усі ціни та залишки зберігаються у USD внутрішньо.
  • Значення для відображення конвертуються за допомогою актуальних валютних курсів.
  • Валюта відображення, що надає перевагу користувач, задається через PATCH /user/settings { "currency": "UAH" }.
  • Кінцеві точки, які повертають грошові значення, включають поля *Usd і *Display.

Обмеження Швидкості

Обмеження на IP-адресу. За замовчуванням: 60 запитів/хвилина для більшості кінцевих точок, 5/хвилина для кінцевих точок автентифікації.

Коли досягається ліміт швидкості, API повертає 429 Too Many Requests:

{ "message": "error.rate_limit" }

Локалі

GET /locales

Повертає всі поточно підтримувані коди локалей з їх відображуваними назвами.

Відповідь:

{
  "locales": [
    { "code": "en", "name": "English", "nativeName": "English" },
    { "code": "uk", "name": "Ukrainian", "nativeName": "Українська" }
  ]
}

Валюта

GET /currencies

Повертає всі підтримувані коди валют. Публічний, автентифікація не потрібна.

Відповідь:

{
  "currencies": ["USD", "EUR", "GBP", "PLN", "CZK", "HUF", "RON", "SEK", "NOK", "DKK", "CHF", "HRK", "BGN", "UAH", "TRY"]
}

GET /currencies/rates

Повертає останні валютні курси за кодами валют. Кожне значення — "1 базова = N цільова" — з base=USD, "EUR": 0.92 означає, що 1 USD купує 0.92 EUR. Публічний, автентифікація не потрібна.

Параметри запиту

Ім'яТипОписОбов'язковий
basestringКод базової валюти (один з GET /currencies, нечутливий до регістру). За замовчуванням USD.Ні

Відповідь:

{
  "base": "USD",
  "rates": {
    "USD": 1,
    "EUR": 0.92,
    "UAH": 41.2,
    ...
  }
}

Помилки:

СтатусmessageПричина
400currency.invalid_basebase не є підтримуваним кодом валюти

API Довідник

Публічний

СервісДокументація
Аутентифікація (сесії)API Auth
Користувач та НалаштуванняAPI User
ЗамовленняAPI Order
ПлатежіAPI Payment
API КлючіAPI Keys
СповіщенняAPI Notifications
Гео (країни)API Geo
РефералAPI Referral
АналітикаAPI Analytics
ПошукAPI Search
Здоров'я та СтатусAPI Health & Status

Адмін

СервісДокументація
Огляд адміністратораAPI Admin
КористувачіAPI Admin Users
ЗамовленняAPI Admin Orders
ТранзакціїAPI Admin Transactions
ПулиAPI Admin Pools
ДжерелаAPI Admin Sources
IP-адресиAPI Admin IPs
ПірінгAPI Admin Peers
СповіщенняAPI Admin Notifications
РефералиAPI Admin Referrals
ГеоAPI Admin Geo
ВідвідувачіAPI Admin Visitors
Монітор СтатусуAPI Admin Status
Правила блокуванняAPI Admin Block Rules
ПерекладиAPI Admin Translations