Jesse
Inference API by solidSF / Open beta 2026
solidSF / Jesse / Open beta

Jesse.Weightless inference.

What it is

solidSF's deterministic Bayesian reasoning engine

One base URL. Your key.

Sign in on your account page for 60 free exchanges, create a key, and send a chat completion. Anything that speaks the OpenAI API works unchanged.

curl https://jesse.my/api/v1/chat/completions \
  -H "Authorization: Bearer $JESSE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "jesse-prod",
    "messages": [{"role": "user", "content": "What is 17 * 23?"}]
  }'

Try Jesse

Ask Jesse

Worked out, checked, or quoted.

Jesse is not a language model. Each request goes to the solver that can answer it: exact arithmetic, a unit table, a program Jesse runs against tests, a reference page. Every reply says which solver answered and whether the answer was checked. When no solver can answer, Jesse says so and explains why instead of guessing.

A / 01Math and units

Exact arithmetic at any size, fractions, percentages, equations, unit conversions, word problems. Work shown.

What is 2 to the power of 100?

A / 02Problems with proof

State the whole problem in one message. Add checks is … to name a second value from the same givens that lets you check the answer.

Compute 17 * 23 + 5. checks is the product before addition.

A / 03Code she ran

Ask with a command and something to check against, such as an example or an Input/Output sample. You only get code that passed its tests.

Write a Python function that reverses a string.

A / 04Facts, with the source

From Jesse's own references first, then a web search. The source is always cited. Start with Look up … to force a web search, or Fact-check: … to get a verdict weighed across sources.

A / 05Your memory and files

State a fact and Jesse keeps it for your key. Upload documents and Jesse answers from them, quoting the line.

A / 06Tables, puzzles, games

Convert tables between CSV, TSV, JSON, HTML and Markdown. Solve logic puzzles. Analyse a Go position or a Balatro hand.

Jesse can't yet write stories or essays, give opinions, work conditional probability, or act on your behalf. How to ask Jesse lists 100+ phrasings that are checked against the live service with every release.

Every answer comes with a receipt

The response is a standard chat completion plus a jesse object that says how the answer was produced. Check it in code: for example, trust verified: true answers and show the others with their source.

{
  "id": "chatcmpl-jesse-…",
  "object": "chat.completion",
  "model": "jesse-prod",
  "choices": [{ "index": 0, "finish_reason": "stop",
    "message": { "role": "assistant", "content": "17 * 23 = 391." } }],
  "usage": { "prompt_tokens": 12, "completion_tokens": 4, "total_tokens": 16 },
  "jesse": {
    "solver": "compute",
    "verified": true,
    "checked": "computed",
    "tried": ["compute:answered"]
  }
}
FieldMeaning
solverThe skill that answered: compute, reasoning, code_spec, lexicon, web_search, table_reformat, … help means nothing could answer, and the reply explains why.
verifiedtrue when Jesse computed the answer or ran and tested it. false when it is quoted from a source.
checkedHow it was checked: computed, spec_checks, lexicon_lead, web_search, or null.
triedThe solvers consulted, in order, and what each one did.
caveatAssumptions Jesse made while reading your request, when there were any.
noticeService status during the open beta, also sent as the X-Jesse-Notice header. shown: true means it was also put at the top of the reply, which happens on your first request of the day and after 30 minutes idle.

One engine, three behaviours.

Every model runs the same solvers. They differ in what they remember. GET /api/v1/models lists them.

M / 01 jesse-prod alias: jesse

The default. Remembers facts you state and prose corrections you send with your key, and they stay with that key. Code corrections are kept for review only: coding answers come only from Jesse's checked programs.

M / 02 jesse-pristine

The fixed baseline. Nothing you send changes it, so the same request returns the same answer. Use it for tests and comparisons.

M / 03 jesse-next

The lab. Reasoning features on trial before they reach jesse-prod. It has no key memory, and every answer is recorded so it can be replayed exactly.

D / 04 Memory and documents

GET /api/v1/memory shows what Jesse remembers for your key; DELETE erases it. Upload documents of up to 10,000,000 characters each (200 per key) and ask about them in later requests.

Open beta: be careful with confidential or export-controlled material. Your data is partitioned by API key and is never used for other customers' answers.

The numbers.

Storage limited, for now
Pristine model 7,260,160 Priors

Version 79e32f002ed1. Knowledge, grammar, research beliefs, web pages, Go and Wikipedia.

Largest customer model 7,260,210 Priors

The pristine model plus 50 priors one customer's agent has learned.

Request size, each 10M Characters

Characters per request and per document, about 2.5M tokens.

Average message latency 56 ms

Milliseconds, averaged over the last 1,000 chat messages, measured on the server.

  • MemoryIn progressGoal: 50 billion characters. Now: 500 MB of documents per account, searched on every request.
  • ContextIn progressGoal: no limit. Now: 10M characters per request; past that, your stored documents are searched.

Modalities

  • LanguageLiveChat and the API.
  • VisionIn progressNow: PDF pages and drawings in the vision lab. Coming soon: images in chat.
  • Audio (duplex)In progressNow: two-way room audio with speech recognition on our servers. Coming soon: Jesse's own voice, made on the server.
  • Voice (duplex)LiveTalk with Jesse, alone or with other people and up to four Jesses. Jesse's voice comes from your browser.
  • RoboticsLive, simulatedBodies, arms and drones that learn to move.
  • GamingLiveGo and other games.
  • FormalizationIn progressNow: research claims are checked in Lean 4 before they are published. Coming soon: formal proofs in chat.
  • Panel of ExpertsComing soonNot built yet.

One plan.

Developer / monthly
$20
Billed monthly by Stripe
Subscribe
  • TRYSign in with Google or GitHub for 60 free exchanges, shared by the chat and your API keys. No card needed.
  • KEYSTwo API keys per account. Need more? Each key pack adds 2 keys for $10 / month, as many packs as you like, from your account page. Every key gets the full rate limit below.
  • RATEPer key: 5 requests per second on average, in bursts of up to 4. No daily or monthly cap.
  • SIZE10,000,000 characters per request. Past 100,000 characters Jesse reads the beginning and end in full and searches the whole text for the sections relevant to the question; the reply says so.
  • MODELSjesse-prod, jesse-pristine and jesse-next.
  • BILLINGChange your card, download invoices or cancel from the Stripe portal on your account page. Requests refused for their input are never billed.

Endpoints.

Base URL https://jesse.my/api/v1. Send your key as Authorization: Bearer jesse_live_… (or x-api-key). Never put it in a URL.

Chat

MethodPathPurpose
POST/chat/completionsOpenAI-compatible. Accepts model, messages (a system message sets the output format, for example "Reply as JSON with answer and confidence"), stream, tools, tool_choice, response_format. Answers are deterministic, so temperature has no effect.
GET/modelsThe models and their rate limits.
GET/usageYour plan, key limit and packs, free exchanges left, and request counts: today, the last 7 and 30 days, per day, and per key.

Memory and feedback

MethodPathPurpose
POST/feedbackMark an answer right or wrong: {"completion_id", "rating": "positive" | "negative", "correction"}. The response says what happened to it (applied_to, effect). On jesse-prod, a prose correction is remembered for your key.
GET/memoryFacts Jesse remembers for your key ("my project uses Postgres", "remember that …"), plus your documents.
DELETE/memoryErase everything Jesse remembers for your key.
GET/agentWhat your key's agent has learned on top of the pristine priors.
POST/agent/resetBack to the latest pristine copy. Add {"documents": true} to remove your documents too.

Documents

MethodPathPurpose
POST/documentsStore {"name", "text"}. Completions on your key search it automatically.
POST/documents/upload?title=…Store a raw text body as a document.
GET/documents, /documents/{id}List your documents, or read one.
DELETE/documents/{id}Remove a document.
POST/documents/querySearch your documents directly: {"query", "k": 5}.

Web

MethodPathPurpose
POST/web_search{"query", "max_results"}: the same search Jesse runs, returned as results with sources.
POST/research{"claim", "urls": [up to 4]}: Jesse gathers evidence for and against the claim and returns a research report with a verdict.
GET/beliefsJesse's belief ledger: claims and how evidence has moved them.

Streaming

With "stream": true the reply arrives as OpenAI server-sent events: chat.completion.chunk objects, then data: [DONE]. The OpenAI SDKs handle this with stream=True.

Errors

Errors use the OpenAI shape: {"error": {"message", "type", "param", "code"}}. The message always says what to do next.

StatuscodeWhat to do
400invalid_json, invalid_requestFix the body. The message names the problem. Not billed.
400model_not_foundUse jesse, jesse-prod, jesse-pristine or jesse-next.
401missing_api_key, invalid_api_keySend Authorization: Bearer jesse_live_…. Keys are on your account page.
402free_prompts_usedYour 60 free exchanges are used. Subscribe to keep going.
403key_revoked, subscription_inactiveCreate a new key, or renew on your account page.
405method_not_allowedCheck the method in the tables above.
429rate_limit_exceededWait for the time in Retry-After. Every response carries x-ratelimit-* headers.

If something fails inside Jesse, you still get a 200 with a reply that says so, never a bare 500. Check jesse.solver in code rather than relying on the status alone.