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

# Memos

> API reference for the POST /api/v1/memo endpoint

## Memos API

Manage your memos, including creating, updating, deleting, and retrieving them.

### POST /api/v1/memo

Create a new memo. The memo will be automatically processed (summarized, chunked, and indexed for search).

**Authentication:** Project API Key from [https://platform.useskald.com](https://platform.useskald.com)

**Request:**

```json theme={null}
{
    "title": "Meeting Notes",
    "content": "Full content of the memo...",
    "metadata": {
        "type": "notes",
        "author": "John Doe"
    },
    "reference_id": "external-id-123",
    "tags": ["meeting", "q1"],
    "source": "notion",
    "expiration_date": "2024-12-31T23:59:59Z"
}
```

**Required Fields:**

* `title` (string, max 255 chars)
* `content` (string)

**Optional Fields:**

* `metadata` (object): Custom JSON metadata
* `reference_id` (string, max 255 chars): External reference ID
* `tags` (array of strings): Tags for categorization
* `source` (string, max 255 chars): Source system name
* `expiration_date` (datetime): When the memo should expire

**Response:**

```json theme={null}
{
    "ok": true
}
```

### GET /api/v1/memo/{memo_id}

Get memo details by UUID or client reference ID.

**Authentication:** Project API Key from [https://platform.useskald.com](https://platform.useskald.com)

**Query Parameters:**

* `id_type` (string, optional): Type of identifier used. Must be either:
  * `memo_uuid` (default) - Use memo UUID
  * `reference_id` - Use client\_reference\_id

**Examples:**

Get by UUID (default):

```
GET /api/v1/memo/550e8400-e29b-41d4-a716-446655440000
```

Get by client reference ID:

```
GET /api/v1/memo/external-id-123?id_type=reference_id
```

**Response:**

```json theme={null}
{
    "uuid": "memo-uuid",
    "created_at": "2024-01-15T10:30:00Z",
    "updated_at": "2024-01-15T10:30:00Z",
    "title": "Meeting Notes",
    "content": "Full content of the memo...",
    "summary": "Discussion about Q1 goals",
    "content_length": 1234,
    "metadata": { "type": "notes" },
    "client_reference_id": "external-id-123",
    "source": "notion",
    "type": "document",
    "expiration_date": "2024-12-31T23:59:59Z",
    "archived": false,
    "pending": false,
    "tags": [
        {
            "uuid": "tag-uuid",
            "tag": "meeting"
        }
    ],
    "chunks": [
        {
            "uuid": "chunk-uuid",
            "chunk_content": "First chunk content...",
            "chunk_index": 0
        }
    ]
}
```

**Error Responses:**

Invalid id\_type (400):

```json theme={null}
{
    "error": "id_type must be either 'memo_uuid' or 'reference_id'"
}
```

Memo not found (404):

```json theme={null}
{
    "error": "Memo not found"
}
```

### PATCH /api/v1/memo/{memo_id}

Partially update an existing memo by UUID or client reference ID. If the content is updated, all related data (summary, tags, chunks) will be deleted and the memo will be reprocessed.

**Authentication:** Project API Key from [https://platform.useskald.com](https://platform.useskald.com)

**Query Parameters:**

* `id_type` (string, optional): Type of identifier used. Must be either:
  * `memo_uuid` (default) - Use memo UUID
  * `reference_id` - Use client\_reference\_id

**Examples:**

Update by UUID (default):

```
PATCH /api/v1/memo/550e8400-e29b-41d4-a716-446655440000
```

Update by client reference ID:

```
PATCH /api/v1/memo/external-id-123?id_type=reference_id
```

**Request:**

```json theme={null}
{
    "title": "Updated Title",
    "metadata": { "type": "updated" },
    "client_reference_id": "new-ref-id",
    "source": "updated-source",
    "expiration_date": "2025-12-31T23:59:59Z",
    "content": "Updated content..."
}
```

**All Fields Optional:**

* `title` (string, max 255 chars): Update the memo title
* `metadata` (object): Update custom JSON metadata
* `client_reference_id` (string, max 255 chars): Update external reference ID
* `source` (string, max 255 chars): Update source system name
* `expiration_date` (datetime): Update expiration date
* `content` (string): Update the memo content (triggers reprocessing)

**Response:**

```json theme={null}
{
    "ok": true
}
```

**Notes:**

* When `content` is updated, the memo is automatically reprocessed (summary, tags, and chunks are regenerated)
* When other fields are updated without `content`, related data is preserved

**Error Responses:**

Invalid id\_type (400):

```json theme={null}
{
    "error": "id_type must be either 'memo_uuid' or 'reference_id'"
}
```

Memo not found (404):

```json theme={null}
{
    "error": "Memo not found"
}
```

Access denied (403):

```json theme={null}
{
    "error": "Resource does not belong to the project"
}
```

or

```json theme={null}
{
    "error": "Access denied"
}
```

### DELETE /api/v1/memo/{memo_id}

Delete a memo by UUID or client reference ID and all its associated data (content, summary, tags, chunks).

**Authentication:** Project API Key from [https://platform.useskald.com](https://platform.useskald.com)

**Query Parameters:**

* `id_type` (string, optional): Type of identifier used. Must be either:
  * `memo_uuid` (default) - Use memo UUID
  * `reference_id` - Use client\_reference\_id

**Examples:**

Delete by UUID (default):

```
DELETE /api/v1/memo/550e8400-e29b-41d4-a716-446655440000
```

Delete by client reference ID:

```
DELETE /api/v1/memo/external-id-123?id_type=reference_id
```

**Response:** `204 No Content`

**Error Responses:**

Invalid id\_type (400):

```json theme={null}
{
    "error": "id_type must be either 'memo_uuid' or 'reference_id'"
}
```

Memo not found (404):

```json theme={null}
{
    "error": "Memo not found"
}
```

Access denied (403):

```json theme={null}
{
    "error": "Resource does not belong to the project"
}
```

or

```json theme={null}
{
    "error": "Access denied"
}
```
