Create dynamic collections, store any JSON structure, and query with MongoDB-like syntax. No setup, no migrations, just pure productivity.
From zero to API in 30 seconds
$ docker run --rm -p 8080:8080 \ -v "$(pwd)":/data \ -e DB_PATH=/data/data.db \ ghcr.io/fernandezvara/microapi:latest {"time":"2025-08-15T13:57:18.58338142Z","level":"INFO","msg":"opened database","path":"/data/data.db"} {"time":"2025-08-15T13:57:18.588581213Z","level":"INFO","msg":"microapi starting server","port":"8080"} {"time":"2025-08-15T13:57:18.588636839Z","level":"INFO","msg":"microapi version","version":"v0.1.6"}
POST /users/customers { "name": "John Doe", "email": "john@example.com", "preferences": { "theme": "dark", "notifications": true } }
Store any JSON structure without pre-defining schemas
Collections are created automatically on first document
Familiar query syntax with powerful operators
Visual interface for managing your data
Built for developers who value simplicity and speed
Single binary deployment. No external dependencies. Just run and go.
Reliable, fast, and zero-config database with JSON support built-in.
Clean, predictable REST endpoints with consistent JSON responses.
MongoDB-like operators for filtering, sorting, and pagination.
Built-in visual interface for managing collections and testing queries.
Model Context Protocol endpoint for AI assistant integrations.
Simple, powerful, and well-documented
Base URL: http://localhost:8080 Pattern: /:set/:collection[/:id] Examples: /users/customers # Collection operations /users/customers/abc123 # Document operations /blog/posts # Different set
✅ No authentication required by default
Perfect for prototyping and internal tools
Content-Type: application/json Accept: application/json
POST /users/customers { "name": "Alice Johnson", "email": "alice@example.com", "age": 28, "preferences": { "theme": "dark", "language": "en" } }
GET /users/customers/d2fjps30h2ipb32i2hg0
PUT /users/customers/d2fjps30h2ipb32i2hg0 { "name": "Alice Johnson", "email": "alice@example.com", "age": 29, "preferences": { "theme": "light", "language": "en" } }
PATCH /users/customers/d2fjps30h2ipb32i2hg0 { "age": 29, "preferences.theme": "light" }
DELETE /users/customers/d2fjps30h2ipb32i2hg0
GET /users/customers
GET /users/customers?where={"age":{"$gte":25}}
GET /users/customers?where={"user.name":{"$contains":"Ada"}} GET /users/customers?where={"user.name":{"$icontains":"ada"}} GET /users/customers?where={"user.name":{"$startsWith":"An"}} GET /users/customers?where={"user.email":{"$iendsWith":"@EXAMPLE.COM"}}
GET /orders/purchases?where={"status":{"$in":["new","processing"]}} GET /orders/purchases?where={"status":{"$nin":["cancelled"]}} GET /catalog/products?where={"price":{"$between":[10,20]}} GET /users/customers?where={"archivedAt":{"$isNull":true}} GET /users/customers?where={"archivedAt":{"$notNull":true}}
GET /users/customers?where={"$.user.age":{"$gte":25}} GET /users/customers?order_by=$.user.age&limit=10
You can use dot paths like user.age
or JSONPath like $.user.age
in where
and order_by
.
$eq
-
Equal
$ne
- Not
equal
$gt
-
Greater than
$gte
-
Greater than or equal
$lt
- Less
than
$lte
-
Less than or equal
$like
- SQL LIKE (supports % and _)$ilike
- Case-insensitive LIKE$startsWith
, $istartsWith
$endsWith
, $iendsWith
$contains
, $icontains
$in
- In array$nin
- Not in array$between
- Between min and max$isNull
- Field is NULL$notNull
- Field is NOT NULL{ "success": true, "data": { "_id": "d2fjps30h2ipb32i2hg0", "name": "Alice Johnson", "email": "alice@example.com", "age": 28 }, "error": null }
{ "success": false, "data": null, "error": "Document not found" }
{ "success": true, "data": [ { "_id": "d2fjps30h2ipb32i2hg0", "name": "Alice Johnson", "age": 28 }, { "_id": "d2fjps30h2ipb32i2hg1", "name": "Bob Smith", "age": 32 } ], "error": null }
{ "success": true, "data": [], "error": null }
Plug and play to automate everything, add data operations to your workflows with our custom n8n node
Drag and drop Micro API operations into your workflows
Create, read, update, delete, and query operations
Simple npm install and configuration
# Install the community node
Just search for n8n-nodes-microapi
in the n8n node marketplace
# Or install locally (if you prefer to build it yourself)
cd ~/.n8n/custom
npm install n8n-nodes-microapi
# Restart n8n (if you installed locally)
n8n start
1. Add Micro API credentials
2. Set your API base URL
3. Start building workflows!
Sync data between Micro API and other services like Airtable, Google Sheets, or CRM systems.
Capture form submissions and store them with custom processing and validation rules.
Use AI to process data from Micro API and trigger actions based on analysis results.
Manage your data visually - no code required
See all your sets and collections with document counts and creation dates
Create and edit documents with syntax highlighting and validation
Test queries interactively with a visual interface
See curl examples for every operation to learn the API
From download to your first API call
Single binary, no dependencies
POST your first document
Build your application
# Download a binary Go to: https://github.com/fernandezvara/microapi/releases/ Or download on console. Example: curl -L https://github.com/fernandezvara/microapi/releases/download/v0.1.6/microapi_Linux_x86_64.tar.gz | tar xz ./microapi # Run using docker docker run --rm -p 8080:8080 \ -v "$(pwd)":/data \ -e DB_PATH=/data/data.db \ ghcr.io/fernandezvara/microapi:latest ✓ Server started on port 8080 ✓ Dashboard: http://localhost:8080
# Create .env file
PORT=8080
DB_PATH=./data.db
CORS=*
ALLOW_DELETE_SETS=false
curl -X POST http://localhost:8080/app/users \ -H "Content-Type: application/json" \ -d '{ "name": "Alice", "email": "alice@example.com", "role": "admin" }' # Response: { "success": true, "data": { "_id": "d2fjps30h2ipb32i2hg0", "name": "Alice", "email": "alice@example.com", "role": "admin" }, "error": null }
# Get all users curl http://localhost:8080/app/users # Filter by role curl "http://localhost:8080/app/users?where={\"role\":{\"$eq\":\"admin\"}}"