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:

  1. Arahkan ke Smart Money Console
  2. Pilih "Kunci API" dari sidebar
  3. Klik "Buat Kunci Baru"
  4. Pilih jenis kunci (Pengembangan, Staging, Produksi)
  5. Atur batas kecepatan dan fitur
  6. 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:

Format Kunci
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

HTTP
GET /v1/whales/events HTTP/1.1 Host: api.smartmoneyapi.com X-API-Key: sm_your_key Content-Type: application/json

Contoh cURL

Shell
curl -X GET https://api.smartmoneyapi.com/v1/whales/events \ -H "X-API-Key: sm_your_key" \ -H "Content-Type: application/json"

Contoh Python

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
curl -X POST https://api.smartmoneyapi.com/auth/jwt \ -H "Content-Type: application/json" \ -d '{ "api_key": "sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m" }'

Respons JWT

JSON
{ "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:

Python
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:

  1. Pengguna mengklik tombol "Hubungkan dengan Smart Money"
  2. Browser mengarahkan ke halaman otorisasi
  3. Pengguna memberikan izin ke aplikasi Anda
  4. Browser mengarahkan kembali dengan kode otorisasi
  5. Backend Anda menukar kode dengan token akses
  6. Anda sekarang dapat mengakses data pengguna atas nama mereka

Langkah 1: Permintaan Otorisasi

Arahkan pengguna ke endpoint otorisasi:

URL
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
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

JSON
{ "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:

  1. Buat kunci API baru di konsol Anda
  2. Perbarui aplikasi Anda untuk menggunakan kunci baru
  3. Uji bahwa semuanya berfungsi dengan benar
  4. 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

Python
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
Mulai gratis — 100 panggilan/hari, tanpa kartu

Dapatkan aliran paus langsung, pendanaan, open interest, dan data on-chain dari 3 pertukaran dari satu API. Tingkat gratis, tanpa kartu kredit, tingkatkan kapan saja.

Mulai gratis →
Coba konsol API langsung → (tidak perlu akun)
Dapatkan kunci API dalam 30 detik

Siap membangun? Ambil kunci API gratis (100 panggilan/hari, tanpa kartu) dan mulai menarik data paus, pendanaan, dan on-chain langsung.

Dapatkan kunci API Anda →