setup
First-run Setup
Unauthenticated first-run bootstrap of a self-hosted install: whether this deployment still needs setup, and the one call that creates its institute and owner account. Both answer 404 on the cloud platform and once an institute exists.
2 endpoints
POST /api/v1/setup/bootstrap
Create this self-hosted install's institute and its owner account, and sign the owner in. 404 in cloud mode or once an institute exists.
Request body
| Name | Type | Constraints |
|---|---|---|
setupTokenrequired | string | ≥1 chars |
instituterequired | object | — |
ownerrequired | object | — |
Example
{
"setupToken": "string",
"institute": {
"slug": "string",
"name": "Algebra I",
"defaultLocale": "ar",
"timezone": "string",
"currency": "USD"
},
"owner": {
"email": "ada.lovelace@example.com",
"password": "string",
"firstName": "Ada",
"lastName": "Lovelace"
}
}curl example
curl -X POST "https://your-institute.example/api/v1/setup/bootstrap" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"setupToken": "string",
"institute": {
"slug": "string",
"name": "Algebra I",
"defaultLocale": "ar",
"timezone": "string",
"currency": "USD"
},
"owner": {
"email": "ada.lovelace@example.com",
"password": "string",
"firstName": "Ada",
"lastName": "Lovelace"
}
}'Responses
{
"mfaRequired": true,
"mfaEnrollmentRequired": true,
"mfaToken": "string"
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
GET /api/v1/setup/status
Whether this deployment still needs first-run setup. Public: the login page reads it before any session exists.
curl example
curl -X GET "https://your-institute.example/api/v1/setup/status" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
deploymentModerequired | enum: "cloud" | "self_hosted" | — |
needsSetuprequired | boolean | — |
{
"deploymentMode": "cloud",
"needsSetup": true
}Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.