> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://help.getzep.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://help.getzep.com/_mcp/server.

# Ingest

> Add data to user graphs or shared Context Graphs with the SDK, zep-ingest, or the Batch API.

Zep builds Context Graphs from the data you provide. First select the graph that owns the context. Then choose a method by the kind of write: a live conversation turn, a bulk or historical import, or an individual write from your application.

This is the **Ingest** stage of [Working with Context](/working-with-context). Before designing any import, review [Prepare Data for Ingestion](/prepare-data-for-ingestion) to preserve entity identity, source context, and event time.

## Choose an ingestion path

| What you are adding                                                                                                     | Use                                                               |
| ----------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------- |
| A message in a live conversation, as your agent sends and receives it                                                   | [`thread.add_messages`](/adding-messages) in the Zep SDK          |
| Historical data you are loading for the first time: documents, transcripts, email, Slack exports, or past conversations | [`zep-ingest`](/zep-ingest)                                       |
| A recurring bulk import (hourly or nightly dump, ETL output)                                                            | [`zep-ingest`](/zep-ingest)                                       |
| An individual document, API response, business event, or webhook payload that your application already holds            | [`graph.add`](/adding-business-data) with `user_id` or `graph_id` |

### Live conversation turns: use the SDK

Add each message to Zep as your agent sends and receives it, using `thread.add_messages`. The SDK already runs inside the service handling the conversation, and a chat turn needs no preparation beyond the message itself. See [Adding messages](/adding-messages).

### Backfills and bulk imports: use `zep-ingest`

[`zep-ingest`](/zep-ingest) is the recommended path for a one-time backfill of your history, or a recurring job that prepares records and then ingests them. You put the data in the form the package requires. Built-in loaders take a path or glob. The package prepares, previews, submits in order, and monitors.

> **Note**
>
> You do not have to use `zep-ingest`. It is a convenience layer over the Zep SDK, so calling [`graph.add`](/adding-business-data) or the [Batch API](/adding-batch-data) directly is fully supported.

### Individual writes: use `graph.add`

When your application already holds the data: a webhook body, an API response, a single document: call [`graph.add`](/adding-business-data) directly. Built-in `zep-ingest` loaders do not accept in-memory payloads today, so routing those through the package means writing a custom loader yourself; for most event-driven paths the SDK call is simpler. See [Adding business data](/adding-business-data).

When a chunk reads better against earlier chunks of the same source, most often to resolve a pronoun, pass a [`document_id`](/documents) so Zep groups those chunks for prior-episode context and summarization. Do not share an ID across independent records.

## Available methods

| Method                                            | Data Type                                  | Best For                                                              |
| ------------------------------------------------- | ------------------------------------------ | --------------------------------------------------------------------- |
| [**Create an Ingestion Pipeline**](/zep-ingest)   | Multiple source types                      | Backfills and bulk imports, with preparation, preview, and monitoring |
| [**Adding messages**](/adding-messages)           | Chat messages                              | Live conversation turns from your agent                               |
| [**Adding business data**](/adding-business-data) | Text, JSON, or message format              | Individual documents, API responses, emails, or other business data   |
| [**Batch ingestion**](/adding-batch-data)         | Many episodes and/or messages in one batch | The transport `zep-ingest` submits through, or your own large imports |

## Next: shape the graph

After ingesting data, Zep processes it to build Context Graphs. Customize extraction and summaries under [Shape the Graph](/customizing-context).