Посібник з автентифікації
Дізнайтеся, як автентифікуватися в Smart Money API за допомогою API-ключів, JWT-токенів та OAuth 2.0. Захистіть свої інтеграції за допомогою стандартних методів автентифікації та найкращих практик.
Огляд
Smart Money API підтримує кілька методів автентифікації для різних випадків використання. Виберіть метод, який найкраще підходить для вашої інтеграції:
API-ключі (основний): Надсилайте свій ключ у X-API-Key заголовку запиту для всіх викликів REST API. Це рекомендований метод для ботів та серверних інтеграцій.
Сесійний JWT (резервний): Сесії в браузері/панелі керування автентифікуються за допомогою сесійного JWT через Authorization: Bearer, дійсний протягом 24 годин. Програмні клієнти повинні віддавати перевагу X-API-Key.
OAuth 2.0: Автентифікація корпоративного рівня для багатокористувацьких додатків та інтеграцій сторонніх розробників. Користувачі надають вашому додатку доступ до своїх даних.
Усі запити до API повинні виконуватися через HTTPS. Незашифровані HTTP-запити будуть відхилені. Крім того, ніколи не зберігайте API-ключі у системі контролю версій або не діліться ними публічно.
API-ключі
API-ключі — це унікальні облікові дані, видані вашому обліковому запису. Кожен ключ представляє один набір дозволів та квот. Ви можете створити кілька ключів для різних додатків або середовищ (розробка, тестування, продакшн).
Генерація API-ключа
Створюйте API-ключі у вашій консолі облікового запису:
- Перейдіть до Smart Money Console
- Виберіть "API-ключі" у бічному меню
- Натисніть "Створити новий ключ"
- Виберіть тип ключа (Розробка, Тестування, Продакшн)
- Встановіть ліміт швидкості та функції
- Скопіюйте та збережіть ключ у безпечному місці
Збережіть свій API-ключ негайно! Ви не зможете переглянути його знову. Якщо ви його втратите, вам доведеться створити новий ключ.
Формат ключа
API-ключі мають стандартний формат:
sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z
sk_test_8f4g5h6i7j8k9l0m1n2o3p4q5r6s7t8u9v0w1x2y3z4a5b6c7d8e9f
sk_dev_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b
Префікси ключів вказують на середовище:
sk_live_ — Продакшн-ключі з повною квотою
sk_test_ — Тестові ключі зі зменшеною квотою та даними для розробки
sk_dev_ — Ключі для особистої розробки з тестовими даними
Заголовок X-API-Key (основний)
Надсилайте свій API-ключ у заголовку X-API-Key для всіх запитів до API. Ніколи не розміщуйте ключ у URL.
HTTP-заголовок
GET /v1/whales/events HTTP/1.1
Host: api.smartmoneyapi.com
X-API-Key: sm_your_key
Content-Type: application/json
Приклад cURL
curl -X GET https://api.smartmoneyapi.com/v1/whales/events \
-H "X-API-Key: sm_your_key" \
-H "Content-Type: application/json"
Приклад Python
import requests
api_key = "sm_your_key"
headers = {
"X-API-Key": api_key,
"Content-Type": "application/json"
}
response = requests.get(
"https://api.smartmoneyapi.com/v1/whales/events",
headers=headers
)
data = response.json()
Автентифікація за допомогою JWT-токена
Для тривалих сесій та серверного зв'язку обміняйте свій API-ключ на JWT-токен. JWT-токени дійсні протягом 24 годин і зменшують необхідність зберігати API-ключ у коді додатка.
Отримання JWT-токена
Надішліть свій API-ключ на JWT-ендпоінт, щоб отримати токен:
curl -X POST https://api.smartmoneyapi.com/auth/jwt \
-H "Content-Type: application/json" \
-d '{
"api_key": "sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m"
}'
Відповідь JWT
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"expires_in": 86400,
"token_type": "Bearer"
}
Використання JWT-токена
Використовуйте JWT-токен у заголовку Authorization так само, як API-ключі:
import requests
import json
from datetime import datetime, timedelta
class JWTAuth:
def __init__(self, api_key):
self.api_key = api_key
self.token = None
self.token_expires = None
def get_valid_token(self):
# Check if current token is still valid
if self.token and self.token_expires > datetime.now():
return self.token
# Get new token
response = requests.post(
"https://api.smartmoneyapi.com/auth/jwt",
json={"api_key": self.api_key}
)
data = response.json()
self.token = data["token"]
self.token_expires = datetime.now() + timedelta(seconds=data["expires_in"])
return self.token
def request(self, method, url, **kwargs):
token = self.get_valid_token()
headers = kwargs.get("headers", {})
headers["Authorization"] = f"Bearer {token}"
kwargs["headers"] = headers
return requests.request(method, url, **kwargs)
# Usage
auth = JWTAuth("sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m")
response = auth.request(
"GET",
"https://api.smartmoneyapi.com/v1/whales/events"
)
print(response.json())
OAuth 2.0
OAuth 2.0 призначений для додатків, яким потрібен доступ до кількох облікових записів користувачів. Користувачі надають вашому додатку дозвіл на доступ до їхніх даних без передачі своїх API-ключів.
Потік OAuth 2.0
Smart Money API підтримує потік Authorization Code для веб-додатків:
- Користувач натискає кнопку "Підключитися до Smart Money"
- Браузер перенаправляє на сторінку авторизації
- Користувач надає дозвіл вашому додатку
- Браузер перенаправляє назад з кодом авторизації
- Ваш бекенд обмінює код на токен доступу
- Тепер ви можете отримувати дані користувача від його імені
Крок 1: Запит авторизації
Перенаправте користувача на ендпоінт авторизації:
https://auth.smartmoneyapi.com/authorize?
client_id=YOUR_CLIENT_ID&
redirect_uri=https://yourapp.com/callback&
response_type=code&
scope=whale_positions+funding_rates+liquidations&
state=random_state_string
Крок 2: Обмін токена
Після надання дозволу користувачем обміняйте код на токен доступу:
curl -X POST https://auth.smartmoneyapi.com/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code&code=AUTH_CODE&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&redirect_uri=https://yourapp.com/callback"
Відповідь OAuth-токена
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "rt_1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p",
"scope": "whale_positions funding_rates liquidations"
}
Найкращі практики безпеки
Зберігайте ключі безпечно
Ніколи не зберігайте API-ключі у системі контролю версій, не вбудовуйте їх у код додатків або не діліться ними у документації. Використовуйте змінні середовища або сервіси керування ключами, такі як AWS Secrets Manager, HashiCorp Vault або подібні.
Використовуйте лише HTTPS
Усі запити до API повинні використовувати HTTPS (TLS 1.2 або вище). HTTP-запити будуть відхилені. Це гарантує, що ваш API-ключ і дані шифруються під час передачі.
Обмежуйте дозволи ключів
Створюйте окремі API-ключі для різних додатків та середовищ. Використовуйте області дії, щоб обмежити доступ кожного ключа. Не використовуйте продакшн-ключі під час розробки.
Моніторінг використання ключів
Регулярно перевіряйте використання API у вашій консолі. Налаштуйте сповіщення про незвичайну активність або наближення до лімітів квоти. Видаляйте ключі, які більше не використовуєте.
Ротація ключів
Регулярно змінюйте свої API-ключі, щоб зменшити ризик компрометації. Ми рекомендуємо змінювати ключі кожні 90 днів:
- Створіть новий API-ключ у вашій консолі
- Оновіть свої додатки для використання нового ключа
- Перевірте, чи все працює правильно
- Видаліть старий ключ із вашої консолі
Області дії та дозволи
Під час створення API-ключів або використання OAuth вкажіть, до яких ресурсів ваш ключ може мати доступ:
| Область дії |
Опис |
Рівень |
| whale_positions |
Читання позицій гаманців китів |
Trader+ |
| funding_rates |
Читання даних про фандінг |
Free+ |
| liquidations |
Читання стрімів ліквідацій |
Free+ |
| open_interest |
Читання даних про відкритий інтерес |
Trader+ |
| confirmation_scores |
Читання AI-оцінок підтвердження |
Pro+ |
| on_chain |
Читання метрик on-chain |
Pro+ |
Приклади коду автентифікації
Повна інтеграція на Python
import requests
from typing import Optional, Dict
from datetime import datetime, timedelta
class SmartMoneyAuth:
"""Handles all authentication methods for Smart Money API"""
def __init__(self, api_key: str):
self.api_key = api_key
self.base_url = "https://api.smartmoneyapi.com"
self.jwt_token = None
self.jwt_expires = None
def get_jwt_token(self) -> str:
"""Get or refresh JWT token"""
if self.jwt_token and self.jwt_expires > datetime.now():
return self.jwt_token
response = requests.post(
f"{self.base_url}/auth/jwt",
json={"api_key": self.api_key}
)
data = response.json()
self.jwt_token = data["token"]
self.jwt_expires = datetime.now() + timedelta(seconds=data["expires_in"] - 300)
return self.jwt_token
def headers_bearer(self) -> Dict:
"""Get headers for Bearer token auth"""
return {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
def headers_jwt(self) -> Dict:
"""Get headers for JWT auth"""
token = self.get_jwt_token()
return {
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
}
def request(self, method: str, endpoint: str, use_jwt: bool = False, **kwargs) -> Dict:
"""Make authenticated request"""
headers = self.headers_jwt() if use_jwt else self.headers_bearer()
response = requests.request(
method,
f"{self.base_url}{endpoint}",
headers=headers,
**kwargs
)
return response.json()
# Usage
auth = SmartMoneyAuth("sk_live_abc123xyz789")
# Bearer token method
whales = auth.request("GET", "/v1/whales/events?symbol=BTCUSDT")
# JWT method (auto-refreshing)
whales_jwt = auth.request("GET", "/v1/whales/events?symbol=BTCUSDT", use_jwt=True)
print(f"Found {whales['data']['total']} whale positions")
Потрібна допомога?
Перегляньте нашу документацію API або зверніться до підтримки, якщо вам потрібна допомога з автентифікацією.
Довідник API
Створіть свій перший API-ключ
Почніть роботу з Smart Money API. Створіть обліковий запис і згенеруйте облікові дані для автентифікації за кілька хвилин.
Перейти до консолі