A database playground for students building their first apps. Just POST JSON to save and GET to retrieve — no setup, no login, no backend. Anonymous databases work instantly with safe defaults. Register for free to get persistent databases with full control over every setting.
POST a JSON document to create a database. The database is created automatically on first request!
const response = await fetch('https://tinkr.tech/sdb/my_database', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'John', age: 25 })
});
const data = await response.json();
console.log(data); // {"id": "...", "name": "John", "age": 25}
GET all documents from your database as a JSON array
async function getAll() {
const response = await fetch('https://tinkr.tech/sdb/my_database');
const documents = await response.json();
console.log(documents); // Array of all documents
}
PATCH a document by its ID to update it
const docId = '550e8400-e29b-41d4-a716-446655440000';
const response = await fetch(`https://tinkr.tech/sdb/my_database/${docId}`, {
method: 'PATCH',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ name: 'Jane', age: 26 })
});
const updated = await response.json();
DELETE a document by its ID
const docId = '550e8400-e29b-41d4-a716-446655440000';
await fetch(`https://tinkr.tech/sdb/my_database/${docId}`, {
method: 'DELETE'
});
Use the since
parameter to fetch only documents created after a specific ID
const lastId = '550e8400-e29b-41d4-a716-446655440000';
const response = await fetch(`https://tinkr.tech/sdb/my_database?since=${lastId}`);
const newDocuments = await response.json();
| Method | Endpoint | Description |
|---|---|---|
POST |
/sdb/:db_name |
Create a document (creates database on first request) |
GET |
/sdb/:db_name |
Get all documents |
GET |
/sdb/:db_name?since=:id |
Get documents created after the given ID |
PATCH |
/sdb/:db_name/:id |
Update a document by ID |
DELETE |
/sdb/:db_name/:id |
Delete a document by ID |
Registered users can create persistent databases with namespaces. Just add the namespace before the database name:
POST
/sdb/:namespace/:db_name
GET
/sdb/:namespace/:db_name
PATCH
/sdb/:namespace/:db_name/:id
DELETE
/sdb/:namespace/:db_name/:id
Every anonymous database starts with these defaults. Register for free to get persistent databases where you can change everything.
| Field | Type | Required |
|---|---|---|
| name | String | |
| score | Number | |
| active | Boolean |
Teachers: create a namespaced database and configure it for your class. Build a safe sandbox with API keys and schemas, raise limits for bigger projects, or turn off XSS protection when it's time to teach web security.
When a database operation is set to "private", include your API key as a Bearer token:
const response = await fetch('https://tinkr.tech/sdb/my_namespace/my_database', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({ name: 'John', age: 25 })
});
You can find your API key in the database settings page. Each database has its own key.
Practice building web apps without setting up a backend
Quickly test ideas and build proof-of-concepts
Perfect for classroom assignments and coding bootcamps
Add real database functionality to your demos
Get started fast without backend setup
Simple forms and surveys for small projects