FonProxy

API General

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

Останнє оновлення: 3 травня 2026 р.

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

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

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

МетодHeader/ПараметрПриклад
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).
  • Користувачі, що ввійшли в систему: якщо значення в заголовку відрізняється від збереженої локалі, бекенд автоматично оновлює локаль користувача в базі даних (fire-and-forget, додаткового запиту не потрібно).
  • Підтримувані локалі: en (Англійська, за замовчуванням), uk (Українська).
  • Отримайте поточний список локалей під час виконання програми: GET /locales
  • Запасний варіант: якщо заголовок відсутній або локаль невідома, використовується en.

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

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

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

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

ЗаголовокОбов'язковоОпис
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