Version 2.4.0 of the customer API went live on 2026-07-02. It is a non-breaking release: everything your existing scripts and agents do keeps working. Errors now carry machine-readable codes, cancellations show your credit up front, and the MCP server gets friendlier for agents. The always-current reference lives at /user-api/docs/. Highlights below, grouped as fixes, additions, and documentation.
error_code: not_found where it previously returned a server error.GET /vm/{id}/summary now includes a live runtime object (power state, lock, CPU and memory usage) — no second call needed to see whether a server is running. If the hypervisor read fails, runtime is null and the summary still returns.date_created and date_renews) were previously emitted five hours ahead; formats are unchanged.{ — the stray banner line some clients had to strip is gone.error.error_code, a machine code your scripts can match on instead of parsing message text: not_found, invalid_token, vm_locked, insufficient_credit, upstream_failure, rate_limited. Transient conditions also carry error.retry_after_seconds, so a well-behaved client knows exactly how long to back off.expected_refund and transaction_id — the pro-rated credit for unused prepaid time, computed by the same model the portal uses and issued as account credit. See Refunds and cancellations.balances/credit on the balance endpoints, a singular service_id on order responses, and id/backup_id/snapshot_id on backup and snapshot items), and write bodies accept the aliases too. Existing field names all keep working.action is case-insensitive on input; GET /ssh-key accepts ?service_id=; console sessions accept a ttl; confirmation challenges mirror the id flat at confirmation.confirmation_id; and an agent can exchange a single-use claim code for an API key at POST /agent-keys/claim.structuredContent.result (the unwrapped payload, uniform for reads and writes); a listApiKeys tool lets a full-scope key list key metadata (creating and revoking keys still requires your password); older tool names keep working as aliases; and the server reports its spec version and tool count, so an agent can tell exactly what it is talking to.Nothing in this release requires changes on your side. If you built workarounds for the fixed items — stripping a banner line, adding five hours to dates, calling /detail just for power state — you can remove them.