Changelog
Checked against the API code 2 November 2026
This page lists the changes to the public API that you could notice in your integration: new endpoints, new fields, new error codes, changed behaviour, fixes and deprecations. The newest change comes first.
Each date is the day the change takes effect. A change that could break an integration is listed here before that day. A Fixed entry is a response that did not match its documentation and now does. Fixes take effect without advance notice. Versioning says which changes count as breaking.
The changelog starts on 2 November 2026, with this site. Earlier changes are not listed.
2 November 2026
Section titled “2 November 2026”-
New in the reference:
GET /api/jobs/{jobId}returns the progress and outcome of a job that runs in the background. A VPS restart, for example, returns this path inoperation.pollUrl. The endpoint was already live. It is now part of the public API, although its path does not start with/api/v2/. -
Fixed: For a cancellation with
cancelType: "immediate",scheduledAtis now the time of the request, the same ascancelledAt. It used to be the service’s next due date.end_of_periodcancellations are unchanged. This applies to: -
Fixed: For a web hosting account whose
serviceStatusiscancelled, the cancellation now hasstatus: "completed". It used to berevoked, which means a withdrawn cancellation. This applies toGET /api/v2/shared-hosting/{accountId}/cancellation, the web hosting items ofGET /api/v2/cancellationsandPOST /api/v2/shared-hosting/{accountId}/actions/cancel. VPS cancellations already worked this way. -
Changed:
POST /api/v2/shared-hosting/{accountId}/actions/billing-cycleandPOST /api/v2/vps/{id}/actions/billing-cyclenow return409with their own codes where they used to return400 invalid_request:overdue_invoice_blocking: the renewal invoice is overdue.existing_invoice_not_cancellable: you sentcancelExistingInvoice: true. The open invoice cannot be cancelled and replaced, for example because it also bills other services.
Both carry
recovery.action: "pay_outstanding_invoice"and the invoice inexistingInvoice.existingInvoiceisnullwhen the API cannot name the invoice. Pay the invoice, then send the change again. If your code handles400 invalid_requeston these endpoints, branch on the new codes instead. -
Changed: On web hosting whose paid period has ended,
POST /api/v2/shared-hosting/{accountId}/actions/billing-cyclewithoutcancelExistingInvoicenow returns409 overdue_invoice_blocking. When an unpaid invoice was open, it used to return409 existing_invoice_blocking, which suggested a retry withcancelExistingInvoice: true. That retry could not succeed. -
Changed:
GET /api/v2/shared-hosting/{accountId}/actions/billing-cyclenow returnsactions.canChangeBillingCycle.allowed: falsewith a new field,code: "overdue_invoice", when the renewal invoice is overdue. That is when the paid period has ended. It is also when an invoice inblockingInvoicesis past its due date. Pay the invoice first. SendingcancelExistingInvoice: trueto the POST does not get past this gate. A preview withdryRun: trueandcancelExistingInvoice: truereturnswouldBlock: trueonly once the paid period has ended. Before that, it can returnwouldBlock: falsewhile the change itself fails with409 overdue_invoice_blocking. Go by the gate’scode, not by the preview.