Apps
Create app
POST /app
POST /app
Create a new app. Requires appCreator permission.
Request body
idintegerbodyInternal numeric row id of the active revision. null for previews/imports.
appIdstringbodyStable app identifier (nano-id). Use this in routes like /app/{appId}.
revisionintegerbodyMonotonic revision counter. Incremented on every update.
namestringbodyNo description.
slugstringbodyURL-safe slug derived from name.
descriptionstringbodyNo description.
vendorstringbodyAuthor/team. Stored as plain text.
availabilitystringbodyVisibility/availability flag (see Mind/Models/App.php for the allowed values).
appearanceobjectbodyUI-level config (icon, color, layout hints).
dataobjectbodyThe app body. Contains the HTML template, the executor source (Python/Node/PHP) and any static parameters. The exact shape is owned by the app author.
isActivebooleanbodyNo description.
deletedAtstringbodyNo description.
createdByintegerbodyProfile id of the creating user.
createdAtstringbodyNo description.
Request Example
{
"id": 1,
"appId": "k4FqL2Hm",
"revision": 7,
"name": "Customer health check",
"slug": "customer-health-check",
"description": "string",
"vendor": "string",
"availability": "string",
"appearance": null,
"data": null,
"isActive": true,
"deletedAt": "2026-01-01T12:00:00Z",
"createdBy": 1,
"createdAt": "2026-01-01T12:00:00Z"
}Responses
201 — Created
Response Example
{
"success": true,
"app": {
"id": 1,
"appId": "k4FqL2Hm",
"revision": 7,
"name": "Customer health check",
"slug": "customer-health-check",
"description": "string",
"vendor": "string",
"availability": "string",
"appearance": null,
"data": null,
"isActive": true,
"deletedAt": "2026-01-01T12:00:00Z",
"createdBy": 1,
"createdAt": "2026-01-01T12:00:00Z"
}
}400 — Missing name or invalid payload.
403 — Unauthorized — missing appCreator permission.