SOLARI のデータを、 コードからすぐに。

クリエイター・ブランドのデータを API で呼び出せます。 CLI・MCP と同じツールを HTTP リクエストで使えます。 TypeScript・Python SDK なら関数を 1 回呼ぶだけです。

LIVE · v1https://solari.sh/mcp/api/v1

bearer トークンの取得方法は 2 つあります。

コード・CI・サーバーでは、My page で API key を作成し、シークレットストアに保管してください。すでにログイン済みのパソコンでは、solari CLI で有効期間の短いトークンを発行することもできます。

solari_sk_…
長期間使える API key です。SOLARI アプリの My page → API keys で作成します。作成時に一度しか表示されないので、すぐにコピーしてください。失効させるまで使え、この key による呼び出しは usage ページの API チャネルに集計されます。
solari auth token
ログイン中のアカウントのアクセストークンを出力します。期限切れの場合は先に更新します。有効期間は 8 時間で、更新できるのは CLI だけです。無人で動かす処理には API key を使ってください。
SOLARI_TOKEN
SDK と CLI がこの変数を読みます。API key でも CLI が発行したトークンでも構いません。SDK には token 引数で直接渡すこともできます。

すべてのリクエストに Authorization: Bearer <token> を付けて送ります。

API key を作る →

エンドポイントは 4 つです。

ツール名・引数・結果は、solari help all --json と MCP サーバーの説明と同じです。

GET/tools
このアカウントが呼べるすべてのツールと JSON 入力スキーマ。
GET/tools/{name}
ツール 1 つのスキーマと説明。
POST/tools/{name}
ツールを実行します。JSON ボディが引数、レスポンスが結果です。
GET/me
トークンが属するアカウント。

1 回の呼び出しでブランドを探す。

レスポンスは CLI で --json を付けたときの出力と同じです。found と、一致度の高い順に並んだ items が含まれます。

curl -sS https://solari.sh/mcp/api/v1/tools/solari_catalog_instagram_account_search \
  -H "Authorization: Bearer $SOLARI_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"query":"nike","limit":3}'

HTTP の代わりにクライアントも使えます。

どちらもこのエンドポイントをラップした軽量なライブラリで、依存パッケージはありません。ドット区切りのパスはツール名に対応します。たとえば catalog.instagram.account.search は solari_catalog_instagram_account_search を呼び出します。

TypeScript · Node、Bun、Deno、Workers、ブラウザ

npm install @brandazine/solari-sdk
import { Solari } from "@brandazine/solari-sdk";

const solari = new Solari({ token: process.env.SOLARI_TOKEN });
const hits = await solari.tools.catalog.instagram.account.search({ query: "nike", limit: 3 });

Python 3.9+ · 標準ライブラリのみ

pip install solari-sdk
from solari_sdk import Solari

solari = Solari()  # reads SOLARI_TOKEN
hits = solari.tools.catalog.instagram.account.search(query="nike", limit=3)

メソッドは 6 つで、両言語とも同じです。

メソッド 1 つが上のエンドポイント 1 つに対応します。結果はツールの JSON そのままで、クライアント側ではキャッシュしません。

TSnew Solari({ token?, baseUrl?, fetch?, timeoutMs?, userAgent? })
PYSolari(token=None, base_url=…, timeout=150, user_agent=None, transport=None)
クライアントを作成します。token を指定しなければ SOLARI_TOKEN を読みます。baseUrl の既定値は solari.sh です。fetch や transport を渡せば、ネットワークなしでテストできます。
TSawait solari.listTools()
PYsolari.list_tools()
GET /tools — このアカウントが呼べるすべてのツールと JSON 入力スキーマ。
TSawait solari.getTool(name)
PYsolari.get_tool(name)
GET /tools/{name} — ツール 1 つのスキーマと説明。
TSawait solari.call<T>(name, args)
PYsolari.call(name, arguments=None, **kwargs)
POST /tools/{name} — ツールを正式名で実行します。TypeScript では結果の型を指定できます。
TSawait solari.tools.catalog.instagram.account.search(args)
PYsolari.tools.catalog.instagram.account.search(**kwargs)
同じ呼び出しをドット区切りのパスで書きます。ツールレジストリから生成されるため、パス・引数名・enum 値は TypeScript と Python(pyright/mypy)で型チェックされます。
TSawait solari.me()
PYsolari.me()
GET /me — トークンが属するアカウント。

エラー型は 1 つです。

レスポンスが 2xx 以外のときは SolariError が送出され、API の status・code・message・tool が入ります。429・502・503・504 では retryable が true になり、サーバーが Retry-After を返した場合はその秒数も入ります。ネットワークエラーも同じ型で、status は 0 です。

import { Solari, SolariError } from "@brandazine/solari-sdk";

try {
  await solari.call("solari_insight_instagram_brand_overview", { username: "nike" });
} catch (error) {
  if (error instanceof SolariError && error.retryable) {
    // error.status, error.code, error.tool, error.retryAfterSeconds
  }
}
from solari_sdk import Solari, SolariError

try:
    solari.call("solari_insight_instagram_brand_overview", username="nike")
except SolariError as error:
    if error.retryable:
        ...  # error.status, error.code, error.tool, error.retry_after_seconds

エラーはすべて JSON で返ります。

2xx 以外のレスポンスには error.code と error.message が入ります。ツールの呼び出しで起きたエラーなら error.tool も入ります。レート制限にかかったときやアプリの起動中は Retry-After ヘッダーが付きます。

{
  "error": {
    "code": "invalid_arguments",
    "message": "limit: expected number, received string",
    "tool": "solari_catalog_instagram_account_search"
  }
}
400invalid_arguments
ボディがツールの入力スキーマと一致しません。メッセージに問題のフィールドが書かれています。
400invalid_json
ボディが JSON オブジェクトではありません。
400tool_error
ツールが呼び出しを拒否しました。アカウントが指定されていない場合などです。
401unauthorized
トークンがないか、期限切れか、失効しています。API key を作り直すか、CLI トークンを再発行してください。
402credit_exhausted
この SOLARI アカウントにクレジットが残っていないか、メール確認またはカード登録が完了していないためトライアルが始まっていません。課金はされていません。再試行しても結果は変わりません。solari_usage_get で残高を確認してください。次に何をすればよいかはメッセージに書かれています。
402account_blocked
この SOLARI アカウントのツール呼び出しは停止されています。課金はされていません。問い合わせ先はメッセージに書かれています。
403forbidden
この SOLARI アカウントでは使えないツールです。
404tool_not_found
このアカウントにその名前のツールはありません。まず一覧を確認してください。
429rate_limited
呼び出しが多すぎます。Retry-After に示された秒数だけ待ってください。
502upstream_error
SOLARI が呼び出しを完了できませんでした。しばらくして再試行してください。
503app_warming_up
ツールを準備しています。Retry-After に示された秒数が経ってから再試行してください。
504upstream_timeout
呼び出しが制限時間を超えました。範囲を狭めるか再試行してください。

同じツールを MCP でも使えます。

エージェントと MCP ホストは、同じトークンで MCP サーバーに接続します。使う環境に合う方を選んでください。

https://solari.sh/mcpMCP で接続する →