Install
openclaw skills install @simianxai/simianxMarket analysis, autopilots, classified news and sector catalysts for stocks and crypto
openclaw skills install @simianxai/simianxBase URL: https://service.simianx.ai (every path below starts with /v1). Auth: Authorization: Bearer $SIMIANX_API_KEY,
plus X-SimianX-Skill: 1.0.2 (this file's version) on every request.
Responses use {"code": <http status>, "notify": "<human text>", "data": {...}}. Every response carries X-Request-Id,
X-SimianX-Skill-Version, X-SimianX-Api-Version, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset;
paid responses carry X-Points-Charged and X-Points-Remaining.
low / medium / high) and a
sentiment. It is the Market Pulse feed on the website. List, by id, titles translated into 16 languages, SSE stream.short / swing / long, follow-up questions, PDF report.signal.fired and position.changed carry an expiry. The book takes manual
actions too.1m 15m 1H 1D 1W 1mo) and crypto (4,000+ pairs,
spot and USDT/USD perpetuals, a bare BTC means the perpetual; timeframes 1m 5m 15m 1H 4H 1D).fast / standard / frontier; paid plans set any of 50+ models per agent (GET /v1/models);
the crypto leaderboard shows how each model has traded.X-Language). Paper positions only:
SimianX never trades a real account.1.0.2 (frontmatter metadata.version). Send
X-SimianX-Skill: 1.0.2 on every request. Before the first real call, GET /v1/skill (public): if data.version
is newer than yours, or data.minimum_version is above yours, re-read https://www.simianx.ai/SKILL.md and follow
the new file. Any response with HTTP 426 (reason: skill_outdated) means the same: re-read, then retry.
data.deprecations lists endpoints with a sunset date; stop using them before that date. The authoritative
contract is always https://service.simianx.ai/v1/openapi.json; this file may lag it.SIMIANX_API_KEY from the environment. If it is missing, sign the user in from here; both ways end in a key
for this agent, never in a website session, and never grant billing:manage (see references/auth.md):
POST /v1/auth/link {"framework": "<this agent>"} → show
data.url. The user opens it, signs in or signs up on the site and approves with one click; poll
GET /v1/auth/link/{link_id}?wait=30 until status is approved (the token comes once) or denied / expired.POST /v1/auth/code {"email", "framework"}, ask
the user for the 6-digit code from the email, then POST /v1/auth/key {"email", "code", "framework", "key": {"name", "daily_points_budget"}} → data.token. An address without an account becomes one. mfa_required →
ask for the authenticator or backup code and resend with {"ticket", "mfa": {"method", "code"}}; a 403
too_many_keys lists the plan's keys: offer to replace one (key.replace_key_id) with the same ticket.
Offer both and follow the one the user picks. Store the token where this agent reads its environment (shell
profile, a git-ignored .env, the agent's secret store); never print it in full, never write it into a repository
or a log. The user can also create a key by hand at https://www.simianx.ai/#api. Never ask for a card number.GET /v1/me → plan, points left, this key's budgets and the plan's limits. Keep data.limits in mind for pacing.GET /v1/pricing → prices in points (public, no key needed). Data endpoints are flat per request; AI endpoints are
metered on the models used, data.typical gives the usual cost per tier (fast, standard, frontier).POST /v1/analysis/quote {"endpoint": "<key>", "tier": "fast", ...} and compare with the key's
budget_left and the account's points. Never exceed the budget the owner set on the key.tier: "fast" unless the user asks for stronger models. Free accounts always run the fast tier. To pick a
model per agent, send models: {"<agent>": "<id>"} with an id from GET /v1/models (paid plans); an id that is not
in the catalogue for that market is refused with 400 and the allowed list.402 means points or budget are short. data.reason is insufficient_points, budget_exceeded or call_over_cap;
data.actions lists the ways out (renew_now, change_plan, subscribe, all web links). Show them to the user; never try
to pay yourself, there is no top-up and no pay-per-call.429 means a limit (data.limit: requests_per_minute, requests_per_day, heavy_per_minute, points_per_minute,
ai_concurrency, stream_connections). Wait Retry-After seconds and retry; do not tighten the loop.See references/auth.md, references/autopilots.md, references/deep.md, references/live.md, references/news.md,
references/data.md, references/sectors.md and references/billing.md in this skill. Short map:
| Need | Call |
|---|---|
| Sign the user in (no key yet) | POST /v1/auth/link → GET /v1/auth/link/{id}?wait=30 (browser approval) · POST /v1/auth/code → POST /v1/auth/key (email code) |
| Account, points, limits | GET /v1/me · GET /v1/usage?days=7 |
| Live agents once | POST /v1/analysis/live → GET /v1/analysis/live/{id}?wait=30 |
| News | GET /v1/news?symbols=BTC,NVDA&since=<iso> · GET /v1/news/{id} · GET /v1/news/stream (SSE, Plus+) |
| Market Pulse | GET /v1/pulse/events · GET /v1/pulse/summary |
| Search before starting | GET /v1/instruments/search?q= (best match first; use symbol) · GET /v1/market/status |
| Crypto data | GET /v1/quotes?symbols= · GET /v1/market/{symbol}/candles · /indicators |
| Deep research | POST /v1/analysis/deep → GET /v1/analysis/deep/{id} · /events?wait=30 · POST .../ask · .../pdf |
| Sector Watch | GET /v1/sectors · GET /v1/sectors/{sector}/calendar · /events?min_severity=3 · /events/{slug} · /stocks · /assets · POST /v1/sectors/{sector}/follows (see references/sectors.md) |
| Start / list autopilots | POST /v1/autopilots · GET /v1/autopilots |
| Follow an autopilot | GET /v1/autopilots/{id}/events?after=<cursor>&wait=30 (long-poll, free) or &stream=1 (SSE) |
| Autopilot history | GET /v1/autopilots/{id}/analyses · /positions · /logs |
| Stop / restart / archive | POST /v1/autopilots/{id}/stop · /start · DELETE /v1/autopilots/{id} |
| Trade the paper book by hand | POST /v1/autopilots/{id}/actions `{"action": "open |
| Run one agent now | POST /v1/autopilots/{id}/run {"agent": "decision"} → result as analysis.completed in the log |
| Models you may set per agent | GET /v1/models (public): ids, points per million tokens, where each applies, typical points per live call |
| Price before paying | POST /v1/analysis/quote |
| Tell us something | POST /v1/feedback (read, not answered) |
POST /v1/feedback {"message": "...", "category": "bug|feature|pricing|docs|data|other", "endpoint": "<key>", "request_id": "<X-Request-Id>"}
when something is wrong, missing or confusing. We read every message; we do not reply individually for now, so do not
wait for an answer. Keep it civil and factual (abusive text is refused and not stored); never include keys, personal
data or secrets. 20 messages a day per key; GET /v1/feedback lists what you already sent.
# 1. the four live agents on BTC 15m; the run takes a minute or two
curl -s $API/v1/analysis/live -H "Authorization: Bearer $SIMIANX_API_KEY" -H 'Content-Type: application/json' \
-d '{"asset":"crypto","symbol":"BTC","timeframe":"15m"}'
# → data.run.id
curl -s "$API/v1/analysis/live/$RUN?wait=30" -H "Authorization: Bearer $SIMIANX_API_KEY"
# → data.run.status (repeat until done) and data.run.analyses[] (agent, model, conclusion)
# 2. news on the same symbols, then keep the stream open (Plus and Pro)
curl -s "$API/v1/news?symbols=BTC&min_value=medium&limit=10" -H "Authorization: Bearer $SIMIANX_API_KEY"
curl -N "$API/v1/news/stream?symbols=BTC&min_value=medium" -H "Authorization: Bearer $SIMIANX_API_KEY" \
-H "Accept: text/event-stream"
# → event: news, data: {id, title, symbols, value_score, sentiment, url, published_at}; resume with ?after=<event id>
To keep watching a symbol, start an autopilot (references/autopilots.md): the same agents on a schedule, with an
event log you long-poll from a cursor. Act on position.changed only while now < expires_at.