An API for every table.

Create a table and call it straight away.

Five endpoints per table.

Switch each one on or off. Every request is checked against your access rules, on the server, so it is safe to call from the browser.

TypeScript

const orders = await pb.from("orders")
  .eq("status", "paid")
  .all();

Python

orders = (pb.from_("orders")
    .eq("status", "paid")
    .all())

HTTP

curl -G "$URL/rest/v1/orders" \
  -d "filter[status]=eq.paid" \
  -H "apikey: $KEY"

Filters and sorting

Narrow and order results with readable parameters.

Relations in one call

Bring related records along instead of making extra requests.

Full-text search

Search across the text fields you choose.

Pages

Move through large tables without loading everything.

Documented as you build

An OpenAPI document and an explorer that always match your tables.

Versions side by side

Serve the next version of your API beside the current one.

Build your app's APIs, auth
and storage in one place.