customer-requests
Institute Requests
An Institflow account requesting a new institute through the customer portal, and the platform owner's console review queue (approve/refuse). Cloud/control-plane only: answers 404 on a self-hosted install.
2 endpoints
POST /api/v1/portal/requests
Request a new institute. One pending request per account at a time (409 otherwise). Mails every platform owner.
Request body
| Name | Type | Constraints |
|---|---|---|
instituteNamerequired | string | 1–200 chars |
slugrequired | string | 3–42 chars |
countryrequired | string | — |
sizeBandrequired | enum: "small" | "medium" | "large" | "xlarge" | — |
phone | string | — |
termsVersionrequired | enum: "2026-09-23" | — |
Example
{
"instituteName": "string",
"slug": "string",
"country": "string",
"sizeBand": "small",
"phone": "+15551234567",
"termsVersion": "2026-09-23"
}curl example
curl -X POST "https://your-institute.example/api/v1/portal/requests" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"instituteName": "string",
"slug": "string",
"country": "string",
"sizeBand": "small",
"phone": "+15551234567",
"termsVersion": "2026-09-23"
}'Responses
| Name | Type | Constraints |
|---|---|---|
idrequired | string (uuid) | — |
instituteNamerequired | string | — |
slugrequired | string | — |
countryrequired | string | — |
sizeBandrequired | enum: "small" | "medium" | "large" | "xlarge" | — |
phonerequired | string | null | — |
statusrequired | enum: "pending" | "approved" | "refused" | — |
refusalReasonrequired | string | null | — |
tenantIdrequired | string (uuid) | null | — |
createdAtrequired | string (date-time) | — |
updatedAtrequired | string (date-time) | — |
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"instituteName": "string",
"slug": "string",
"country": "string",
"sizeBand": "small",
"phone": "+15551234567",
"status": "pending",
"refusalReason": "string",
"tenantId": "4332af8b-4332-7332-832a-4332af8b4332",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "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.
GET /api/v1/portal/requests/mine
This account’s own institute requests, newest first.
curl example
curl -X GET "https://your-institute.example/api/v1/portal/requests/mine" \
-H "Authorization: Bearer $INSTITFLOW_API_KEY"Responses
[
{
"id": "37386ae0-3738-7738-8386-37386ae03738",
"instituteName": "string",
"slug": "string",
"country": "string",
"sizeBand": "small",
"phone": "+15551234567",
"status": "pending",
"refusalReason": "string",
"tenantId": "4332af8b-4332-7332-832a-4332af8b4332",
"createdAt": "2026-03-02T09:00:00.000Z",
"updatedAt": "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.