Authenticatiehandleiding
Leer hoe u zich kunt authenticeren met Smart Money API met behulp van API-sleutels, JWT-tokens en OAuth 2.0. Beveilig uw integraties met industristandaard authenticatiemethoden en best practices.
Overzicht
De Smart Money API ondersteunt meerdere authenticatiemethoden voor verschillende use cases. Kies de methode die het beste past bij uw integratie:
API-sleutels (primair): Verstuur uw sleutel in de X-API-Key request header voor alle REST API-aanroepen. Dit is de aanbevolen methode voor bots en server-to-server gebruik.
Sessie-JWT (fallback): Browser/dashboard-sessies authenticeren met een sessie-JWT via Authorization: Bearer, geldig voor 24 uur. Programmatische clients moeten voorkeur geven aan X-API-Key.
OAuth 2.0: Enterprise-grade authenticatie voor multi-user applicaties en integraties van derden. Gebruikers geven uw app toestemming om toegang te krijgen tot hun gegevens.
Alle API-verzoeken moeten via HTTPS worden gedaan. Onversleutelde HTTP-verzoeken worden geweigerd. Plaats bovendien nooit API-sleutels in versiebeheer of deel ze publiekelijk.
API-sleutels
API-sleutels zijn unieke inloggegevens die aan uw account zijn uitgegeven. Elke sleutel vertegenwoordigt een enkele set machtigingen en quota. U kunt meerdere sleutels genereren voor verschillende applicaties of omgevingen (ontwikkeling, staging, productie).
Een API-sleutel genereren
Genereer API-sleutels vanuit uw accountconsole:
- Navigeer naar Smart Money Console
- Selecteer "API-sleutels" in de zijbalk
- Klik op "Nieuwe sleutel genereren"
- Kies het sleuteltype (Ontwikkeling, Staging, Productie)
- Stel snelheidslimiet en functies in
- Kopieer en bewaar de sleutel veilig
Sla uw API-sleutel direct op! U kunt deze niet meer inzien. Als u deze verliest, moet u een nieuwe sleutel genereren.
Sleutelformaat
API-sleutels volgen een standaardformaat:
sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z
sk_test_8f4g5h6i7j8k9l0m1n2o3p4q5r6s7t8u9v0w1x2y3z4a5b6c7d8e9f
sk_dev_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b
Sleutelvoorvoegsels geven de omgeving aan:
sk_live_ — Productiesleutels met volledige quota
sk_test_ — Testsleutels met verminderde quota en ontwikkelingsgegevens
sk_dev_ — Persoonlijke ontwikkelingssleutels met sandbox-gegevens
X-API-Key Header (primair)
Verstuur uw API-sleutel in de X-API-Key request header voor alle API-verzoeken. Plaats uw sleutel nooit in een URL.
HTTP Header
GET /v1/whales/events HTTP/1.1
Host: api.smartmoneyapi.com
X-API-Key: sm_your_key
Content-Type: application/json
cURL Voorbeeld
curl -X GET https://api.smartmoneyapi.com/v1/whales/events \
-H "X-API-Key: sm_your_key" \
-H "Content-Type: application/json"
Python Voorbeeld
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 Token Authenticatie
Voor langdurige sessies en server-to-server communicatie kunt u uw API-sleutel inwisselen voor een JWT-token. JWT-tokens zijn 24 uur geldig en verminderen de noodzaak om uw API-sleutel in applicatiecode op te slaan.
Een JWT-token verkrijgen
POST uw API-sleutel naar het JWT-eindpunt om een token te krijgen:
curl -X POST https://api.smartmoneyapi.com/auth/jwt \
-H "Content-Type: application/json" \
-d '{
"api_key": "sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m"
}'
JWT Reactie
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"expires_in": 86400,
"token_type": "Bearer"
}
JWT-token gebruiken
Gebruik het JWT-token in de Authorization-header, net zoals API-sleutels:
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):
# Controleer of het huidige token nog geldig is
if self.token and self.token_expires > datetime.now():
return self.token
# Vraag een nieuw token aan
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)
# Gebruik
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 is voor applicaties die toegang nodig hebben tot meerdere gebruikersaccounts. Gebruikers geven uw applicatie toestemming om toegang te krijgen tot hun gegevens zonder hun API-sleutels te delen.
OAuth 2.0 Flow
Smart Money API ondersteunt de Authorization Code flow voor webapplicaties:
- Gebruiker klikt op "Verbinden met Smart Money" knop
- Browser leidt door naar autorisatiepagina
- Gebruiker geeft toestemming aan uw applicatie
- Browser leidt terug met autorisatiecode
- Uw backend wisselt code in voor toegangstoken
- U kunt nu namens de gebruiker toegang krijgen tot gegevens
Stap 1: Autorisatieverzoek
Leid de gebruiker door naar het autorisatie-eindpunt:
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
Stap 2: Tokenuitwisseling
Nadat de gebruiker toestemming heeft gegeven, wissel de code in voor een toegangstoken:
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 Token Reactie
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "rt_1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p",
"scope": "whale_positions funding_rates liquidations"
}
Beveiligingsbest practices
Sleutels veilig opslaan
Plaats API-sleutels nooit in versiebeheer, hardcodeer ze niet in applicaties of deel ze in documentatie. Gebruik omgevingsvariabelen of veilige sleutelbeheerdiensten zoals AWS Secrets Manager, HashiCorp Vault of vergelijkbaar.
Gebruik alleen HTTPS
Alle API-verzoeken moeten HTTPS (TLS 1.2 of hoger) gebruiken. HTTP-verzoeken worden geweigerd. Dit zorgt ervoor dat uw API-sleutel en gegevens versleuteld worden tijdens transport.
Beperk sleutelmachtigingen
Maak aparte API-sleutels voor verschillende applicaties en omgevingen. Gebruik scopes om te beperken wat elke sleutel kan benaderen. Gebruik geen productiesleutels in ontwikkeling.
Houd sleutelgebruik in de gaten
Controleer regelmatig het API-gebruik in uw console. Stel waarschuwingen in voor ongebruikelijke activiteit of quota die de limieten naderen. Verwijder sleutels die u niet meer gebruikt.
Sleutelrotatie
Roteer uw API-sleutels regelmatig om het risico op compromittering te verminderen. Wij raden aan om sleutels elke 90 dagen te roteren:
- Genereer een nieuwe API-sleutel in uw console
- Werk je applicaties bij om de nieuwe sleutel te gebruiken
- Test of alles correct werkt
- Verwijder de oude sleutel uit je console
Bereiken & Machtigingen
Wanneer je API-sleutels aanmaakt of OAuth gebruikt, specificeer dan welke bronnen je sleutel kan benaderen:
| Bereik |
Beschrijving |
Niveau |
| whale_positions |
Lees walvisportefeuilleposities |
Trader+ |
| funding_rates |
Lees financieringspercentagegegevens |
Gratis+ |
| liquidations |
Lees liquidatiefeeds |
Gratis+ |
| open_interest |
Lees open interest-gegevens |
Trader+ |
| confirmation_scores |
Lees AI-bevestigingsscores |
Pro+ |
| on_chain |
Lees on-chain metrieken |
Pro+ |
Authenticatiecodevoorbeelden
Volledige Python-integratie
import requests
from typing import Optional, Dict
from datetime import datetime, timedelta
class SmartMoneyAuth:
"""Handelt alle authenticatiemethoden voor 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:
"""Haal of vernieuw 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:
"""Haal headers voor Bearer-tokenauthenticatie"""
return {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
def headers_jwt(self) -> Dict:
"""Haal headers voor JWT-authenticatie"""
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:
"""Doe een geauthenticeerd verzoek"""
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()
# Gebruik
auth = SmartMoneyAuth("sk_live_abc123xyz789")
# Bearer-tokenmethode
whales = auth.request("GET", "/v1/whales/events?symbol=BTCUSDT")
# JWT-methode (automatisch vernieuwend)
whales_jwt = auth.request("GET", "/v1/whales/events?symbol=BTCUSDT", use_jwt=True)
print(f"Gevonden {whales['data']['total']} walvisposities")
Hulp nodig?
Bekijk onze API-documentatie of neem contact op met ondersteuning als je hulp nodig hebt bij authenticatie.
API-referentie
Genereer je eerste API-sleutel
Begin met Smart Money API. Maak je account aan en genereer authenticatiegegevens binnen enkele minuten.
Ga naar Console