MemoryRouter / Documentation
Supported models
Choose the right provider endpoint for MemoryRouter, inspect your account's model catalog, and verify that memory survives a fresh model conversation.
Supported models
MemoryRouter stores conversational memory separately from the model producing the next answer. A supported model can retrieve relevant context from the same vault across sessions. Switching models does not require importing that vault again.
There are two integration paths:
- Proxy API: MemoryRouter retrieves memory, forwards your model request, and captures supported conversation text.
- Local inference: your application calls MemoryRouter for retrieval and storage, while you call your model provider directly. This also supports a local model or a gateway you control.
The public model page is a compatibility overview. Provider access, billing, endpoint format, and the provider's current model availability still determine whether a particular request can run.
Prerequisites
- A MemoryRouter account and an active Memory Key.
- For proxy inference, a valid provider API key with access and billing for the chosen model. A ChatGPT or Claude consumer subscription is not automatically a provider API credential.
- An HTTP client or compatible SDK. The runnable example below uses Python 3 and the OpenAI Python SDK.
- A dedicated test vault for the synthetic verification. Reuse the same vault across both processes.
You can configure supported provider credentials in the MemoryRouter dashboard, or use the proxy's BYOK headers. Do not send provider credentials to the memory-only endpoints when your application calls the provider directly.
1. Choose the endpoint, not just the model name
| Provider or runtime | Recommended request path | Notes |
|---|---|---|
| OpenAI | POST /v1/chat/completions | Use an available chat-completion model, such as openai/gpt-4.1-mini. |
| Anthropic | POST /v1/messages | Native Anthropic request/response format is preferred for provider-specific fields. |
| Google Gemini | POST /v1/models/{model}:generateContent | Use the native Gemini body. Streaming uses the corresponding :streamGenerateContent action. |
| xAI, Cerebras, DeepSeek, Mistral | POST /v1/chat/completions | These use the OpenAI-compatible proxy path and their supported credentials/model IDs. |
| OpenRouter | POST /v1/chat/completions | Availability depends on the configured OpenRouter key and how the requested model is routed. |
| Azure OpenAI | Proxy API or local inference | Azure also needs its resource endpoint, deployment name, and API version. A generic OpenAI key alone is insufficient. |
| Local Ollama or another private runtime | Local inference | The hosted proxy cannot reach localhost on your computer. Keep private inference in your application. |
MemoryRouter also has an OpenAI-compatible translation path for Anthropic and Gemini, but translated requests are not a guarantee that every provider-native feature survives unchanged. Prefer the native endpoint when you need native tools, thinking fields, response blocks, or streaming semantics.
For a router or provider format you already manage, use local inference instead of assuming an arbitrary custom base URL is reachable or supported by the hosted proxy.
2. Inspect your account's catalog
With your Memory Key supplied privately in MEMORYROUTER_API_KEY:
curl --fail-with-body https://api.memoryrouter.ai/v1/models \
-H "Authorization: Bearer $MEMORYROUTER_API_KEY"The response contains:
| Field | Meaning |
|---|---|
providers | Provider groups and catalog model IDs exposed for configured dashboard keys. |
models | Flattened model ID list. |
default | A suggested model, not proof that an inference request will succeed. |
catalog_updated | The catalog snapshot timestamp. Check it before treating the list as current. |
This endpoint reads a catalog snapshot and configured provider keys. It does not call every provider to validate your live entitlement. It is not an exhaustive inventory of every direct-provider route, BYOK credential, or private runtime. An empty list can mean no supported dashboard provider key is configured, even when you plan to supply a provider key through BYOK headers.
Use the provider's current model documentation to confirm model access and endpoint support. Do not infer that a retired model still works because it appears in an older catalog.
3. Set up a proxy client
Install the SDK:
python3 -m pip install --upgrade openaiSupply MEMORYROUTER_API_KEY and OPENAI_API_KEY through your local secret manager or a private shell environment. Neither key belongs in the script, repository, prompt, or screenshot.
Save this as memory-model-proof.py:
import os
import sys
from openai import OpenAI
if len(sys.argv) != 2 or sys.argv[1] not in {"remember", "recall"}:
raise SystemExit("Usage: python3 memory-model-proof.py remember|recall")
client = OpenAI(
api_key=os.environ["OPENAI_API_KEY"],
base_url="https://api.memoryrouter.ai/v1",
default_headers={"X-Memory-Key": os.environ["MEMORYROUTER_API_KEY"]},
)
prompt = (
"Remember this synthetic project fact: for the fictional Cedar launch, "
"the review phrase is copper-orbit-482. Confirm the test fact."
if sys.argv[1] == "remember"
else "What was the review phrase for the fictional Cedar launch? "
"Use retrieved memory, and say if it is unavailable."
)
response = client.chat.completions.create(
model=os.environ.get("MR_MODEL", "openai/gpt-4.1-mini"),
messages=[{"role": "user", "content": prompt}],
)
print(response.choices[0].message.content)The provider key goes in the SDK's normal authorization header. X-Memory-Key identifies the MemoryRouter vault. The example omits a session partition so both processes use the same core vault.
Cross-session proof
Run the write conversation:
python3 memory-model-proof.py rememberAfter the stored exchange becomes searchable, launch a new process with no earlier chat messages:
python3 memory-model-proof.py recallThe second process sends only the question, not the expected answer copper-orbit-482. Count the proof when it returns that phrase from retrieved memory. If it does not, confirm the fact exists with a MemoryRouter search before retrying. A successful model response by itself does not prove memory was stored or retrieved.
To test another OpenAI-compatible model on the same configured provider, set MR_MODEL to an available model ID and repeat only recall. For a different provider, change the credential and client endpoint/body appropriately. Do not reuse an OpenAI key as an Anthropic, Gemini, or OpenRouter key.
Limitations
- Model support does not include the provider's inference cost or bypass account access restrictions, usage limits, or deprecations.
- Proxy support is endpoint-specific. A chat model listing does not imply support for every provider API, such as image generation, audio, realtime, batch, or embeddings.
- Model output is probabilistic. Relevant retrieval improves continuity but does not guarantee the model follows every retrieved fact.
- MemoryRouter retrieval does not enlarge the model's context window. Retrieved memory still consumes input context.
- The same Memory Key, embedding selection, and retrieval scope must be used to share memory. Deliberately isolated project/session scopes do not become shared merely because a model changes.
- Memory-only mode still sends the text you submit for retrieval/storage to MemoryRouter. Keeping inference local is not the same as keeping all conversation data on-device.
Troubleshooting
| Symptom | Check |
|---|---|
No API key configured for provider | Add the intended provider key in the dashboard or use the correct BYOK headers. Check the model prefix and routing. |
| Model not found or provider permission error | Verify the exact model/deployment ID and your provider account access. The catalog is not a live entitlement check. |
| Claude or Gemini features are missing | Use the native endpoint instead of the compatibility translation path. |
| Local model is unreachable | The hosted proxy's localhost is not your machine. Use the memory-only local-inference workflow. |
| Model answers normally but remembers nothing | Confirm the Memory Key, memory-enabled mode, stored source fact, and consistent core/session scope. |
| It remembers only within one process | Clear the client's previous message history during the proof. Then verify retrieval in a fresh request rather than relying on the context window. |
| Provider rate limit | Respect that provider's retry guidance. Switching Memory Keys is not a rate-limit workaround. |