Reseller API v1.0
Programmatically create, manage, and monitor VPS instances for your customers. The Reseller API allows you to automate your entire hosting business — from instance creation to billing and server management.
Introduction
💰 Reseller API Overview — The Reseller API enables you to automate your hosting business. Each API call requires a valid reseller_token. All billing is handled through your Purple Wallet balance. When you create or renew a service, the cost is automatically deducted from your wallet.
Base URL & Authentication
https://shulker.in/api/reseller-v1/
?reseller_token=YOUR_RESELLER_TOKEN_HERE
🔐 Authentication Required — All API requests must include a valid reseller_token. You can find your token in the Reseller Dashboard. Tokens are tied to verified reseller accounts only. If your account is not verified, the API will return a 403 error.
VPS Pricing Tiers
The Reseller API supports four performance tiers, each with different pricing for RAM, CPU, and Disk.
| Tier | RAM Price (per GB) | CPU Price (per Core) | Disk Price (per GB) | Node Type |
|---|---|---|---|---|
| eco | ₹26 | ₹16 | ₹0.26 | VPS-Eco |
| std | ₹37 | ₹26 | ₹0.37 | VPS-Std |
| perf | ₹53 | ₹42 | ₹0.53 | VPS-Perf |
| pwr | ₹74 | ₹58 | ₹0.79 | VPS-Pwr |
💰 Pricing Calculation — Monthly price = (RAM_GB × RAM_PRICE) + (CPU_CORES × CPU_PRICE) + (DISK_GB × DISK_PRICE). Example: eco tier with 4GB RAM, 2 CPU cores, 50GB disk = (4×26) + (2×16) + (50×0.26) = ₹104 + ₹32 + ₹13 = ₹149/month.
Create Instance
POSTCreate a new VPS instance. Funds are automatically deducted from your Purple Wallet.
https://shulker.in/api/reseller-v1/?action=create_instance&reseller_token=YOUR_TOKEN
| Parameter | Type | Required | Description |
|---|---|---|---|
| type | string | Yes | Must be vps (currently only VPS supported) |
| tier | string | Yes | Performance tier: eco, std, perf, or pwr |
| ram_gb | integer | Yes | RAM in GB (1-96) |
| cpu_cores | integer | Yes | Number of CPU cores (1-32) |
| disk_gb | integer | No | Disk space in GB (default: 20, max: 1000) |
| os | string | No | Operating system (default: ubuntu-2404) |
| ssh_key | string | No | Public SSH key for root access |
curl -X POST https://shulker.in/api/reseller-v1/ \ -d 'action=create_instance&reseller_token=YOUR_TOKEN' \ -H "Content-Type: application/json" \ -d '{ "type": "vps", "tier": "std", "ram_gb": 4, "cpu_cores": 2, "disk_gb": 50, "os": "ubuntu-2404", "ssh_key": "ssh-rsa AAAAB3NzaC1yc2EAAA..." }'
{
"success": true,
"message": "VPS instance created successfully",
"data": {
"service_id": 12345,
"service_name": "aB3dE5fG7hI9jK1lM3nO5pQ",
"tier": "std",
"cpu_cores": 2,
"ram_gb": 4,
"disk_gb": 50,
"total_cost": 149.00,
"wallet_balance_before": 1000.00,
"wallet_balance_after": 851.00,
"valid_until": "2025-02-07 12:00:00",
"vnc_info": { ... }
}
}
List Services
GETGet a list of all services owned by this reseller account.
https://shulker.in/api/reseller-v1/?action=list_services&reseller_token=YOUR_TOKEN&status=all
| Parameter | Type | Description |
|---|---|---|
| status | string | Filter services: all, active, or expired |
curl "https://shulker.in/api/reseller-v1/?action=list_services&reseller_token=YOUR_TOKEN&status=active"
{
"success": true,
"message": "Services retrieved",
"data": {
"services": [
{
"id": 12345,
"service_name": "aB3dE5fG7hI9jK1lM3nO5pQ",
"service_alias": "customer-site-01",
"service_type": "vps",
"service_tier": "std",
"cpu_cores": 2,
"ram_gb": 4,
"disk_gb": 50,
"service_valid_until": "2025-02-07 12:00:00",
"is_expired": false,
"days_remaining": 28
}
],
"count": 1
}
}
Renew Service
POSTRenew an existing service for another month. Cost is automatically deducted from your Purple Wallet.
https://shulker.in/api/reseller-v1/?action=renew_service&reseller_token=YOUR_TOKEN&service_id=SERVICE_ID
curl -X POST "https://shulker.in/api/reseller-v1/?action=renew_service&reseller_token=YOUR_TOKEN&service_id=12345"
{
"success": true,
"message": "Service renewed successfully",
"data": {
"service_id": 12345,
"previous_expiry": "2025-02-07 12:00:00",
"new_expiry": "2025-03-07 12:00:00",
"renewal_cost": 149.00,
"wallet_balance_before": 851.00,
"wallet_balance_after": 702.00,
"was_expired": false
}
}
Update Service Alias
POSTAdd or update a custom alias for a service. Useful for tracking customer names or project identifiers.
https://shulker.in/api/reseller-v1/?action=update_service_alias&reseller_token=YOUR_TOKEN&service_id=SERVICE_ID
curl -X POST https://shulker.in/api/reseller-v1/ \ -H "Content-Type: application/json" \ -d '{ "action": "update_service_alias", "reseller_token": "YOUR_TOKEN", "service_id": 12345, "alias": "Customer-Website-Production" }'
{
"success": true,
"message": "Alias updated successfully",
"data": {
"service_id": 12345,
"service_name": "aB3dE5fG7hI9jK1lM3nO5pQ",
"alias": "Customer-Website-Production"
}
}
VM Control Actions
Control your VPS instances with the following actions. All require service_id as a parameter.
curl "https://shulker.in/api/reseller-v1/?action=start&reseller_token=YOUR_TOKEN&service_id=12345"
curl "https://shulker.in/api/reseller-v1/?action=stats&reseller_token=YOUR_TOKEN&service_id=12345"
⚠️ Expired Services — If a service is expired, VM control actions will return a 403 error. The service must be renewed first. When a service expires, the VM is automatically stopped.
Advanced Actions
The Reseller API also supports advanced VPS management features.
curl -X POST "https://shulker.in/api/reseller-v1/?action=snapshot_create&reseller_token=YOUR_TOKEN&service_id=12345" \ -H "Content-Type: application/json" \ -d '{ "name": "pre-update-backup", "description": "Backup before major update" }'
Error Codes
| HTTP Status | Error | Description |
|---|---|---|
| 400 | Missing parameter | Required parameter (e.g., action, service_id) is missing |
| 401 | Invalid token | The reseller_token is invalid or expired |
| 403 | Not verified | Reseller account is not verified |
| 403 | Service expired | The VPS has expired and needs renewal before access |
| 404 | Service not found | No service exists with the provided service_id |
| 400 | Insufficient balance | Wallet balance is insufficient for the operation |
| 502 | Node communication failed | Backend node is unreachable or returned an error |
| 503 | No available nodes | No nodes available for the requested tier |
{
"success": false,
"message": "Insufficient balance. Required: ₹149, Available: ₹50"
}
Complete Actions Reference
The Reseller API supports all actions listed below. Use action parameter to specify which operation to perform.
Best Practices
💰 Monitor Wallet Balance — Always check your wallet balance before creating or renewing services. Implement webhook notifications for low balance alerts.
📝 Track Service Aliases — Use the update_service_alias endpoint to add customer identifiers to services. This makes it easy to map API responses to your internal customer IDs.
⏰ Handle Expiration Gracefully — Implement automated renewal checks and notify customers before services expire. The list_services endpoint returns days_remaining to help with this.
🔐 Secure Your Token — Store your reseller token in environment variables or a secure secret manager. Never commit tokens to version control. Rotate tokens periodically.
Quick Reference
# Create VPS (std tier, 4GB RAM, 2 CPU, 50GB disk) curl -X POST https://shulker.in/api/reseller-v1/ \ -d 'action=create_instance&reseller_token=TOKEN' \ -H "Content-Type: application/json" \ -d '{"type":"vps","tier":"std","ram_gb":4,"cpu_cores":2,"disk_gb":50}' # List all active services curl "https://shulker.in/api/reseller-v1/?action=list_services&reseller_token=TOKEN&status=active" # Renew service curl -X POST "https://shulker.in/api/reseller-v1/?action=renew_service&reseller_token=TOKEN&service_id=SERVICE_ID" # Start VPS curl "https://shulker.in/api/reseller-v1/?action=start&reseller_token=TOKEN&service_id=SERVICE_ID" # Get VPS stats curl "https://shulker.in/api/reseller-v1/?action=stats&reseller_token=TOKEN&service_id=SERVICE_ID" # Update service alias curl -X POST https://shulker.in/api/reseller-v1/ \ -H "Content-Type: application/json" \ -d '{"action":"update_service_alias","reseller_token":"TOKEN","service_id":12345,"alias":"customer-site"}' # Stop VPS curl "https://shulker.in/api/reseller-v1/?action=stop&reseller_token=TOKEN&service_id=SERVICE_ID"