Integration
Tutorial
April 13, 2026
REM Labs REST API: Complete Reference Guide
The REM Labs REST API works from any language, framework, or platform that can make HTTP requests. This guide covers every endpoint with curl examples, request parameters, response schemas, and error handling. If you can call a URL, you can add persistent AI memory.
Authentication
All requests require a Bearer token in the Authorization header:
Authorization: Bearer your-api-key
Get your free API key at remlabs.ai/console. The base URL for all endpoints is https://api.remlabs.ai/v1.
POST /v1/remember
Store a new memory.
curl -X POST https://api.remlabs.ai/v1/remember \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"content": "We use PostgreSQL 15 for the main database",
"tags": ["database", "infrastructure"],
"namespace": "my-project",
"metadata": {"source": "architecture-review"}
}'
Parameters
- content (required) -- the text to remember, up to 32KB
- tags (optional) -- array of string tags for categorization
- namespace (optional) -- isolate memories into named scopes
- metadata (optional) -- arbitrary JSON object for structured data
Response (201)
{
"id": "mem_abc123xyz",
"content": "We use PostgreSQL 15 for the main database",
"tags": ["database", "infrastructure"],
"namespace": "my-project",
"created_at": "2026-04-13T10:30:00.000Z"
}
POST /v1/recall
Search memories using multi-signal fusion (semantic + full-text + entity graph).
curl -X POST https://api.remlabs.ai/v1/recall \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{
"query": "what database do we use",
"namespace": "my-project",
"limit": 5,
"threshold": 0.5
}'
Parameters
- query (required) -- natural language search query
- namespace (optional) -- scope search to a namespace
- limit (optional) -- max results, default 10, max 100
- tags (optional) -- filter results to memories with these tags
- threshold (optional) -- minimum relevance score (0.0 to 1.0)
Response (200)
{
"memories": [
{
"id": "mem_abc123xyz",
"content": "We use PostgreSQL 15 for the main database",
"tags": ["database", "infrastructure"],
"namespace": "my-project",
"score": 0.94,
"created_at": "2026-04-13T10:30:00.000Z"
}
],
"total": 1,
"query_time_ms": 23
}
DELETE /v1/forget
Delete one or more memories.
# Delete by ID
curl -X DELETE https://api.remlabs.ai/v1/forget \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"memory_id": "mem_abc123xyz"}'
# Delete by namespace
curl -X DELETE https://api.remlabs.ai/v1/forget \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"namespace": "old-project"}'
GET /v1/memories
List memories with pagination.
curl "https://api.remlabs.ai/v1/memories?namespace=my-project&limit=20&offset=0" \
-H "Authorization: Bearer your-api-key"
Response (200)
{
"memories": [ ... ],
"total": 142,
"limit": 20,
"offset": 0
}
Error Handling
All errors return a consistent JSON format:
{
"error": "invalid_api_key",
"message": "The API key provided is invalid or expired.",
"status": 401
}
// Common error codes:
// 400 - Bad request (missing required field)
// 401 - Invalid or missing API key
// 429 - Rate limit exceeded (retry after header)
// 500 - Server error (retry with backoff)
Rate Limits
- Free tier: 60 requests per minute
- Pro tier: 600 requests per minute
- Enterprise: custom limits
Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset.
Language-agnostic: This REST API works from any language -- Python, JavaScript, Go, Rust, Java, Ruby, PHP, or even shell scripts. If your tool can make HTTP requests, it can use REM Labs.
Start building with the API
Free tier. No SDK required. Works from any language.
Get started free →