# Conversations

> Add a conversation as your framework holds it, keeping who said what.

Pass the messages as your framework already holds them. Who said what is kept, so "I prefer mornings"
from the user becomes a fact about the user, not about your assistant.

```python
mem.memories.add(messages=history)
```

```ts
await mem.memories.add({ messages });
```

```bash
curl https://api.geniffy.com/v1/memories \
  -H "Authorization: Bearer $GENIFFY_API_KEY" \
  -H "X-Geniffy-Space: customer_1042" \
  -H "Content-Type: application/json" \
  -d '{"messages": [{"role": "user", "content": "I prefer mornings."},
                   {"role": "assistant", "content": "Noted, I will book you before noon."}]}'
```

- Messages from OpenAI, Anthropic, Gemini and the Vercel AI SDK go in as they are: `content` as a string
  or as a list of blocks or parts, or `parts` on its own.
- Only text is read. Images, tool calls and tool results inside a message are skipped, and so are system
  and developer messages. A message with the role `tool` is kept under its `name`.
- Up to 500 messages in one call. A conversation is listed as `Conversation` unless you give it a title.

Source: https://docs.geniffy.com/add-memories/conversations
