Limited-time offer: get 6 months free when you register a new account. Sign Up Free →
Home
Features All Features Web Hosting AI Website Builder Database Hosting Email Hosting Domain & CDN Backups & Storage Firewall & Security WordPress Laravel
Servers Clients Pricing Log In Sign Up Free
← All Documentation

API Documentation

Everything the dashboard can do, reachable from your own code with one Bearer token.

Authentication

Every request needs an Authorization: Bearer <token> header. Generate a token from API in the sidebar - give it a name and, optionally, an expiry date. The raw token is shown once; only its hash is stored, so save it somewhere safe.

A token is scoped to your own agency account. Every endpoint below only ever sees and modifies your own subscribers, servers, plans and sites - never another agency's.

curl https://your-panel.example/api/users/index \ -H "Authorization: Bearer pnl_your_real_token_here"

Successful responses are wrapped as {"data": ...}. Errors come back as {"error": "message", "errors": {...}} with an appropriate HTTP status code (422 for validation, 404 for not found, 401 for a bad or missing token).

Subscribers

Create and manage the clients on your account - this is the exact API this very site's own sign-up and login forms call.

MethodEndpointDescription
GETapi/users/indexList your subscribers.
POSTapi/users/storeCreate a subscriber - name, email, password, plans[].
POSTapi/users/update/{id}Update a subscriber's details.
POSTapi/users/ssoToken/{id}Mint a single-use login link for an existing subscriber (120 second TTL).
POSTapi/users/loginVerify email, password and return the same kind of login link.
curl https://your-panel.example/api/users/store \ -H "Authorization: Bearer pnl_..." \ -d name="Jane Doe" -d email="[email protected]" \ -d password="min8characters" -d plans[]=19
Both ssoToken and login return {"login_url": "..."} - redirect the subscriber's browser straight there and they land in their dashboard already signed in.

Site Plans

MethodEndpointDescription
GETapi/siteplans/indexList your active plans, cheapest first.
GETapi/siteplans/show/{id}Full detail on one plan, including inactive ones.
POSTapi/siteplans/storeCreate a plan - title, no_of_sites, memory_limit, storage_limit, price, site_types[] and more.
POSTapi/siteplans/update/{id}Update a plan's limits or pricing.
GETapi/siteplans/delete/{id}Remove a plan.

Servers

The exact same connect/reboot/disconnect flow the dashboard uses, callable directly.

MethodEndpointDescription
GETapi/servers/indexList your connected servers.
GETapi/servers/show/{id}One server's detail.
POSTapi/servers/storeConnect a new server.
POSTapi/servers/update/{id}Update a server's details.
GETapi/servers/delete/{id}Disconnect it - tears down what it hosts, same as the dashboard.
GETapi/servers/reboot/{id}Trigger a remote reboot (returns immediately).
GETapi/servers/reboot_status/{id}Poll {"online": true|false} until it's back.

Database Servers

MethodEndpointDescription
GETapi/dbservers/indexList your database instances.
GETapi/dbservers/show/{id}One instance's detail.
POSTapi/dbservers/storeInstall a new engine on one of your servers.
POSTapi/dbservers/update/{id}Update its configuration.
GETapi/dbservers/delete/{id}Remove it.
GETapi/dbservers/restart/{id}Restart the container.
GETapi/dbservers/stop/{id}Stop it.
GETapi/dbservers/start/{id}Start it back up.

Email Servers

Same shape as Database Servers - index, show, store, update, delete, restart, stop, start under api/emailservers/*, with fields like email_domain, enable_smtp, enable_imap.

Support Team

MethodEndpointDescription
GETapi/supportteam/indexList your support staff accounts.
GETapi/supportteam/show/{id}One staff account's detail.
POSTapi/supportteam/storeAdd a staff account - name, email, password.
POSTapi/supportteam/update/{id}Update it, or change the password.
GETapi/supportteam/delete/{id}Remove the account.

Invoices

MethodEndpointDescription
GETapi/invoices/indexList invoices with their totals.
GETapi/invoices/show/{id}One invoice, with its line items.
GETapi/invoices/markPaid/{id}Mark it paid.
GETapi/invoices/delete/{id}Remove it.
GETapi/invoices/generateGenerate invoices for a billing_period across every subscriber missing one.

Revenues

GET api/revenues/index - a read-only report, same as the dashboard: totals, cost and profit, broken down by date, by server and by customer. Takes optional from/to query parameters; defaults to the current month.

Cloud Storage

MethodEndpointDescription
GETapi/cloudstorage/indexList your storage connections.
GETapi/cloudstorage/show/{id}One connection's detail.
POSTapi/cloudstorage/storeAdd one - name, type, host, port, username, password.
POSTapi/cloudstorage/update/{id}Update its credentials.
GETapi/cloudstorage/delete/{id}Remove it.
GETapi/cloudstorage/test/{id}Verify the connection actually works.

Live Chat

A proxy for a guest chat widget, keyed by an opaque token your own site mints rather than a numeric ID: api/chat/init/{guestToken}, send/{guestToken}, poll/{guestToken}, markseen/{guestToken}, close/{guestToken}.

Sites

Site-level, not account-level - these operate on your subscribers' actual sites, across every server you own.

MethodEndpointDescription
GETapi/sites/indexEvery site across every subscriber on your servers.
GETapi/sites/show/{id}One site's detail.
POSTapi/sites/storeCreate a site - user_plan_id, title, web_server, application, plus WordPress fields when relevant.
POSTapi/sites/update/{id}Update its title or custom domain.
GETapi/sites/delete/{id}Remove it.
user_plan_id must belong to one of your own subscribers - the API checks this before creating anything, the same way the dashboard would.

Site Types

GET api/sitetypes/index - the catalog of site types (WordPress, Laravel, PHP Site, Node.js) with their available versions, the same list a site plan's site_types field restricts subscribers to.