Documentation
Base URL: https://api.strue.com/v1
Quick start
2. Make your first call:
curl -X POST https://api.strue.com/v1/inference \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"prompt":"Hello","model":"deepseek-ai/DeepSeek-V3","max_tokens":256}'
Authentication
Bearer token: Authorization: Bearer your-api-key
Enterprise mTLS: see identity page.
Trial Keys
GET/v1/trial0 credits
Get a temporary API key with 500 credits, expires in 7 days. No auth required. Rate limited to 1 per IP per day.
curl https://api.strue.com/v1/trial
{
"key": "sk_trial_abc123...",
"credits": 500,
"expires_at": "2026-04-04T00:00:00Z",
"message": "Trial key — 500 credits, expires in 7 days."
}Inference
POST/v1/inferencetiered
Open source models via Chutes SN64. Tiered pricing per 1K tokens: Budget (1 cr) — MiMo, Qwen3-235B, Llama 3.3, Covenant-72B. Standard (2 cr) — DeepSeek V3, Qwen3-Coder. Premium (5 cr) — Kimi K2.5, DeepSeek R1. Minimum 1 credit per call. See GET /v1/models for live list. Auth required.
{
"prompt": "Explain quantum computing",
"model": "deepseek-ai/DeepSeek-V3",
"max_tokens": 256
}{
"text": "...",
"tokensInput": 12,
"tokensOutput": 187,
"subnet": "chutes-sn64"
}curl -X POST https://api.strue.com/v1/inference \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"prompt":"Explain quantum computing","model":"deepseek-ai/DeepSeek-V3","max_tokens":256}'
Chat Completions
POST/v1/chat/completionstiered
OpenAI-compatible chat completions. Drop-in replacement. Same tiered pricing as /v1/inference. Auth required.
{
"model": "deepseek-ai/DeepSeek-V3",
"messages": [{ "role": "user", "content": "Hello" }]
}{
"id": "chatcmpl-...",
"choices": [{ "message": { "role": "assistant", "content": "..." }}],
"model": "deepseek-ai/DeepSeek-V3",
"usage": { "prompt_tokens": 5, "completion_tokens": 42 }
}curl -X POST https://api.strue.com/v1/chat/completions \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"deepseek-ai/DeepSeek-V3","messages":[{"role":"user","content":"Hello"}]}'
Confidential Compute
POST/v1/confidential3 credits
TEE-verified private inference via Targon SN4. ~$0.20/M tokens. Auth required.
{ "prompt": "Analyze this sensitive data...", "max_tokens": 256 }{
"text": "...",
"tee_attestation": "...",
"subnet": "targon-sn4"
}curl -X POST https://api.strue.com/v1/confidential \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"prompt":"Analyze this sensitive data...","max_tokens":256}'
Additional confidential endpoints
GET/v1/confidential/:workload_id — Check workload status.
DELETE/v1/confidential/:workload_id — Delete a confidential workload.
Evaluate
POST/v1/evaluate1 credit
Content quality evaluation via Ridges SN62. ~$0.005/eval. Auth required.
{ "prompt": "Content to evaluate...", "criteria": "accuracy" }{ "score": 0.87, "analysis": "...", "subnet": "ridges-sn62" }curl -X POST https://api.strue.com/v1/evaluate \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"prompt":"Content to evaluate...","criteria":"accuracy"}'
Web Search
POST/v1/search2 credits
Web search via Apex SN1. Auth required.
{ "query": "Bittensor subnet architecture", "num_results": 10 }{
"results": [{ "title": "...", "url": "...", "snippet": "..." }],
"subnet": "apex-sn1"
}curl -X POST https://api.strue.com/v1/search \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"query":"Bittensor subnet architecture","num_results":10}'
Deep Research
POST/v1/research10 credits
Multi-source research synthesis via Apex SN1. Returns a job ID to poll. Auth required.
{
"query": "Impact of decentralized training on model quality",
"depth": "deep",
"publish": true,
"storage": "arweave"
}{ "job_id": "res_abc123", "status": "running", "query": "..." }GET/v1/research/:job_id — Poll for results. Returns report, sources, arweave_url when complete.
curl -X POST https://api.strue.com/v1/research \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"query":"Impact of decentralized training","depth":"deep","publish":true}'
Autoresearch Agent
from strue import Client agent = Client(api_key="your-key") gaps = agent.evaluate(model="my-agent-v2", criteria="accuracy") data = agent.data(query=gaps.weakest_topic, sources=["twitter","reddit"]) train_set = agent.inference(prompt=f"Generate QA pairs from: {data}") result = agent.finetune(base_model="deepseek-ai/DeepSeek-V3", data=train_set) score = agent.evaluate(model=result.model_id, criteria="accuracy") if score.improved: agent.store(filename="agent-v3.bin", data=result.weights)
Social Data
POST/v1/data2 credits
Data Universe SN13. X, Reddit, YouTube. 100 free queries/month. Auth required.
{
"source": "X",
"keywords": ["bitcoin", "sentiment"],
"start_date": "2026-03-01",
"end_date": "2026-03-28",
"limit": 100
}{
"items": [{ "text": "...", "author": "...", "timestamp": "..." }],
"count": 100,
"subnet": "data-universe-sn13"
}curl -X POST https://api.strue.com/v1/data \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"source":"X","keywords":["bitcoin"],"limit":50}'
Price Feeds
GET/v1/data/price?pair=ETH/USD0 credits (free)
Chainlink oracle prices. 15+ independent nodes. Cached 60s. Auth required.
Pairs: ETH/USD, BTC/USD, LINK/USD, USDC/USD, DAI/USD, USDT/USD
{
"pair": "ETH/USD",
"price": 3321.45,
"verified": true,
"source": "chainlink"
}curl "https://api.strue.com/v1/data/price?pair=ETH/USD" \
-H "Authorization: Bearer YOUR_KEY"Blockchain Data
POST/v1/chain/balances1 credit
Token balances via The Graph. Ethereum, BSC, Base, Arbitrum, Optimism, Polygon. Auth required.
{ "address": "0x...", "network": "ethereum" }{
"address": "0x...",
"network": "ethereum",
"tokens": [{ "symbol": "USDC", "balance": "1250.00", "usd_value": 1250.00 }]
}curl -X POST https://api.strue.com/v1/chain/balances \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"address":"0x...","network":"ethereum"}'
POST/v1/chain/transfers1 credit
Token transfer history. Auth required.
{ "address": "0x...", "network": "ethereum", "limit": 50 }{
"transfers": [{ "from": "0x...", "to": "0x...", "token": "USDC", "amount": "500", "tx_hash": "0x..." }]
}curl -X POST https://api.strue.com/v1/chain/transfers \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"address":"0x...","network":"ethereum","limit":50}'
GPU Rental
POST/v1/compute500 credits
Lium SN51. H100, A100, A6000. ~$5/hr H100, ~$2/hr A100. Auth required.
{
"gpu_type": "H100",
"gpu_count": 1,
"duration_hours": 1.0,
"docker_image": "nvidia/cuda:12.4.1-runtime-ubuntu22.04",
"command": "python train.py"
}{
"job_id": "...",
"ssh_host": "...",
"ssh_port": 22,
"subnet": "lium-sn51"
}curl -X POST https://api.strue.com/v1/compute \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"gpu_type":"H100","duration_hours":1.0}'
Fine-Tuning
POST/v1/finetune1000 credits
Gradients SN56/SN81. GRPO with cryptographic proof. Auth required.
{
"model": "llama-3.2-8b",
"dataset": "gsm8k",
"epochs": 3,
"learning_rate": 0.00001
}{ "job_id": "ft_abc123", "status": "queued" }GET/v1/finetune/:job_id — Check fine-tuning status.
curl -X POST https://api.strue.com/v1/finetune \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"llama-3.2-8b","dataset":"gsm8k","epochs":3}'
Distributed Training
POST/v1/train1000 credits
Templar SN3. Full distributed pre-training runs. Auth required.
{
"model": "llama-3.2-8b",
"dataset": "fineweb",
"method": "pulse",
"epochs": 1
}{ "job_id": "tr_abc123", "status": "queued" }GET/v1/train/:job_id — Check training status.
curl -X POST https://api.strue.com/v1/train \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"llama-3.2-8b","dataset":"fineweb","method":"pulse"}'
Storage
POST/v1/store1 credit
Multi-backend: R2 (default, free tier), Arweave (permanent), Hippius SN75 (decentralized). Auth required.
{
"data": "<base64-encoded-content>",
"filename": "data.bin",
"content_type": "application/octet-stream"
}{ "key": "hip_abc123", "size_bytes": 1024, "subnet": "hippius-sn75" }curl -X POST https://api.strue.com/v1/store \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"data":"aGVsbG8=","filename":"hello.txt"}'
POST/v1/retrieve1 credit
Retrieve a file by key. Auth required.
{ "key": "hip_abc123" }curl -X POST https://api.strue.com/v1/retrieve \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"key":"hip_abc123"}'
Memory — Store
POST/v1/memory/store1 credit
Store a memory in EverMemOS. Semantically indexed for later recall. Auth required.
{
"content": "User prefers Python for data analysis",
"sender": "agent",
"tags": ["preference", "language"],
"session_id": "default"
}{
"memory_id": "mem_k8f3j2...",
"stored": true,
"backend": "cloud",
"subnet": "evermemos"
}curl -X POST https://api.strue.com/v1/memory/store \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"content":"User prefers Python","tags":["preference"]}'
Memory — Recall
POST/v1/memory/recall0 credits (free)
Recall memories by semantic similarity. Auth required.
{ "query": "What language does the user prefer?", "limit": 5 }{
"memories": [{
"memory_id": "mem_k8f3j2...",
"content": "User prefers Python for data analysis",
"relevance": 0.92,
"tags": ["preference"]
}]
}curl -X POST https://api.strue.com/v1/memory/recall \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"query":"What language does the user prefer?","limit":5}'
Memory — Search
GET/v1/memory/search?q=keyword&limit=100 credits (free)
Keyword search across stored memories. Auth required.
curl "https://api.strue.com/v1/memory/search?q=preference&limit=10" \
-H "Authorization: Bearer YOUR_KEY"Memory — Forget
DELETE/v1/memory/forget0 credits (free)
Delete a specific memory. Auth required.
{ "memory_id": "mem_k8f3j2..." }curl -X DELETE https://api.strue.com/v1/memory/forget \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"memory_id":"mem_k8f3j2..."}'
Memory — Stats
GET/v1/memory/stats0 credits (free)
Memory usage statistics. Auth required.
{
"total_memories": 247,
"storage_bytes": 1250000,
"top_tags": [{ "tag": "preference", "count": 42 }]
}curl https://api.strue.com/v1/memory/stats \
-H "Authorization: Bearer YOUR_KEY"Research Library — Search
GET/v1/loop/search?q=query&limit=100 credits (free, no auth)
Search published research in the Arloop library.
curl "https://api.strue.com/v1/loop/search?q=autoresearch&limit=10"
{
"results": [{ "id": "...", "query": "...", "topics": [...], "arloop_url": "..." }],
"count": 1
}Research Library — Recent
GET/v1/loop/recent?limit=200 credits (free, no auth)
Most recent published research entries.
curl "https://api.strue.com/v1/loop/recent?limit=20"
Research Library — Read Entry
GET/v1/loop/r/:entry_id0 credits (free, no auth)
Read a specific research entry including the full report.
curl https://api.strue.com/v1/loop/r/entry-0
Research Library — Stats
GET/v1/loop/stats0 credits (free, no auth)
Aggregate statistics for the Arloop research library.
curl https://api.strue.com/v1/loop/stats
Research Library — Upload
POST/v1/loop/upload0 credits (free, no auth, rate limited)
Upload research content. Rate limited to 10 uploads/hr per IP.
{
"content": "# My Research Report\n\nFindings...",
"title": "My Research",
"topics": ["ml", "agents"],
"license": "CC-BY-4.0"
}curl -X POST https://api.strue.com/v1/loop/upload \ -H "Content-Type: application/json" \ -d '{"content":"# My Research\n\nFindings...","title":"My Research","topics":["ml"]}'
Research Library — Fetch URL
POST/v1/loop/fetch0 credits (free, no auth, rate limited)
Fetch and extract content from a URL. Supports arXiv, HuggingFace papers, and general web pages.
{ "url": "https://arxiv.org/abs/2301.12345" }curl -X POST https://api.strue.com/v1/loop/fetch \ -H "Content-Type: application/json" \ -d '{"url":"https://arxiv.org/abs/2301.12345"}'
Bounties — List
GET/v1/bounty0 credits (no auth)
List open research bounties.
curl https://api.strue.com/v1/bounty
{
"bounties": [{
"id": "bounty_abc123",
"question": "...",
"reward_credits": 500,
"deadline": "2026-04-15",
"submissions_count": 3
}],
"count": 1
}Bounties — Create
POST/v1/bountyreward_credits escrowed
Create a research bounty. Credits are escrowed from your balance. Auth required.
{
"question": "What are the most efficient fine-tuning methods for small LLMs?",
"reward_credits": 500,
"deadline": "2026-04-15",
"criteria": "Must include benchmarks and source code"
}{
"bounty_id": "bounty_abc123",
"status": "open",
"reward_credits": 500,
"credits_escrowed": true
}curl -X POST https://api.strue.com/v1/bounty \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"question":"Best fine-tuning methods?","reward_credits":500,"deadline":"2026-04-15"}'
Bounties — Get Details
GET/v1/bounty/:id0 credits (no auth)
Get bounty details including submissions.
curl https://api.strue.com/v1/bounty/bounty_abc123
Bounties — Submit
POST/v1/bounty/:id/submit0 credits
Submit an Arloop entry as a bounty answer. Auth required.
{ "arloop_entry_id": "entry-123" }curl -X POST https://api.strue.com/v1/bounty/bounty_abc123/submit \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"arloop_entry_id":"entry-123"}'
Bounties — Award
POST/v1/bounty/:id/award0 credits
Award bounty to a submission. Poster only. Credits transferred to winner. Auth required.
{ "arloop_entry_id": "entry-123" }curl -X POST https://api.strue.com/v1/bounty/bounty_abc123/award \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"arloop_entry_id":"entry-123"}'
Bounties — Cancel
POST/v1/bounty/:id/cancel0 credits (refund)
Cancel a bounty and refund escrowed credits. Poster only. Auth required.
curl -X POST https://api.strue.com/v1/bounty/bounty_abc123/cancel \
-H "Authorization: Bearer YOUR_KEY"Credits
GET/v1/credits0 credits
Check credit balance and usage. Auth required.
curl https://api.strue.com/v1/credits \
-H "Authorization: Bearer YOUR_KEY"Purchase Credits
POST/v1/purchase/checkout0 credits
Create a Stripe checkout session for credit packages ($5, $20, $100) or subscriptions (builder, pro, agent). Auth required.
{ "package": "20" }
// or
{ "subscription": "pro" }curl -X POST https://api.strue.com/v1/purchase/checkout \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"package":"20"}'
Crypto Purchase
POST/v1/purchase/crypto0 credits
Purchase credits with USDC (+10% bonus) or TAO (+15% bonus). Auth required.
{ "currency": "USDC", "amount": 20 }curl -X POST https://api.strue.com/v1/purchase/crypto \ -H "Authorization: Bearer YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"currency":"USDC","amount":20}'
Profile
GET/v1/profile0 credits
Your agent profile and usage stats. Auth required.
curl https://api.strue.com/v1/profile \
-H "Authorization: Bearer YOUR_KEY"Export
GET/v1/export0 credits
Full data export: profile, usage, files, credit history. Auth required.
curl https://api.strue.com/v1/export \
-H "Authorization: Bearer YOUR_KEY"Register
POST/v1/register0 credits (no auth)
Create an account and get an API key with 500 free credits.
{ "email": "you@example.com", "password": "min-8-chars" }{ "api_key": "sk_live_...", "credits": 500 }curl -X POST https://api.strue.com/v1/register \ -H "Content-Type: application/json" \ -d '{"email":"you@example.com","password":"your-password"}'
OpenAI format
from openai import OpenAI client = OpenAI(base_url="https://api.strue.com/v1", api_key="your-key") r = client.chat.completions.create(model="deepseek-ai/DeepSeek-V3", messages=[{"role":"user","content":"Hello"}])
LangChain
from langchain_openai import ChatOpenAI llm = ChatOpenAI(base_url="https://api.strue.com/v1", api_key="key", model="deepseek-ai/DeepSeek-V3")
CrewAI
from crewai import Agent, LLM llm = LLM(model="openai/deepseek-ai/DeepSeek-V3", base_url="https://api.strue.com/v1", api_key="key")
MCP server
Full guide: MCP page
{ "mcpServers": { "strue": { "url": "https://api.strue.com/mcp", "auth": { "type": "bearer", "token": "key" }}}}Pentos Bridge
pip install pentos-bridge
pentos-bridge start --key "your-strue-key"Auto-detects Ollama, LM Studio. Smart routing: local when free, cloud when needed. Full guide
Health Dashboard
GET/v1/health0 credits (no auth)
Returns status of every backend service.
curl https://api.strue.com/v1/health
{
"status": "ok",
"backends": {
"chutes_sn64": { "status": "up", "latency_ms": 45 },
"targon_sn4": { "status": "up", "latency_ms": 62 },
"data_universe_sn13": { "status": "up", "latency_ms": 38 },
"lium_sn51": { "status": "up", "latency_ms": 55 },
"evermemos": { "status": "up", "latency_ms": 30 },
"arweave": { "status": "up", "latency_ms": 120 },
"arloop_ao": { "status": "up", "latency_ms": 85 }
}
}Error codes
| Code | Meaning |
|---|---|
400 | Invalid request body or parameters |
401 | Invalid or missing API key |
402 | Insufficient credits |
403 | Forbidden (wrong permissions) |
404 | Resource not found |
429 | Rate limit exceeded |
500 | Subnet routing error (retry) |
502 | Upstream service error |
503 | Subnet temporarily unavailable |
Rate limits
| Tier | Req/min | Concurrent |
|---|---|---|
| Free | 30 | 5 |
| Standard | 120 | 20 |
| Pro | 600 | 100 |
Models
GET/v1/models0 credits
List available inference models. Auto-discovered from Chutes (SN64) and cached for 1 hour. No auth required. Pass any model id from this list to /v1/inference or /v1/chat/completions.
curl https://api.strue.com/v1/models
{
"models": [
{
"id": "deepseek-ai/DeepSeek-V3",
"name": "DeepSeek V3",
"context_window": 131072,
"credit_tier": "standard",
"credits_per_1k_tokens": 2,
"recommended_for": "agent/chat"
},
...
],
"tiers": { "budget": 1, "standard": 2, "premium": 5 },
"count": 8
}Credit tiers
| Tier | Credits / 1K tokens | Models |
|---|---|---|
| Budget | 1 | MiMo V2 Flash, Qwen3-235B, Llama 3.3, Covenant-72B |
| Standard | 2 | DeepSeek V3, Qwen3-Coder |
| Premium | 5 | Kimi K2.5 Thinking, DeepSeek R1 |
Minimum 1 credit per call regardless of token count.
Recommended defaults
| Use case | Model | Tier |
|---|---|---|
| Agent / Chat | deepseek-ai/DeepSeek-V3 | Standard |
| Autoresearch | covenant-72b | Budget |
| Coding | Qwen/Qwen3-Coder or MiMo/MiMo-V2-Flash | Standard / Budget |
| Reasoning | moonshotai/Kimi-K2.5-Thinking | Premium |
| Budget | Qwen/Qwen3-235B-A22B | Budget |