API Reference
Comprehensive guide to NanoDLP's REST API for automation and integration.
Overview
NanoDLP provides a comprehensive REST API for programmatic access to all printer functions. The API supports JSON responses and uses Bearer token authentication for secure access.
Authentication
Bearer Token Authentication
All protected endpoints require a Bearer token in the Authorization header:
Authorization: Bearer <your-token-here>
Access Levels
- Guest: Public endpoints (no authentication required)
- User: Standard user operations
- Admin: System administration functions
- Manufacturer: High-level configuration access
Base URL
http://your-printer-ip:port/
Core Endpoints
Home and Status
Get Home Page
- URL:
GET /
- Access: Guest
- Response: HTML home page
- Description: Display home page with printer status
Get Home Data (JSON)
- URL:
GET /json/index
- Access: User
- Response: JSON home data
- Description: Get home page data in JSON format
Get Layer Preview
- URL:
GET /layer/preview/{plateID}/{layerID}
- Access: Guest
- Parameters:
plateID
: Plate identifierlayerID
: Layer number
- Response: Layer preview information
- Description: Preview specific layer information
Database Access
Serve Database File
- URL:
GET /json/db/{file}
- Access: User
- Parameters:
file
: Database filename
- Response: Database file (octet-stream)
- Description: Access system database files
Formula Calculations
Formula Page
- URL:
POST /formula
- Access: Guest
- Method: POST
- Response: HTML formula page
- Description: Display formula calculation page
Slicing and File Management
Plate Management
Regenerate Plate (GET)
- URL:
GET /plate/regenerate/{PlateID}
- Access: User
- Parameters:
PlateID
: Plate identifier to regenerate
- Response: JSON confirmation
- Description: Regenerate plate with new settings
Regenerate Plate (POST)
- URL:
POST /plate/regenerate
- Access: User
- Method: POST
- Response: JSON confirmation
- Description: Regenerate plate via POST
Add New Plate (Web)
- URL:
POST /plate/add
- Access: User
- Method: POST
- Response: JSON confirmation
- Description: Upload new plate via web interface
Add New Plate (REST)
- URL:
POST /api/v1/job/add
- Access: User
- Method: POST
- Response: JSON confirmation
- Description: Upload new plate via REST API
Slicing Operations
Get Slicer Status
- URL:
GET /slicer
- Access: Guest
- Response: JSON slicer status
- Description: Get current slicer status and information
Cancel Slicing
- URL:
GET /slicer/cancel
- Access: User
- Response: JSON confirmation
- Description: Cancel current slicing operation
Remote Slicer Host
- URL:
POST /slicer
- Access: User
- Method: POST
- Response: JSON response
- Description: Handle remote slicer requests
Calibration and Estimation
Add Calibration
- URL:
POST /api/v1/athena/calibration/add/{calibrationFile}
- Access: User
- Method: POST
- Parameters:
calibrationFile
: Calibration filename
- Response: JSON confirmation
- Description: Add calibration file for Athena system
Estimate Plate
- URL:
GET /estimate/{profileID}/{height}
- Access: User
- Parameters:
profileID
: Profile identifierheight
: Print height
- Response: JSON plate estimate
- Description: Estimate print time and material usage
Printer Control
Power Management
Turn Off Printer
- URL:
GET /printer/off
- Access: User (printing must be stopped)
- Response: JSON confirmation
- Description: Turn off the printer
Toggle Auto Shutdown
- URL:
GET /printer/auto-shutdown/{mode}
- Access: User
- Parameters:
mode
: Shutdown mode
- Response: JSON confirmation
- Description: Toggle auto shutdown mode
System Operations
Restart Printer
- URL:
GET /printer/restart
- Access: User (printing must be stopped)
- Response: JSON confirmation
- Description: Restart the printer system
Reload NanoDLP
- URL:
GET /printer/reload
- Access: User (printing must be stopped)
- Response: JSON confirmation
- Description: Reload NanoDLP application
Terminate Printer
- URL:
GET /printer/terminate
- Access: User (printing must be stopped)
- Response: JSON confirmation
- Description: Terminate printer process
HMI Control
Restart HMI
- URL:
GET /printer/hmi/restart
- Access: User (printing must be stopped)
- Response: JSON confirmation
- Description: Restart Human Machine Interface
Stop HMI
- URL:
GET /printer/hmi/stop
- Access: User (printing must be stopped)
- Response: JSON confirmation
- Description: Stop Human Machine Interface
Start HMI
- URL:
GET /printer/hmi/start
- Access: User (printing must be stopped)
- Response: JSON confirmation
- Description: Start Human Machine Interface
System Management
Reset Statistics
- URL:
GET /printer/stat/reset
- Access: Admin
- Response: JSON confirmation
- Description: Reset printer statistics
Restore Default Settings
- URL:
GET /printer/restore-default
- Access: User (printing must be stopped)
- Response: JSON confirmation
- Description: Restore printer to default settings
Create Backup
- URL:
GET /printer/backup
- Access: Admin
- Response: JSON confirmation
- Description: Create backup of printer settings
Get Restore Page
- URL:
GET /printer/restore
- Access: Admin
- Response: HTML restore page
- Description: Display printer restore page
Restore Printer
- URL:
POST /printer/restore
- Access: Admin
- Method: POST
- Response: JSON confirmation
- Description: Restore printer from backup
Upgrade Management
Get Upgrade Page
- URL:
GET /printer/upgrade
- Access: Manufacturer
- Response: HTML upgrade page
- Description: Display printer upgrade page
Get Upgrade Information
- URL:
GET /printer/upgrade/info
- Access: Manufacturer
- Response: JSON upgrade information
- Description: Get available upgrade information
Upgrade NanoDLP
- URL:
GET /printer/upgrade/go/{version}
- Access: Manufacturer
- Parameters:
version
: Version to upgrade to
- Response: JSON confirmation
- Description: Upgrade NanoDLP to specified version
Offline Upgrade
- URL:
POST /printer/upgrade/go
- Access: Manufacturer
- Method: POST
- Response: JSON confirmation
- Description: Upgrade from offline file
Upgrade HMI
- URL:
GET /printer/upgrade/dsi/{version}
- Access: Manufacturer
- Parameters:
version
: Version to upgrade to
- Response: JSON confirmation
- Description: Upgrade HMI to specified version
Settings and Configuration
PI Settings
Edit PI Settings Page
- URL:
GET /printer/edit/pi
- Access: Manufacturer
- Response: HTML PI settings page
- Description: Display PI settings editing page
Save PI Settings
- URL:
POST /printer/edit/pi
- Access: Manufacturer
- Method: POST
- Response: JSON confirmation
- Description: Save PI settings
Setup Management
Setup Page
- URL:
GET /setup
- Access: Manufacturer
- Response: HTML setup page
- Description: Display setup configuration page
Export Nano Support
- URL:
GET /setup/export/nanosupport
- Access: Manufacturer
- Response: Nano support export file
- Description: Export nano support configuration
Export Setup
- URL:
GET /setup/export
- Access: Manufacturer
- Response: Setup export file
- Description: Export setup configuration
Import Setup
- URL:
POST /setup/import
- Access: Manufacturer
- Method: POST
- Response: JSON confirmation
- Description: Import setup configuration
Fetch Setup
- URL:
POST /setup/fetch
- Access: Manufacturer
- Method: POST
- Response: JSON confirmation
- Description: Fetch setup configuration
Save Setup
- URL:
POST /setup
- Access: Manufacturer
- Method: POST
- Response: JSON confirmation
- Description: Save setup configuration
Custom Configuration
Get Custom Input
- URL:
GET /setup/custom-input/get/{name}
- Access: Manufacturer
- Parameters:
name
: Input name
- Response: JSON custom input value
- Description: Get custom input value
Set Custom Input
- URL:
POST /setup/custom-input/set/{name}
- Access: Manufacturer
- Method: POST
- Parameters:
name
: Input name
- Response: JSON confirmation
- Description: Set custom input value
Custom Inputs Page
- URL:
GET /setup/custom-inputs
- Access: Manufacturer
- Response: HTML custom inputs page
- Description: Display custom inputs page
Save Custom Inputs
- URL:
POST /setup/custom-inputs
- Access: Manufacturer
- Method: POST
- Response: JSON confirmation
- Description: Save custom inputs configuration
Audio and Consumables
Custom Sound Page
- URL:
GET /setup/custom-sound
- Access: Manufacturer
- Response: HTML custom sound page
- Description: Display custom sound page
Save Custom Sound
- URL:
POST /setup/custom-sound
- Access: Manufacturer
- Method: POST
- Response: JSON confirmation
- Description: Save custom sound configuration
Custom Consumables Page
- URL:
GET /setup/custom-consumables
- Access: Manufacturer
- Response: HTML custom consumables page
- Description: Display custom consumables page
Reset Consumable
- URL:
GET /setup/custom-consumables/reset/{name}
- Access: Manufacturer
- Parameters:
name
: Consumable name
- Response: JSON confirmation
- Description: Reset consumable counter
Save Custom Consumables
- URL:
POST /setup/custom-consumables
- Access: Manufacturer
- Method: POST
- Response: JSON confirmation
- Description: Save custom consumables configuration
System Configuration
Timezone Page
- URL:
GET /setup/timezone
- Access: User
- Response: HTML timezone page
- Description: Display timezone configuration page
Get Timezone JSON
- URL:
GET /json/setup/timezone
- Access: User
- Response: JSON timezone data
- Description: Get timezone data as JSON
Save Timezone
- URL:
POST /setup/timezone
- Access: User
- Method: POST
- Response: JSON confirmation
- Description: Save timezone configuration
Save WiFi Country
- URL:
POST /setup/wifi/country
- Access: User
- Method: POST
- Response: JSON confirmation
- Description: Save WiFi country configuration
Hardware Management
Debug Operations
Continue Debug
- URL:
GET /debug/continue
- Access: Manufacturer
- Response: JSON confirmation
- Description: Continue debug operation
Upload Klipper
- URL:
POST /printer/upload/klipper
- Access: User
- Method: POST
- Response: JSON confirmation
- Description: Upload Klipper firmware
Reconnect RAMPS
- URL:
GET /ramps/reconnect
- Access: User (printing must be stopped)
- Response: JSON confirmation
- Description: Reconnect to RAMPS board
Network Management
WiFi Page
- URL:
GET /wifi
orGET /wifi/{details}
- Access: User
- Parameters:
details
: Optional WiFi details
- Response: HTML WiFi page
- Description: Display WiFi configuration page
Connect WiFi
- URL:
POST /wifi/connect
- Access: User
- Method: POST
- Response: JSON confirmation
- Description: Connect to WiFi network
Get WiFi List
- URL:
GET /json/wifi
- Access: User
- Response: JSON WiFi networks
- Description: Get available WiFi networks
Get Network Status
- URL:
GET /json/network/status
- Access: User
- Response: JSON network status
- Description: Get network connection status
Terminal and G-code
Terminal Page
- URL:
GET /term
- Access: User
- Response: HTML terminal page
- Description: Display terminal interface page
Terminal Data
- URL:
GET /term-io
- Access: User
- Response: JSON terminal data
- Description: Get terminal data stream
Send G-code
- URL:
POST /term-io
orPOST /gcode
- Access: User
- Method: POST
- Response: JSON confirmation
- Description: Send manual G-code command
File Management
Get USB Files
- URL:
GET /json/usb
- Access: User
- Response: JSON USB files
- Description: Get list of USB files
Preview USB File
- URL:
GET /usb/preview/{file}
- Access: User
- Parameters:
file
: Filename to preview
- Response: HTML file preview
- Description: Preview USB file
Fan Control
Turn On Fan
- URL:
GET /fan/on
- Access: User
- Response: JSON confirmation
- Description: Turn on cooling fan
Turn Off Fan
- URL:
GET /fan/off
- Access: User
- Response: JSON confirmation
- Description: Turn off cooling fan
Response Formats
Success Response
{
"success": true,
"message": "Operation completed successfully",
"data": {}
}
Error Response
{
"error": "Error description",
"code": 400,
"message": "Bad Request"
}
Printer Status Response
{
"status": "idle",
"plateID": "12345",
"layer": 150,
"totalLayers": 200,
"progress": 75.5,
"timeElapsed": "2h 30m",
"timeLeft": "45m",
"temperature": 25.5,
"build": "1.43.0",
"cast": false,
"panicked": false,
"lastUpdate": "2023-08-08T10:00:00Z"
}
Slicer Status Response
{
"status": "idle",
"progress": 75.5,
"currentJob": "plate_12345",
"queueSize": 3
}
Task Progress Response
{
"id": "task_12345",
"status": "running",
"progress": 75.5,
"percentage": "75",
"text": "Processing layer 150 of 200"
}
Error Codes
- 200: Success
- 400: Bad Request
- 401: Unauthorized
- 403: Forbidden
- 404: Not Found
- 500: Internal Server Error
Rate Limiting
The API implements rate limiting to prevent abuse. Respect reasonable request rates and implement exponential backoff for retries.
Best Practices
Authentication
- Store tokens securely
- Rotate tokens regularly
- Use HTTPS in production
- Implement proper error handling
Error Handling
- Always check response status
- Implement retry logic with backoff
- Log errors for debugging
- Handle network timeouts gracefully
Performance
- Cache frequently accessed data
- Use pagination for large datasets
- Implement request batching when possible
- Monitor API usage and performance
SDK and Libraries
Official Libraries
- Python:
nanodlp-python
(planned) - JavaScript:
nanodlp-js
(planned) - Go: Native Go support
Community Libraries
- Check community repositories for unofficial libraries
- Ensure compatibility with your NanoDLP version
- Test thoroughly before production use