Developer API
Read your servers, hosting, domains, billing and support tickets programmatically. Every endpoint is protected by a scope-gated API key.
https://api.444host.com/v1Authorization: Bearer h444_…AI connection (MCP)
Connect Claude and other MCP-capable tools straight to your account. Uses your API key as a Bearer token — every tool is limited to the key’s scopes.
https://api.444host.com/mcpclaude mcp add --transport http 444host https://api.444host.com/mcp \ --header "Authorization: Bearer h444_…"
77 tools: ordering (real wallet-debited purchases, double-confirmed), VPS (incl. reverse DNS), hosting, domains, billing, tickets and webhooks. Create an API key →
OAuth-capable clients can connect without pasting a key — you approve in the browser (RFC 8628 device-code flow; AS metadata at api.444host.com/.well-known/oauth-authorization-server). Revoke connected apps from the API Keys page.
Local/stdio: H444_API_KEY=h444_… npx -y @otwa/444host-mcp · GitHub · npm
Quick start
Mint an API key from the dashboard (Account → API Keys), then:
curl -H "Authorization: Bearer h444_…" https://api.444host.com/v1/account
Rate limit: 120 requests/minute per key. Responses carry X-RateLimit-* headers.
Endpoints
Account
/v1/accountaccount:readReturns the authenticated account profile and wallet balance.
{
"id": "9032ffac-…",
"email": "you@example.com",
"first_name": "Jane",
"last_name": "Doe",
"account_type": "individual",
"language": "en",
"email_verified": true,
"balance_usd_cents": 1250,
"created_at": "2026-01-01T00:00:00.000Z"
}Catalogue & ordering
/v1/productsaccount:readOrderable VPS and hosting plans with retail price and YOUR effective price (reseller discount applied when your account has one).
[
{
"slug": "vps-2",
"category": "vps",
"name_en": "VPS 2",
"retail_monthly_usd_cents": 1200,
"your_monthly_usd_cents": 960,
"specs": { "vcpu": 2, "ram_mb": 4096, "disk_gb": 60 }
}
]/v1/os-templatesvps:readInstallable OS templates for VPS orders and reinstalls. ?platform=linux (default) | windows | router — Cloud Router plans deploy MikroTik CHR only.
/v1/vpsorders:writeAtomic: debits your wallet at your effective price, issues a paid receipt, and provisions. Provisioning failure auto-refunds. Send an Idempotency-Key so a retried request can't order twice. Returns the server AND its initial root password (shown once).
{ "plan_slug": "vps-2", "label": "web-1", "hostname": "web-1", "os_family": "ubuntu", "os_template": "ubuntu-22.04" }/v1/hostingorders:writeSame atomic debit/refund contract. Returns the account AND its SFTP/DB passwords (shown once). `php_version` defaults to 8.3.
{ "plan_slug": "hosting-starter", "domain": "example.com", "username": "examplecom" }VPS
/v1/vpsvps:readEvery VPS on the account, with live status and plan specs.
/v1/vps/:idvps:readServer detail (no credentials, no internal provisioning data).
/v1/vps/:id/statsvps:readLive CPU / memory / network / disk usage.
/v1/vps/:id/ipsvps:readEvery IP on the server with its current PTR record. `zoneHosted: false` means the reverse zone is not on our DNS.
[
{
"ip": "46.31.78.56",
"primary": true,
"gateway": "46.31.78.1",
"netmask": "255.255.255.0",
"ptr": "mail.example.com",
"zoneHosted": true
}
]/v1/vps/all-ipsvps:readEvery IP across all your servers, grouped per server, with PTR records — the API form of the dashboard Reverse DNS page.
/v1/vps/:id/plan-optionsvps:readPlans this server can resize to — same family, same disk size (a plan change never alters disk). Returns the current plan and the switchable options, cheapest first.
{
"current": { "id": "...", "name": "Cloud Router S", "vcpu": 1, "ramMb": 1024, "diskGb": 10, "monthlyPrice": 19.90 },
"options": [ { "id": "...", "name": "Cloud Router M", "vcpu": 2, "ramMb": 2048, "diskGb": 10, "monthlyPrice": 29.90 } ]
}/v1/vps/:id/power/:actionvps:writePower the server start, stop, or reboot. `:action` ∈ {start,stop,reboot}.
/v1/vps/:id/ssovps:readIssue a short-lived URL to the browser VM console for this server.
/v1/vps/:id/password-resetvps:writeRotate the server root/admin password; the new password is returned once.
/v1/vps/:id/addonsvps:readAdd-ons available/attached for this server — SEO IP Pack, extra IPs, backups. Prices are in cents: `monthly_usd_cents` is the recurring charge, `prorated_usd_cents` what you pay today if you buy now.
/v1/vps/:id/addonsorders:writeBuy an add-on for the server. Debits your wallet **immediately**, prorated to the end of the server's current cycle; the add-on then renews with the server every month. Reseller tiers pay their discounted price. Auto-refunds if it cannot be attached.
{ "addonId": "seoip7pk" }/v1/vps/:id/change-planvps:writeSwitch to another plan in the same family with the same disk size — an in-place vCPU/RAM resize. The server reboots (~1 min) to apply; disk is never changed. Only the recurring price changes: no proration on an up-switch, no credit on a down-switch — the next renewal bills the new plan. Use GET /vps/:id/plan-options for valid targets.
{ "productId": "..." }/v1/vps/:id/labelvps:writeChange the display label.
{ "label": "web-prod-1" }/v1/vps/:id/ips/:ip/ptrvps:writePoint the IP's PTR record at a hostname (e.g. `mail.example.com`). Idempotent upsert.
{ "hostname": "mail.example.com" }/v1/vps/:id/ips/:ip/ptrvps:writeRemove the PTR record for the IP.
/v1/vps/:id/reinstallvps:destroyDESTRUCTIVE — wipe the disk and rebuild from an OS template. Honours an optional Idempotency-Key header.
{ "os": "ubuntu", "osTemplate": "ubuntu-22.04" }/v1/vps/:idvps:destroyDESTRUCTIVE — permanently terminate the server.
Hosting
/v1/hostinghosting:readWeb-hosting accounts with status, quota, usage and connection hosts. Passwords are never returned on the API.
/v1/hosting/:idhosting:readHosting account detail.
/v1/hosting/:id/suspendhosting:writeSuspend the account (site + databases stop serving). Reversible with unsuspend.
/v1/hosting/:id/unsuspendhosting:writeLift a suspension and restore service.
/v1/hosting/:idhosting:destroyDESTRUCTIVE — permanently removes the site, databases, and mail; the username becomes reusable.
/v1/hosting/:id/phphosting:writeSwitch the account's PHP-FPM version. `php_version` ∈ {7.4, 8.1, 8.3}.
{ "php_version": "8.3" }/v1/hosting/:id/ssl/retryhosting:writeRetry the Let's Encrypt certificate issue for the account's domain now.
Hosting control panel
/v1/hosting/:id/statshosting:manageDisk/inode/bandwidth/mailbox usage for the account.
/v1/hosting/:id/logshosting:manageTail the access or error log. Query: `kind` ∈ {access,error}, `lines`.
/v1/hosting/:id/cert/retryhosting:manageRetry the Let's Encrypt certificate issue now.
/v1/hosting/:id/php-versionhosting:manageSwitch the account's PHP-FPM version.
{ "php_version": "8.3" }/v1/hosting/:id/cronhosting:manageRead the crontab.
/v1/hosting/:id/cronhosting:manageReplace the crontab.
{ "jobs": [ { "schedule": "0 3 * * *", "command": "php cron.php" } ] }/v1/hosting/:id/protected-dirshosting:managePassword-protected directories (htpasswd).
/v1/hosting/:id/protected-dirshosting:manageAdd or update a password-protected directory.
{ "path": "/admin", "basic_user": "u", "password": "…" }/v1/hosting/:id/protected-dirshosting:manageRemove protection. Query: `path`.
/v1/hosting/:id/wafhosting:manageModSecurity WAF status for the account.
/v1/hosting/:id/waf/accesshosting:manageWhether temporary WAF-log access is active.
/v1/hosting/:id/waf/accesshosting:manageRequest temporary access to WAF logs.
/v1/hosting/:id/ssh-terminal/accesshosting:manageWhether browser-SSH terminal access is enabled.
/v1/hosting/:id/ssh-terminal/accesshosting:manageEnable browser-SSH terminal access.
/v1/hosting/:id/ssh-terminal/launchhosting:manageStart a browser-SSH session; returns a session URL/token.
/v1/hosting/:id/ssh-terminal/stophosting:manageStop the browser-SSH session.
/v1/hosting/:id/githosting:manageGit-deploy status for the account.
/v1/hosting/:id/git/deploy-keyhosting:manageThe SSH deploy key to add to your repo.
/v1/hosting/:id/git/webhookhosting:manageThe push-to-deploy webhook URL/secret.
/v1/hosting/:id/git/webhookhosting:manageEnable push-to-deploy.
/v1/hosting/:id/git/webhookhosting:manageDisable push-to-deploy.
/v1/hosting/:id/git/deployhosting:manageClone/deploy a repo into the site.
{ "repo_url": "git@…", "branch": "main", "subdir": "" }/v1/hosting/:id/git/pullhosting:managePull the latest commit for the deployed repo.
/v1/hosting/:id/githosting:manageDisconnect git deploy from the site.
/v1/hosting/:id/fileshosting:manageList a directory. Query: `path` (default /public_html).
/v1/hosting/:id/files/readhosting:manageRead a text file's contents. Query: `path`.
/v1/hosting/:id/fileshosting:manageCreate or overwrite a text file.
{ "path": "/public_html/x.txt", "content": "…" }/v1/hosting/:id/fileshosting:manageDelete a file or directory. Query: `path`, `recursive`.
/v1/hosting/:id/files/downloadhosting:manageStream a file as an attachment. Query: `path`.
/v1/hosting/:id/files/uploadhosting:manageUpload a file (multipart form field `file`). Query: `path`.
/v1/hosting/:id/files/mkdirhosting:manageCreate a directory.
{ "path": "/public_html/new" }/v1/hosting/:id/files/renamehosting:manageRename or move a file/directory.
{ "from": "/a", "to": "/b" }/v1/hosting/:id/backupshosting:manageSite backups (restore points).
/v1/hosting/:id/backupshosting:manageCreate a new site backup.
/v1/hosting/:id/backups/:bidhosting:manageDelete a backup.
/v1/hosting/:id/backups/:bid/restorehosting:manageRestore the site from a backup.
/v1/hosting/:id/backups/:bid/downloadhosting:manageStream a backup archive (gzip).
/v1/hosting/:id/visitor-statshosting:manageVisitor statistics. Query: `period` ∈ {24h,7d,30d}.
/v1/hosting/:id/databaseshosting:manageExtra MySQL databases on the account.
/v1/hosting/:id/databaseshosting:manageCreate an extra MySQL database.
{ "suffix": "wp2" }/v1/hosting/:id/databases/:namehosting:manageDelete an extra MySQL database.
/v1/mail/domainsmail:readMail domains on the account (they follow your hosting accounts).
/v1/mail/domains/:id/mailboxesmail:readMailboxes under one mail domain.
/v1/mail/domains/:id/aliasesmail:readForwarding aliases under one mail domain.
/v1/mail/mailboxesmail:readEvery mailbox across all your mail domains.
/v1/mail/mailboxesmail:writeCreate a mailbox on a mail domain.
{ "domain_id": 12, "local_part": "info", "password": "…", "quota_mb": 2048 }/v1/mail/mailboxes/:id/passwordmail:writeSet a new password for a mailbox.
{ "password": "…" }/v1/mail/mailboxes/:idmail:writePermanently delete a mailbox and its mail.
/v1/mail/aliasesmail:writeCreate a forwarding alias (source → destination).
{ "domain_id": 12, "source_local": "sales", "destination": "info@example.com" }/v1/mail/aliases/:idmail:writeRemove a forwarding alias.
Domains
/v1/domainsdomains:readRegistered domains with status, nameservers and expiry.
/v1/domains/contactdomains:readThe registrant/WHOIS contact used for new registrations (returns SA defaults if none saved yet).
/v1/domains/contactdomains:writeCreate or update the registrant (WHOIS) contact.
{ "first_name": "Jane", "last_name": "Doe", "email": "…", "phone": "+90…", "address1": "…", "city": "…", "postal_code": "…", "country": "TR" }/v1/domains/:id/auth-codedomains:writeEmail the EPP transfer (auth) code to the registrant. Domain must be active with the transfer lock off.
/v1/domains/:iddomains:readDomain detail.
/v1/domains/:iddomains:writeUpdate auto-renew, transfer lock, WHOIS privacy, or nameservers. Changes are pushed to the registry and rolled back if the push fails.
{ "auto_renew": true, "nameservers": ["ns1.example.com","ns2.example.com"] }Billing
/v1/billing/invoicesbilling:readYour invoices, newest first.
/v1/billing/invoices/:idbilling:readSingle invoice with line items and payment transactions.
/v1/billing/invoices/:id/paybilling:writeSettle an unpaid invoice from your wallet balance. Fails if the balance is insufficient (top up in the dashboard first). Returns the paid invoice.
/v1/billing/walletbilling:readPrepaid wallet balance (USD cents).
/v1/billing/wallet/transactionsbilling:readRecent wallet activity. Query: limit (max 200).
Support tickets
/v1/ticketstickets:readYour support tickets, newest first.
/v1/tickets/:idtickets:readTicket detail with the message thread.
/v1/ticketstickets:writeOpen a support ticket. Honours an optional Idempotency-Key header so a retried request doesn't open a duplicate.
{ "subject": "Mail deliverability", "message": "Our PTR record is set but…", "priority": "medium", "department": "technical" }/v1/tickets/:id/replytickets:writePost a customer reply. Re-opens a resolved/closed ticket.
{ "body": "Thanks — that fixed it." }/v1/tickets/:id/closetickets:writeClose the ticket. Idempotent.
Webhooks
/v1/webhookswebhooks:readYour webhook subscriptions (secrets masked).
/v1/webhookswebhooks:writeSubscribe an HTTPS URL to events. The signing secret is returned ONCE in this response.
{ "url": "https://example.com/hooks/444host", "events": ["vps.power.changed", "ticket.replied"] }/v1/webhooks/:idwebhooks:readSubscription detail (secret masked).
/v1/webhooks/:idwebhooks:writeChange url, events, description, or pause/resume via `is_active`.
{ "is_active": false }/v1/webhooks/:idwebhooks:writeRemove the subscription and stop deliveries.
/v1/webhooks/:id/rotate-secretwebhooks:writeIssue a new signing secret (returned ONCE). The old secret stops signing immediately.
/v1/webhooks/:id/deliverieswebhooks:readRecent delivery attempts with status, duration, and errors. Query: limit (max 200).
/v1/webhooks/:id/deliveries/:deliveryId/redeliverwebhooks:writeClone a past delivery into a fresh attempt.
Webhook events
When an event fires we POST a signed payload to your URL. The signature is HMAC-SHA256: X-444host-Signature: t=<ts>,v1=HMAC(secret, "<ts>." + body). Failed deliveries retry with exponential backoff (1m → 6h).
vps.createdA server finished ordering/provisioning. Payload: vpsId, label, hostname, planSlug, status, ipv4.
hosting.createdA hosting account was provisioned. Payload: hostingId, username, domain, status.
invoice.paidAn invoice transitioned to paid (any gateway, incl. API orders and renewals). Payload: invoiceId, invoiceNumber, totalUsdCents, currency.
vps.power.changedA power action ran. Payload: vpsId, action (start/stop/reboot).
vps.resizedA VPS changed plan (vCPU/RAM resize). Payload: vpsId, productId, vcpu, ramMb.
vps.reinstalledA reinstall ran. Payload: vpsId, os, osTemplate.
vps.ptr.changedA reverse-DNS (PTR) record was set or cleared. Payload: vpsId, ip, ptr (null when cleared).
vps.terminatedA server was terminated. Payload: vpsId.
ticket.createdA support ticket was opened. Payload: ticketId, ticketNumber, subject, status, priority.
ticket.repliedSupport staff replied to your ticket. Payload: ticketId, ticketNumber, subject, status.
Error codes
400401403404429500Changelog
- newNew add-on: **SEO IP Pack** (
seoip7pk) — 7 dedicated IPs, each from a separate /24 subnet, for SEO hosting, multi-site isolation and sender separation. Available on all Linux Cloud plans, at order time and on running servers. - changed
GET /v1/vps/:id/addonsnow returns 444host pricing in cents —monthly_usd_cents(recurring) andprorated_usd_cents(charged today) — replacing the previousprice/retailPricedollar fields. Also returnsowned,available,featuredandip_count. - changed
POST /v1/vps/:id/addonscharges your wallet prorated to the end of the server's current cycle, and the add-on now renews with the server every month (previously it was not billed on renewal). Returns the invoice number and the new recurring total. Auto-refunds if the add-on cannot be attached.
- newNew webhook event
vps.resized— fires when a VPS changes plan (vCPU/RAM resize). Payload: vpsId, productId, vcpu, ramMb.
- newDomains —
GET/PUT /v1/domains/contactmanage the registrant (WHOIS) contact, andPOST /v1/domains/:id/auth-codeemails the EPP transfer code. (Registration/renewal/transfer stay in the dashboard — they are wallet-debiting payment flows.) Also MCP tools.
- newServer extras —
POST /v1/vps/:id/sso(console SSO),POST /v1/vps/:id/password-reset(rotate root password),GET /v1/vps/:id/addons+POST /v1/vps/:id/addons(buy an add-on; debits wallet, scope orders:write). Also MCP tools.
- newPay invoices from the API —
POST /v1/billing/invoices/:id/paysettles an unpaid invoice from your wallet balance. New opt-in scopebilling:write(not in defaults). Top-ups stay in the dashboard (payment flows).
- newFull hosting control panel on the API — file manager (list/read/write/delete/upload/download/mkdir/rename), MySQL databases, backups (create/restore/download), cron, PHP version, SSL re-issue, protected directories, WAF, browser-SSH terminal, and git deploy. All under one new opt-in scope
hosting:manage— powerful (file + shell access), so it is NOT granted by default; add it explicitly when minting a key. Also available as MCP tools.
- newEmail hosting on the API — the mail panel is now scriptable:
GET /v1/mail/domains(+ per-domain mailboxes/aliases),GET/POST/DELETE /v1/mail/mailboxeswithPATCH /v1/mail/mailboxes/:id/password, andGET/POST/DELETE /v1/mail/aliases. New scopes:mail:read(in defaults) andmail:write. Also available as MCP tools.
- newVPS resize —
GET /v1/vps/:id/plan-optionslists the plans a server can switch to (same family, same disk) andPOST /v1/vps/:id/change-planmoves it to one, applying a new vCPU/RAM allocation. The server reboots (~1 min) and disk never changes. Only the recurring price changes — no proration on an up-switch, no credit on a down-switch. Reads carry vps:read, the switch carries vps:write. Powers the new Cloud Router line (move between Router S/M/L). Also in the dashboard and as an MCP tool.
- newModel Context Protocol (MCP) server — connect Claude and other AI tools directly to your account at
https://api.444host.com/mcp(Streamable HTTP) using yourh444_API key as a Bearer token. 42 tools across ordering (real wallet-debited orders with double-confirm), VPS, hosting, domains, billing, tickets and webhooks, scope-gated by the key. - newOAuth 2.0 device-code flow (RFC 8628). Connect AI tools by browser approval instead of pasting a key: the client opens 444host.com/oauth/device, you approve the requested scopes, and it receives a scoped
h444_at_access token (+ single-useh444_rt_refresh, 90-day). Endpoints under/oauth/*with AS metadata at/.well-known/oauth-authorization-server. Revoke connected apps anytime from the API Keys page.
- newHosting lifecycle —
POST /v1/hosting/:id/suspend,POST /v1/hosting/:id/unsuspend(hosting:write) andDELETE /v1/hosting/:id(new opt-inhosting:destroyscope). Together with ordering, the full WHMCS reseller-module verb set: Create / Suspend / Unsuspend / Terminate.
- newAPI ordering —
POST /v1/vpsandPOST /v1/hostingplace real orders: atomic wallet debit, paid receipt, synchronous provisioning, and automatic refund if provisioning fails. Behind the new opt-inorders:writescope (not in default keys — it spends money). Honour Idempotency-Key. - newReseller tier — accounts with a reseller discount see and pay discounted prices on
GET /v1/productsand API orders; renewals inherit the discounted price.GET /v1/accountnow reportsreseller.enabled+discount_pct. Contact support to apply for reseller terms. - newThree more webhook events:
vps.created,hosting.created, andinvoice.paid— everything a billing/provisioning integration needs to sync state. The catalogue is now 9 events.
- newWrite endpoints. vps:write — power start/stop/reboot, rename, set/clear reverse DNS (PTR). vps:destroy (opt-in, not in defaults) — reinstall, terminate. hosting:write — PHP version, SSL re-issue. domains:write — auto-renew / lock / WHOIS / nameservers. tickets:write — open, reply, close.
- newWebhooks — subscribe a URL to account events and receive signed (HMAC-SHA256,
X-444host-Signature) POSTs. Eight endpoints under/v1/webhooksbehind webhooks:read / webhooks:write. Failed deliveries retry with exponential backoff (1m→6h). Events: vps.power.changed, vps.reinstalled, vps.ptr.changed, vps.terminated, ticket.created, ticket.replied. Manage them in the dashboard too (Account → Webhooks). - improvedIdempotency-Key header on reinstall and ticket-create dedups retried requests for 24h.
- newPublic API launch — read-only endpoints for account, VPS (incl. live stats and reverse-DNS/PTR listings), hosting, domains, billing (invoices & wallet) and support tickets. Authenticate with an
h444_…API key minted from the dashboard (Account → API Keys). 120 req/min per key.