# 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.

Generated from `apps/api/openapi.json`. HTML version: https://docs.institflow.com/en/reference/customer-requests

2 operations.

## POST /api/v1/portal/requests

Request a new institute. One pending request per account at a time (409 otherwise). Mails every platform owner.

- Operation id: `CustomerRequestsController_submit_v1`
- Permission: —
- Auth: credential required
- `Idempotency-Key`: not required

### Request body

| Property | Type | Required | Constraints |
| --- | --- | --- | --- |
| `instituteName` | string | yes | 1–200 chars |
| `slug` | string | yes | 3–42 chars |
| `country` | string | yes |  |
| `sizeBand` | enum: "small" \| "medium" \| "large" \| "xlarge" | yes |  |
| `phone` | string | no |  |
| `termsVersion` | enum: "2026-09-23" | yes |  |

```json
{
  "instituteName": "string",
  "slug": "string",
  "country": "string",
  "sizeBand": "small",
  "phone": "+15551234567",
  "termsVersion": "2026-09-23"
}
```

### Responses

**201** — The newly submitted request, pending review.

| Property | Type | Required | Constraints |
| --- | --- | --- | --- |
| `id` | string (uuid) | yes |  |
| `instituteName` | string | yes |  |
| `slug` | string | yes |  |
| `country` | string | yes |  |
| `sizeBand` | enum: "small" \| "medium" \| "large" \| "xlarge" | yes |  |
| `phone` | string \| null | yes |  |
| `status` | enum: "pending" \| "approved" \| "refused" | yes |  |
| `refusalReason` | string \| null | yes |  |
| `tenantId` | string (uuid) \| null | yes |  |
| `createdAt` | string (date-time) | yes |  |
| `updatedAt` | string (date-time) | yes |  |

Every other status answers with the shared `ErrorEnvelope` — see
https://docs.institflow.com/md/en/error-codes.md

### Example request

```bash
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"
  }'
```

## GET /api/v1/portal/requests/mine

This account’s own institute requests, newest first.

- Operation id: `CustomerRequestsController_mine_v1`
- Permission: —
- Auth: credential required
- `Idempotency-Key`: not required

### Responses

**200** — The account’s requests.

```json
[
  {
    "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"
  }
]
```

Every other status answers with the shared `ErrorEnvelope` — see
https://docs.institflow.com/md/en/error-codes.md

### Example request

```bash
curl -X GET "https://your-institute.example/api/v1/portal/requests/mine" \
  -H "Authorization: Bearer $INSTITFLOW_API_KEY"
```
