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

# Get End-User Data

> Read everything a Guru holds about one end user

People who reach your Guru through a widget, a chat bot or the API do not have a
Gurubase account, so they cannot use the account tools to see or delete their data.
This endpoint is how the team running the Guru answers their access (GDPR Art. 15)
and erasure (Art. 17) requests. Which party is the controller for that data
depends on your deployment and your agreement with us; see the
[privacy policy](https://gurubase.io/privacy-policy/) and your DPA rather than
treating this page as the answer.

Everything is scoped to the Guru in the path, so a key cannot reach another Guru's
data even for the same end-user id.

## Path Parameters

<ParamField path="guru_slug" type="string" required>
  The Guru the end user interacted with
</ParamField>

<ParamField path="external_user_id" type="string" required>
  The identifier your integration supplied when the questions were asked
</ParamField>

## Headers

<ParamField header="x-api-key" type="string" required>
  Your API key. You can obtain one from the [Gurubase dashboard](https://app.gurubase.io/api-keys).
</ParamField>

## Reading their data

`GET` returns their questions, the questions the Guru declined to answer, their
conversations, their semantic searches, any stored profile, and any memories held
about them.

Results are paged. Each collection reports whether more remains, so keep raising
`offset` until every `has_more` is false: an access response has to be complete,
and stopping at the first page would understate what you hold. Memories come back
on the first page only.

<ParamField query="limit" type="integer" default="100">
  Records per collection, per page. Maximum 1000.
</ParamField>

<ParamField query="offset" type="integer" default="0">
  How many records to skip.
</ParamField>

<ResponseExample>
  ```json 200 theme={null}
  {
      "external_user_id": "end-user-123",
      "data": {
          "questions": [
              {
                  "slug": "where-is-my-order",
                  "question": "Where is my order?",
                  "user_question": "where is my order",
                  "content": "Your order shipped on...",
                  "source": "WIDGET QUESTION",
                  "date_created": "2026-08-01T09:12:44Z"
              }
          ],
          "rejected_questions": [],
          "conversations": [
              {
                  "id": "1b9e86c9-87a8-472a-a6bf-6522e89b2de8",
                  "date_created": "2026-08-01T09:12:40Z",
                  "last_used": "2026-08-01T09:15:02Z"
              }
          ],
          "searches": [
              {
                  "query": "how do I appeal a decision",
                  "selected_labels": [],
                  "date_created": "2026-08-01T09:10:11Z"
              }
          ],
          "profile": [
              {
                  "profile_data": { "name": "Ada", "children": [{ "name": "Byron" }] },
                  "created_at": "2026-07-02T11:00:00Z",
                  "updated_at": "2026-08-01T09:10:11Z"
              }
          ],
          "memories": [
              { "memory": "Prefers to be contacted by email" }
          ],
          "page": {
              "limit": 100,
              "offset": 0,
              "has_more": {
                  "questions": false,
                  "rejected_questions": false,
                  "conversations": false,
                  "searches": false
              }
          }
      }
  }
  ```
</ResponseExample>

`profile` is not paged. There is at most one per person per Guru, and it is the
most sensitive record here, so it is returned on every page rather than only the
first.

If the memory store cannot be read, the request fails with `500` rather than
returning a partial copy. An access response that silently omits data understates
what you hold, which is worse than an error you can retry.

To erase the same person's data, see
[Erase End-User Data](/api-reference/endpoints/erase-end-user-data).
