DEVELOPERS / PROJECT TO FIRST REQUEST
Create a project, define an orders container, review route access, and use HTTP and JSON from a server-side client.
FROM PROJECT TO A SUCCESSFUL CREATE
Use a small container and an explicit access policy so that the result is easy to verify.
01
Choose the tenant and project where the application belongs. Keep their route slugs available for the API base URL.
02
Define orderNumber as a required string, status as a string with draft/paid/shipped values, and total as a required float.
03
Enable the operations you need, configure authentication and authorized roles, and obtain the intended project session or token.
04
Set AUTOTABLE_BASE and AUTOTABLE_TOKEN securely in the server environment. Never place a privileged token in a public bundle or visual document.
POST /DYNAMIC?SCHEMANAME=ORDERS
Use a base URL such as https://YOUR_API_HOST/api/v1/YOUR_TENANT/YOUR_PROJECT. The example below uses the current create route and response envelope.
// Server-side JavaScript. Set these values in your server environment.
const base = process.env.AUTOTABLE_BASE;
const token = process.env.AUTOTABLE_TOKEN;
if (!base || !token) throw new Error("Missing AutoTable configuration");
const response = await fetch(`${base}/dynamic?schemaName=orders`, {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: `Bearer ${token}`,
},
body: JSON.stringify({
orderNumber: "A-1042", status: "draft", total: 184.5,
}),
});
if (response.status !== 201) {
throw new Error(`Create failed: ${response.status}`);
}
const created = await response.json();
console.log(created.data._id);EXPECTED RESPONSE SHAPE
{
"status": 201,
"message": "Item successfully created.",
"data": {
"_id": "YOUR_RECORD_ID",
"orderNumber": "A-1042",
"status": "draft",
"total": 184.5
}
}The response is an example of the current contract. AutoTable generates the record ID. Values and additional configured fields depend on your container.
Keep the returned data._id for later record operations. A failed status is not a successful record result; handle it before reading data.
GET /DYNAMIC/PAGE
Use the paginated route to check the stored records. Its response exposes items and pagination metadata.
const response = await fetch(
`${process.env.AUTOTABLE_BASE}/dynamic/page?schemaName=orders&page=1&limit=20`,
{ headers: { Authorization: `Bearer ${process.env.AUTOTABLE_TOKEN}` } },
);
if (!response.ok) throw new Error(`Read failed: ${response.status}`);
const page = await response.json();
console.log(page.items);01
Check required fields, field types, allowed values, and the active create route.
02
Check the project context, session validity, and the configured roles for the operation.
03
Attach a small workflow or connect a frontend, then test the complete path with the intended user role.
THE COMPLETE DOCUMENTATION
Read the full guides, including execution modes, aggregation stages, request details, and worked examples.
WORKFLOWS
Triggers, execution modes, conditions, steps, reliability, and complete implementation tutorials.
PIPELINES
Aggregation fundamentals, stage reference, project parameters, saved queries, and reporting recipes.
DYNAMIC ROUTES
Request conventions, CRUD, pagination, search, filters, execution, array operations, and exports.
YOUR NEXT STEP
Keep the quickstart and full route guide close while you add workflows, pipelines, and an interface.
A connected foundation for the things you want to build.