認証ガイド

APIキー、JWTトークン、OAuth 2.0を使用してSmart Money APIで認証する方法を学びましょう。業界標準の認証方法とベストプラクティスで統合を保護します。

概要

Smart Money APIは、さまざまなユースケースに対応する複数の認証方法をサポートしています。統合に最適な方法を選択してください:

APIキー(プライマリ): すべてのREST API呼び出しでキーを X-API-Key リクエストヘッダーに送信します。ボットやサーバー間使用に推奨される方法です。
セッションJWT(フォールバック): ブラウザ/ダッシュボードセッションは、 Authorization: Bearerを介して24時間有効なセッションJWTで認証します。プログラムクライアントは X-API-Key.
OAuth 2.0: マルチユーザーアプリケーションやサードパーティ統合向けのエンタープライズグレード認証。ユーザーがアプリにデータアクセスを許可します。
すべてのAPIリクエストはHTTPS経由で行う必要があります。暗号化されていないHTTPリクエストは拒否されます。また、APIキーをバージョン管理にコミットしたり、公開して共有したりしないでください。

APIキー

APIキーはアカウントに発行される一意の認証情報です。各キーは単一の権限セットとクォータを表します。異なるアプリケーションや環境(開発、ステージング、本番)用に複数のキーを生成できます。

APIキーの生成

アカウントコンソールからAPIキーを生成:

  1. に移動 Smart Money Console
  2. サイドバーから「APIキー」を選択
  3. 「新しいキーを生成」をクリック
  4. キータイプを選択(開発、ステージング、本番)
  5. レート制限と機能を設定
  6. キーをコピーして安全に保管
APIキーはすぐに保存してください!再度表示することはできません。紛失した場合は、新しいキーを生成する必要があります。

キーフォーマット

APIキーは標準フォーマットに従います:

キーフォーマット
sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z sk_test_8f4g5h6i7j8k9l0m1n2o3p4q5r6s7t8u9v0w1x2y3z4a5b6c7d8e9f sk_dev_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7b

キープレフィックスは環境を示します:

sk_live_ — 完全なクォータを持つ本番キー
sk_test_ — 開発データと削減されたクォータのテストキー
sk_dev_ — サンドボックスデータの個人開発キー

X-API-Keyヘッダー(プライマリ)

すべてのAPIリクエストでAPIキーを X-API-Key リクエストヘッダーに送信します。キーをURLに配置しないでください。

HTTPヘッダー

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例

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エンドポイントにPOSTしてトークンを取得:

cURL
curl -X POST https://api.smartmoneyapi.com/auth/jwt \ -H "Content-Type: application/json" \ -d '{ "api_key": "sk_live_4e3e4d0f1b2c3d4e5f6g7h8i9j0k1l2m" }'

JWTレスポンス

JSON
{ "success": true, "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c", "expires_in": 86400, "token_type": "Bearer" }

JWTトークンの使用

APIキーと同様に、AuthorizationヘッダーでJWTトークンを使用:

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): # 現在のトークンがまだ有効か確認 if self.token and self.token_expires > datetime.now(): return self.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) # 使用例 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フローをサポート:

  1. ユーザーが「Smart Moneyで接続」ボタンをクリック
  2. ブラウザが認証ページにリダイレクト
  3. ユーザーがアプリケーションに権限を付与
  4. ブラウザが認証コードと共にリダイレクト
  5. バックエンドがコードをアクセストークンと交換
  6. ユーザーに代わってデータにアクセス可能

ステップ1:認証リクエスト

ユーザーを認証エンドポイントにリダイレクト:

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

ステップ2:トークン交換

ユーザーが権限を付与した後、コードをアクセストークンと交換:

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"

OAuthトークンレスポンス

JSON
{ "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日ごとのキーローテーションを推奨:

  1. コンソールで新しいAPIキーを生成
  2. アプリケーションを更新して新しいキーを使用してください
  3. すべてが正しく動作するかテストしてください
  4. コンソールから古いキーを削除してください

スコープと権限

APIキーを作成する際やOAuthを使用する際に、キーがアクセスできるリソースを指定してください:

スコープ 説明 ティア
whale_positions クジラウォレットのポジションを読み取る Trader+
funding_rates ファンディングレートデータを読み取る Free+
liquidations 清算フィードを読み取る Free+
open_interest オープンインタレストデータを読み取る Trader+
confirmation_scores AI確認スコアを読み取る Pro+
on_chain オンチェーンメトリクスを読み取る Pro+

認証コード例

完全なPython統合

Python
import requests from typing import Optional, Dict from datetime import datetime, timedelta class SmartMoneyAuth: """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: """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: """Bearerトークン認証用のヘッダーを取得""" return { "Authorization": f"Bearer {self.api_key}", "Content-Type": "application/json" } def headers_jwt(self) -> Dict: """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: """認証済みリクエストを行う""" 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() # 使用例 auth = SmartMoneyAuth("sk_live_abc123xyz789") # Bearerトークン方式 whales = auth.request("GET", "/v1/whales/events?symbol=BTCUSDT") # JWT方式(自動更新) 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を始めましょう。アカウントを作成し、数分で認証情報を生成できます。

コンソールに移動
無料で開始 — 1日100回、カード不要

1つのAPIから3つの取引所のライブクジラフロー、ファンディング、オープンインタレスト、オンチェーンデータを取得。無料ティア、クレジットカード不要、いつでもアップグレード可能。

無料で開始 →
ライブAPIコンソールを試す → (アカウント不要)
30秒でAPIキーを取得

構築の準備はできましたか?無料のAPIキー(1日100回、カード不要)を取得し、ライブのクジラ、ファンディング、オンチェーンデータを取得し始めましょう。

APIキーを取得 →