API

Call JARVIS from your own code — chat, conversations, and tasks over HTTP with a personal API key.

JARVIS has an HTTP API. Anything a conversation can do — ask a question, run a search, read and manage conversations, work with your task list — is available programmatically.

Base URL

https://jarvis.spacekeep.dev

Every endpoint below is relative to that host.

Conventions

  • Requests and responses are JSON.

  • Endpoints marked Key or Session in the tables require authentication. See Authentication.

  • Query and message bodies have length limits; exceeding one returns 400.

  • Errors return a non-2xx status and a JSON body with an error field.

Endpoints at a glance

Group Endpoints Auth
Health GET /api/health None
Chat POST /api/jarvis/chat Key or Session
Conversations GET, POST /api/conversations Key or Session
  GET, PATCH, DELETE /api/conversations/:id Key or Session
  POST /api/conversations/:id/messages Key or Session
Tasks GET, POST /api/tasks Key or Session
  PATCH, DELETE /api/tasks/:id Key or Session
Memories GET /api/memories Session
  PATCH, DELETE /api/memories/:id Session
Web GET, DELETE /api/web Session
Keys GET, POST /api/keys Session
  DELETE /api/keys/:id Session
Account GET /api/auth/session, POST /api/auth/logout —
  POST /api/auth/register, POST /api/auth/login None
  POST /api/auth/forgot, POST /api/auth/reset None
  PATCH /api/auth/profile Session

Try it immediately

The health endpoint needs no credentials:

curl -s https://jarvis.spacekeep.dev/api/health \
  -H "Accept: application/json"
const res = await fetch("https://jarvis.spacekeep.dev/api/health", {
  headers: { Accept: "application/json" },
});
console.log(await res.json());
import requests

res = requests.get("https://jarvis.spacekeep.dev/api/health", timeout=10)
res.raise_for_status()
print(res.json())

Ask JARVIS something

curl -s https://jarvis.spacekeep.dev/api/jarvis/chat \
  -H "Authorization: Bearer $JARVIS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"message":"What did I ask you to remember?"}'
{
  "reply": "You asked me to remember that you prefer TypeScript over JavaScript.",
  "conversationId": "0f3a…"
}

Pass conversationId to continue an existing thread and give JARVIS its context.

Next