Skip to content

API

The Spore API is OpenAI-compatible. Create an API key from your profile’s API Keys tab, then point your existing OpenAI client at Spore.

https://app.sporeintel.com/api/v1
Authorization: Bearer sk_spore_YOUR_API_KEY
Terminal window
curl https://app.sporeintel.com/api/v1/models \
-H "Authorization: Bearer sk_spore_YOUR_API_KEY"

Model names include a context tier, e.g. qwen3-4b-2507:8k or qwen3-4b-2507:32k. Append :personal to any model name to route the request to your own nodes only. Personal requests are free.

Terminal window
curl https://app.sporeintel.com/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk_spore_YOUR_API_KEY" \
-d '{
"model": "qwen3-4b-2507:8k",
"messages": [
{"role": "user", "content": "Hello!"}
],
"stream": false
}'

Set "stream": true for server-sent events; stream_options: {"include_usage": true} adds token usage to the final chunk, matching the OpenAI streaming format.

To keep a completion so you can fetch it later, add "store": true — see Retrieving completions.

Many models can reason (“think”) before answering. Control it with the OpenAI-standard reasoning_effort:

Terminal window
curl https://app.sporeintel.com/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk_spore_YOUR_API_KEY" \
-d '{
"model": "qwen3.6-27b:32k",
"messages": [{"role": "user", "content": "How many rs are in strawberry?"}],
"reasoning_effort": "low"
}'
  • reasoning_effort accepts none, minimal, low, medium, or high. none turns reasoning off on models that support toggling it; any other value turns it on. Models with graded effort (e.g. gpt-oss) use the level; always-on models ignore none.
  • The reasoning text is returned separately in message.reasoning_content (and delta.reasoning_content when streaming), so content stays clean.
  • A boolean enable_thinking is also accepted and takes precedence over reasoning_effort when both are sent.

Reasoning support is per model. Each entry from /api/v1/models includes supports_thinking, thinking_default_on, and thinking_toggleable so you can detect it programmatically.

By default, completions aren’t retained — the response is returned once and then discarded. Send "store": true to keep a completion so you can fetch it later, and optionally attach metadata (up to 16 key–value pairs) for filtering:

Terminal window
curl https://app.sporeintel.com/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk_spore_YOUR_API_KEY" \
-d '{
"model": "qwen3-4b-2507:8k",
"messages": [{"role": "user", "content": "Hello!"}],
"store": true,
"metadata": {"project": "demo"}
}'

Stored completions are kept for your account’s data-retention window (30 days by default; Pro accounts can configure it). After that the record remains but its content is cleared (content_purged: true on retrieval).

Retrieve one using the id from the completion response:

Terminal window
curl https://app.sporeintel.com/api/v1/chat/completions/CHAT_COMPLETION_ID \
-H "Authorization: Bearer sk_spore_YOUR_API_KEY"

List your stored completions (newest first). Query params: limit (1–100, default 20), order (asc or desc), model, metadata[KEY]=VALUE, and after (a completion id, for pagination):

Terminal window
curl "https://app.sporeintel.com/api/v1/chat/completions?limit=20&metadata[project]=demo" \
-H "Authorization: Bearer sk_spore_YOUR_API_KEY"

The response is a list: {"object": "list", "data": [...], "first_id": "...", "last_id": "...", "has_more": false}.

List the input messages of a stored completion:

Terminal window
curl https://app.sporeintel.com/api/v1/chat/completions/CHAT_COMPLETION_ID/messages \
-H "Authorization: Bearer sk_spore_YOUR_API_KEY"

Update a stored completion’s metadata (the only mutable field):

Terminal window
curl https://app.sporeintel.com/api/v1/chat/completions/CHAT_COMPLETION_ID \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk_spore_YOUR_API_KEY" \
-d '{"metadata": {"project": "archived"}}'

Delete a stored completion (removes it and clears its content):

Terminal window
curl -X DELETE https://app.sporeintel.com/api/v1/chat/completions/CHAT_COMPLETION_ID \
-H "Authorization: Bearer sk_spore_YOUR_API_KEY"

Requests you submit with Spore’s end-to-end encryption are stored as ciphertext; retrieval returns that ciphertext with is_encrypted: true, since the server can’t decrypt it.

Any tool that speaks the OpenAI protocol works: set its base URL to https://app.sporeintel.com/api/v1 and use your sk_spore_ key. The app’s Code page generates ready-to-paste configuration (including an OpenCode config with per-model context limits) from the models currently on the network.

Requests are charged in credits by model, context tier, and token counts. See Credits & Pricing. Personal-mode requests are free.