§ Interfaces
JavaScript SDK. Memory API client for OctaMem.
Official SDK for OctaMem. Use it from Node.js, browsers, Deno, or Bun. TypeScript types included, no runtime dependencies.
Package
@octamem/octamem-js (npm)
Version
1.0.0
Requires
Node.js 16+ (18+ recommended)
Installation
npmbash
npm install @octamem/octamem-jsor:
yarnbash
yarn add @octamem/octamem-jspnpmbash
pnpm add @octamem/octamem-jsQuick start
ESM / TypeScripttypescript
import { OctaMem } from '@octamem/octamem-js';
const memory = new OctaMem('your-api-key');
// Validate key and get memory/plan/storage/wallet
const info = await memory.details();
// Search memory (uses tokens)
const results = await memory.search({
query: 'What did we decide about the project deadline?',
previousContext: 'We were discussing Q1 deliverables.',
});
// Store content (uses tokens and storage)
await memory.add({
content: 'Project deadline is March 31. Frontend by March 20.',
previousContext: 'Meeting notes from Monday.',
});API
Base URL: https://platform.octamem.com. All endpoints use the API key via Authorization: Bearer … or X-API-Key.
details() — validate key and get info
Check key validity and current limits before calling search or add.
details.tstypescript
const info = await memory.details();
if (info.valid) {
console.log(info.memory, info.plan, info.wallet_balance);
} else {
console.log(info.message);
}search(params) — query memory
Sends a search query and optional previous context. Charges tokens; returns retrieval result plus tokens, cost, wallet_balance.
search.tstypescript
const data = await memory.search({
query: 'search term',
previousContext: 'optional prior context',
});
console.log(data.tokens, data.cost, data.wallet_balance);add(params) — store content
Stores content and optional context. Charges tokens and updates storage.
add.tstypescript
const data = await memory.add({
content: 'Content to store',
previousContext: 'optional context',
});
console.log(data.stored, data.bytes, data.tokens, data.cost);Configuration
config.tstypescript
const memory = new OctaMem('your-api-key', {
baseUrl: 'https://platform.octamem.com', // default
timeout: 30_000,
retries: 3,
retryDelay: 1_000,
});Error handling
errors.tstypescript
import {
OctaMem,
AuthenticationError,
InsufficientBalanceError,
StorageFullError,
AgentError,
RateLimitError,
NetworkError,
TimeoutError,
ValidationError,
} from '@octamem/octamem-js';
try {
const memory = new OctaMem('your-api-key');
await memory.add({ content: 'test' });
} catch (error) {
if (error instanceof AuthenticationError) {
// 401 — invalid or expired API key
} else if (error instanceof InsufficientBalanceError) {
// 402 — wallet cannot cover token cost
} else if (error instanceof StorageFullError) {
// 400 — adding would exceed storage limit
} else if (error instanceof AgentError) {
// 502 — retrieval/storage agent error
} else if (error instanceof RateLimitError) {
// 429 — too many requests
} else if (error instanceof NetworkError) {
// Connection / transport failure
} else if (error instanceof TimeoutError) {
// Request exceeded configured timeout
} else if (error instanceof ValidationError) {
// Invalid input (e.g. API key format)
}
}- AuthenticationError401 — invalid or expired API key
- InsufficientBalanceError402 — wallet cannot cover token cost
- StorageFullError400 — adding would exceed storage limit
- AgentError502 — retrieval / storage agent error
- RateLimitError429 — too many requests
- NetworkErrorConnection / transport failure
- TimeoutErrorRequest exceeded configured timeout
- ValidationErrorInvalid input (e.g. API key format)
TypeScript
types.tstypescript
import {
OctaMem,
type OctaMemConfig,
type SearchParams,
type SearchData,
type AddParams,
type AddData,
type DetailsData,
type DetailsDataValid,
} from '@octamem/octamem-js';
const memory = new OctaMem('your-api-key', { timeout: 60_000 });
const info: DetailsData = await memory.details();
const searchParams: SearchParams = { query: 'test', previousContext: '' };
const searchResult: SearchData = await memory.search(searchParams);
const addResult: AddData = await memory.add({ content: 'new memory' });Browser
ES modules
browser-esm.htmlhtml
<script type="module">
import { OctaMem } from '@octamem/octamem-js';
const memory = new OctaMem('your-api-key');
const results = await memory.search({ query: 'test' });
console.log(results);
</script>UMD
browser-umd.htmlhtml
<script src="https://unpkg.com/@octamem/octamem-js/dist/umd/octamem.min.js"></script>
<script>
const memory = new OctaMem.OctaMem('your-api-key');
memory.search({ query: 'test' }).then(console.log).catch(console.error);
</script>CommonJS
index.cjsjavascript
const { OctaMem } = require('@octamem/octamem-js');
const memory = new OctaMem('your-api-key');
async function main() {
const results = await memory.search({ query: 'test' });
console.log(results);
}
main();Requirements
- Node.js 16+ (18+ recommended for native fetch).
- Environments with
fetchsupport (modern browsers, Deno, Bun).