Early access. The mesh is live and under active development — latency and uptime vary. Paid API preview · Earner dashboard · Settlement books · Contributor credits (not cash); Peer USD may accrue on paid serves. Free chat stays free. Security →
Developer docs

OpenAI-compatible.Point your existing client at the mesh.

Every Senda peer exposes a standard /v1/chat/completions endpoint. Anything that speaks the OpenAI API — the official SDKs, LangChain, your own scripts — works by changing one base URL. Below is exactly how, and an honest map of what's open today — including the paid API preview on senda.network/v1.

Three ways to reach the API

What's open today.

Senda is in early access, so the surfaces aren't all equally open. Local nodes are fully open with no key. The hosted paid preview on senda.network/v1 works today via /buy. The public entry node still gates chat completions for operators.

PathBase URLAuthStatus
Local node
run the runtime yourself
http://localhost:9337/v1NoneOpen now
Hosted mesh
the public entry node
https://entry.senda.network/v1Bearer keyModels open · chat gated
Paid API (preview)
API balance (USDC) + ck_ key
https://senda.network/v1Bearer ck_…Live preview — get a key
Web chat
zero setup, not the API
senda.networkNoneOpen now

For the paid preview, top up an API balance and mint a key at /buy, then call senda.network/v1/chat/completions. That balance is for API spend — not the same as contributor credits on a node. The entry node entry.senda.network stays operator-gated; local nodes remain free to self-host. Homepage chat stays free.

Quickstart

Call it in three lines.

These examples target a local node at http://localhost:9337/v1. Install the desktop app or curl the runtime first — it autostarts and joins the mesh. Swap the base URL for the hosted entry once you have a key.

List the models this node can servebash
curl http://localhost:9337/v1/models
Chat completion · curlbash
curl http://localhost:9337/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "Qwen3-8B",
    "messages": [
      { "role": "user", "content": "Summarize peer-to-peer inference in two sentences." }
    ]
  }'
Python · the official openai SDKpython
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:9337/v1",
    api_key="not-needed",  # local node is unauthenticated
)

resp = client.chat.completions.create(
    model="Qwen3-8B",
    messages=[{"role": "user", "content": "Classify: 'battery great, screen dim'."}],
)
print(resp.choices[0].message.content)
JavaScript / TypeScript · the openai packagejavascript
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "http://localhost:9337/v1",
  apiKey: "not-needed",
});

const resp = await client.chat.completions.create({
  model: "Qwen3-8B",
  messages: [{ role: "user", content: "Extract every date: shipped 2026-01-09." }],
});
console.log(resp.choices[0].message.content);
Streaming · ask for token usage toopython
stream = client.chat.completions.create(
    model="Qwen3-8B",
    messages=[{"role": "user", "content": "Write a haiku about latency."}],
    stream=True,
    stream_options={"include_usage": True},  # needed for usage stats
)
for chunk in stream:
    if chunk.choices and chunk.choices[0].delta.content:
        print(chunk.choices[0].delta.content, end="", flush=True)
Discover what's live

The model set changes as peers come and go.

There's no fixed model list — it's whatever live peers are serving. Two open, no-auth endpoints tell you what's routable right now, so you can pick a model that actually exists.

What the hosted mesh can serve (OpenAI shape)bash
curl https://entry.senda.network/v1/models
Live mesh status — nodes online + routable modelsbash
curl https://senda.network/api/status
Good to know

Notes for building against the mesh.

It's a real OpenAI-compatible surface

Chat completions, streaming (SSE), and model listing follow the OpenAI schema. Most SDKs and agent frameworks need only the base URL changed.

Latency-tolerant by design

The mesh targets summarization, classification, extraction, and background agent work — not shaving a second off a single reply. Set generous client timeouts and prefer batched / async calls.

Ask for usage when streaming

Pass stream_options.include_usage = true or the final chunk omits token counts — and the per-model throughput catalog on /status can't record a sample.

Run your own for full control

The endpoint a hosted peer exposes is the same one your local runtime exposes. For anything you don't want to route through someone else, run a node and keep the whole loop on your hardware.

Call the mesh — or run a node.

Paid preview keys at /buy hit senda.network/v1. For local-only access with no key, run your own node — full quality, nothing leaves your machine.