API Reference
REST API reference for tasmanian.cloud — programmatic control over VPS, Kubernetes, storage, networking, and projects, with auth and request examples.
The tasmanian.cloud API provides programmatic access to all platform services. All endpoints are RESTful and return JSON responses.
Base URL
https://api.tasmanian.cloud/v1
Authentication
All API requests require a Bearer token:
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.tasmanian.cloud/v1/vps
Generate API keys in the O2S Dashboard.
Rate Limits
| Tier | Requests/minute | Burst |
|---|---|---|
| Free | 60 | 10 |
| Pro | 300 | 50 |
| Enterprise | 1000 | 100 |
Rate limit headers are included in all responses:
X-RateLimit-LimitX-RateLimit-RemainingX-RateLimit-Reset
VPS
List VPS Instances
GET /vps
Response:
{
"data": [
{
"id": "vps_abc123",
"name": "my-server",
"status": "running",
"size": "standard-2vcpu-4gb",
"region": "tas-1",
"networks": ["net_xyz789"],
"created_at": "2024-01-15T10:30:00Z"
}
]
}
Create VPS
POST /vps
Request:
{
"name": "my-server",
"size": "standard-2vcpu-4gb",
"image": "ubuntu-24.04",
"ssh_keys": ["ssh_key_id"],
"network": "net_xyz789"
}
Get VPS
GET /vps/{id}
Delete VPS
DELETE /vps/{id}
VPS Actions
POST /vps/{id}/actions
Request:
{
"action": "reboot" // or "shutdown", "start", "rebuild"
}
Templates
One-click deployment of self-hosted applications.
List Templates
GET /templates
Response:
{
"data": [
{
"id": "postgres",
"name": "PostgreSQL",
"description": "Open-source relational database",
"category": "database",
"versions": ["16", "15", "14"]
}
]
}
Deploy Template
POST /templates/deploy
Request:
{
"template": "postgres",
"name": "my-database",
"version": "16",
"config": {
"postgres_user": "admin",
"postgres_db": "myapp"
}
}
List Deployments
GET /templates/deployments
Delete Deployment
DELETE /templates/deployments/{id}
Kubernetes
Cozystack-based Kubernetes clusters.
List Clusters
GET /kubernetes
Create Cluster
POST /kubernetes
Request:
{
"name": "my-cluster",
"version": "1.29",
"node_pools": [
{
"name": "default",
"size": "standard-4vcpu-8gb",
"count": 3
}
]
}
Get Kubeconfig
GET /kubernetes/{id}/kubeconfig
Delete Cluster
DELETE /kubernetes/{id}
Storage
S3-compatible object storage via RustFS.
List Buckets
GET /storage/buckets
Create Bucket
POST /storage/buckets
Request:
{
"name": "my-bucket",
"region": "tas-1"
}
Generate S3 Credentials
POST /storage/credentials
Request:
{
"bucket": "my-bucket",
"permissions": ["read", "write"]
}
Response:
{
"access_key": "TASXXXXXXXXXXXXXXXX",
"secret_key": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"endpoint": "https://s3.tas-1.tasmanian.cloud"
}
Delete Bucket
DELETE /storage/buckets/{name}
Networks
Private networking with VPN-based external access.
List Networks
GET /networks
Create Network
POST /networks
Request:
{
"name": "my-network",
"cidr": "10.0.0.0/24"
}
Attach VPS to Network
POST /networks/{id}/attach
Request:
{
"vps_id": "vps_abc123"
}
Get VPN Configuration
External access to your private network is via Netbird VPN.
GET /networks/{id}/vpn-config
Response:
{
"setup_key": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"management_url": "https://vpn.tasmanian.cloud",
"instructions": "Install Netbird client and use the setup key to connect"
}
Delete Network
DELETE /networks/{id}
Errors
All errors follow a consistent format:
{
"error": {
"code": "validation_error",
"message": "Invalid VPS size specified",
"details": {
"field": "size",
"allowed": ["standard-2vcpu-4gb", "standard-4vcpu-8gb"]
}
}
}
Error Codes
| Code | HTTP Status | Description |
|---|---|---|
unauthorized | 401 | Invalid or missing API key |
forbidden | 403 | Insufficient permissions |
not_found | 404 | Resource not found |
validation_error | 422 | Invalid request parameters |
rate_limited | 429 | Too many requests |
internal_error | 500 | Server error |
SDKs
Python
pip install tasmanian-cloud
from tasmanian_cloud import Client
client = Client(api_key="YOUR_API_KEY")
# List VPS instances
instances = client.vps.list()
# Create a VPS
vps = client.vps.create(
name="my-server",
size="standard-2vcpu-4gb",
image="ubuntu-24.04"
)
# Deploy a template
deployment = client.templates.deploy(
template="postgres",
name="my-db"
)
JavaScript/TypeScript
npm install @tasmanian-cloud/sdk
import { TasmanianCloud } from '@tasmanian-cloud/sdk';
const client = new TasmanianCloud({ apiKey: 'YOUR_API_KEY' });
// List VPS instances
const instances = await client.vps.list();
// Create a VPS
const vps = await client.vps.create({
name: 'my-server',
size: 'standard-2vcpu-4gb',
image: 'ubuntu-24.04'
});
// Deploy a template
const deployment = await client.templates.deploy({
template: 'postgres',
name: 'my-db'
});
Go
go get github.com/tasmanian-cloud/tc-go
package main
import (
tc "github.com/tasmanian-cloud/tc-go"
)
func main() {
client := tc.NewClient("YOUR_API_KEY")
// List VPS instances
instances, _ := client.VPS.List()
// Create a VPS
vps, _ := client.VPS.Create(tc.CreateVPSRequest{
Name: "my-server",
Size: "standard-2vcpu-4gb",
Image: "ubuntu-24.04",
})
}
Webhooks
Receive real-time notifications for events.
Configure Webhook
POST /webhooks
Request:
{
"url": "https://yourapp.com/webhooks/tasmanian",
"events": ["vps.created", "vps.deleted", "template.deployed"],
"secret": "your-webhook-secret"
}
Event Types
| Event | Description |
|---|---|
vps.created | VPS instance created |
vps.deleted | VPS instance deleted |
vps.status_changed | VPS status changed |
template.deployed | Template deployment completed |
template.deleted | Template deployment removed |
kubernetes.ready | Kubernetes cluster ready |
storage.bucket_created | Storage bucket created |
Webhook Payload
{
"event": "vps.created",
"timestamp": "2024-01-15T10:30:00Z",
"data": {
"id": "vps_abc123",
"name": "my-server",
"status": "running"
}
}
Webhooks include an X-Signature header for verification using HMAC-SHA256.
OpenAPI Specification
Full OpenAPI 3.0 spec available at:
https://api.tasmanian.cloud/v1/openapi.json