# VM Isos endpoints (Admin API)

> 7 FeatherPanel Admin API endpoints from admin/vm-isos.php: methods, paths, auth, permissions, rate limits, parameters and responses.

Source: https://featherpanel.com/docs/api/reference/admin/vm-isos/

Defined in [`backend/app/routes/admin/vm-isos.php`](https://github.com/MythicalLTD/FeatherPanel/blob/3faf369c3b4b626654434921a2ee2655ff85da45/backend/app/routes/admin/vm-isos.php). Authentication used here: **Admin**. Read [Authentication](https://featherpanel.com/docs/api/authentication/) for how to send credentials and [Rate limits and errors](https://featherpanel.com/docs/api/rate-limits-and-errors/) for the response envelope.

Paths, methods, permissions and rate limits come from the route file. Summaries, parameters and response codes come from the OpenAPI annotations on the controllers; endpoints without annotations show only what the route file declares.

## Endpoints

### GET `/api/admin/vm-isos`

- Auth: Admin
- Permission: `admin.vm_nodes.view`
- Route name: `admin-vm-isos-index`
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/3faf369c3b4b626654434921a2ee2655ff85da45/backend/app/routes/admin/vm-isos.php#L29)

**List library ISOs**

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `kind` | query | string | no |  |
| `approval` | query | string | no |  |
| `search` | query | string | no |  |

```bash
curl -X GET "$PANEL_URL/api/admin/vm-isos" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` ISO rows

### GET `/api/admin/vm-isos/scan`

- Auth: Admin
- Permission: `admin.vm_nodes.view`
- Route name: `admin-vm-isos-scan`
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/3faf369c3b4b626654434921a2ee2655ff85da45/backend/app/routes/admin/vm-isos.php#L30)

**List ISO files on a VDS node**

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `vm_node_id` | query | integer | yes |  |

```bash
curl -X GET "$PANEL_URL/api/admin/vm-isos/scan?vm_node_id=$VM_NODE_ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` ISO files

### POST `/api/admin/vm-isos`

- Auth: Admin
- Permission: `admin.vm_nodes.edit`
- Route name: `admin-vm-isos-create`
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/3faf369c3b4b626654434921a2ee2655ff85da45/backend/app/routes/admin/vm-isos.php#L31)

**Add a provider ISO to the library**

```bash
curl -X POST "$PANEL_URL/api/admin/vm-isos" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `201` Created

### PATCH `/api/admin/vm-isos/{id}`

- Auth: Admin
- Permission: `admin.vm_nodes.edit`
- Route name: `admin-vm-isos-update`
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/3faf369c3b4b626654434921a2ee2655ff85da45/backend/app/routes/admin/vm-isos.php#L32)

**Update a library ISO**

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes |  |

```bash
curl -X PATCH "$PANEL_URL/api/admin/vm-isos/$ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Updated

### DELETE `/api/admin/vm-isos/{id}`

- Auth: Admin
- Permission: `admin.vm_nodes.edit`
- Route name: `admin-vm-isos-delete`
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/3faf369c3b4b626654434921a2ee2655ff85da45/backend/app/routes/admin/vm-isos.php#L33)

**Remove a library entry (user ISOs: also deletes the file)**

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes |  |

```bash
curl -X DELETE "$PANEL_URL/api/admin/vm-isos/$ID" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Deleted

### POST `/api/admin/vm-isos/{id}/approve`

- Auth: Admin
- Permission: `admin.vm_nodes.edit`
- Route name: `admin-vm-isos-approve`
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/3faf369c3b4b626654434921a2ee2655ff85da45/backend/app/routes/admin/vm-isos.php#L34)

**Approve a user ISO**

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes |  |

```bash
curl -X POST "$PANEL_URL/api/admin/vm-isos/$ID/approve" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Approved

### POST `/api/admin/vm-isos/{id}/reject`

- Auth: Admin
- Permission: `admin.vm_nodes.edit`
- Route name: `admin-vm-isos-reject`
- [route source](https://github.com/MythicalLTD/FeatherPanel/blob/3faf369c3b4b626654434921a2ee2655ff85da45/backend/app/routes/admin/vm-isos.php#L35)

**Reject a user ISO and delete its file**

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes |  |

```bash
curl -X POST "$PANEL_URL/api/admin/vm-isos/$ID/reject" \
  -H "Authorization: Bearer $FEATHERPANEL_API_KEY" \
  -H "Accept: application/json"
```

Responses: `200` Rejected
