Add unlimited memory to your LLM applications with just a URL change.

Prerequisites

You’ll need:
  1. A Supermemory API key
  2. Your LLM provider’s API key

Basic Setup

1

Get Your API Keys

Supermemory API Key:
  1. Sign up at console.supermemory.ai
  2. Navigate to API KeysCreate API Key
  3. Copy your key
Provider API Key:
2

Update Your Base URL

Prepend https://api.supermemory.ai/v3/ to your provider’s URL:
https://api.supermemory.ai/v3/[PROVIDER_URL]
3

Add Authentication

Include both API keys in your requests (see examples below)

Provider URLs

https://api.supermemory.ai/v3/https://api.openai.com/v1/

Implementation Examples

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_OPENAI_API_KEY",
    base_url="https://api.supermemory.ai/v3/https://api.openai.com/v1/",
    default_headers={
        "x-supermemory-api-key": "YOUR_SUPERMEMORY_API_KEY",
        "x-sm-user-id": "user123"  # Unique user identifier
    }
)

# Use as normal
response = client.chat.completions.create(
    model="gpt-4",
    messages=[
        {"role": "user", "content": "Hello!"}
    ]
)

print(response.choices[0].message.content)

Alternative: URL Parameters

If you can’t modify headers, pass authentication via URL parameters:
client = OpenAI(
    api_key="YOUR_OPENAI_API_KEY",
    base_url="https://api.supermemory.ai/v3/https://api.openai.com/v1/chat/completions?userId=user123"
)

# Then set Supermemory API key as environment variable:
# export SUPERMEMORY_API_KEY="your_key_here"

Conversation Management

Managing Conversations

Use x-sm-conversation-id to maintain conversation context across requests:
# Start a new conversation
response1 = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "My name is Alice"}],
    extra_headers={
        "x-sm-conversation-id": "conv_123"
    }
)

# Continue the same conversation later
response2 = client.chat.completions.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "What's my name?"}],
    extra_headers={
        "x-sm-conversation-id": "conv_123"
    }
)
# Response will remember "Alice"

User Identification

Always provide a unique user ID to isolate memories between users:
# Different users have separate memory spaces
client_alice = OpenAI(
    api_key="...",
    base_url="...",
    default_headers={"x-sm-user-id": "alice_123"}
)

client_bob = OpenAI(
    api_key="...",
    base_url="...",
    default_headers={"x-sm-user-id": "bob_456"}
)