Перейти до вмісту

Посібник швидкого старту

Запустіть перший стійкий API-виклик менш ніж за 5 хвилин.

Крок 1: Отримайте API-ключ

Section titled “Крок 1: Отримайте API-ключ”

Зареєструйтесь на mirapi.io, відкрийте дашборд, створіть групу і згенеруйте перший API-ключ:

Terminal window
export MIRAPI_KEY="la_5fa62960e7c9af7c***"

Крок 2: Перший проксі-запит

Section titled “Крок 2: Перший проксі-запит”

Надішліть запит на https://proxy.mirapi.io/ і вкажіть URL призначення в заголовку X-Target-URL:

Terminal window
# Оригінальний прямий виклик до Stripe
curl -X POST https://api.stripe.com/v1/customers \
-H "Authorization: Bearer sk_live_..."
# Той самий виклик, проксійований через MirApi
curl -X POST https://proxy.mirapi.io/ \
-H "X-MirApi-Key: $MIRAPI_KEY" \
-H "X-Target-URL: https://api.stripe.com/v1/customers" \
-H "X-Identity-Key: Bearer sk_live_..."

MirApi перехоплює запит, перевіряє ваш ключ, видаляє X-* заголовки, ін’єктує Authorization: Bearer sk_live_... зі значення X-Identity-Key, та пересилає запит до Stripe. Відповідь Stripe повертається вам без змін.

Крок 3: Додайте заголовки надійності

Section titled “Крок 3: Додайте заголовки надійності”

Покращте виклики логікою повторів, тайм-аутом та smart-кешуванням:

Terminal window
curl -X POST https://proxy.mirapi.io/ \
-H "X-MirApi-Key: $MIRAPI_KEY" \
-H "X-Target-URL: https://api.stripe.com/v1/charges" \
-H "X-Identity-Key: Bearer sk_live_..." \
-H "X-Retry-Count: 3" \
-H "X-Retry-Delay: 100ms" \
-H "X-Proxy-Timeout: 5s" \
-H "X-Attempt-Timeout: 1s" \
-H "X-Circuit-Breaker: on" \
-H "X-Smart-Cache: 60s" \
-H "Content-Type: application/json" \
-d '{"amount": 2000, "currency": "usd", "source": "tok_visa"}'

Що відбувається покроково:

  1. Запит прибуває → перевіряється ваш ключ
  2. Тіло сканується на номери карток (не знайдено → продовжує)
  3. Ключ idempotency автоматично обчислюється з SHA256(ClientID + TargetURL + Method + Body)
  4. Перевіряється circuit breaker для api.stripe.com → CLOSED → продовжує
  5. Запит пересилається до Stripe з загальним тайм-аутом 5 секунд та тайм-аутом спроби 1 секунда
  6. Якщо Stripe повертає 5xx або перевищує тайм-аут спроби (ліміт спроби 1с) → до 3 повторів з експоненціальним backoff в межах загального ліміту 5с
  7. Якщо всі повтори провалились → перевіряється Smart Cache на попередню відповідь

Крок 4: Перевірте відповідь

Section titled “Крок 4: Перевірте відповідь”

Якщо запит був врятований з кешу, ви побачите заголовок X-Rescued:

HTTP/1.1 200 OK
X-Rescued: cache
Content-Type: application/json
{
"id": "ch_3Pz9...",
"status": "succeeded"
}

Якщо запит успішний з першої спроби — заголовок X-Rescued не додається.

Крок 5: Використання попередньо налаштованого маршруту (опціонально)

Section titled “Крок 5: Використання попередньо налаштованого маршруту (опціонально)”

Для складних багатоцільових сценаріїв налаштуйте маршрут у дашборді та використовуйте X-Route-Key замість X-Target-URL:

Terminal window
curl -X POST https://proxy.mirapi.io/ \
-H "X-MirApi-Key: $MIRAPI_KEY" \
-H "X-Route-Key: stripe-charges" \
-H "Content-Type: application/json" \
-d '{"amount": 2000, "currency": "usd"}'

Довідка — Всі підтримувані заголовки

Section titled “Довідка — Всі підтримувані заголовки”
ЗаголовокПриклад значенняОпис
X-MirApi-Keyla_5fa629...Обов’язковий. Ваш ключ автентифікації MirApi
X-Target-URLhttps://api.stripe.com/v1/chargesЦільовий API-ендпоінт (обов’язковий якщо не використовується X-Route-Key)
X-Route-Keystripe-chargesВикористати попередньо налаштований маршрут з дашборду
X-Identity-KeyBearer sk_live_...Пересилається як Authorization до upstream (ефемерний — ніколи не зберігається)
X-Proxy-Master-Keymy-master-passphraseКлюч дешифрування для зашифрованих облікових даних з БД
X-Credential-ID4a2e5d18-...Явний UUID облікових даних для пошуку X-Proxy-Master-Key
X-Proxy-Auth-HeaderX-API-KeyПеревизначає ім’я цільового HTTP-заголовка (за замовчуванням: Authorization)
X-Proxy-Auth-TemplateBearer {{secret}}Задає формат заголовка авторизації, замінюючи {{secret}} (за замовчуванням: Bearer {{secret}})
X-Retry-Count3Максимальна кількість повторних спроб
X-Retry-Delay100msБазова затримка для exponential backoff
X-Proxy-Timeout5sЗагальний тайм-аут запиту (наприклад, 500ms, 5s, 30s)
X-Attempt-Timeout1sТайм-аут на спробу (наприклад, 200ms, 1s, 5s)
X-Circuit-BreakeronУвімкнути circuit breaker для цільового хоста
X-Smart-Cache60sTTL кешу успішних відповідей; використовується як fallback при збоях
X-Failover-URLhttps://backup-api.com/...Резервний ендпоінт якщо primary провалився
X-Webhook-Callbackhttps://your-app.com/webhookAsync-режим — повертає 202 Accepted, POST з результатом на вашу callback-URL
X-Proxy-Idempotency-Keyorder_789_attempt_1Власний ключ idempotency (автоматично обчислюється якщо не вказаний)
X-Extract-Redirect$.url || $.checkoutUrlВитягує перший знайдений URL (підтримує fallback через
X-Extract-Map.id = >charge_id,.status = >data.stateПеребудовує JSON-відповідь. Дозволяє мапити декілька полів, створювати вкладені об’єкти, мапити масиви ([]), а також застосовувати шаблони форматування значень (наприклад, id=>$.label(ID: {value}))