API Reference

SiteICO REST API

Manage your WordPress sites, backups, domains, and billing programmatically with the SiteICO API.

Base URL

https://panel.siteico.com

Authentication

The SiteICO API uses cookie-based session authentication. To authenticate:

  1. 1 POST your credentials to /api/auth/login with { "username": "...", "password": "..." }
  2. 2 The response sets an HttpOnly session cookie automatically.
  3. 3 Include credentials in all subsequent requests: credentials: 'include' (fetch) or withCredentials: true (axios).

# Example login request

curl -X POST https://panel.siteico.com/api/auth/login \

-H "Content-Type: application/json" \

-d '{"username":"[email protected]","password":"..."}' \

-c cookies.txt

Authentication

POST /api/auth/login Authenticate and receive a session cookie
POST /api/auth/logout Invalidate the current session
POST /api/auth/register Create a new account
POST /api/auth/refresh Refresh an expiring session token

Sites

GET /api/sites List all sites in your account
POST /api/sites Create a new WordPress site
GET /api/sites/:id Get details for a specific site
DELETE /api/sites/:id Permanently delete a site
POST /api/sites/:id/start Start a stopped site
POST /api/sites/:id/stop Stop a running site
POST /api/sites/:id/clone Clone a site to a new site

Backups

GET /api/sites/:id/backups List backups for a site
POST /api/sites/:id/backups Trigger a manual backup
POST /api/sites/:id/backups/:backupId/restore Restore a site from a backup
DELETE /api/sites/:id/backups/:backupId Delete a backup

Domains

GET /api/sites/:id/domains List custom domains for a site
POST /api/sites/:id/domains Add a custom domain
DELETE /api/sites/:id/domains/:domain Remove a custom domain
PUT /api/sites/:id/domains/:domain/primary Set the primary domain

Billing

GET /api/billing/subscription Get the current subscription details
POST /api/billing/checkout Create a Stripe checkout session for upgrade
GET /api/billing/invoices List billing invoices
GET /api/billing/usage Get current usage (sites, storage, bandwidth)

Response Format

All API responses are JSON. Successful responses return 2xx status codes. Error responses include an error field with a human-readable message.

# Error response example (400)

{

"error": "site name already exists"

}

Full interactive docs coming soon

We are working on an OpenAPI-spec driven interactive reference. In the meantime, the full endpoint list is available in the source repository.