PocketBase API
Reference: https://pocketbase.io/docs/
Operate PocketBase via its REST API.
Credentials
Create .env from .env.example (never commit .env):
PB_URL=http://localhost:8090
PB_SUPERUSER_EMAIL=admin@example.com
PB_SUPERUSER_PASSWORD=your-password
If credentials aren't available via env vars, ask user explicitly before proceeding.
Quick Start
# Auth
curl -X POST http://localhost:8090/api/collections/_superusers/auth \
-H 'Content-Type: application/json' \
-d '{"identity":"admin@example.com","password":"secret"}'
# List records
curl http://localhost:8090/api/collections/posts/records \
-H 'Authorization: Bearer TOKEN'
# Filter records
curl "http://localhost:8090/api/collections/posts/records?filter=status='published'&sort=-created&expand=author"
Key Endpoints
| Method | Endpoint | Purpose |
|---|---|---|
| POST | /api/collections/:collection/auth |
Auth with password |
| POST | /api/collections/:collection/auth-with-password |
Login |
| GET | /api/collections/:collection/records |
List records |
| POST | /api/collections/:collection/records |
Create record |
| PATCH | /api/collections/:collection/records/:id |
Update record |
| DELETE | /api/collections/:collection/records/:id |
Delete record |
Filter Syntax
status = 'published'
author.id = 'abc123'
created >= '2024-01-01'
user.name ~ 'john*'
Use @collection.name.field for cross-collection filters.
SDK Usage
import PocketBase from 'pocketbase'
const pb = new PocketBase('http://localhost:8090')
await pb.collection('posts').authWithPassword('user@test.com', 'secret')
// List with filter
const records = await pb.collection('posts').getList(1, 50, {
filter: "status = 'published'",
sort: '-created',
expand: 'author,tags'
})
API Rules
null→ superuser only""→ public access- Start locked, open selectively
- Use
@request.auth,@collection,@nowin rules