Ingestion
The Ingestion API allows you to import documents and web pages directly into Memsolus as memories. Submit a file upload or a URL, and the system processes it asynchronously — extracting text, splitting it into chunks, and storing each chunk as an individual memory.
Ingest endpoints require the hasIngest entitlement on your plan.
Endpoint Overview
| Method | Path | Permission | Description |
|---|---|---|---|
POST | /v1/memories/ingest | ingest.write | Create an ingestion job |
GET | /v1/ingest-jobs | ingest.read | List ingestion jobs |
GET | /v1/ingest-jobs/:id | ingest.read | Get ingestion job details |
Ingest Job Object
| Field | Type | Description |
|---|---|---|
id | string | UUID of the ingest job |
format | PDF | CSV | MARKDOWN | JSON | URL | TXT | DOCX | HTML | Input format |
workspace_id | string | Target workspace UUID |
user_id | string | User to associate ingested memories with |
agent_id | string | null | Agent identifier |
source_url | string | null | Source URL (for URL-based ingest) |
categories | string[] | null | Categories applied to ingested memories |
status | PENDING | PROCESSING | COMPLETED | FAILED | Current job status |
error | string | null | Error message if status is FAILED |
memories_created | number | null | Number of memories created on completion |
created_at | string | ISO 8601 creation timestamp |
updated_at | string | ISO 8601 last-update timestamp |
Create Ingest Job
/v1/memories/ingestSubmit a file or URL for ingestion into memory
This endpoint accepts multipart/form-data. Either provide a file upload or a source_url — at least one is required.
Supported Formats
| Format | MIME type | Max file size |
|---|---|---|
PDF | application/pdf | 20 MB |
CSV | text/csv | 10 MB |
MARKDOWN | text/markdown, text/plain | 5 MB |
JSON | application/json | 5 MB |
TXT | text/plain | 5 MB |
DOCX | application/vnd.openxmlformats-officedocument.wordprocessingml.document | 20 MB |
HTML | text/html | 5 MB |
URL | — | — |
| Parameter | Type | Description |
|---|---|---|
formatrequired | enum | Input format: `PDF`, `CSV`, `MARKDOWN`, `JSON`, `TXT`, `DOCX`, `HTML`, or `URL` |
workspace_idrequired | string (UUID) | Target workspace to store ingested memories |
user_idrequired | string | User to associate the ingested memories with (max 255 chars) |
file | file | File upload (multipart). Required unless `source_url` is provided. |
source_url | string (URL) | Public URL to fetch and ingest. Required unless `file` is provided. |
agent_id | string | Agent identifier for the ingested memories (max 255 chars) |
categories | string[] | Category tags applied to all ingested memories (max 20 items) |
options | string (JSON) | Optional JSON string with additional processing options (max 4096 chars) |
File upload example
URL ingest example
The job is processed asynchronously. Poll GET /v1/ingest-jobs/:id until status is COMPLETED or FAILED.
List Ingest Jobs
/v1/ingest-jobsList all ingestion jobs for the account
| Parameter | Type | Description |
|---|---|---|
page | number | Page number (default: 1) |
page_size | number | Results per page, max 100 (default: 20) |
Get Ingest Job
/v1/ingest-jobs/:idGet the full details and status of an ingestion job
Job Lifecycle
Processing time depends on document size. A 20-page PDF typically completes in under 30 seconds.