One endpoint. Send it a message with your API key, get back the same Superself that answers you in the app — same memory, same personality, same everything. Build a Discord bot, a CLI, a Raycast extension, whatever.
Get a key from Settings → API Keys in the app. Free — it shares your account's normal daily message limit, not a separate one.
Every request needs your key as a bearer token:
Authorization: Bearer nv_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Keys are shown once when created — copy it then. Up to 5 keys per account; revoke any of them any time from Settings.
| Field | Description |
|---|---|
| message | Required. The text you're sending, as a non-empty string. |
| history | Optional array of {role, content} — role is "user" or "assistant". Pass the last few turns if you're building a real back-and-forth conversation; omit it for a one-off message. Capped server-side at the last 12 turns, 4000 characters each. |
curl https://app.neurovance.dev/api/v1/chat \
-H "Authorization: Bearer nv_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"message": "what did I say I wanted to do this weekend?"}'
await fetch("https://app.neurovance.dev/api/v1/chat", {
method: "POST",
headers: {
"Authorization": "Bearer nv_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify({ message: "what's on my mind lately?" }),
});
{ "reply": "You mentioned wanting to finally fix your bike..." }
Authorization header is missing, malformed, or the key doesn't match a live one. Check you copied the whole key and it hasn't been revoked.message was missing, empty, or not a string.This endpoint only talks — it doesn't get the Companion's browser/computer tools, since those need your own paired computer live in the room, not a server-to-server call. It still has full access to memory: it can remember things you tell it and recall anything it already knows, same as the app.