API Reference
Full REST API documentation for integrating AppBuilder with your existing tools and workflows.
Base URL
https://api.appbuilder.io/v1
Authentication
The API uses session-based authentication. You must be logged in to your AppBuilder account to make API requests. Include credentials with your requests.
# Example request with session cookie
curl -X GET "https://your-instance.com/api/apps/my-app/schemas/contacts/records" \
-b "sessionid=your_session_cookie"
// Using fetch API with credentials
const response = await fetch('/api/apps/my-app/schemas/contacts/records', {
credentials: 'include'
});
const data = await response.json();
import requests
# Create a session and login first
session = requests.Session()
session.post('https://your-instance.com/auth/login/', data={
'username': 'your@email.com',
'password': 'your_password'
})
# Then make API requests
response = session.get('/api/apps/my-app/schemas/contacts/records')
data = response.json()
Session Authentication
The API uses Django session authentication. Log in via the web interface or POST to /auth/login/ to establish a session.
How to authenticate
- 1 Log in to AppBuilder via the web interface
- 2 Your browser session allows API access
- For scripts, use a session library to maintain cookies
API Overview
The API provides full CRUD operations on your app data. All endpoints are under /api/.
Available Endpoints
Interactive Documentation
Visit /api/docs for the interactive Swagger documentation.
Error Handling
The API uses standard HTTP status codes. Errors include a JSON body with details:
{
"error": {
"code": "validation_error",
"message": "Field 'email' is required",
"field": "email"
}
}
| Status | Meaning |
|---|---|
200 | Success |
201 | Created |
400 | Bad request / Validation error |
401 | Unauthorized (not logged in) |
403 | Forbidden (no permission for this resource) |
404 | Not found |
500 | Internal server error |
Records
/apps/{app_slug}/schemas/{schema_slug}/records
List all records in a schema with optional filtering and pagination.
Query Parameters
| page | Page number (default: 1) |
| per_page | Records per page (default: 50, max: 100) |
| sort | Field to sort by (prefix with - for desc) |
| filter[field] | Filter by field value |
# Get all contacts sorted by name (with session cookie)
curl "https://your-instance.com/api/apps/my-crm/schemas/contacts/records?sort=name" \
-b "sessionid=your_session_cookie"
/apps/{app_slug}/schemas/{schema_slug}/records
Create a new record in a schema.
curl -X POST "https://your-instance.com/api/apps/my-crm/schemas/contacts/records" \
-b "sessionid=your_session_cookie" \
-H "Content-Type: application/json" \
-d '{
"name": "John Doe",
"email": "john@example.com",
"status": "lead"
}'
/apps/{app_slug}/schemas/{schema_slug}/records/{id}
Get a single record by ID.
/apps/{app_slug}/schemas/{schema_slug}/records/{id}
Update an existing record. Only include fields you want to change.
curl -X PUT "https://your-instance.com/api/apps/my-crm/schemas/contacts/records/rec_123" \
-b "sessionid=your_session_cookie" \
-H "Content-Type: application/json" \
-d '{"status": "customer"}'
/apps/{app_slug}/schemas/{schema_slug}/records/{id}
Delete a record. This action cannot be undone.
Schemas
/apps/{app_slug}/schemas
List all schemas in an app with their field definitions.
Response Example
{
"schemas": [
{
"slug": "contacts",
"name": "Contacts",
"fields": [
{"slug": "name", "type": "text", "required": true},
{"slug": "email", "type": "email", "required": false},
{"slug": "status", "type": "select", "options": ["lead", "customer"]}
]
}
]
}
Apps
/apps
List all apps in your workspace.
Response Example
{
"apps": [
{
"slug": "my-crm",
"name": "My CRM",
"description": "Customer relationship management",
"created_at": "2025-01-15T10:30:00Z"
}
]
}
Client Libraries
Official SDKs for your favorite programming languages.
Need help with the API?
Our engineering team is here to help you integrate AppBuilder.