SOLARI 데이터를 코드에서 바로.
크리에이터·브랜드 데이터를 API로 불러오세요. CLI·MCP에서 쓰는 도구를 HTTP 요청으로 쓸 수 있습니다. TypeScript·Python SDK로는 함수 호출 한 번이면 됩니다.
https://solari.sh/mcp/api/v1토큰은 두 가지 방법으로 받을 수 있습니다.
코드·CI·서버에서 쓸 때는 My page에서 API key를 만들어 시크릿 저장소에 보관하세요. 이미 로그인한 컴퓨터라면 solari CLI로 잠깐 쓰는 토큰을 받을 수도 있습니다.
- solari_sk_…
- 오래 쓰는 API key입니다. SOLARI 앱의 My page → API keys에서 만듭니다. 만들 때 한 번만 보여 주니 바로 복사해 두세요. 직접 폐기하기 전까지 계속 쓸 수 있고, 이 key로 보낸 호출은 사용량 페이지의 API 항목에 집계됩니다.
- solari auth token
- 로그인한 계정의 액세스 토큰을 출력합니다. 만료됐으면 새로 받아서 출력합니다. 토큰은 8시간 동안 쓸 수 있고, CLI만 갱신할 수 있습니다. 사람이 지켜보지 않는 자동 작업에는 API key를 쓰세요.
- SOLARI_TOKEN
- SDK와 CLI가 이 환경변수를 읽습니다. API key와 CLI가 발급한 토큰 모두 넣을 수 있습니다. SDK에는 token 인자로 바로 넘겨도 됩니다.
모든 요청의 Authorization 헤더에 Bearer <token> 형태로 넣으세요.
API key 만들기 →엔드포인트는 네 개뿐입니다.
도구 이름·인자·결과는 solari help all --json과 MCP 서버의 설명과 똑같습니다.
- GET/tools
- 이 계정이 쓸 수 있는 도구 전체와 각 도구의 JSON 입력 스키마.
- GET/tools/{name}
- 도구 하나의 스키마와 설명.
- POST/tools/{name}
- 도구를 실행합니다. 요청 본문(JSON)이 인자, 응답이 결과입니다.
- GET/me
- 이 토큰의 계정 정보.
호출 한 번으로 브랜드 찾기.
응답은 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 대신 SDK를 써도 됩니다.
두 SDK 모두 이 엔드포인트를 감싼 가벼운 라이브러리이고, 따로 설치할 의존성이 없습니다. 점으로 이은 경로가 곧 도구 이름입니다. 예를 들어 catalog.instagram.account.search는 solari_catalog_instagram_account_search를 호출합니다.
TypeScript · Node, Bun, Deno, Workers, 브라우저
npm install @brandazine/solari-sdkimport { 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-sdkfrom solari_sdk import Solari
solari = Solari() # reads SOLARI_TOKEN
hits = solari.tools.catalog.instagram.account.search(query="nike", limit=3)메서드는 여섯 개이고, 두 언어에서 똑같이 씁니다.
메서드 하나가 위 엔드포인트 하나에 대응합니다. 결과는 도구가 돌려준 JSON 그대로이고, SDK가 따로 캐시하지 않습니다.
- TS
new 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를 직접 넘기면 네트워크 없이 테스트할 수 있습니다.
- TS
await solari.listTools()PYsolari.list_tools() - GET /tools — 이 계정이 쓸 수 있는 도구 전체와 각 도구의 JSON 입력 스키마.
- TS
await solari.getTool(name)PYsolari.get_tool(name) - GET /tools/{name} — 도구 하나의 스키마와 설명.
- TS
await solari.call<T>(name, args)PYsolari.call(name, arguments=None, **kwargs) - POST /tools/{name} — 도구의 전체 이름으로 실행합니다. TypeScript에서는 결과 타입을 지정할 수 있습니다.
- TS
await solari.tools.catalog.instagram.account.search(args)PYsolari.tools.catalog.instagram.account.search(**kwargs) - 같은 호출을 점 경로로 씁니다. 도구 목록에서 자동으로 만들어져서 경로·인자 이름·enum 값을 TypeScript와 Python(pyright/mypy)에서 타입 검사할 수 있습니다.
- TS
await solari.me()PYsolari.me() - GET /me — 이 토큰의 계정 정보.
오류는 SolariError 하나로 받습니다.
응답이 2xx가 아니면 SolariError가 발생하고, 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로 연결하기 →