Plugin Files APIs¶
OctoEverywhere's Plugin Files API is a platform-agnostic API for listing, inspecting, uploading, downloading, and deleting files. It also exposes the installed OctoEverywhere plugin's log for diagnostics.
Tip
File-system support depends on what the printer platform exposes. Unsupported commands return plugin status 788. The plugin-log command is available independently of printer file-system support.
Virtual File Paths¶
All File APIs use a common virtual root for each file type. A path must include its root, such as gcode/models/benchy.gcode, config/printer.cfg, or logs/klippy.log. Always pass the returned VirtualPath to another File API; PlatformPath is for native platform APIs.
| Platform | List roots | Upload roots | Download roots | Delete roots | File details |
|---|---|---|---|---|---|
| OctoPrint | gcode, logs |
gcode |
gcode, logs |
gcode, logs |
gcode |
| Moonraker / Klipper | gcode, config, logs |
gcode, config |
gcode, config, logs |
gcode, config |
gcode |
| Bambu Lab | gcode |
gcode |
gcode |
gcode |
gcode basic details |
| PrusaLink, Elegoo, Elegoo CC2 | Not supported | Not supported | Not supported | Not supported | Not supported |
Common Error Codes¶
All Plugin APIs share a set of common error codes that can be returned for issues like the OctoEverywhere plugin is offline, auth issues, etc.
List Files¶
Returns a recursive list of files on the 3D printer.
By default, the command returns every virtual root supported by the platform. Use root to request one root. A full path is also accepted and selects its first path segment as the root; listing remains recursive from that root.
| Name | Type | Default | Description |
|---|---|---|---|
root |
string | All supported roots | Optional virtual root such as gcode, config, or logs. |
path |
string | None | Optional virtual path whose first segment selects the root. Ignored when root is supplied. |
{
"Status": 200,
"Result": {
"Root": [
{
"Type": "folder",
"Name": "gcode",
"VirtualPath": "gcode",
"Children": [
{
"Type": "file",
"Name": "test.gcode",
"VirtualPath": "gcode/test.gcode",
"PlatformPath": "test.gcode",
"SizeBytes": 180576306,
"ModifiedTimeSec": 1780783212,
"Permissions": "rw",
"FilamentType": "PLA"
}
]
}
]
}
}
| Name | Type | Description |
|---|---|---|
Type |
string | folder or file |
Name |
string | The file or folder name |
VirtualPath |
string | Path generated by the OctoEverywhere plugin. Use it for details, upload, download, start, or delete commands. |
PlatformPath |
string | The file path used by the 3D printer software. Use this path to reference the file when interacting with the 3D printer's software. |
SizeBytes |
int | The file size in bytes. |
ModifiedTimeSec |
int | The last modified time in seconds. |
Permissions |
string | The file permission. |
| Additional fields | any | Optional platform-specific metadata is flattened onto the file object. Field names vary by platform. |
Children |
list | Folders can optionally have more files or folders objects. |
Get File Details¶
Returns normalized metadata about one printable file. The amount of metadata varies by platform and file type; unsupported or unknown fields are omitted rather than returned as null.
GET https://<unique_id>.octoeverywhere.com/octoeverywhere-command-api/files/details?path=<VirtualPath>
| Name | Type | Required | Description |
|---|---|---|---|
path |
string | Yes | The VirtualPath of the file to inspect. File metadata is currently limited to the gcode root. |
{
"Status": 200,
"Result": {
"VirtualPath": "gcode/models/benchy.gcode",
"PlatformPath": "models/benchy.gcode",
"FileName": "benchy.gcode",
"SizeBytes": 1360548,
"ModifiedTimeSec": 1780783212,
"EstPrintTimeSec": 4620,
"EstFilamentUsedMm": 5234,
"EstFilamentWeightMg": 15632,
"LayerCount": 240,
"LayerHeightMm": 0.2,
"FirstLayerHeightMm": 0.24,
"ObjectHeightMm": 48.0,
"NozzleDiameterMm": 0.4,
"FilamentType": "PLA",
"FilamentName": "Generic PLA",
"BedTempC": 60.0,
"HotendTempC": 220.0,
"ChamberTempC": 35.0,
"Slicer": "PrusaSlicer",
"SlicerVersion": "2.9.2",
"ThumbnailCount": 3,
"PlatformDetails": {
"platform_native_field": "value"
}
}
}
VirtualPath, PlatformPath, and FileName are always present on success. The remaining normalized fields are optional:
| Name | Type | Description |
|---|---|---|
SizeBytes |
int | File size in bytes. |
ModifiedTimeSec |
int | Unix time in seconds when the file was last modified. |
EstPrintTimeSec |
int | Slicer's estimated print duration in seconds. |
EstFilamentUsedMm |
int | Estimated filament length in millimeters. |
EstFilamentWeightMg |
int | Estimated filament weight in milligrams. |
LayerCount |
int | Total sliced layer count. |
LayerHeightMm |
float | Nominal layer height in millimeters. |
FirstLayerHeightMm |
float | First-layer height in millimeters. |
ObjectHeightMm |
float | Sliced object height in millimeters. |
NozzleDiameterMm |
float | Nozzle diameter used by the slicer profile. |
FilamentType |
string | Generic material family, such as PLA or PETG. |
FilamentName |
string | Slicer filament-profile name. |
BedTempC |
float | Sliced bed target in Celsius. |
HotendTempC |
float | Sliced hotend target in Celsius. |
ChamberTempC |
float | Sliced chamber target in Celsius. |
PrintStartTimeSec |
int | Unix time when this file was most recently started, when tracked. |
Slicer |
string | Slicer name. |
SlicerVersion |
string | Slicer version. |
ThumbnailCount |
int | Number of embedded thumbnails found. |
PlatformDetails |
any | Native metadata returned by the platform. Its structure is platform-specific. |
Upload File¶
Upload a file to the 3D printer's file system.
PUT https://<unique_id>.octoeverywhere.com/octoeverywhere-command-api/files/upload?path=<VirtualPath>
Request GET Parameters¶
| Name | Type | Default | Description |
|---|---|---|---|
path |
string | None | A VirtualPath file path to put the file. |
Request Body¶
The request body must be the file contents to be uploaded.
Response¶
{
"Status": 200,
"Result": {
"VirtualPath": "gcode/test.gcode",
"PlatformPath": "test.gcode",
"SizeBytes": 1360548,
"PrinterResponse": {
"result": "ok"
}
}
}
| Name | Type | Description |
|---|---|---|
VirtualPath |
string | The OctoEverywhere virtual file path. |
PlatformPath |
string | The file path used by the 3D printer software. Use this path to reference the file when interacting with the 3D printer's software. |
SizeBytes |
int | The file size in bytes. |
PrinterResponse |
any | Optional platform-specific response for the upload command. |
Download File¶
Download a file from the 3D printer's file system.
GET https://<unique_id>.octoeverywhere.com/octoeverywhere-command-api/files/download?path=<VirtualPath>
Request GET Parameters¶
| Name | Type | Default | Description |
|---|---|---|---|
path |
string | None | A VirtualPath file path of the file to be downloaded. |
Response¶
A common error json result or the file's contents as the HTTP response body.
Delete File¶
Delete a file from the 3D printer's file system.
POST https://<unique_id>.octoeverywhere.com/octoeverywhere-command-api/files/delete?path=<VirtualPath>
Request GET Parameters¶
| Name | Type | Default | Description |
|---|---|---|---|
path |
string | None | A VirtualPath file path of the file to be deleted. |
Response¶
{
"Status": 200,
"Result": {
"VirtualPath": "gcode/test.gcode",
"PlatformPath": "test.gcode",
"PrinterResponse": {
"result": "ok"
}
}
}
| Name | Type | Description |
|---|---|---|
VirtualPath |
string | The OctoEverywhere virtual file path. |
PlatformPath |
string | The file path used by the 3D printer software. Use this path to reference the file when interacting with the 3D printer's software. |
PrinterResponse |
any | Optional platform-specific response for the delete command. |