Add your email and we'll send a key when Node 01 opens to new builders.
{{ error }}
{{ submitNote }}
{{ thanksTitle }}
{{ thanksNote }}
Node 01 exposes an OpenAI-compatible REST API at https://api.solarnodes.org/v1. Use the same endpoints and request shapes as the OpenAI API — chat completions, model listing, and bearer authentication.
Try it in the browser at Try Node 01, or call the API directly with curl, the OpenAI SDK, or any HTTP client.
Every request must include your API key as a bearer token:
Authorization: Bearer YOUR_API_KEY
Requests without a valid key return 401 Unauthorized. Request a key above when Node 01 opens to new builders.
GET /v1/models — returns the models currently routed on Node 01.
curl https://api.solarnodes.org/v1/models \ -H "Authorization: Bearer YOUR_API_KEY"
POST /v1/chat/completions — send a model ID and a messages array. Set stream: true for server-sent events (recommended for the chat UI).
curl -N https://api.solarnodes.org/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-coder-next",
"messages": [{"role": "user", "content": "Hello"}],
"stream": true
}'
Streaming responses use SSE. Each line is data: <json>; token text is in choices[0].delta.content. The stream ends with data: [DONE].
Omit stream or set it to false for a single JSON response with the full message in choices[0].message.content.
Point the official client at Node 01 by setting base_url:
from openai import OpenAI
client = OpenAI(
base_url="https://api.solarnodes.org/v1",
api_key="YOUR_API_KEY",
)
stream = client.chat.completions.create(
model="qwen3-coder-next",
messages=[{"role": "user", "content": "Hello"}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="")
GET /v1/status — live telemetry used by the telemetry dashboard. Requires the same bearer token.
curl https://api.solarnodes.org/v1/status \ -H "Authorization: Bearer YOUR_API_KEY"
Returns fields such as cpu (°C), bytes_in, bytes_out, plus EcoFlow power fields when configured: solar_input_w (total), the per-input solar_pv1_w and solar_pv2_w, power_consumption_w, and battery_soc.
POST /v1/web-search — live web search, run on Node 01. Send {"query": "..."} with the same bearer token.
curl -X POST https://api.solarnodes.org/v1/web-search \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"events in walnut creek this weekend"}'
Returns {"query", "results": [{"title", "url", "snippet", "live_excerpt"}]}.
POST /v1/title26-search — semantic search over a Title 26 (IRS Code) / Treasury Regulations corpus. Send {"query": "...", "top_k": 5} with the same bearer token.
curl -X POST https://api.solarnodes.org/v1/title26-search \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"501(c)(3) requirements", "top_k": 5}'
Returns {"chunks": [{"text", "source_display_name", "citation_url", "score"}]}.
Use these model IDs in chat requests — this is the live set returned by GET /v1/models:
qwen3-coder-next — Default model.
qwen-32b — Qwen 3 32B.
qwen-3.6-27b — Qwen 3.6 27B.
qwen-2.5-14b — Qwen 2.5 14B. Fast, balanced quality and speed.
gemma3-27b — Gemma 3 27B.
phi4-14b — Phi-4 14B.
mistral-small-24b — Mistral Small 24B.
gpt-oss-20b — GPT-OSS 20B, OpenAI's open-weight model.
If a model is unavailable, try qwen3-coder-next first or call GET /v1/models to see what is currently online.
The same open-weight models on Node 01 can run on your own computer with Ollama. Install it, pull a model, and start chatting from the terminal.
1. Install Ollama — Download the app for macOS, Windows, or Linux from ollama.com/download and follow the installer.
2. Pull a model — Download the weights once. These are the same families we serve on Node 01:
ollama pull qwen2.5:14b ollama pull gemma3:27b
3. Run it — Start an interactive session. Ollama loads the model into memory and streams replies in the terminal:
ollama run qwen2.5:14b
Larger models need more RAM and a capable GPU or Apple Silicon chip. If a pull fails or runs slowly, try a smaller variant or check Ollama's hardware notes in their docs.
401 Unauthorized — Check that your API key is included as Authorization: Bearer YOUR_API_KEY.
404 Not Found — Use https://api.solarnodes.org/v1/chat/completions, not legacy paths such as /api/chat/completions.
Streaming feels delayed — Use curl -N or an HTTP client that reads the response body incrementally.
503 / slow responses — Node 01 is solar-powered with limited capacity. Retry after a short wait.