# JavaScript SDK

## Requirements

- Node.js 18 or newer
- a Memside API key

## Install

```bash
npm install memside
```

## Create a client

```js
import { MemsideClient } from "memside";

const memside = new MemsideClient({
  apiKey: process.env.MEMSIDE_API_KEY
});
```

## Load startup context

```js
const startup = await memside.context.startup();
console.log(startup);
```

## Search Memories

```js
const results = await memside.memories.search({
  q: "weekend trip",
  limit: 5
});

console.log(results);
```

## Get one Memory

```js
const memory = await memside.memories.get("memory_id_here");
console.log(memory);
```

## Create a Memory

```js
const created = await memside.memories.create({
  text: "Weekend trip plan\nHotel confirmed. Choose activities next.",
  type: "note",
  sensitivity: "private",
  tags: ["travel", "planning"]
});

console.log(created);
```

Creating, updating, and deleting changes account data. Review the request before
running it.

## Available areas

Context:

- `memside.context.startup()`
- `memside.context.resume()`
- `memside.context.workspaceProfile()`

Memories:

- `memside.memories.list()`
- `memside.memories.search()`
- `memside.memories.get()`
- `memside.memories.getBatch()`
- `memside.memories.create()`
- `memside.memories.update()`
- `memside.memories.delete()`

## Errors

Failed requests throw `MemsideError` with fields such as:

- `status`
- `code`
- `retryable`
- `requestId`
- `details`

```js
import { MemsideClient, MemsideError } from "memside";

try {
  await memside.memories.get("missing_id");
} catch (error) {
  if (error instanceof MemsideError) {
    console.error(error.status, error.code, error.message);
  }
}
```

## Source

[JavaScript SDK on GitHub](https://github.com/memside/memside/tree/main/packages/memside)

## Next steps

- [API keys](/developers/api-keys/)
- [REST API](/developers/api-reference/)
- [Python SDK](/developers/python-sdk/)
