Build with ForgeBaaS
A REST backend you can call from anywhere. Authenticate with a single key, query your tables, upload files, and ship. Everything you need to integrate ForgeBaaS into your app — in one page.
What is ForgeBaaS?
ForgeBaaS gives you a managed REST backend for any project: data tables, authentication, storage, and serverless functions — accessible from any client over HTTPS using a single API key. No servers to maintain. No SQL to write.
- Per-project isolation. Each project has its own keys and its own data.
fb_anon_keys for browsers,fb_service_keys for trusted servers.- Auto-generated REST endpoints for every table you define.
- SHA-256 hashed keys at rest. Plaintext shown once.
Make your first request
- 1Create a projectSign in and click "+ New project" on your dashboard. You'll get an anon and service_role key.
- 2Copy the anon keyIt's shown ONCE. Store it in a safe place — you'll need it on every request.
- 3Define a tableOpen the project → Database → New table. Add column names + types.
- 4Send a requestUse the snippets below to read or write data.
const res = await fetch(
'https://forgebaas.com/api/v1/PROJECT_ID/TABLE_NAME',
{ headers: { Authorization: 'Bearer fb_anon_xxxxxxxx...' } }
);
const { data } = await res.json();
console.log(data);Authentication
Every request must include an Authorization header with a valid project key:
Authorization: Bearer fb_anon_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Keys are matched by SHA-256 hash on the server. The plaintext key never leaves your machine after creation, and never appears in logs.
fb_service_ key bypasses safety checks and grants full project access. Keep it on your server. Requests from a browser using a service key are rejected.API key types
| Prefix | Use | Scope | Risk |
|---|---|---|---|
| fb_anon_… | Browsers, mobile apps | Reads + writes restricted to whitelisted tables | Safe to ship in client code |
| fb_service_… | Servers, cron jobs, webhooks | Full project access, bypasses checks | Never expose to clients |
You can rotate any key from the project's API & Keys tab. Rotation issues a new plaintext (shown once) and invalidates the previous one immediately.
REST API reference
Base URL:
https://forgebaas.com/api/v1/{projectId}/api/v1/:projectId/:tableList rows in a table. Always scoped to your project_id.
{
"data": [{ "id": "...", "title": "Hello" }],
"count": 1
}/api/v1/:projectId/:tableInsert a row. Body is validated against the columns defined in the project.
{
"data": { "id": "...", "title": "Hello", "created_at": "..." },
"error": null
}/api/v1/:projectId/:table/:idDelete a single row by id. Only succeeds if the row belongs to your project.
{ "success": true }Tables & columns
Tables are declared from the dashboard, not by raw SQL. For each table you choose:
- A table name (lowercase, snake_case).
- One or more columns with a name and type:
text,number,boolean,date.
The REST API automatically validates incoming bodies against your column definitions and rejects unknown tables with 403.
Error responses
| Status | Code | When |
|---|---|---|
| 400 | bad_request | Invalid body or missing required column |
| 401 | unauthorized | Missing or invalid Authorization header |
| 403 | forbidden | Table is not registered for this project, or service key from browser |
| 404 | not_found | Row id does not exist in this project |
| 429 | rate_limited | More than 100 requests per minute for this key |
| 500 | server_error | Unexpected error — please retry or contact support |
Rate limits
Each API key is limited to 100 requests per minute. When you exceed it, the API returns:
HTTP/1.1 429 Too Many Requests
Retry-After: 30
{ "error": "rate_limited", "retry_after": 30 }Need higher limits? Upgrade to Pro.
How your data stays isolated
- Every row inserted via the API is tagged with your
project_id. - Every read filters by your
project_id— no cross-tenant leakage. - Keys are hashed with SHA-256 before storage. Plaintext is shown once, then dropped.
- Row-Level Security on the dashboard ensures only the owner can see project metadata.
Request logs
Every request to the public API is recorded with method, table, status code, and timestamp. View live logs from Project → Logs. Use them to debug integrations or monitor traffic.