Autentiseringsguide
Lär dig hur du autentiserar med Smart Money API med hjälp av API-nycklar, JWT-tokens och OAuth 2.0. Säkra dina integrationer med branschstandarder för autentisering och bästa praxis.
Översikt
Smart Money API stöder flera autentiseringsmetoder för olika användningsfall. Välj den metod som bäst passar din integration:
API-nycklar (primär): Skicka din nyckel i X-API-Key begärandehuvud för alla REST API-anrop. Detta är den rekommenderade metoden för botar och server-till-server-användning.
Session JWT (reserv): Webbläsar-/dashboard-sessioner autentiseras med en session JWT via Authorization: Bearer, giltig i 24 timmar. Programmatiska klienter bör föredra X-API-Key.
OAuth 2.0: Företagsgrad av autentisering för applikationer med flera användare och tredjepartsintegrationer. Användare ger din app tillgång till deras data.
Alla API-förfrågningar måste göras över HTTPS. Okrypterade HTTP-förfrågningar kommer att avvisas. Dessutom, lägg aldrig API-nycklar i versionskontroll eller dela dem offentligt.
API-nycklar
API-nycklar är unika autentiseringsuppgifter som utfärdas till ditt konto. Varje nyckel representerar en enda uppsättning behörigheter och kvoter. Du kan generera flera nycklar för olika applikationer eller miljöer (utveckling, staging, produktion).
Generera en API-nyckel
Generera API-nycklar från ditt kontokonsol:
- Navigera till Smart Money Console
- Välj "API-nycklar" från sidofältet
- Klicka på "Generera ny nyckel"
- Välj nyckeltyp (Utveckling, Staging, Produktion)
- Ställ in hastighetsbegränsning och funktioner
- Kopiera och spara nyckeln säkert
Spara din API-nyckel omedelbart! Du kommer inte att kunna se den igen. Om du tappar bort den måste du generera en ny nyckel.
Nyckelformat
API-nycklar följer ett standardformat:
sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z
sk_test_8f4g5h6i7j8k9l0m1n2o3p4q5r6s7t8u9v0w1x2y3z4a5b6c7d8e9f
sk_dev_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b
Nyckelprefix indikerar miljö:
sk_live_ — Produktionsnycklar med full kvot
sk_test_ — Testnycklar med reducerad kvot och utvecklingsdata
sk_dev_ — Personliga utvecklingsnycklar med sandlådedata
X-API-Key Header (primär)
Skicka din API-nyckel i X-API-Key begärandehuvud för alla API-förfrågningar. Placera aldrig din nyckel i en 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 Exempel
curl -X GET https://api.smartmoneyapi.com/v1/whales/events \
-H "X-API-Key: sm_your_key" \
-H "Content-Type: application/json"
Python Exempel
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 Autentisering
För långvariga sessioner och server-till-server-kommunikation, byt ut din API-nyckel mot en JWT-token. JWT-tokens varar i 24 timmar och minskar behovet av att lagra din API-nyckel i applikationskod.
Hämta en JWT-token
POSTa din API-nyckel till JWT-slutpunkten för att få en token:
curl -X POST https://api.smartmoneyapi.com/auth/jwt \
-H "Content-Type: application/json" \
-d '{
"api_key": "sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m"
}'
JWT Svar
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"expires_in": 86400,
"token_type": "Bearer"
}
Använda JWT-token
Använd JWT-token i Authorization-huvudet precis som API-nycklar:
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):
# Kontrollera om aktuell token fortfarande är giltig
if self.token and self.token_expires > datetime.now():
return self.token
# Hämta ny 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)
# Användning
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 är för applikationer som behöver komma åt flera användarkonton. Användare ger din applikation tillstånd att komma åt deras data utan att dela sina API-nycklar.
OAuth 2.0 Flöde
Smart Money API stöder Authorization Code-flödet för webbapplikationer:
- Användaren klickar på "Anslut med Smart Money"-knappen
- Webbläsaren omdirigerar till auktoriseringssidan
- Användaren ger tillstånd till din applikation
- Webbläsaren omdirigerar tillbaka med en auktoriseringskod
- Din backend byter kod mot en åtkomsttoken
- Du kan nu komma åt användardata på deras vägnar
Steg 1: Auktoriseringsförfrågan
Omdirigera användaren till auktoriseringsslutpunkten:
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
Steg 2: Tokenutbyte
Efter att användaren har gett tillstånd, byt koden mot en åtkomsttoken:
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 Svar
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "rt_1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p",
"scope": "whale_positions funding_rates liquidations"
}
Säkerhetsbästa praxis
Lagra nycklar säkert
Lagra aldrig API-nycklar i versionskontroll, hårdkoda dem i applikationer eller dela dem i dokumentation. Använd miljövariabler eller säkra nyckelhanteringstjänster som AWS Secrets Manager, HashiCorp Vault eller liknande.
Använd endast HTTPS
Alla API-förfrågningar måste använda HTTPS (TLS 1.2 eller högre). HTTP-förfrågningar kommer att avvisas. Detta säkerställer att din API-nyckel och data är krypterade under överföring.
Begränsa nyckelbehörigheter
Skapa separata API-nycklar för olika applikationer och miljöer. Använd scope för att begränsa vad varje nyckel kan komma åt. Använd inte produktionsnycklar i utveckling.
Övervaka nyckelanvändning
Granska regelbundet API-användning i ditt konsol. Ställ in aviseringar för ovanlig aktivitet eller kvoter som närmar sig gränser. Ta bort nycklar du inte längre använder.
Nyckelrotation
Rotera regelbundet dina API-nycklar för att minska risken för kompromettering. Vi rekommenderar att du roterar nycklar var 90:e dag:
- Generera en ny API-nyckel i ditt konsol
- Uppdatera dina applikationer för att använda den nya nyckeln
- Testa att allt fungerar korrekt
- Ta bort den gamla nyckeln från din konsol
Omfattningar & Behörigheter
När du skapar API-nycklar eller använder OAuth, ange vilka resurser din nyckel kan komma åt:
| Omfattning |
Beskrivning |
Nivå |
| whale_positions |
Läs valplatser för stora plånböcker |
Trader+ |
| funding_rates |
Läs finansieringsräntedata |
Free+ |
| liquidations |
Läs likvidationsflöden |
Free+ |
| open_interest |
Läs öppen intressedata |
Trader+ |
| confirmation_scores |
Läs AI-bekräftelsepoäng |
Pro+ |
| on_chain |
Läs on-chain-mått |
Pro+ |
Autentiseringskodexempel
Komplett Python-integration
import requests
from typing import Optional, Dict
from datetime import datetime, timedelta
class SmartMoneyAuth:
"""Hanterar alla autentiseringsmetoder för 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:
"""Hämta eller uppdatera 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:
"""Hämta headers för Bearer-token-autentisering"""
return {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
def headers_jwt(self) -> Dict:
"""Hämta headers för JWT-autentisering"""
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:
"""Gör en autentiserad förfrågan"""
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()
# Användning
auth = SmartMoneyAuth("sk_live_abc123xyz789")
# Bearer-tokenmetoden
whales = auth.request("GET", "/v1/whales/events?symbol=BTCUSDT")
# JWT-metod (automatisk uppdatering)
whales_jwt = auth.request("GET", "/v1/whales/events?symbol=BTCUSDT", use_jwt=True)
print(f"Hittade {whales['data']['total']} valpositioner")
Behöver du hjälp?
Granska vår API-dokumentation eller kontakta supporten om du behöver hjälp med autentisering.
API-referens
Skapa din första API-nyckel
Kom igång med Smart Money API. Skapa ditt konto och generera autentiseringsuppgifter på några minuter.
Gå till konsolen