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

# Knowledge Quickstart

> Connect your first data source to Recallio in a few minutes

This quickstart takes you from a new Recallio workspace to sending your first payload into the Knowledge service.

## Step 1 — Generate an API key

1. Sign in to the Recallio dashboard.
2. Navigate to **API Keys** and click **Create key**.
3. Copy the value immediately; you will not be able to retrieve it again. This value is used as the bearer token in the `Authorization` header for every API request.

<Warning>
  Treat the key like a password. Rotate it if it is exposed outside your team.
</Warning>

## Step 2 — Create a project (environment)

Projects help you scope knowledge to a specific portfolio, property, or testing environment.

1. In the dashboard, go to **Settings → Projects**.
2. Create a project for each environment you need (for example **Home A**, **Home B**, **Sandbox**).
3. Copy the `ProjectId` from the project details. Include it with every request so Recallio knows where to store the data.

> Skip this step only if the knowledge should be visible to the entire organization.

## Step 3 — POST to `/api/Knowledge/livedata`

Use the API key and `ProjectId` to send structured data into Recallio. The `type` field is a free-form string that describes the payload.

```bash theme={null}
curl https://app.recallio.ai/api/Knowledge/livedata \
  -H "Authorization: Bearer $RECALLIO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "projectId": "project_abc",
    "userId": "agent-42",
    "type": "listing",
    "rawJson": {
      "listingId": "LST-1001",
      "address": "500 Market Street",
      "bedrooms": 3,
      "bathrooms": 2,
      "status": "active",
      "askingPrice": 425000
    }
  }'
```

The endpoint returns `202 Accepted` while the payload is indexed. Within a few seconds you can query the Recallio assistant and it will use the new listing facts in its responses.

### Payload tips

* Choose a `type` value per domain: examples include `"resident"`, `"maintenance-ticket"`, `"inspection"`.
* Keep `rawJson` under 30 KB. When sending nested objects, convert large arrays to summaries before posting.
* Provide `userId` when the knowledge should be associated with a specific resident or staff member; leave it blank for shared content.

## Step 4 — Confirm ingestion in the dashboard

Open **Knowledge → Live Data** to verify that Recallio received the payload. You can filter by project or type to spot-check the stored record.

## Optional — Upload supporting documents

* Drag-and-drop files in **Knowledge → Memory Sources** to share knowledge with the whole team or with a specific project.
* Prefer the API when automating uploads:

```bash theme={null}
curl https://app.recallio.ai/api/Knowledge/document \
  -H "Authorization: Bearer $RECALLIO_API_KEY" \
  -F "File=@lease.pdf" \
  -F "ProjectId=project_abc" \
  -F "Tags=lease" \
  -F "ConsentFlag=true"
```

The document endpoint asynchronously extracts text and links it to the chosen project. Track processing status on the Memory Sources page.

### Verify document ingestion via API

List the processed documents and confirm the file appears with the correct project assignment.

```bash theme={null}
curl "https://app.recallio.ai/api/Knowledge/document?projectId=project_abc&page=1&pageSize=20" \
  -H "Authorization: Bearer $RECALLIO_API_KEY"
```

The response returns paginated document metadata, including filenames, tags, and processing status.

## Next steps

* Review the [Knowledge Overview](/index) for architectural context.
* Dive into the [Implementation Deep Dive](/development) to explore schema details, validation strategies, and error handling.
* Explore the full OpenAPI spec in the [Recallio Swagger reference](https://app.recallio.ai/swagger/index.html).
