Guides / Switch to Recall

Switch from Honcho

Recall implements Honcho's v3 REST API. Code written for Honcho keeps working after you change two settings: the base URL and the API key. This guide lists what changes, what stays the same, what Recall adds, the differences that matter, and a checklist.

What changes

SettingOn Recall
Base URLhttps://api.recallmem.dev, or the URL of your own server.
API keyA Recall key, pk_live_…: sign in and open API keys in the dashboard. New accounts get free credit, no card needed.
WorkspaceKeep your workspace ids. Names are unique within your Recall account, so default or my-app is yours to use. A key limited to one workspace works only there; a Whole account key works for every workspace and can also list them.

In Honcho's own clients, that is the constructor:

# Python: honcho-ai
honcho = Honcho(base_url="https://api.recallmem.dev", api_key="pk_live_...", workspace_id="my-app")

// TypeScript: @honcho-ai/sdk
const honcho = new Honcho({ baseURL: "https://api.recallmem.dev", apiKey: "pk_live_...", workspaceId: "my-app" });

Both clients also read their settings from the environment, so an app that configures them that way needs no code change at all:

HONCHO_URL=https://api.recallmem.dev
HONCHO_API_KEY=pk_live_...
HONCHO_WORKSPACE_ID=my-app

What stays the same

The REST paths, request and response bodies, status codes, error bodies ({"detail": …}), pagination and filters; workspaces, peers, sessions, messages, conclusions, peer cards, representations, session context, summaries, scopes and dreams; the reasoning levels minimal to max, with low as the default; streaming, structured output and evidence on chat; webhooks signed with X-Honcho-Signature; and the 40 MCP tools with their names (at /mcp?profile=full).

We checked this with Honcho's published clients, version 2.5.1 of both, against a Recall server with authentication on and a pk_live_ key, as on the hosted service. With only the base URL and key changed, a whole app ran: creating peers and sessions, adding messages and files, context in OpenAI and Anthropic form, chat (plain, streamed, with a level, with evidence, about another peer, structured, workspace-wide), search at every level, peer cards, representations, conclusions, metadata, clones, scopes, dreams, queue status, and the clients' own error classes for a wrong key, a missing message and a workspace that still has sessions. The TypeScript run is a test in the repository (packages/server/test/honcho-client.test.ts) and runs on every change.

You can also move to Recall's own SDKs, npm install @recall-memory/sdk or pip install recall-mem. They have the same objects and calls, plus Recall's additions, retries and idempotent writes. Change the import and the constructor (new Recall({ workspaceId }), Recall(workspace_id=...)); they take their settings from options or from RECALL_URL, RECALL_API_KEY and RECALL_WORKSPACE_ID, never from another product's variables. The usual calls:

import { Recall } from "@recall-memory/sdk";

const recall = new Recall({ workspaceId: "my-app" });

// The same objects and calls as before: peers, sessions, messages, context and chat.
const alice = recall.peer("alice");
const assistant = recall.peer("assistant");
const session = recall.session("support-42");
await session.addPeers([alice, assistant]);
await session.addMessages([
  alice.message("We moved from Amsterdam to Utrecht last week."),
  assistant.message("Congratulations on the move!"),
]);
const context = await session.context({ tokens: 2000, peerTarget: alice });
const messages = context.toOpenAI(assistant);
await recall.waitForIdle(); // for this demo only: real apps do not wait for learning
const city = await alice.chat("Where does alice live now?", { reasoningLevel: "low" });
const hits = await alice.search("Utrecht");

What Recall adds

// What Recall adds. An answer with its sources, a confidence and an honest "I don't know".
const answer = await alice.chat("Where does alice live now?", { includeEvidence: true });
const reply = answer.abstained ? "I'm not sure yet." : answer.content;
const sources = answer.citations;
// One request that stores a message and returns the context for the reply.
const { context: next } = await session.turn([alice.message("Any good cafés near me?")], {
  peerTarget: alice,
  tokens: 2000,
});
// Forget a person: her messages, the facts about her and her peer cards.
const erased = await alice.delete();

Differences that matter

For prices and published benchmark results side by side, see Recall and Honcho compared.

Checklist

  1. Sign in and create a key under API keys: Whole account, or limited to the workspace your app uses.
  2. Set the base URL and key in your client, or HONCHO_URL and HONCHO_API_KEY in its environment. Keep your workspace ids.
  3. Send the conversations you want remembered, with their original created_at. Add hand-written facts and peer cards if you kept them.
  4. If you call the REST API directly, create peers before you read or chat about them.
  5. Point webhooks at your endpoint again, verify them with your webhook_secret, and drop repeated X-Recall-Event-Ids.
  6. For MCP clients, use https://api.recallmem.dev/mcp; add ?profile=full for Honcho's 40 tools.
  7. Ask your most common questions in the Playground, choose a level per question, and check the cost under Usage.

Next: Reasoning levels and models · Cost and speed