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

Как получить и использовать API-ключи для доступа к InstantBase

Типы ключей

В InstantBase используется два типа API-ключей с разными назначениями и лимитами:

Тип Префикс Назначение Лимиты Индикатор
Production prod_ Реальный трафик, продакшн-среда Зависят от тарифа (500k, 2.5M, 10M) production
Test test_ Отладка, тестирование, разработка 50 000 событий/мес (общий лимит) test
💡 Рекомендация: Всегда используйте тестовые ключи на этапе разработки. Это позволит не расходовать лимиты основного тарифа и избежать случайного засорения продакшн-данных.

Где взять ключи

  1. Войдите в личный кабинет InstantBase
  2. Перейдите в раздел "Настройки" → "API ключи"
  3. Нажмите кнопку "Сгенерировать новый ключ"
  4. Выберите тип ключа (production или test)
  5. Укажите название ключа (например, "Сайт", "Мобильное приложение")
  6. Нажмите "Создать" и скопируйте ключ
⚠️ ВАЖНО: Ключ показывается только один раз — при создании. Скопируйте его сразу и сохраните в безопасном месте. При утере ключа его невозможно восстановить, придется генерировать новый.

Использование ключей

В HTTP-запросах

Ключ передается в заголовке X-API-Key каждого запроса к API:

bash
curl -X POST https://api.instantbase.online/v1/track \
  -H "X-API-Key: ваш_ключ" \
  -H "Content-Type: application/json" \
  -d '{"event":"test"}'

В JavaScript (клиентская часть)

javascript
fetch('https://api.instantbase.online/v1/track', {
  method: 'POST',
  headers: {
    'X-API-Key': 'ваш_ключ',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    event: 'page_view',
    user_id: 'user_123'
  })
});

В Node.js (серверная часть)

javascript
const axios = require('axios');

const API_KEY = process.env.INSTANTBASE_API_KEY;

async function trackEvent(event, userId, properties = {}) {
  try {
    const response = await axios.post('https://api.instantbase.online/v1/track', {
      event,
      user_id: userId,
      properties
    }, {
      headers: {
        'X-API-Key': API_KEY
      }
    });
    
    return response.data;
  } catch (error) {
    console.error('Failed to track event:', error);
  }
}

В Python

python
import os
import requests

API_KEY = os.environ.get('INSTANTBASE_API_KEY')

def track_event(event, user_id, properties=None):
    url = 'https://api.instantbase.online/v1/track'
    headers = {
        'X-API-Key': API_KEY,
        'Content-Type': 'application/json'
    }
    data = {
        'event': event,
        'user_id': user_id,
        'properties': properties or {}
    }
    
    response = requests.post(url, json=data, headers=headers)
    return response.json()

Безопасность ключей

❌ НЕПРАВИЛЬНО: ключи в клиентском коде

❌ НИКОГДА ТАК НЕ ДЕЛАЙТЕ
// Плохо: ключ виден всем в исходном коде
const API_KEY = 'prod_abc123def456ghi789';

// Плохо: ключ в URL
fetch('https://api.instantbase.online/v1/track?api_key=prod_abc123...')

// Плохо: ключ в localStorage
localStorage.setItem('api_key', 'prod_abc123...');

✅ ПРАВИЛЬНО: переменные окружения на сервере

✅ ПРАВИЛЬНО
// Node.js
const API_KEY = process.env.INSTANTBASE_API_KEY;

// Python
import os
API_KEY = os.environ.get('INSTANTBASE_API_KEY')

// PHP
$apiKey = getenv('INSTANTBASE_API_KEY');

// Docker
# docker run -e INSTANTBASE_API_KEY=your_key ...

// .env файл (не в репозитории!)
INSTANTBASE_API_KEY=your_key

Управление ключами в личном кабинете

В разделе "API ключи" доступны следующие операции:

Лимиты и квоты

Тип лимита Production Test
Месячный лимит событий Зависит от тарифа (500k, 2.5M, 10M) 50 000 (общий на все тестовые ключи)
Rate limit (запросов в минуту) 1000 200
Одновременных соединений 100 20
📌 Важно: Лимиты для тестовых ключей суммируются по всем ключам компании. Как только общее количество тестовых событий достигает 50 000 в месяц, все тестовые ключи временно блокируются до начала следующего месяца.

Рекомендации по безопасности

🔐 Чек-лист безопасности:
  • ✅ Используйте разные ключи для разных сред (dev/stage/prod)
  • ✅ Регулярно ротируйте ключи (раз в 3-6 месяцев)
  • ✅ Отключайте неиспользуемые ключи
  • ✅ Никогда не передавайте ключи через URL
  • ✅ Используйте HTTPS для всех запросов
  • ✅ Храните ключи в переменных окружения, а не в коде
  • ✅ Не коммитьте ключи в Git (используйте .gitignore)
  • ✅ Ограничьте доступ к ключам в команде

Примеры ответов API

Успешная аутентификация (200)

json
{
  "status": "ok",
  "message": "Event received",
  "queued": true
}

Неверный или отсутствующий ключ (401)

json
{
  "error": "Invalid or missing API key"
}

Ключ отключен (403)

json
{
  "error": "API key is disabled"
}

Превышение rate limit (429)

json
{
  "error": "Too many requests",
  "retry_after": 60
}

Часто задаваемые вопросы

Можно ли использовать один ключ для нескольких проектов?

Да, можно. Но рекомендуется создавать отдельные ключи для разных проектов — это упрощает мониторинг и позволяет при необходимости отключить ключ только для одного проекта.

Что делать, если ключ скомпрометирован?

Немедленно отключите или удалите ключ в личном кабинете и создайте новый. Проверьте логи на предмет подозрительной активности.

Как отслеживать использование ключей?

В личном кабинете в разделе "API ключи" отображается статистика использования каждого ключа: количество запросов, последнее использование и расход событий.

Можно ли установить свои лимиты на ключ?

В текущей версии лимиты задаются на уровне компании и тарифа. Отдельные ограничения на ключ не поддерживаются.

Остались вопросы по аутентификации?

Напишите нам, и мы поможем настроить интеграцию

support@instantbase.online Telegram