FastCRUDConnect your database, get your access key, and start querying via REST or GraphQL — with filtering, joins, pagination, and full CRUD. No backend code required.
# 1. Authenticate
POST /authenticate/crud/:accessKeyID
→ { "access_token": "Bearer ey..." }
# 2. Query rows
GET /crud/users?filter=age.gt.18&limit=10
→ [{ "id": 1, "name": "Alice", ... }]
# 3. GraphQL join
POST /graphql
{ join(from:"orders", joins:[{table:"users",
on:"orders.user_id.eq.users.id"}]) }The things you'd normally spend a day wiring up are already handled.
PostgreSQL, MySQL, SQL Server, Oracle, and MongoDB. Point it at any of them — the same REST and GraphQL API works across all five.
Connect your database, get a working API. No schema files, no resolvers, nothing to configure. Schema is introspected automatically.
Both endpoints are always available. Use REST when it's simpler, GraphQL when you need joins or precise field selection. One token works for both.
All queries are parameterized with the correct syntax for each database. Column names are validated against the introspected schema before any query runs.
Every project gets its own database connection, access keys, and token space. One project can't touch another's data.
INNER, LEFT, and RIGHT joins via a single GraphQL field for SQL databases. Specify the tables, the ON condition, and the columns — the query is built for you.
No infrastructure to manage. No resolvers to write. Just connect and query.
POST your database credentials — PostgreSQL, MySQL, SQL Server, Oracle, or MongoDB. The API introspects your schema and caches it automatically.
Exchange your access key ID for a short-lived Bearer token. Use it on every REST or GraphQL request.
Filter, paginate, insert, update, delete, and join — all through a consistent API with no backend code on your end.
Use REST for simplicity or GraphQL for flexibility — both are always available.
# Query with filter & pagination
GET /crud/users?filter=age.gt.18%20AND%20status.eq.active&limit=20
Authorization: Bearer <token>
# Insert a new row
POST /crud/orders
Content-Type: application/json
{ "user_id": "42", "total": "99.99", "status": "pending" }
# Update with a filter
PUT /crud/orders?filter=id.eq.7
{ "status": "shipped" }
# Delete
DELETE /crud/users?filter=status.eq.inactive# Fetch rows
{
users(filter: "age.gt.18", limit: 20) {
id name email created_at
}
}
# JOIN orders → users
{
join(
from: "orders"
joins: [{ table: "users", on: "orders.user_id.eq.users.id" }]
columns: ["orders.id", "orders.total", "users.name"]
filter: "orders.total.gt.50"
)
}
# Insert mutation
mutation {
insertOrders(rows: [{ user_id: "42", total: "99.99" }]) {
rowsInserted
}
}One request = one API call. No per-table fees, no seat licenses. Upgrade when you need more.
Free
forever
Starter
per month
Pro
per month
1 request = 1 HTTP call to your API, regardless of rows returned. Overage is billed at the end of the month.
Read the full API reference to learn about authentication, filter syntax, GraphQL mutations, and table joins.