ISOs¶
Mount an ISO image on a server to boot an installer or a rescue system from it. HostHatch keeps a library of ISOs, and each project can add one ISO of its own, which we download from a URL you give.
Endpoints¶
| Endpoint | What it does |
|---|---|
POST / |
Mount an ISO |
POST / |
Unmount an ISO |
GET / |
List ISOs |
POST / |
Upload an ISO |
GET / |
Get an ISO |
DELETE / |
Delete an ISO |
The ISO object¶
{
"id": 8980,
"name": "AlmaLinux-10.2-x86_64-dvd.iso",
"type": "custom",
"status": "ready",
"progress": 100,
"created_at": "2026-10-07T14:09:24Z"
}
| Field | Type | Description |
|---|---|---|
id |
integer | The ISO's id, which mounting takes. |
name |
string | Its file name. |
type |
string | library for HostHatch's ISOs, custom for the project's own. |
status |
string | downloading, ready or failed. Library ISOs are always ready. |
progress |
integer | How much is downloaded, from 0 to 100. |
created_at |
string | When it was added. |
Library and custom ISOs¶
List ISOs¶
GET /
The library's ISOs and the project's own.
Upload an ISO¶
POST /
Add the project's custom ISO from a URL. The answer is 201 with the ISO, downloading: poll it until it is ready.
{"url": "https://example.com/images/rescue.iso"}
The URL must:
- use
httporhttps, and end with.iso; - be a public address, not a private or internal one;
- answer directly, without redirecting.
A project holds one custom ISO: adding a second answers 409 iso_limit_reached, so delete the first. If you lose the answer, list the project's ISOs before trying again: the download carries on, and the list shows it.
Get an ISO¶
GET /
The project's custom ISO. Library ISOs are only in the list.
Delete an ISO¶
DELETE /
Delete the project's custom ISO. An ISO mounted on a server answers 409 iso_mounted: unmount it first.
Mounting¶
Mounting and unmounting are actions, and exclusive: one at a time per server, and not during another exclusive action. Each changes the server's boot order and reboots it. Send an Idempotency-Key with each.
Mount an ISO¶
POST /
Mount an ISO on the server: a library ISO, or the project's own.
{"iso_id": 8980}
The server's iso field shows the mounted ISO.
Unmount an ISO¶
POST /
Unmount the server's ISO, so it boots from its disk again. The request takes no body.
Errors¶
| Status | Code | When |
|---|---|---|
| 400 | validation_error |
The URL is invalid, or doesn't meet the rules above. |
| 403 | read_only_key |
A change with a read-only key. |
| 403 | project_not_ready |
The project is still being set up. |
| 404 | not_found |
No such ISO or server in the project. |
| 409 | iso_limit_reached |
The project already has a custom ISO. |
| 409 | iso_mounted |
Deleting an ISO that is mounted. |
| 409 | action_in_progress |
Another exclusive action is running on the server. |
| 502 | upstream_error |
A system behind the API failed. |