aboutsummaryrefslogtreecommitdiff
path: root/apps/docs/memory-router/usage.mdx
blob: 68dad6f68a7fbeb7d30f490d57e19434d57d0388 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
---
title: "Usage"
description: "How to implement the Memory Router in your application"
sidebarTitle: "Usage"
---

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

## Prerequisites

You'll need:
1. A [Supermemory API key](https://console.supermemory.ai)
2. Your LLM provider's API key

## Basic Setup

<Steps>
  <Step title="Get Your API Keys">
    **Supermemory API Key:**
    1. Sign up at [console.supermemory.ai](https://console.supermemory.ai)
    2. Navigate to **API Keys** → **Create API Key**
    3. Copy your key

    **Provider API Key:**
    - [OpenAI](https://platform.openai.com/api-keys)
    - [Anthropic](https://console.anthropic.com/settings/keys)
    - [Google Gemini](https://aistudio.google.com/app/apikey)
    - [Groq](https://console.groq.com/keys)
  </Step>

  <Step title="Update Your Base URL">
    Prepend `https://api.supermemory.ai/v3/` to your provider's URL:

    ```
    https://api.supermemory.ai/v3/[PROVIDER_URL]
    ```
  </Step>

  <Step title="Add Authentication">
    Include both API keys in your requests (see examples below)
  </Step>
</Steps>

## Provider URLs

<CodeGroup>

```text OpenAI
https://api.supermemory.ai/v3/https://api.openai.com/v1/
```

```text Anthropic
https://api.supermemory.ai/v3/https://api.anthropic.com/v1/
```

```text Google Gemini
https://api.supermemory.ai/v3/https://generativelanguage.googleapis.com/v1beta/openai/
```

```text Groq
https://api.supermemory.ai/v3/https://api.groq.com/openai/v1/
```

</CodeGroup>

## Implementation Examples

<Tabs>
  <Tab title="Python">
    ```python
    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-5",
        messages=[
            {"role": "user", "content": "Hello!"}
        ]
    )

    print(response.choices[0].message.content)
    ```
  </Tab>

  <Tab title="TypeScript">
    ```typescript
    import OpenAI from 'openai';

    const client = new OpenAI({
      apiKey: process.env.OPENAI_API_KEY,
      baseURL: 'https://api.supermemory.ai/v3/https://api.openai.com/v1/',
      defaultHeaders: {
        'x-supermemory-api-key': process.env.SUPERMEMORY_API_KEY,
        'x-sm-user-id': 'user123'  // Unique user identifier
      }
    });

    // Use as normal
    const response = await client.chat.completions.create({
      model: 'gpt-5',
      messages: [
        { role: 'user', content: 'Hello!' }
      ]
    });

    console.log(response.choices[0].message.content);
    ```
  </Tab>

  <Tab title="cURL">
    ```bash
    curl -X POST "https://api.supermemory.ai/v3/https://api.openai.com/v1/chat/completions" \
      -H "Authorization: Bearer YOUR_OPENAI_API_KEY" \
      -H "x-supermemory-api-key: YOUR_SUPERMEMORY_API_KEY" \
      -H "x-sm-user-id: user123" \
      -H "Content-Type: application/json" \
      -d '{
        "model": "gpt-5",
        "messages": [{"role": "user", "content": "Hello!"}]
      }'
    ```
  </Tab>
</Tabs>

## Alternative: URL Parameters

If you can't modify headers, pass authentication via URL parameters:

<CodeGroup>

```python Python
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"
```

```typescript TypeScript
const client = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
  baseURL: 'https://api.supermemory.ai/v3/https://api.openai.com/v1/chat/completions?userId=user123'
});

// Set Supermemory API key as environment variable:
// SUPERMEMORY_API_KEY="your_key_here"
```

```bash cURL
curl -X POST "https://api.supermemory.ai/v3/https://api.openai.com/v1/chat/completions?userId=user123" \
  -H "Authorization: Bearer YOUR_OPENAI_API_KEY" \
  -H "x-supermemory-api-key: YOUR_SUPERMEMORY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-5", "messages": [{"role": "user", "content": "Hello!"}]}'
```

</CodeGroup>

## Conversation Management

### Managing Conversations

Use `x-sm-conversation-id` to maintain conversation context across requests:

```python
# Start a new conversation
response1 = client.chat.completions.create(
    model="gpt-5",
    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-5",
    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:

```python
# 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"}
)
```