Skip to navigation

October 28, 2026

Public API 0.6.1: every route exact-path and method-matched

Object lock and custom domains work. GET/PUT /object-storage/buckets/{bucket_name}/object-lock and the three custom-domains operations answered 404 from the storage service after 0.6.0 because the gateway forwarded them on a prefix route; they are now routed per operation. Object lock reads answer 404 on a bucket created without lock, and adding a custom domain answers 400 until the hostname CNAMEs to cname_target; both are now documented on the operations.

Removed methods no longer reach a service. Since 0.6.0 removed operations such as PATCH .../subnets/{subnet_id} or the Secret Store PATCH calls answered from the service when called with the old method. The gateway now matches on HTTP method as well as path, so they answer 404 at the edge.

CORS read shape. GET .../cors currently returns rule keys in S3 casing (AllowedOrigins, MaxAgeSeconds) while PUT takes snake_case; the storage service is being updated to answer in snake_case. See CORS.

No operation was added or removed; the reference stays at 223 operations.


October 28, 2026

Public API 0.6.2: hourly or monthly VMs through the API

POST /compute/cloud-vms and POST /compute/gpu-vms now name the billing term inside billing_catalog. Hourly pay-as-you-go stays the default. For a plan’s monthly price, send "billing_interval": "MONTHLY" and "committed": true: the first month is reserved from the wallet before the VM is created, and the VM cannot be deleted or resized until the month ends (409 with code VM_COMMITTED, plus paid_until and renews_on). The plan’s billing_catalog from GET /compute/plans does not carry the term itself, so earlier clients that passed it through unchanged always created hourly VMs.

Every public API operation now also runs through the same service layer as the portal, so plan limits, billing suspension (423), restriction and commitment rules are the portal’s own. No operation was added or removed; the reference stays at 223 operations.