DocsAbout the Akasha APIEndpoint overview

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.

ResourceBase 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 pathPurpose
POST /1.0/k8s/create-clusterCreate 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:

FieldRequiredDefaultDescription
nameyesCluster name
networkyesNetwork the cluster's nodes attach to
rootPoolyesStorage pool for node root disks
projectnodefaultProject the cluster belongs to — always set this to your project
cpFlavornoc2-m4Control-plane node flavor (c<vCPU>-m<GB RAM>)
workerFlavornosame as cpFlavorWorker node flavor
cpReplicasno1Number of control-plane nodes
workerReplicasno0Number of worker nodes
dataDiskSizenoSize of an extra data disk attached to each worker
storagePoolnodefaultStorage pool for worker data disks
storageTypenolvmData disk type: lvm, longhorn, or raw
addonsno[]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 pathPurpose
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 pathPurpose
GET /1.0/k8s/addons/catalogThe 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/installInstall a chart; runs asynchronously and returns 202
DELETE /1.0/k8s/clusters/{name}/helm/uninstallUninstall 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 pathPurpose
GET /1.0/k8s/clusters/{name}/ingress?project=Ingress status: External IPs, network details, load balancers
POST /1.0/k8s/clusters/{name}/ingressAdd an External IP (ports 80 and 443 to all workers)
PUT /1.0/k8s/clusters/{name}/ingress/syncRe-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/routesManage HTTP routes (Kubernetes Ingress objects)
GET /1.0/k8s/clusters/{name}/ingress/servicesList cluster services you can route to
GET /1.0/k8s/clusters/{name}/ingress/classesList available ingress classes
GET/POST /1.0/k8s/clusters/{name}/tcp-routesList 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 pathPurpose
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 pathPurpose
GET /1.0/akasha/rbac/meYour identity: email, groups, permissions, superuser flag, allowed projects