| name | pb-api |
| description | Operate PocketBase via its REST API. Use for CRUD operations on collections, authentication, querying records with filters, and managing PocketBase data. |
| license | MIT |
| allowed-tools | Bash, curl |
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
curl -X POST http://localhost:8090/api/collections/_superusers/auth \
-H 'Content-Type: application/json' \
-d '{"identity":"admin@example.com","password":"secret"}'
curl http://localhost:8090/api/collections/posts/records \
-H 'Authorization: Bearer TOKEN'
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')
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, @now in rules