support
Support
Report a problem or suggest a feature to the vendor from a self-hosted install, and see the vendor's status and replies (self-hosted installs only).
5 endpoints
GET /api/v1/support/submissions
What this institute sent the vendor, newest first (cursor-paginated): the text, whether it has left the install, what the vendor did with it and the vendor’s replies. Self-hosted only.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
cursor | query | string | — |
limit | query | integer | 1–100 · default: 25 |
curl example
curl -X GET "https://your-institute.example/api/v1/support/submissions" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
datarequired | array<object> | — |
nextCursorrequired | string | null | — |
{
"data": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"kind": "problem",
"category": "login_access",
"title": "Midterm Exam",
"body": "string",
"delivery": "queued",
"lastError": "string",
"remoteStatus": "new",
"createdAt": "2026-03-02T09:00:00.000Z",
"sentAt": "2026-03-02T09:00:00.000Z",
"syncedAt": "2026-03-02T09:00:00.000Z",
"replies": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"body": "string",
"createdAt": "2026-03-02T09:00:00.000Z"
}
]
}
],
"nextCursor": null
}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.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
POST /api/v1/support/submissions
Report a problem or suggest a feature to the vendor. Saved here first and sent in the background, retried if the vendor cannot be reached. Do not include personal data. Self-hosted only.
Request body
| Name | Type | Constraints |
|---|---|---|
kindrequired | enum: "problem" | "feature" | — |
categoryrequired | enum: "login_access" | "people" | "attendance" | "billing" | "courses_content" | "notifications" | "updates_backups" | "performance" | "other" | — |
titlerequired | string | 1–120 chars |
textrequired | string | 1–4000 chars |
Example
{
"kind": "problem",
"category": "login_access",
"title": "Midterm Exam",
"text": "string"
}curl example
curl -X POST "https://your-institute.example/api/v1/support/submissions" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"kind": "problem",
"category": "login_access",
"title": "Midterm Exam",
"text": "string"
}'Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
kindrequired | enum: "problem" | "feature" | — |
categoryrequired | enum: "login_access" | "people" | "attendance" | "billing" | "courses_content" | "notifications" | "updates_backups" | "performance" | "other" | — |
titlerequired | string | — |
bodyrequired | string | — |
deliveryrequired | enum: "queued" | "sent" | "failed" | — |
lastErrorrequired | string | null | — |
remoteStatusrequired | enum: "new" | "acknowledged" | "in_progress" | "resolved" | "declined" | "duplicate" | null | null | — |
createdAtrequired | string (date-time) | — |
sentAtrequired | string (date-time) | null | — |
syncedAtrequired | string (date-time) | null | — |
repliesrequired | array<object> | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"kind": "problem",
"category": "login_access",
"title": "Midterm Exam",
"body": "string",
"delivery": "queued",
"lastError": "string",
"remoteStatus": "new",
"createdAt": "2026-03-02T09:00:00.000Z",
"sentAt": "2026-03-02T09:00:00.000Z",
"syncedAt": "2026-03-02T09:00:00.000Z",
"replies": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"body": "string",
"createdAt": "2026-03-02T09:00:00.000Z"
}
]
}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.
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/support/submissions/{id}
One submission with the vendor’s replies. Self-hosted only.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
curl example
curl -X GET "https://your-institute.example/api/v1/support/submissions/37386ae0-3738-7738-8386-37386ae03738" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
kindrequired | enum: "problem" | "feature" | — |
categoryrequired | enum: "login_access" | "people" | "attendance" | "billing" | "courses_content" | "notifications" | "updates_backups" | "performance" | "other" | — |
titlerequired | string | — |
bodyrequired | string | — |
deliveryrequired | enum: "queued" | "sent" | "failed" | — |
lastErrorrequired | string | null | — |
remoteStatusrequired | enum: "new" | "acknowledged" | "in_progress" | "resolved" | "declined" | "duplicate" | null | null | — |
createdAtrequired | string (date-time) | — |
sentAtrequired | string (date-time) | null | — |
syncedAtrequired | string (date-time) | null | — |
repliesrequired | array<object> | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"kind": "problem",
"category": "login_access",
"title": "Midterm Exam",
"body": "string",
"delivery": "queued",
"lastError": "string",
"remoteStatus": "new",
"createdAt": "2026-03-02T09:00:00.000Z",
"sentAt": "2026-03-02T09:00:00.000Z",
"syncedAt": "2026-03-02T09:00:00.000Z",
"replies": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"body": "string",
"createdAt": "2026-03-02T09:00:00.000Z"
}
]
}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.
Returns the shared `ErrorEnvelope` — `{ error: { code, message, requestId, details? } }`. Every code is listed in the Conventions guide.
POST /api/v1/support/submissions/{id}/retry
Send a submission that failed (or is stuck) again. A submission already sent is final. Self-hosted only.
Path & query parameters
| Name | In | Type | Constraints |
|---|---|---|---|
idrequired | path | string | — |
curl example
curl -X POST "https://your-institute.example/api/v1/support/submissions/37386ae0-3738-7738-8386-37386ae03738/retry" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
kindrequired | enum: "problem" | "feature" | — |
categoryrequired | enum: "login_access" | "people" | "attendance" | "billing" | "courses_content" | "notifications" | "updates_backups" | "performance" | "other" | — |
titlerequired | string | — |
bodyrequired | string | — |
deliveryrequired | enum: "queued" | "sent" | "failed" | — |
lastErrorrequired | string | null | — |
remoteStatusrequired | enum: "new" | "acknowledged" | "in_progress" | "resolved" | "declined" | "duplicate" | null | null | — |
createdAtrequired | string (date-time) | — |
sentAtrequired | string (date-time) | null | — |
syncedAtrequired | string (date-time) | null | — |
repliesrequired | array<object> | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"kind": "problem",
"category": "login_access",
"title": "Midterm Exam",
"body": "string",
"delivery": "queued",
"lastError": "string",
"remoteStatus": "new",
"createdAt": "2026-03-02T09:00:00.000Z",
"sentAt": "2026-03-02T09:00:00.000Z",
"syncedAt": "2026-03-02T09:00:00.000Z",
"replies": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"body": "string",
"createdAt": "2026-03-02T09:00:00.000Z"
}
]
}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.
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.
POST /api/v1/support/submissions/refresh
Ask the vendor now what became of these submissions (a pass of the background mirror). Self-hosted only.
curl example
curl -X POST "https://your-institute.example/api/v1/support/submissions/refresh" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
| Name | Type | Constraints |
|---|---|---|
datarequired | array<object> | — |
nextCursorrequired | string | null | — |
{
"data": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"kind": "problem",
"category": "login_access",
"title": "Midterm Exam",
"body": "string",
"delivery": "queued",
"lastError": "string",
"remoteStatus": "new",
"createdAt": "2026-03-02T09:00:00.000Z",
"sentAt": "2026-03-02T09:00:00.000Z",
"syncedAt": "2026-03-02T09:00:00.000Z",
"replies": [
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"body": "string",
"createdAt": "2026-03-02T09:00:00.000Z"
}
]
}
],
"nextCursor": null
}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.
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.