> ## Documentation Index
> Fetch the complete documentation index at: https://docs.memoryo.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenAI Integration

> Complete working MemoryOS integration with the OpenAI Python and TypeScript SDKs.

Tenant-scoped MemoryOS with OpenAI. The pattern is: write memories as facts emerge, retrieve before every model call, prepend `system_prompt_addition` only when not in passthrough.

<CodeGroup>
  ```python Python theme={null}
  import os
  from memoryos import Memory
  from openai import OpenAI

  memory = Memory(api_key=os.environ["MEMORYOS_API_KEY"])
  openai_client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

  external_user_id = "customer-123"
  latest_user_message = "Can you answer the way I usually prefer?"

  memory.add(
      messages=[{"role": "user", "content": "I prefer concise technical explanations with examples."}],
      external_user_id=external_user_id,
      metadata={"channel": "support-chat"},
  )

  memories = memory.get(query=latest_user_message, external_user_id=external_user_id, limit=5)

  system_prompt = "You are a helpful assistant."
  if not memories.is_passthrough and memories.system_prompt_addition:
      system_prompt = f"{system_prompt}\n\n{memories.system_prompt_addition}"

  response = openai_client.responses.create(
      model="gpt-4.1-mini",
      input=[
          {"role": "system", "content": system_prompt},
          {"role": "user", "content": latest_user_message},
      ],
  )

  print(response.output_text)
  memory.close()
  ```

  ```ts TypeScript theme={null}
  import OpenAI from "openai";
  import { MemoryOS } from "@memoryos/sdk";

  const memory = new MemoryOS(process.env.MEMORYOS_API_KEY!);
  const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY! });

  const externalUserId = "customer-123";
  const latestUserMessage = "Can you answer the way I usually prefer?";

  await memory.add(
    [{ role: "user", content: "I prefer concise technical explanations with examples." }],
    externalUserId,
    undefined,
    { channel: "support-chat" },
  );

  const memories = await memory.get(latestUserMessage, externalUserId, 5);

  let systemPrompt = "You are a helpful assistant.";
  if (!memories.isPassthrough && memories.systemPromptAddition) {
    systemPrompt = `${systemPrompt}\n\n${memories.systemPromptAddition}`;
  }

  const response = await openai.responses.create({
    model: "gpt-4.1-mini",
    input: [
      { role: "system", content: systemPrompt },
      { role: "user", content: latestUserMessage },
    ],
  });

  console.log(response.output_text);
  ```
</CodeGroup>

**Key rules:**

* Keep `MEMORYOS_API_KEY` server-side
* Don't fail the LLM call when MemoryOS is in passthrough
* Treat `system_prompt_addition` as optional — the call should work with or without it

For the cross-agent Memory Passport flow, see [Cross-agent memory sharing](/guides/cross-agent-sharing).
