Hostingsurge Operator API
The Operator API from Hostingsurge — 137 operation(s) for operator.
Operations 155
GET
/operator/organizations
Every organization of this brand, paginated; filters: plan, the Free period…
#
GET
/operator/builder/usage
AI builder token usage per organization over the last N days (default 7)
#
GET
/operator/organizations/{organizationId}/suspension
The suspension ledger of one organization: the active episode's engine…
#
GET
/operator/organizations/{organizationId}
Customer overview: org info, billing/dunning state, limit override, members…
#
GET
/operator/organizations/{organizationId}/limits
Current limit override (all-null fields when none is recorded)
#
PUT
/operator/organizations/{organizationId}/limits
Set (fully replace) the organization's limit override; a null field means "use…
#
DELETE
/operator/organizations/{organizationId}/limits
Clear the limit override entirely (every field reverts to the plan's own value)
#
POST
/operator/organizations/{organizationId}/suspend
Suspend an organization: it immediately loses session/API/MCP/OAuth access and…
#
POST
/operator/users/{userId}/disable
Disable a user: their sessions are revoked and they immediately lose all access
#
POST
/operator/migrations/{migrationId}/cancel
Cancel an unfinished import of any organization: the customer's own cancel path…
#
GET
/operator/imports
Imports of every organization (or one) by where they stand, newest activity…
#
GET
/operator/imports/{migrationId}
One import with its steps and newest log lines (read-only; never a credential)
#
POST
/operator/email/sending
Approve or deny transactional sending for an organization (exactly POST…
#
GET
/operator/organizations/{organizationId}/resize-plan
Every project and database of the organization above its current per-resource…
#
POST
/operator/organizations/{organizationId}/resize
Bring exactly the confirmed projects/databases down to the organization's…
#
POST
/operator/databases/{databaseId}/resources
Change a database's CPU/memory within its organization's ceilings (a running…
#
GET
/operator/plan-limits
Every plan's limits: the default, this server's PLATFORM_DEFAULT_LIMITS (Free)…
#
PUT
/operator/plan-limits/{planId}
Set (fully replace) one plan's limits for every organization on it; a null…
#
GET
/operator/free-resize-plan
Dry run of "apply to all Free organizations": Free organizations with a project…
#
POST
/operator/free-resize
Bring exactly the confirmed projects/databases of Free organizations down to…
#
GET
/operator/static-resize-plan
Dry run of "right-size static sites": Free organizations with static sites…
#
POST
/operator/static-resize
Bring exactly the confirmed static sites of Free organizations down to the…
#
GET
/operator/capacity
How many more Free teams, static sites, WordPress sites and SaaS apps fit: the…
#
GET
/operator/trial-settings
The brand's Free-period settings and the dry run (every Free team computed as…
#
PUT
/operator/trial-settings
Change the Free-period settings (partial: fields left out keep their value).
#
POST
/operator/organizations/{organizationId}/trial
Extend, end, reset, exempt or unexempt one team's Free period (two-factor…
#
POST
/operator/projects/{projectId}/stop
Stop one project of any team (fresh session + reason; audited with the status…
#
POST
/operator/projects/{projectId}/start
Start one project of any team (fresh session + reason; refused while the team…
#
GET
/operator/enforcement
What decides limits on this server now: entitlement mode, billing configured…
#
POST
/operator/projects/{projectId}/suspend
Suspend one project of any team: stopped, its deployments canceled, every…
#
POST
/operator/projects/{projectId}/unsuspend
Lift a project's suspension: started again only when it was not stopped before…
#
GET
/operator/project-suspensions
The suspended projects of the brand, or one project's suspension history…
#
GET
/operator/organizations/{organizationId}/credentials
One team's API keys, MCP keys and OAuth grants (names, owners, scopes, dates…
#
POST
/operator/credentials/{credentialId}/revoke
Revoke one API key, MCP key or OAuth grant of any team at once (an OAuth grant…
#
GET
/operator/abuse-reports
The abuse-report queue (open, actioned, dismissed), newest first, with the…
#
POST
/operator/abuse-reports
Add a report by hand (mail to abuse@, a phone call); linked to the project…
#
PATCH
/operator/abuse-reports/{reportId}
Change a report's status (open, actioned, dismissed), its project link or its…
#
GET
/operator/server/live
Live server health: CPU per core, load, memory, swap, disk and disk I/O…
#
GET
/operator/server/history
The server's minute samples of the last 1 hour (1-minute points), 6 or 24 hours…
#
PUT
/operator/server/alerts
Set this brand's server alert thresholds (a full replace; null = that alert is…
#
DELETE
/operator/server/alerts
Back to the default server alert thresholds (memory 85 %, disk 80 %, swap 50 %…
#
GET
/operator/infrastructure
What the host reports about itself (disks, RAID, versions, pending updates…
#
POST
/operator/users/{userId}/view-session
Open a customer's dashboard read only for 30 minutes: records the view in the…
#
GET
/operator/customers/{userId}
One account: its numbers, its answers at sign-up and every site of its teams…
#
GET
/operator/signup-funnel
The sign-up funnel per UTC day, newest first: puzzles handed out and spent, new…
#
POST
/operator/customers/delete-unverified
Remove one account that never confirmed its address and was never used, or…
#
GET
/operator/brands
Every brand with its hosts and state (operators of the primary brand), or only…
#
GET
/operator/brands/{brandId}
One brand: settings, hosts, the DNS records to create and the newest domain…
#
PATCH
/operator/brands/{brandId}
Change any subset of a brand's settings (domains only while it is disabled).
#
POST
/operator/brands/{brandId}/clone
Clone Brand: a new, disabled brand with this brand's settings (look, products…
#
POST
/operator/brands/{brandId}/checks
Check every host of the brand now: DNS at the platform's ingress, then HTTPS…
#
POST
/operator/brands/{brandId}/enable
Enable a brand whose hosts all passed the domain checks within the last 24…
#
POST
/operator/brands/{brandId}/disable
Disable a brand (never the primary one): its hosts stop resolving to it.
#
GET
/operator/servers
Every workload server with its capacity (limits and measured), where the next…
#
POST
/operator/servers
Add a Coolify server to the list; it starts as preparing (no customers until it…
#
GET
/operator/servers/inventory
The hosting engine's servers (Coolify), marked when already in the list: what…
#
PATCH
/operator/servers/{serverId}
Rename, set the address or size, or change the status (open for customers…
#
DELETE
/operator/servers/{serverId}
Remove a server nothing lives on from the list (never the main one); the…
#
GET
/operator/servers/{serverId}/checks
Read-only checks before a server takes customers (engine, proxy, address…
#
POST
/operator/servers/{serverId}/agent
Install (or reinstall with a new token) the capacity agent; when the engine…
#
GET
/operator/servers/{serverId}/organizations
The organizations on a server, largest first (what a drain has to move)
#
GET
/operator/alerts/sms
Text-message alerts for this brand: provider key present, switched on, daily…
#
PUT
/operator/alerts/sms
Switch text-message alerts on or off for this brand and set the daily cap per…
#
GET
/operator/waitlist
Sign-up waitlist: waiting and invited addresses, newest first, and the current…
#
POST
/operator/waitlist
Put an address on the waitlist by hand, optionally sending its invite right…
#
POST
/operator/waitlist/{entryId}/invite
Approve an entry: e-mail a single-use sign-up link bound to its address (a new…
#
DELETE
/operator/waitlist/{entryId}
Remove an entry: its open invite stops working and nothing about the address is…
#
POST
/operator/plan-grants
Give Pro or Business without Stripe to teams, users' own teams or email…
#
POST
/operator/plan-grants/review
Review before giving a plan: what team (or waiting address) each target would…
#
GET
/operator/plan-grants/{grantId}
One plan grant with its history and who a mail about it goes to
#
POST
/operator/plan-grants/{grantId}/extend
Change when a plan grant ends: days more, a new end, or no end (an ended grant…
#
POST
/operator/plan-grants/{grantId}/revoke
Take a plan grant back now: the team is on its own plan again (nothing it made…
#
POST
/operator/plan-grants/{grantId}/resend
Mail a plan grant again: the invitee gets a new sign-up link (the old one stops…
#
GET
/operator/billing/overview
Billing overview for platform operators: accounts by plan, past due…
#
GET
/operator/billing/revenue
Revenue against AI cost for platform operators (read-only): MRR, paid invoices…
#
GET
/operator/billing/accounts/{organizationId}
One organization's billing: subscription, invoices, Build Credits ledger…
#
POST
/operator/billing/accounts/{organizationId}/credit
Credit the customer balance (applied to the next invoices).
#
POST
/operator/billing/accounts/{organizationId}/refund
Refund a paid invoice (all or part) with a credit note.
#
POST
/operator/billing/accounts/{organizationId}/grace
Give a past-due organization a new grace period; lifts a current deploy/build…
#
GET
/operator/billing/sales-settings
The brand's manual sales: seller, where to pay, currencies, invoice numbering…
#
PUT
/operator/billing/sales-settings
Save the sales settings; enabled opens ordering (refused while anything an…
#
GET
/operator/billing/orders
Manual orders of this brand, newest first: open (awaiting payment or expired)…
#
GET
/operator/billing/orders/summary
Open and paid amounts per currency, and EU cross-border consumer sales against…
#
POST
/operator/billing/orders/{orderId}/mark-paid
The payment arrived: give the credits or plan months and issue the invoice…
#
POST
/operator/billing/orders/{orderId}/cancel
Cancel an unpaid order (awaiting payment or expired). Fresh session and a reason
#
POST
/operator/billing/orders/{orderId}/refund
Record a refund paid back by the operator: a credit note, and a credits order's…
#
GET
/operator/billing/documents/{documentId}
An invoice or credit note of any team of this brand, as JSON
#
GET
/operator/billing/crypto-addresses
The brand's own receiving addresses per coin and network, and the coins whose…
#
PUT
/operator/billing/crypto-addresses
Set or remove receiving addresses (each checked with its checksum).
#
GET
/operator/billing/crypto-deposits
Payments to the brand's own addresses, newest first: unmatched (default…
#
POST
/operator/billing/crypto-deposits/{depositId}/attach
Attach an unmatched payment to an order: Mark paid with this payment, valued in…
#
POST
/operator/billing/crypto-deposits/{depositId}/dismiss
Dismiss an unmatched payment (paid back by hand, or not a customer's).
#
GET
/operator/backups
Backups: last local and off-site backup per source, restore tests, repository…
#
GET
/operator/final-backups
Final backups of deleted projects: one per deleted project, kept 30 days for…
#
DELETE
/operator/final-backups/{id}
Remove one final backup by hand (fresh session, a reason, audited).
#
GET
/operator/host-cleanup
What the host's nightly cleanup removed, kept or failed to remove (leftovers of…
#
GET
/operator/domain-registrar
Platform operators: whether a Dynadot key is stored (never the key), its last…
#
PUT
/operator/domain-registrar/dynadot-key
Platform operators: store (or replace) the Dynadot API key, sealed with the…
#
POST
/operator/domain-registrar/dynadot-key/test
Platform operators: test the stored Dynadot key with a read-only call (the…
#
POST
/operator/domain-registrar/dynadot-key/remove
Platform operators: remove the stored Dynadot key (automatic registrations…
#
PUT
/operator/domain-registrar/tlds/{tld}
Platform operators: the price rule of a TLD (fixed prices or Dynadot + margin…
#
POST
/operator/domain-registrar/tlds/{tld}/remove
Platform operators: remove a TLD's rule (the built-in default applies again)
#
GET
/operator/domain-registrar/calls
Platform operators: every call made to the registrar, newest first (never the…
#
GET
/operator/domain-orders
Platform operators: domain orders ("open": what may need you; "manual": paid…
#
POST
/operator/domain-orders/{orderId}/action
Platform operators: mark paid, mark registered, refund (a Stripe payment is…
#
GET
/operator/payment-keys
Platform operators: whether Stripe keys are stored (never the keys), their mode…
#
PUT
/operator/payment-keys/stripe
Platform operators: store (or replace) the Stripe secret key and/or webhook…
#
POST
/operator/payment-keys/stripe/test
Platform operators: test the stored Stripe secret key with a read-only call…
#
POST
/operator/payment-keys/stripe/remove
Platform operators: remove a stored Stripe key (billing falls back to the…
#
GET
/operator/status/history
Status history: measured state of every platform component, uptime over 24…
#
GET
/operator/status/resources
Customer sites, projects and databases that are down or unhealthy right now…
#
PUT
/operator/status/incidents/{incidentId}/note
Set (or clear, with an empty text) the note of the operators on a status…
#
GET
/operator/account-deletions
Account deletions in their grace period, being purged or failed, and purges of…
#
GET
/operator/idle-sleep
Idle sleep for the platform: the mode, the hours per plan, what sleeps now…
#
PUT
/operator/idle-sleep
Set idle sleep for the platform (a full replace: mode, hours per plan or null…
#
GET
/operator/accelerator
Hostingsurge Accelerator on this platform: the edge, the CDN key and switch…
#
PUT
/operator/accelerator
Switch the global CDN on or off for customers (it only works while a provider…
#
GET
/operator/public-status
The public status page: switched on or not, and its incidents and maintenance
#
PUT
/operator/public-status
Switch the public status page (/status) on or off (a fresh session and a…
#
POST
/operator/public-status/notices
Post an incident or planned maintenance on the public status page (a fresh…
#
POST
/operator/public-status/notices/{noticeId}
Post an update to a public incident or maintenance (a fresh session)
#
DELETE
/operator/public-status/notices/{noticeId}
Remove a public notice posted by mistake (a fresh session and a reason; audited)
#
GET
/operator/support/tickets
Support inbox: requests waiting for support, answered, closed or all, the most…
#
GET
/operator/support/tickets/{ticketId}
One support request with the team, the project and every message
#
POST
/operator/support/tickets/{ticketId}/messages
Answer a support request (the member who opened it is notified; optionally…
#
GET
/operator/assistant
AI assistant usage per team (last N days and this month), the settings per plan…
#
PUT
/operator/assistant/settings
Switch the assistant on or off, and set the monthly credits per plan and the…
#
PUT
/operator/assistant/organizations/{organizationId}
One team's monthly credits (null = its plan's) and whether the assistant is…
#
Specifications
OpenAPI
https://artifacts.apis.io/hostingsurge-com/openapi/hostingsurge-com-operator-api-openapi.yml
Schemas & Data
JSONSchema
https://artifacts.apis.io/hostingsurge-com/json-schema/hostingsurge-com-builder-visual-op-schema.json
JSONSchema
https://artifacts.apis.io/hostingsurge-com/json-schema/hostingsurge-com-policy-templates-input-body-schema.json
JSONSchema
https://artifacts.apis.io/hostingsurge-com/json-schema/hostingsurge-com-pending-changes-input-body-schema.json
JSONSchema
https://artifacts.apis.io/hostingsurge-com/json-schema/hostingsurge-com-confirm-prices-input-body-schema.json
JSONSchema
https://artifacts.apis.io/hostingsurge-com/json-schema/hostingsurge-com-collection-input-body-schema.json
JSONSchema
https://artifacts.apis.io/hostingsurge-com/json-schema/hostingsurge-com-create-shop-input-body-schema.json