Download OpenAPI specification:
This is the API documentation for the Icefish Reseller API. It provides endpoints to manage games, locations, and servers.
Retrieve all supported game builds and related metadata.
Returned objects include:
jarfile: Internal filename reference for use in servers for auto-install.name: Human readable game/version label.parent_game: The parent game or franchise this game belongs to.category: The category for this game.memory_required: Minimum memory requirement in MB.memory_recommended: Recommended memory in MB.info_url: Upstream reference or release notes link (when available).Use this endpoint to populate game/version selectors prior to provisioning a server.
{- "data": [
- {
- "jarfile": "minecraft_1.21.8.jar",
- "name": "Minecraft 1.21.8",
- "parent_game": "Minecraft: Java Edition",
- "category": "Minecraft: Java Edition",
- "memory_required": 1024,
- "memory_recommended": 2048
}
], - "status": "success",
- "message": ""
}List all datacenter locations available for provisioning.
Returned objects include:
name: Human readable label for the location.code: Stable short internal code, used during server provisioning.country_code: Two-letter country code.region: Higher level geographic grouping (e.g., continent or macro area).coordinates.latitude / coordinates.longitude: Approximate geo coordinates (not exact site).ping_node: Hostname you can probe to measure latency from clients.ping_node.https://<ping_node>:3456/ping (expect Pong response).memory_available: Current aggregate free memory capacity (MB) for provisioning.Use this endpoint to build region selectors and surface capacity hints.
{- "data": [
- {
- "name": "New York",
- "code": "NY",
- "country_code": "US",
- "region": "North America",
- "coordinates": {
- "latitude": 40.7128,
- "longitude": -74.006
}, - "ping_node": "6723.node.apexhosting.gdn",
- "memory_available": 1048576
}
], - "status": "success",
- "message": ""
}Retrieve a paginated collection of servers you have access to.
Query parameters:
user_id: Filter results to servers assigned to a specific end user.page: 1-based page index.pageSize: Number of items per page (upper bound enforced server-side).Server objects (see server schema) include:
id: Unique server identifier.user_id: Owning end user ID.jarfile: Game build / runtime identifier.memory: Allocated RAM in MB.player_slots: Configured maximum player capacity.world: Primary world or save name.suspended: Whether server is suspended.name: Friendly display name.status: Lifecycle state (started, stopped, etc.).ip / port: Connection target for clients.location_code: Deployment location code (from List Locations).The meta block provides pagination counters enabling UI navigation.
| user_id | integer Example: user_id=123 servers assigned to a specific user ID |
| page | integer Default: 1 Example: page=2 Page number for pagination |
| page_size | integer Default: 20 Example: page_size=50 Number of items per page |
{- "meta": {
- "page": 1,
- "page_size": 20,
- "total_objects": 1,
- "total_pages": 1
}, - "data": [
- {
- "id": 123,
- "user_id": 456,
- "jarfile": "minecraft_1.21.8.jar",
- "memory": 2048,
- "player_slots": 50,
- "world": "world",
- "suspended": false,
- "name": "Minecraft Server",
- "ip": "192.168.1.50",
- "port": 25565,
- "location_code": "NY"
}
], - "status": "success",
- "message": ""
}Provision a new server instance.
Required body fields:
user_id: End user who will own the server.location_code: Deployment location code (must match a value from List Locations).memory: Allocated RAM in MB.auto_start: Start automatically after creation if true.Optional body fields:
jarfile: Specific game jarfile to auto-install or run.player_slots: Player capacity limit.world: Initial world / save name.name: Friendly display name.suspended: Create in a suspended state if desired.Response returns the new server id.
| user_id required | integer Owning end user ID |
| jarfile | string The game jarfile to use for the server |
| location_code required | string Deployment location code (from List Locations) |
| memory required | integer Allocated memory in MB |
| player_slots | integer Configured maximum player capacity |
| world | string Primary world/save name |
| name | string Display name |
| suspended | boolean Server suspension state |
| auto_start required | boolean Whether the server should start automatically after creation |
{- "user_id": 123,
- "jarfile": "minecraft_1.21.8.jar",
- "location_code": "NY",
- "memory": 4096,
- "player_slots": 50,
- "world": "SurvivalWorld",
- "name": "Minecraft Server",
- "suspended": false,
- "auto_start": true
}{- "data": {
- "id": 456
}, - "status": "success",
- "message": "Server created successfully."
}Fetch full configuration and runtime metadata for a single server.
Key fields (see server schema) include:
id: Unique server identifier.user_id: Owning end user ID.jarfile: Game build / runtime identifier.memory: Allocated RAM in MB.player_slots: Configured maximum player capacity.world: Primary world or save name.suspended: Whether server is suspended.name: Friendly display name.ip / port: Connection target for clients.location_code: Deployment location code (from List Locations).| server_id required | integer Example: 456 Unique identifier of the server |
{- "data": {
- "id": 123,
- "user_id": 456,
- "jarfile": "minecraft_1.21.8.jar",
- "memory": 2048,
- "player_slots": 50,
- "world": "world",
- "suspended": false,
- "name": "Minecraft Server",
- "ip": "192.168.1.50",
- "port": 25565,
- "location_code": "NY"
}, - "status": "success",
- "message": ""
}Apply partial updates (JSON Merge Patch) to mutable server attributes.
Updatable fields:
user_idjarfilememoryplayer_slotsworldsuspendednameNotes:
location_code and network allocation (ip/port) cannot be modified here (use a transfer workflow).| server_id required | integer Example: 456 Unique identifier of the server |
| user_id | integer Updated owning end user ID |
| jarfile | string Updated jarfile to use for the server |
| memory | integer Updated allocated memory in MB |
| player_slots | integer Updated configured maximum player capacity |
| world | string Updated primary world/save name |
| suspended | boolean Updated server suspension state |
| name | string Updated display name |
{- "user_id": 123,
- "jarfile": "minecraft_1.21.8.jar",
- "memory": 8192,
- "player_slots": 100,
- "world": "AdventureWorld",
- "suspended": false,
- "name": "Updated Server Name"
}{- "data": { },
- "status": "success",
- "message": "Server updated successfully."
}Permanently remove a server and its associated data.
The server will be stopped automatically if it is running.
Irreversible: capture backups or exports before issuing this call if retention is required.
| server_id required | integer Example: 456 Unique identifier of the server |
{- "data": { },
- "status": "success",
- "message": "Server deleted successfully."
}Return the current lifecycle status only.
Status values:
startedstoppedstartingstoppingUse for lightweight polling without fetching full server details.
| server_id required | integer Example: 456 Unique identifier of the server |
{- "data": {
- "status": "started"
}, - "status": "success",
- "message": ""
}Request a lifecycle action for the server.
Actions:
start: Boot a stopped server.stop: Gracefully stop a running server.restart: Graceful stop then start.force_stop: Immediate termination (may risk data loss).Action processing is asynchronous; poll Get Server Status to observe state changes.
| server_id required | integer Example: 456 ID of the server |
| action required | string Enum: "start" "stop" "restart" "force_stop" The desired server action |
{- "action": "stop"
}{- "data": { },
- "status": "success",
- "message": "Server action accepted and is being processed."
}Retrieve real-time CPU and memory utilization snapshot.
Fields:
cpu_percent: Current CPU usage percentage.memory_percent: Current memory usage percentage.Intended for dashboards & health indicators; avoid very high polling frequencies.
| server_id required | integer Example: 456 Unique identifier of the server |
{- "data": {
- "cpu_percent": 42.5,
- "memory_percent": 68.3
}, - "status": "success",
- "message": ""
}Retrieve recent console output lines plus the latest sequence marker for incremental polling.
Usage pattern:
log_seq to obtain initial batch + starting log_seq.log_seq to fetch only new lines.| server_id required | integer Example: 456 Unique identifier of the server |
| log_seq | integer Example: log_seq=123456789 Sequence number of the last log line received. Use this to fetch new logs since then. |
{- "data": {
- "logs": [
- "04.09 12:07:44 [Multicraft] Starting server!",
- "04.09 12:08:05 [Server] Startup Done (12.761s)! For help, type 'help'"
], - "log_seq": 123456789
}, - "status": "success",
- "message": ""
}Submit a single command to the server console.
Behavior:
| server_id required | integer Example: 456 Unique identifier of the server |
| command required | string Command to execute on the server console |
{- "command": "say Hello players!"
}{- "data": { },
- "status": "success",
- "message": "Command accepted and is being processed."
}Retrieve all FTP users associated with a specific server.
Returned objects include:
id: Unique FTP user identifier.username: FTP base username.permissions: Array of permission strings assigned to the user for this server. (e.g., read, write)| server_id required | integer Example: 456 Unique identifier of the server |
{- "data": [
- {
- "id": 789,
- "username": "icefish.ftpuser123",
- "permissions": [
- "read",
- "write"
]
}
], - "status": "success",
- "message": ""
}Link an existing FTP user to this server with specific permissions.
Required body fields:
ftp_user_id: ID of the FTP user to assign.permissions: Array of permission strings to grant (e.g., read, write).Response confirms the assignment.
| server_id required | integer Example: 456 Unique identifier of the server |
| ftp_user_id required | integer ID of the FTP user to assign to the server |
| permissions required | Array of strings Permissions to grant to the FTP user for this server |
{- "ftp_user_id": 789,
- "permissions": [
- "read",
- "write"
]
}{- "data": { },
- "status": "success",
- "message": "FTP user assigned to server successfully."
}Fetch details of a specific FTP user assigned to this server.
Returned object includes:
id: Unique FTP user identifier.username: FTP base username.permissions: Array of permission strings assigned to the user for this server. (e.g., read, write)| server_id required | integer Example: 456 Unique identifier of the server |
| ftp_user_id required | integer Example: 789 Unique identifier of the FTP user assigned to the server |
{- "data": {
- "id": 789,
- "username": "icefish.ftpuser123",
- "permissions": [
- "read",
- "write"
]
}, - "status": "success",
- "message": ""
}Modify permissions for an FTP user assigned to this server.
Updatable fields:
permissions: Array of permission strings to set (e.g., read, write).Notes:
| server_id required | integer Example: 456 Unique identifier of the server |
| ftp_user_id required | integer Example: 789 Unique identifier of the FTP user assigned to the server |
| permissions | Array of strings Updated permissions to grant to the FTP user for this server |
{- "permissions": [
- "read"
]
}{- "data": { },
- "status": "success",
- "message": "FTP user assignment updated successfully."
}Unlink an FTP user from this server, revoking their access.
This does not delete the FTP user account itself, only the association with this server.
| server_id required | integer Example: 456 Unique identifier of the server |
| ftp_user_id required | integer Example: 789 Unique identifier of the FTP user to remove from the server |
{- "data": { },
- "status": "success",
- "message": "FTP user removed from server successfully."
}Retrieve connection details (hostname, port, username) for an FTP user assigned to this server.
Note: Passwords are not retrievable for security reasons. Reset the password if needed.
| server_id required | integer Example: 456 Unique identifier of the server |
| ftp_user_id required | integer Example: 789 Unique identifier of the FTP user assigned to the server |
{- "data": {
- "hostname": "6723.node.apexhosting.gdn",
- "port": 21,
- "username": "icefish.ftpuser123.456"
}, - "status": "success",
- "message": ""
}Retrieve all databases for a given server.
| server_id required | integer |
{- "data": [
- {
- "id": 167832,
- "name": "apexMC123",
- "user": "apexMC123",
- "pass": "securePassword!",
- "host": "mysql.apexhosting.gdn",
- "port": 3306
}
], - "status": "success",
- "message": ""
}Create a new database for the server.
| server_id required | integer |
{- "data": {
- "id": 167832,
- "name": "apexMC123",
- "user": "apexMC123",
- "pass": "securePassword!",
- "host": "mysql.apexhosting.gdn",
- "port": 3306
}, - "status": "success",
- "message": ""
}Change the password for a given server database.
| server_id required | integer |
| db_id required | integer |
{- "data": [
- {
- "id": 167832,
- "name": "apexMC123",
- "user": "apexMC123",
- "pass": "securePassword!",
- "host": "mysql.apexhosting.gdn",
- "port": 3306
}
], - "status": "success",
- "message": ""
}Retrieve all backup files for a server.
| server_id required | integer |
{- "data": [
- {
- "file": "world123.zip",
- "time": "2024-01-15T12:34:56Z",
- "size": 2048
}
], - "status": "success",
- "message": ""
}Retrieve status of current/last backup for a server.
| server_id required | integer |
{- "data": {
- "status": "running",
- "message": "[World: world456]",
- "created_at": "2023-10-01T12:34:56Z",
- "file": "world456.zip"
}, - "status": "success",
- "message": ""
}Restore a backup file for a server.
| server_id required | integer |
| file required | string Filename of the backup to restore (.zip) |
{- "file": "world123.zip"
}{- "data": { },
- "status": "success",
- "message": ""
}Retrieve all FTP users associated with your reseller account.
Returned objects include:
id: Unique FTP user identifier.username: FTP base username.servers: Array of server IDs the FTP user has access to.{- "data": [
- {
- "id": 789,
- "username": "icefish.ftpuser123",
- "servers": [
- 456,
- 457
]
}
], - "status": "success",
- "message": ""
}Create a new FTP user associated with your reseller account.
Required body fields:
username: Desired FTP base username (must be unique).password: Password for the FTP user (minimum 8 characters).Response returns the new FTP user id, and the final base username including the per-reseller prefix.
| username required | string Desired FTP base username (must be unique) |
| password required | string Password for the FTP user (minimum 8 characters) |
{- "username": "ftpuser123",
- "password": "securePassword!"
}{- "data": {
- "id": 789,
- "username": "icefish.ftpuser123"
}, - "status": "success",
- "message": "FTP user created successfully."
}Fetch details for a specific FTP user by ID.
id: Unique FTP user identifier.username: FTP base username.servers: Array of server IDs the FTP user has access to.| ftp_user_id required | integer Unique FTP user identifier |
{- "data": {
- "id": 789,
- "username": "icefish.ftpuser123",
- "servers": [
- 456,
- 457
]
}, - "status": "success",
- "message": ""
}Apply partial updates (JSON Merge Patch) to mutable FTP user attributes.
Updatable fields:
username: Change the FTP user's base username.password: Change the FTP user's password.Notes:
| ftp_user_id required | integer Example: 789 Unique FTP user identifier |
| username | string New base username for the FTP user |
| password | string New password for the FTP user (minimum 8 characters) |
{- "username": "newftpuser",
- "password": "newSecurePassword!"
}{- "data": {
- "id": 789,
- "username": "icefish.newftpuser"
}, - "status": "success",
- "message": "FTP user updated successfully."
}Permanently remove an FTP user.
Irreversible: ensure no servers require this FTP user before deletion.
| ftp_user_id required | integer Example: 789 Unique FTP user identifier |
{- "data": { },
- "status": "success",
- "message": "FTP user deleted successfully."
}Create a new end user by email (idempotent).
Behavior:
existing flag.Body fields:
email: Unique email address (must be valid format).Safe to call repeatedly with the same email without creating duplicates.
| email required | string <email> Unique user email address |
{- "email": "user@example.com"
}{- "data": {
- "user_id": 123,
- "login_token": "abcd1234efgh5678",
- "existing": false
}, - "status": "success",
- "message": "New user created."
}