Panduan Autentikasi
Pelajari cara autentikasi dengan Smart Money API menggunakan kunci API, token JWT, dan OAuth 2.0. Amankan integrasi Anda dengan metode autentikasi standar industri dan praktik terbaik.
Ikhtisar
Smart Money API mendukung berbagai metode autentikasi untuk kasus penggunaan yang berbeda. Pilih metode yang paling sesuai dengan integrasi Anda:
Kunci API (utama): Kirim kunci Anda di X-API-Key header permintaan untuk semua panggilan REST API. Ini adalah metode yang direkomendasikan untuk bot dan penggunaan server-ke-server.
Sesi JWT (cadangan): Sesi browser/dashboard diautentikasi dengan JWT sesi melalui Authorization: Bearer, berlaku selama 24 jam. Klien programatik sebaiknya menggunakan X-API-Key.
OAuth 2.0: Autentikasi tingkat perusahaan untuk aplikasi multi-pengguna dan integrasi pihak ketiga. Pengguna memberi izin kepada aplikasi Anda untuk mengakses data mereka.
Semua permintaan API harus dilakukan melalui HTTPS. Permintaan HTTP yang tidak terenkripsi akan ditolak. Selain itu, jangan pernah menyimpan kunci API dalam kontrol versi atau membagikannya secara publik.
Kunci API
Kunci API adalah kredensial unik yang diterbitkan untuk akun Anda. Setiap kunci mewakili satu set izin dan kuota. Anda dapat menghasilkan beberapa kunci untuk aplikasi atau lingkungan yang berbeda (pengembangan, staging, produksi).
Membuat Kunci API
Buat kunci API dari konsol akun Anda:
- Arahkan ke Smart Money Console
- Pilih "Kunci API" dari sidebar
- Klik "Buat Kunci Baru"
- Pilih jenis kunci (Pengembangan, Staging, Produksi)
- Atur batas kecepatan dan fitur
- Salin dan simpan kunci dengan aman
Simpan kunci API Anda segera! Anda tidak akan bisa melihatnya lagi. Jika Anda kehilangannya, Anda perlu membuat kunci baru.
Format Kunci
Kunci API mengikuti format standar:
sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z
sk_test_8f4g5h6i7j8k9l0m1n2o3p4q5r6s7t8u9v0w1x2y3z4a5b6c7d8e9f
sk_dev_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b
Awalan kunci menunjukkan lingkungan:
sk_live_ — Kunci produksi dengan kuota penuh
sk_test_ — Kunci pengujian dengan kuota berkurang dan data pengembangan
sk_dev_ — Kunci pengembangan pribadi dengan data sandbox
Header X-API-Key (utama)
Kirim kunci API Anda di X-API-Key header permintaan untuk semua permintaan API. Jangan pernah menempatkan kunci Anda di URL.
Header HTTP
GET /v1/whales/events HTTP/1.1
Host: api.smartmoneyapi.com
X-API-Key: sm_your_key
Content-Type: application/json
Contoh cURL
curl -X GET https://api.smartmoneyapi.com/v1/whales/events \
-H "X-API-Key: sm_your_key" \
-H "Content-Type: application/json"
Contoh 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()
Autentikasi Token JWT
Untuk sesi yang bertahan lama dan komunikasi server-ke-server, tukar kunci API Anda dengan token JWT. Token JWT berlaku selama 24 jam dan mengurangi kebutuhan untuk menyimpan kunci API dalam kode aplikasi.
Mendapatkan Token JWT
POST kunci API Anda ke endpoint JWT untuk mendapatkan token:
curl -X POST https://api.smartmoneyapi.com/auth/jwt \
-H "Content-Type: application/json" \
-d '{
"api_key": "sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m"
}'
Respons JWT
{
"success": true,
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
"expires_in": 86400,
"token_type": "Bearer"
}
Menggunakan Token JWT
Gunakan token JWT di header Authorization seperti kunci 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):
# Periksa apakah token saat ini masih valid
if self.token and self.token_expires > datetime.now():
return self.token
# Dapatkan token baru
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)
# Penggunaan
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 adalah untuk aplikasi yang perlu mengakses banyak akun pengguna. Pengguna memberikan izin kepada aplikasi Anda untuk mengakses data mereka tanpa membagikan kunci API mereka.
Alur OAuth 2.0
Smart Money API mendukung alur Authorization Code untuk aplikasi web:
- Pengguna mengklik tombol "Hubungkan dengan Smart Money"
- Browser mengarahkan ke halaman otorisasi
- Pengguna memberikan izin ke aplikasi Anda
- Browser mengarahkan kembali dengan kode otorisasi
- Backend Anda menukar kode dengan token akses
- Anda sekarang dapat mengakses data pengguna atas nama mereka
Langkah 1: Permintaan Otorisasi
Arahkan pengguna ke endpoint otorisasi:
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
Langkah 2: Pertukaran Token
Setelah pengguna memberikan izin, tukar kode dengan token akses:
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"
Respons Token OAuth
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "rt_1a2b3c4d5e6f7g8h9i0j1k2l3m4n5o6p",
"scope": "whale_positions funding_rates liquidations"
}
Praktik Keamanan Terbaik
Simpan Kunci dengan Aman
Jangan pernah menyimpan kunci API dalam kontrol versi, meng-hardcode-nya dalam aplikasi, atau membagikannya dalam dokumentasi. Gunakan variabel lingkungan atau layanan manajemen kunci yang aman seperti AWS Secrets Manager, HashiCorp Vault, atau sejenisnya.
Gunakan Hanya HTTPS
Semua permintaan API harus menggunakan HTTPS (TLS 1.2 atau lebih tinggi). Permintaan HTTP akan ditolak. Ini memastikan kunci API dan data Anda dienkripsi dalam perjalanan.
Batasi Izin Kunci
Buat kunci API terpisah untuk aplikasi dan lingkungan yang berbeda. Gunakan cakupan untuk membatasi apa yang dapat diakses oleh setiap kunci. Jangan gunakan kunci produksi dalam pengembangan.
Pantau Penggunaan Kunci
Tinjau penggunaan API secara teratur di konsol Anda. Siapkan peringatan untuk aktivitas yang tidak biasa atau kuota yang mendekati batas. Hapus kunci yang tidak lagi Anda gunakan.
Rotasi Kunci
Putar kunci API Anda secara teratur untuk mengurangi risiko kompromi. Kami merekomendasikan untuk memutar kunci setiap 90 hari:
- Buat kunci API baru di konsol Anda
- Perbarui aplikasi Anda untuk menggunakan kunci baru
- Uji bahwa semuanya berfungsi dengan benar
- Hapus kunci lama dari konsol Anda
Cakupan & Izin
Saat membuat kunci API atau menggunakan OAuth, tentukan sumber daya yang dapat diakses oleh kunci Anda:
| Cakupan |
Deskripsi |
Tingkat |
| whale_positions |
Baca posisi dompet paus |
Trader+ |
| funding_rates |
Baca data tingkat pendanaan |
Free+ |
| liquidations |
Baca umpan likuidasi |
Free+ |
| open_interest |
Baca data open interest |
Trader+ |
| confirmation_scores |
Baca skor konfirmasi AI |
Pro+ |
| on_chain |
Baca metrik on-chain |
Pro+ |
Contoh Kode Autentikasi
Integrasi Python Lengkap
import requests
from typing import Optional, Dict
from datetime import datetime, timedelta
class SmartMoneyAuth:
"""Menangani semua metode autentikasi untuk 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:
"""Dapatkan atau segarkan token JWT"""
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:
"""Dapatkan header untuk autentikasi token Bearer"""
return {
"Authorization": f"Bearer {self.api_key}",
"Content-Type": "application/json"
}
def headers_jwt(self) -> Dict:
"""Dapatkan header untuk autentikasi JWT"""
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:
"""Buat permintaan terautentikasi"""
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()
# Penggunaan
auth = SmartMoneyAuth("sk_live_abc123xyz789")
# Metode token Bearer
whales = auth.request("GET", "/v1/whales/events?symbol=BTCUSDT")
# Metode JWT (penyegaran otomatis)
whales_jwt = auth.request("GET", "/v1/whales/events?symbol=BTCUSDT", use_jwt=True)
print(f"Ditemukan {whales['data']['total']} posisi paus")
Butuh Bantuan?
Tinjau dokumentasi API kami atau hubungi dukungan jika Anda memerlukan bantuan dengan autentikasi.
Referensi API
Buat Kunci API Pertama Anda
Mulailah dengan Smart Money API. Buat akun Anda dan buat kredensial autentikasi dalam hitungan menit.
Pergi ke Konsol