Vectr API Reference
The Vectr API provides REST and SSE endpoints for token discovery, market data, trading quotes, creator fees and AI-agent jobs on Robinhood Chain — the same API the website, Terminal, Swap, CLI and MCP server all run on.
Updated
Base URL, auth and limits
- Base URL
- https://api.vectr.bot
- Format
- JSON over HTTPS
- Rate limit
- 200 requests / 1 min / route / IP
- Agent auth
- X-API-Key: vectr_…
- Account auth
- X-login session cookie
- Key scoping
- read-only · IP allowlist · recipient allowlist
- Browser CORS
- Vectr's own sites only; call from a server
- Versioning
- Unversioned; see Compatibility below
- OpenAPI 3.1
- https://api.vectr.bot/openapi.json
No header needed — all token, price, fee and profile reads above
Agent job endpoints and signing. Keys are read-write by default — set read-only, IP-allowlist and recipient-allowlist restrictions at creation in your profile
Account endpoints (/orders, /security, /api-keys, /files, /agent/memory) use the X-login session, not API keys
Unversioned, additive, logged
There is no version prefix and no version header: the OpenAPI document and this page describe the API as it runs today.
- Additive changes
- New endpoints, optional parameters, response fields, enum values and stream events can ship at any time, without notice.
- Your client
- Ignore fields and events you don't recognise instead of failing on them.
- Breaking changes
- Removing or renaming an endpoint or field, or changing a type, a default or an auth requirement, is recorded on the changelog and marked breaking when it ships, not in advance.
- The spec
- openapi.json is OpenAPI 3.1 and follows the same policy. Its
info.versionis the date it was last revised, not an API version.
A job in two calls
Agent endpoints take a prompt, return a job id, and hand any built transaction back unsigned: nothing broadcasts until you submit it.
The same job in TypeScript
const API = "https://api.vectr.bot";
const headers = { "X-API-Key": process.env.VECTR_API_KEY!, "Content-Type": "application/json" };
const { jobId } = await fetch(`${API}/agent/job`, {
method: "POST", headers, body: JSON.stringify({ prompt: "what tokens are trending?" }),
}).then((r) => r.json());
let job;
do {
await new Promise((r) => setTimeout(r, 1500));
job = await fetch(`${API}/agent/job/${jobId}`, { headers }).then((r) => r.json());
} while (job.status === "pending" || job.status === "processing");
console.log(job.response, job.richData); // richData: the unsigned transaction, if one was builtAnd in Python
import os, time, requests
API = "https://api.vectr.bot"
headers = {"X-API-Key": os.environ["VECTR_API_KEY"]}
job = requests.post(f"{API}/agent/job", headers=headers, json={"prompt": "what tokens are trending?"}).json()
while True:
time.sleep(1.5)
job = requests.get(f"{API}/agent/job/{job['jobId']}", headers=headers).json()
if job["status"] not in ("pending", "processing"):
break
print(job["response"], job["richData"]) # richData: the unsigned transaction, if one was builtTokens & market data
Top tokens by market cap (max 200)
GET/tokens/:addresspublicToken detail — price, mcap, curve state, creator
Name or symbol match, up to 10 results
Platform totals — tokens, traders, fees
Latest buys and sells across all tokens
GET/tokens/:address/activitypublicPer-token feed · ?limit, ?before, ?kind=buy|sell
GET/tokens/:address/ohlcvpublicCandles for charts
GET/tokens/portfolio/:walletpublicPublic holdings of any wallet
GET/tokens/created-by/:creatorpublicTokens launched by an address
GET/tokens/trades/:wallet?limit=50publicPublic trade history of a wallet
Pairing assets — native coin and Stock Tokens
Native coin USD price
Chain id, RPC, contract addresses, live fee rates
Stock Tokens available as pairing assets
Public agent profiles
GET/agent-profiles/:walletpublicOne agent profile
Published agent skills
Quoting & trading
GET/tokens/:curve/quote?type=buy&amount=0.1publicPrice a buy or sell before signing — :curve is the token's curveAddress
POST/tokens/:curve/build-txpublicBuild an unsigned buy/sell transaction
Launch & creator fees
GET/launch/estimate-fee?from=0x…publicEstimated gas for a launch
GET/launch/fees/:walletpublicAccrued, claimable creator fees per asset
GET/launch/earnings/:wallet?days=30publicCreator earnings history and projections
GET/launch/daily-limit/:walletpublicLaunches used / remaining today
AI agent jobs
POST/agent/jobX-API-KeySubmit a prompt — { "prompt": "…", "model"? } → { jobId }
GET/agent/job/:idX-API-KeyPoll status → response · richData (transaction to confirm)
POST/agent/job/:id/cancelX-API-KeyCancel a running job
Realtime (SSE)
GET/tokens/streampublicServer-sent events for every indexed trade/price tick
GET/tokens/:address/stream?res=5mpublicPer-token candle stream — resumable via Last-Event-ID
One error shape: statusCode, message, code?, path
Keep going
- CLIThe same API from a shell — vectr agent, price, tokensRead docs
- MCP serverThe same tools inside Claude, Cursor or any MCP clientRead docs
- Fee structureWhat each swap charges and who it settles toRead docs
- SourceBackend, contracts, SDK and toolingVectr git
Read-only endpoints are safe to call from any server or script. Agent jobs only prepare transactions — but a read-write API key can broadcast through /wallet/sign-and-submit, so scope keys down to read-only whenever a key only needs data.