Endpoint overview
A grouped overview of the tenant-facing Akasha API endpoints for infrastructure, managed Kubernetes, billing, and identity.
This page is an overview of the endpoints most useful for automation — it is not a complete reference. Every request needs a bearer token (see Authenticate), and most endpoints take a ?project= query parameter to select the project. Responses use the envelope described in About the Akasha API.
Infrastructure
Infrastructure resources are standard REST endpoints: GET a collection to list, POST to create, and GET/PUT/PATCH/DELETE individual resources. They mirror exactly what the console does, so the quickest way to discover request fields is to perform the action in the console and inspect the request it sends.
| Resource | Base path |
|---|---|
| Instances | /1.0/instances |
| Images | /1.0/images |
| Networks | /1.0/networks |
| Storage pools | /1.0/storage-pools |
| Storage volumes | /1.0/storage-pools/{pool}/volumes |
| Profiles | /1.0/profiles |
| Operations | /1.0/operations |
Managed Kubernetes clusters
| Method and path | Purpose |
|---|---|
POST /1.0/k8s/create-cluster | Create a cluster (fields below) |
GET /1.0/k8s/clusters?project= | List clusters |
GET /1.0/k8s/clusters/{name}?project= | Get one cluster |
DELETE /1.0/k8s/clusters/{name}?project= | Delete a cluster; returns an operation_id |
GET /1.0/k8s/clusters/{name}/kubeconfig?project= | Download the cluster kubeconfig as YAML; optional &server= rewrites the API server address |
GET /1.0/k8s/clusters/{name}/talosconfig?project= | Download the Talos client config as YAML; optional &endpoint= rewrites the endpoint |
GET /1.0/k8s/clusters/{name}/logs/{namespace}/{pod}?project= | Stream pod logs; supports &container=, &follow=true, &tailLines= |
POST /1.0/k8s/create-cluster takes a JSON body with these fields:
| Field | Required | Default | Description |
|---|---|---|---|
name | yes | — | Cluster name |
network | yes | — | Network the cluster's nodes attach to |
rootPool | yes | — | Storage pool for node root disks |
project | no | default | Project the cluster belongs to — always set this to your project |
cpFlavor | no | c2-m4 | Control-plane node flavor (c<vCPU>-m<GB RAM>) |
workerFlavor | no | same as cpFlavor | Worker node flavor |
cpReplicas | no | 1 | Number of control-plane nodes |
workerReplicas | no | 0 | Number of worker nodes |
dataDiskSize | no | — | Size of an extra data disk attached to each worker |
storagePool | no | default | Storage pool for worker data disks |
storageType | no | lvm | Data disk type: lvm, longhorn, or raw |
addons | no | [] | Add-on names from the catalog, installed once the cluster is ready |
A successful create returns 201 with {name, namespace, network, status: "Provisioning", operation_id}. See Create a cluster for guidance on choosing these values.
Kubernetes operations
Cluster creation and deletion and add-on installs run asynchronously and are tracked as operations:
| Method and path | Purpose |
|---|---|
GET /1.0/k8s/operations?cluster=&project=&status=&limit= | List operations (default limit 50) |
GET /1.0/k8s/operations/{id} | Get one operation, including status and progress messages |
DELETE /1.0/k8s/operations/{id} | Cancel a pending or running operation |
Operation statuses are pending, running, success, failed, and cancelled. Operation records are kept for 24 hours.
Add-ons and Helm
| Method and path | Purpose |
|---|---|
GET /1.0/k8s/addons/catalog | The add-on catalog: chart versions, dependencies, and configuration for every one-click add-on |
GET /1.0/k8s/clusters/{name}/helm?project= | List Helm releases installed on the cluster |
POST /1.0/k8s/clusters/{name}/helm/install | Install a chart; runs asynchronously and returns 202 |
DELETE /1.0/k8s/clusters/{name}/helm/uninstall | Uninstall a release |
GET /1.0/k8s/clusters/{name}/helm/history/{namespace}/{release} | Last 20 revisions of a release |
GET /1.0/k8s/clusters/{name}/helm/values/{namespace}/{release} | Release values; ?allValues=true returns all computed values |
POST /1.0/k8s/clusters/{name}/helm/rollback/{namespace}/{release}/{revision} | Roll back to a revision |
GET /1.0/k8s/clusters/{name}/helm/manifest/{namespace}/{release} | Rendered manifest of a release |
See Add-ons for what each add-on provides.
Ingress and TCP routes
These endpoints manage External IPs and traffic routing into a cluster — see Ingress for concepts.
| Method and path | Purpose |
|---|---|
GET /1.0/k8s/clusters/{name}/ingress?project= | Ingress status: External IPs, network details, load balancers |
POST /1.0/k8s/clusters/{name}/ingress | Add an External IP (ports 80 and 443 to all workers) |
PUT /1.0/k8s/clusters/{name}/ingress/sync | Re-sync load-balancer backends with current worker nodes |
DELETE /1.0/k8s/clusters/{name}/ingress/{ip} | Remove an External IP |
GET/POST/DELETE /1.0/k8s/clusters/{name}/ingress/routes | Manage HTTP routes (Kubernetes Ingress objects) |
GET /1.0/k8s/clusters/{name}/ingress/services | List cluster services you can route to |
GET /1.0/k8s/clusters/{name}/ingress/classes | List available ingress classes |
GET/POST /1.0/k8s/clusters/{name}/tcp-routes | List or create TCP routes on an existing External IP |
DELETE /1.0/k8s/clusters/{name}/tcp-routes/{ip}/{port} | Remove a TCP route |
Billing
| Method and path | Purpose |
|---|---|
GET /1.0/billing/usage?project=&start=&end= | Usage quantities for a project |
start and end are RFC3339 timestamps; provide both or neither (the default is the current month). The response contains per-resource usage rows (core-minutes, RAM GB-minutes, disk GB-minutes, active minutes) and totals. In deployments where usage metering is not configured, this endpoint returns 404. See Usage and billing.
Identity
| Method and path | Purpose |
|---|---|
GET /1.0/akasha/rbac/me | Your identity: email, groups, permissions, superuser flag, allowed projects |