@hostinger/mcp 1.52.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/.env.example +14 -0
  2. package/.github/ISSUE_TEMPLATE/bug_report.md +36 -0
  3. package/.github/workflows/build-release.yaml +163 -0
  4. package/CODEOWNERS +1 -0
  5. package/Dockerfile +15 -0
  6. package/LICENSE +21 -0
  7. package/README.md +4343 -0
  8. package/build.js +60 -0
  9. package/gemini-extension.json +25 -0
  10. package/glama.json +7 -0
  11. package/package.json +59 -0
  12. package/server.json +29 -0
  13. package/skills/headless/SKILL.md +55 -0
  14. package/skills/headless/entry/bootstrap.mjs +109 -0
  15. package/skills/headless/entry/skill.md +79 -0
  16. package/skills/headless/references/DEPLOYMENT.md +34 -0
  17. package/skills/headless/references/SETUP.md +34 -0
  18. package/skills/headless/references/STORE.md +52 -0
  19. package/skills/headless/references/WORDPRESS.md +51 -0
  20. package/src/core/oauth-error.html +90 -0
  21. package/src/core/oauth-success.html +77 -0
  22. package/src/core/oauth.js +406 -0
  23. package/src/core/oauth.ts +374 -0
  24. package/src/core/runtime.js +2673 -0
  25. package/src/core/runtime.ts +2724 -0
  26. package/src/core/tools/agency-hosting.js +1535 -0
  27. package/src/core/tools/agency-hosting.ts +1550 -0
  28. package/src/core/tools/all.js +15361 -0
  29. package/src/core/tools/all.ts +15376 -0
  30. package/src/core/tools/billing.js +310 -0
  31. package/src/core/tools/billing.ts +325 -0
  32. package/src/core/tools/dns.js +393 -0
  33. package/src/core/tools/dns.ts +408 -0
  34. package/src/core/tools/domains.js +1435 -0
  35. package/src/core/tools/domains.ts +1450 -0
  36. package/src/core/tools/ecommerce.js +1426 -0
  37. package/src/core/tools/ecommerce.ts +1441 -0
  38. package/src/core/tools/horizons.js +84 -0
  39. package/src/core/tools/horizons.ts +99 -0
  40. package/src/core/tools/hosting.js +2479 -0
  41. package/src/core/tools/hosting.ts +2494 -0
  42. package/src/core/tools/mail.js +1641 -0
  43. package/src/core/tools/mail.ts +1656 -0
  44. package/src/core/tools/reach.js +2270 -0
  45. package/src/core/tools/reach.ts +2285 -0
  46. package/src/core/tools/vps.js +2248 -0
  47. package/src/core/tools/vps.ts +2263 -0
  48. package/src/core/tools/wordpress.js +1570 -0
  49. package/src/core/tools/wordpress.ts +1585 -0
  50. package/src/servers/agency-hosting.js +6 -0
  51. package/src/servers/agency-hosting.ts +6 -0
  52. package/src/servers/all.js +6 -0
  53. package/src/servers/all.ts +6 -0
  54. package/src/servers/billing.js +6 -0
  55. package/src/servers/billing.ts +6 -0
  56. package/src/servers/dns.js +6 -0
  57. package/src/servers/dns.ts +6 -0
  58. package/src/servers/domains.js +6 -0
  59. package/src/servers/domains.ts +6 -0
  60. package/src/servers/ecommerce.js +6 -0
  61. package/src/servers/ecommerce.ts +6 -0
  62. package/src/servers/horizons.js +6 -0
  63. package/src/servers/horizons.ts +6 -0
  64. package/src/servers/hosting.js +6 -0
  65. package/src/servers/hosting.ts +6 -0
  66. package/src/servers/mail.js +6 -0
  67. package/src/servers/mail.ts +6 -0
  68. package/src/servers/reach.js +6 -0
  69. package/src/servers/reach.ts +6 -0
  70. package/src/servers/vps.js +6 -0
  71. package/src/servers/vps.ts +6 -0
  72. package/src/servers/wordpress.js +6 -0
  73. package/src/servers/wordpress.ts +6 -0
  74. package/tsconfig.json +15 -0
  75. package/types.d.ts +8836 -0
package/README.md ADDED
@@ -0,0 +1,4343 @@
1
+ # hostinger-api-mcp
2
+
3
+ Model Context Protocol (MCP) server for Hostinger API.
4
+
5
+ ## Quick start: Hosted remote server
6
+
7
+ If you don't want to install or run anything locally, connect directly to Hostinger's hosted MCP server:
8
+
9
+ ```
10
+ https://mcp.hostinger.com
11
+ ```
12
+
13
+ ### Claude Code
14
+
15
+ ```bash
16
+ claude mcp add --transport http hostinger https://mcp.hostinger.com
17
+ ```
18
+
19
+ This opens a browser window to authorize via OAuth. Once approved, all tools below are available in your session.
20
+
21
+ ### Other MCP-compatible clients
22
+
23
+ Add `https://mcp.hostinger.com` as a remote Streamable HTTP MCP server in your client's configuration and complete the OAuth prompt when it appears. Refer to your client's docs for how it exposes "add remote MCP server" / "custom connector" settings.
24
+
25
+ ## Prerequisites
26
+ - Node.js version 24 or higher
27
+
28
+ If you don't have Node.js installed, you can download it from the [official website](https://nodejs.org/en/download/).
29
+ Alternatively, you can use a package manager like [Homebrew](https://brew.sh/) (for macOS) or [Chocolatey](https://chocolatey.org/) (for Windows) to install Node.js.
30
+
31
+ We recommend using [NVM (Node Version Manager)](https://github.com/nvm-sh/nvm) to install and manage installed Node.js versions.
32
+ After installing NVM, you can install Node.js with the following command:
33
+ ```bash
34
+ nvm install v24
35
+ nvm use v24
36
+ ```
37
+
38
+ ## Installation
39
+
40
+ To install the MCP server, run one of the following command, depending on your package manager:
41
+
42
+ ```bash
43
+ # Install globally from npm
44
+ npm install -g @hostinger/mcp
45
+
46
+ # Or with yarn
47
+ yarn global add @hostinger/mcp
48
+
49
+ # Or with pnpm
50
+ pnpm add -g @hostinger/mcp
51
+ ```
52
+
53
+ ## Update
54
+
55
+ To update the MCP server to the latest version, use one of the following commands, depending on your package manager:
56
+
57
+ ```bash
58
+ # Update globally from npm
59
+ npm update -g @hostinger/mcp
60
+
61
+ # Or with yarn
62
+ yarn global upgrade @hostinger/mcp
63
+
64
+ # Or with pnpm
65
+ pnpm update -g @hostinger/mcp
66
+ ```
67
+
68
+ ## Binaries
69
+
70
+ This package installs the following MCP server commands:
71
+
72
+ - `hostinger-api-mcp` — unified server with every tool (372 total)
73
+ - `hostinger-agency-hosting-mcp` — 38 tools for agency-hosting
74
+ - `hostinger-billing-mcp` — 9 tools for billing
75
+ - `hostinger-dns-mcp` — 8 tools for dns
76
+ - `hostinger-domains-mcp` — 40 tools for domains
77
+ - `hostinger-ecommerce-mcp` — 29 tools for ecommerce
78
+ - `hostinger-horizons-mcp` — 2 tools for horizons
79
+ - `hostinger-hosting-mcp` — 58 tools for hosting
80
+ - `hostinger-mail-mcp` — 38 tools for mail
81
+ - `hostinger-reach-mcp` — 49 tools for reach
82
+ - `hostinger-vps-mcp` — 63 tools for vps
83
+ - `hostinger-wordpress-mcp` — 38 tools for wordpress
84
+
85
+ Pick the binary that matches your agent's scope. `hostinger-api-mcp` remains the backwards-compatible default.
86
+
87
+ ## Configuration
88
+
89
+ The following environment variables can be configured when running the server:
90
+ - `DEBUG`: Enable debug logging (true/false) (default: false)
91
+ - `HOSTINGER_API_TOKEN`: Your API token, which will be sent in the `Authorization` header. When set, OAuth is bypassed entirely.
92
+ - `API_TOKEN`: Deprecated alias for `HOSTINGER_API_TOKEN`. Will be removed in a future version — prefer `HOSTINGER_API_TOKEN`.
93
+ - `OAUTH_ISSUER`: OAuth server base URL (default: `https://auth.hostinger.com`). Only used when `HOSTINGER_API_TOKEN` is not set.
94
+
95
+ ## Authentication
96
+
97
+ The server supports two authentication methods:
98
+
99
+ ### API Token (recommended for CI/scripts)
100
+
101
+ Set `HOSTINGER_API_TOKEN` in the environment or `.env` file. When present it always takes precedence — no OAuth code runs.
102
+
103
+ ### OAuth 2.0 with PKCE (interactive sign-in)
104
+
105
+ When `HOSTINGER_API_TOKEN` is not set and the server runs in stdio mode, OAuth 2.0 with PKCE is used automatically on the first authenticated tool call:
106
+
107
+ 1. A dynamic OAuth client is registered with the issuer (RFC 7591) — once per machine.
108
+ 2. A browser window opens to the authorization page.
109
+ 3. After sign-in, the server captures the redirect on a local ephemeral port, exchanges the code for tokens, and stores them.
110
+ 4. Subsequent calls reuse the stored access token; expired tokens are refreshed automatically. If a refresh token is revoked, the browser flow is re-launched.
111
+
112
+ Credentials are stored at:
113
+ - macOS / Linux: `~/.config/hostinger-mcp/credentials.json` (mode 0600)
114
+ - Windows: `%APPDATA%\hostinger-mcp\credentials.json`
115
+
116
+ Credentials are shared across all Hostinger MCP binaries (`hostinger-api-mcp`, `hostinger-vps-mcp`, etc.).
117
+
118
+ **Manual commands:**
119
+
120
+ ```bash
121
+ # Run the OAuth sign-in flow immediately (don't wait for the first tool call)
122
+ hostinger-api-mcp --login
123
+
124
+ # Revoke stored credentials
125
+ hostinger-api-mcp --logout
126
+ ```
127
+
128
+ **HTTP transport note:** OAuth sign-in is not supported in `--http` mode. Set `HOSTINGER_API_TOKEN` before using `--http`.
129
+
130
+ ## Usage
131
+
132
+ ### JSON configuration for Claude, Cursor, etc.
133
+
134
+ ```json
135
+ {
136
+ "mcpServers": {
137
+ "hostinger-api": {
138
+ "command": "hostinger-api-mcp",
139
+ "env": {
140
+ "DEBUG": "false",
141
+ "HOSTINGER_API_TOKEN": "YOUR API TOKEN"
142
+ }
143
+ }
144
+ }
145
+ }
146
+ ```
147
+
148
+ ### Transport Options
149
+
150
+ The MCP server supports two transport modes:
151
+
152
+ #### Standard I/O Transport
153
+
154
+ The server can use standard input / output (stdio) transport (default). This provides local streaming:
155
+
156
+ #### Streamable HTTP Transport
157
+
158
+ The server can use HTTP streaming transport. This provides bidirectional streaming over HTTP:
159
+
160
+ ```bash
161
+ # Default HTTP transport on localhost:8100
162
+ hostinger-api-mcp --http
163
+
164
+ # Specify custom host and port
165
+ hostinger-api-mcp --http --host 0.0.0.0 --port 8150
166
+ ```
167
+
168
+ #### Command Line Options
169
+
170
+ ```
171
+ Options:
172
+ --http Use HTTP streaming transport (requires HOSTINGER_API_TOKEN env var)
173
+ --stdio Use Server-Sent Events transport (default)
174
+ --host {host} Hostname or IP address to listen on (default: 127.0.0.1)
175
+ --port {port} Port to bind to (default: 8100)
176
+ --login Run OAuth sign-in flow and exit
177
+ --logout Revoke stored OAuth credentials and exit
178
+ --help Show help message
179
+ ```
180
+
181
+ ### Using as an MCP Tool Provider
182
+
183
+ This server implements the Model Context Protocol (MCP) and can be used with any MCP-compatible consumer.
184
+
185
+ Example of connecting to this server using HTTP streaming transport:
186
+
187
+ ```javascript
188
+ import { Client } from "@modelcontextprotocol/sdk/client/index.js";
189
+ import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
190
+
191
+ // Create HTTP transport
192
+ const transport = new StreamableHTTPClientTransport({
193
+ url: "http://localhost:8100/",
194
+ headers: {
195
+ "Authorization": `Bearer ${process.env.HOSTINGER_API_TOKEN}`
196
+ }
197
+ });
198
+
199
+ // Connect to the MCP server
200
+ const client = new Client({
201
+ name: "my-client",
202
+ version: "1.0.0"
203
+ }, {
204
+ capabilities: {}
205
+ });
206
+
207
+ await client.connect(transport);
208
+
209
+ // List available tools
210
+ const { tools } = await client.listTools();
211
+ console.log("Available tools:", tools);
212
+
213
+ // Call a tool
214
+ const result = await client.callTool({
215
+ name: "billing_getCatalogItemListV1",
216
+ arguments: { category: "DOMAIN" }
217
+ });
218
+ console.log("Tool result:", result);
219
+ ```
220
+
221
+ ## Available Tools
222
+
223
+ This MCP server provides the following tools:
224
+
225
+ ### `hostinger-agency-hosting-mcp`
226
+
227
+ #### agency-hosting_deployNodeStaticWebsite
228
+
229
+ Deploy a node-static Agency Plan (h5g) website from an archive file. WARNING: this overwrites the website's existing contents and cannot be undone — always confirm with the user before proceeding. Use this for Agency Plan websites of type node-static (a Node.js-built static site that requires a build step or a plain simple static site). The tool resolves the website from its domain, uploads the archive to the website's file browser over TUS, and triggers the build-assets process which builds the site and deploys the result to public_html. This operation is synchronous: the build and deployment complete before the tool returns, so the website is live as soon as the tool finishes successfully — there is no separate asynchronous build to wait for or poll. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the archive yourself, this tool does it end-to-end. For plain PHP applications that should be extracted as-is, use agencyHosting_deployPhpApplication instead. The website UID is automatically resolved from the domain.
230
+
231
+ - **Method**: `custom`
232
+ - **Path**: `custom`
233
+
234
+ #### agency-hosting_deployPhpApplication
235
+
236
+ Deploy a PHP (or other non-build) Agency Plan (h5g) website from an archive file. WARNING: this overwrites the website's existing contents and cannot be undone — always confirm with the user before proceeding. Use this for Agency Plan websites where the archive contents should be extracted and served as-is with no build step (e.g., PHP applications). The tool resolves the website from its domain, uploads the archive to the website's file browser over TUS, and triggers the import-archive process which overwrites the website contents with the archive contents. This operation is synchronous: the archive is extracted and deployed before the tool returns, so the website is live as soon as the tool finishes successfully — there is no separate asynchronous build to wait for or poll. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the archive yourself, this tool does it end-to-end. For node-static websites that require a build step, use agencyHosting_deployNodeStaticWebsite instead. The website UID is automatically resolved from the domain.
237
+
238
+ - **Method**: `custom`
239
+ - **Path**: `custom`
240
+
241
+ #### agency-hosting_listAvailableDatacentersV1
242
+
243
+ Lists the datacenters available for provisioning a new website on the given Agency Plan
244
+ hosting order.
245
+
246
+ Each datacenter includes a `pinger_url` you can ping from the client to measure round-trip
247
+ latency; comparing the results across datacenters lets you pick the nearest one (lowest
248
+ ping) before choosing its `code` as the `datacenter_code` when creating a website setup.
249
+
250
+ - **Method**: `GET`
251
+ - **Path**: `/api/agency-hosting/v1/orders/{order_id}/datacenters`
252
+
253
+ #### agency-hosting_changeWebsiteDomainV1
254
+
255
+ Changes the primary domain for an Agency Plan website.
256
+
257
+ Provide the current domain in the path and the new domain in the request body.
258
+ Set domain to null to revert to the temporary domain.
259
+
260
+ - **Method**: `PUT`
261
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/domains/{from_domain}`
262
+
263
+ #### agency-hosting_linkDomainToWebsiteV1
264
+
265
+ Links a domain to the specified Agency Plan website so it can serve traffic for that domain.
266
+
267
+ - **Method**: `POST`
268
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/domains`
269
+
270
+ #### agency-hosting_listDomainsV1
271
+
272
+ Returns a paginated list of domains associated with Agency Plan websites accessible to the authenticated client.
273
+
274
+ Use the website_uuids filter to narrow results to specific websites.
275
+
276
+ - **Method**: `GET`
277
+ - **Path**: `/api/agency-hosting/v1/domains`
278
+
279
+ #### agency-hosting_unlinkDomainFromWebsiteV1
280
+
281
+ Unlinks a domain from the specified Agency Plan website.
282
+
283
+ The website stops serving traffic on this domain immediately.
284
+
285
+ Website files and database are preserved, and any other linked domains remain accessible.
286
+
287
+ If this is the only domain on the website, unlinking leaves the website without an accessible domain.
288
+
289
+ - **Method**: `DELETE`
290
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/domains/{domain}`
291
+
292
+ #### agency-hosting_generateUploadURLV1
293
+
294
+ Generate a file browser upload URL with authentication credentials for uploading files
295
+ to an Agency Plan website's file storage.
296
+
297
+ Returns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the
298
+ website's file storage via the TUS resumable upload protocol (TUS 1.0.0). Send
299
+ `X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request below.
300
+
301
+ 1. Create the upload: `POST` to `{url}/{relative_file_path}?override=true` with headers
302
+ `upload-length: {file size in bytes}` and `upload-offset: 0`. Expect `201 Created`.
303
+ 2. Upload the file: send the file bytes to the same location (any TUS 1.0.0 client, or
304
+ `PATCH` requests with an `upload-offset` header tracking progress) until complete.
305
+
306
+ `relative_file_path` is the destination path inside the website's file storage, e.g.
307
+ `app.zip`.
308
+
309
+ Instead of a TUS client, plain `curl` also works:
310
+ ```
311
+ FILE=app.zip
312
+ SIZE=$(stat -f%z "$FILE") # stat -c%s on Linux
313
+
314
+ curl -i -X POST "{url}/${FILE}?override=true" \
315
+ -H "X-Auth: {auth_key}" \
316
+ -H "X-Auth-Rest: {rest_auth_key}" \
317
+ -H "Tus-Resumable: 1.0.0" \
318
+ -H "Upload-Length: ${SIZE}" \
319
+ -H "Upload-Offset: 0"
320
+ # -> 201 Created
321
+
322
+ curl -i -X PATCH "{url}/${FILE}?override=true" \
323
+ -H "X-Auth: {auth_key}" \
324
+ -H "X-Auth-Rest: {rest_auth_key}" \
325
+ -H "Tus-Resumable: 1.0.0" \
326
+ -H "Content-Type: application/offset+octet-stream" \
327
+ -H "Upload-Offset: 0" \
328
+ --data-binary "@${FILE}"
329
+ # -> 204 No Content, Upload-Offset response header equals SIZE when done
330
+ ```
331
+
332
+ - **Method**: `POST`
333
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/files/upload-urls`
334
+
335
+ #### agency-hosting_importWebsiteFromArchiveV1
336
+
337
+ Imports an Agency Plan website from an already-uploaded archive.
338
+
339
+ Upload the archive to the website's root directory via file browser first, then provide its
340
+ filename in this request. Website contents are overwritten by the archive contents. Supported
341
+ archive types: .zip, .tar, .tar.gz, .tgz.
342
+
343
+ - **Method**: `POST`
344
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/files/import-archive`
345
+
346
+ #### agency-hosting_listAgencyPlanOrderDiskUsageMetricsV1
347
+
348
+ Returns aggregated disk and inode usage for the Agency Plan order over the
349
+ selected time frame, plus the plan quotas. Figures cover the whole order
350
+ account. Values may be up to one hour stale. CPU, memory, and process usage
351
+ are on the resource-usage-metrics endpoint.
352
+
353
+ - **Method**: `GET`
354
+ - **Path**: `/api/agency-hosting/v1/orders/{order_id}/disk-usage-metrics`
355
+
356
+ #### agency-hosting_listOrdersV1
357
+
358
+ Returns a paginated list of Agency Plan orders accessible to the authenticated client.
359
+
360
+ - **Method**: `GET`
361
+ - **Path**: `/api/agency-hosting/v1/orders`
362
+
363
+ #### agency-hosting_listOrderResourceUsageMetricsV1
364
+
365
+ Returns aggregated CPU, memory, and process usage for the Agency Plan order
366
+ over the selected time frame, plus the plan quotas and a per-website
367
+ breakdown. Each website is identified by uid. Suspended and deleted websites
368
+ are excluded from both the order totals and the per-website breakdown.
369
+ Values may be up to one hour stale. Disk and inode usage are on the
370
+ disk-usage-metrics endpoint.
371
+
372
+ - **Method**: `GET`
373
+ - **Path**: `/api/agency-hosting/v1/orders/{order_id}/resource-usage-metrics`
374
+
375
+ #### agency-hosting_listPHPExtensionsForAWebsiteV1
376
+
377
+ Lists every PHP extension available to an Agency Plan website and whether it is currently enabled.
378
+
379
+ - **Method**: `GET`
380
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/php-settings/extensions`
381
+
382
+ #### agency-hosting_replaceWebsitePHPExtensionsV1
383
+
384
+ Replaces the set of PHP extensions enabled on an Agency Plan website with the ones provided. Any toggleable extension not in the request is disabled, so call the extensions endpoint first and send the full desired set. Extensions compiled into PHP, reported with the "built-in" state, are always active and are unaffected.
385
+
386
+ - **Method**: `PUT`
387
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/php-settings/extensions`
388
+
389
+ #### agency-hosting_listPHPOptionsForAWebsiteV1
390
+
391
+ Lists the php.ini directives that can be configured for an Agency Plan website, each with its default, the value currently in effect, and the values it accepts.
392
+
393
+ - **Method**: `GET`
394
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/php-settings/options`
395
+
396
+ #### agency-hosting_replaceWebsitePHPOptionsV1
397
+
398
+ Replaces the custom php.ini values on an Agency Plan website with the ones provided. Any option not in the request is reset to its default, so call the options endpoint first and send the full desired set. Sending an empty array resets every option to its default.
399
+
400
+ - **Method**: `PUT`
401
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/php-settings/options`
402
+
403
+ #### agency-hosting_listAvailablePHPVersionsForAnOrderV1
404
+
405
+ Lists the PHP versions available to websites created under an Agency Plan order, determined by the server the order is hosted on. Use this before creating a website; for a website that already exists, call the website-scoped versions endpoint instead.
406
+
407
+ - **Method**: `GET`
408
+ - **Path**: `/api/agency-hosting/v1/orders/{order_id}/websites/php-settings/versions`
409
+
410
+ #### agency-hosting_listAvailablePHPVersionsForAWebsiteV1
411
+
412
+ Lists the PHP versions an Agency Plan website can be switched to. The version the website is currently running is returned as settings.php.version by the website details endpoint.
413
+
414
+ - **Method**: `GET`
415
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/php-settings/versions`
416
+
417
+ #### agency-hosting_updateWebsitePHPVersionV1
418
+
419
+ Switches an Agency Plan website to a different PHP version. Call the available versions endpoint first to see which versions can be selected. The website restarts on the new version, so requests served during the switch may fail and code that is incompatible with the target version will break.
420
+
421
+ - **Method**: `PATCH`
422
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/php-settings/version`
423
+
424
+ #### agency-hosting_createANewWebsiteV1
425
+
426
+ Provisions a new website on one of your Agency Plan hosting orders.
427
+
428
+ Choose the datacenter, stack (`flavor`), and PHP version for the site. Optionally attach
429
+ your own `domain` — omit it, set it to `null`, or leave it unavailable and a free
430
+ `*.hostingersite.com` subdomain is generated instead — and/or install WordPress by
431
+ supplying the `wordpress` details (admin account, site title, and language).
432
+
433
+ Common setups:
434
+ - **Plain PHP site**: `flavor` set to `php-fpm`, with `settings.php.version`; omit
435
+ `wordpress` and `type`.
436
+ - **WordPress site**: `flavor` set to the desired WordPress version (e.g. `wp-7.0`), plus
437
+ the `wordpress` block (admin account, title, language).
438
+ - **Static/Node.js frontend app**: `flavor` set to `php-fpm` and `type` set to
439
+ `node-static`.
440
+
441
+ Provisioning runs in the background, so the response returns immediately with a setup UUID
442
+ that identifies the job. The new website becomes reachable once provisioning finishes.
443
+
444
+ - **Method**: `POST`
445
+ - **Path**: `/api/agency-hosting/v1/orders/{order_id}/websites/setups`
446
+
447
+ #### agency-hosting_getWebsiteSetupStatusV1
448
+
449
+ Returns the current status of an Agency Plan website setup started via the setups
450
+ endpoint.
451
+
452
+ Poll this endpoint using the `setup_uuid` returned from the provisioning request until
453
+ `status` becomes `completed`, at which point `website_uid` identifies the new website.
454
+
455
+ - **Method**: `GET`
456
+ - **Path**: `/api/agency-hosting/v1/orders/{order_id}/websites/setups/{setup_uuid}`
457
+
458
+ #### agency-hosting_buildWebsiteNodeJSAssetsV1
459
+
460
+ Builds and deploys a Node.js application for an Agency Plan website from an already-uploaded archive.
461
+
462
+ Upload the archive to file browser first, then provide its relative path from document root in this request.
463
+ Website contents are overwritten by the build result, which is deployed to public_html.
464
+
465
+ - **Method**: `POST`
466
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/build-assets`
467
+
468
+ #### agency-hosting_clearWebsiteCacheV1
469
+
470
+ Clears cache for all domains associated with an Agency Plan website, including its preview domain.
471
+
472
+ This operation clears all cache types for the website.
473
+
474
+ - **Method**: `DELETE`
475
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/cache`
476
+
477
+ #### agency-hosting_listWebsiteCronJobsV1
478
+
479
+ Returns a paginated list of cron jobs configured for an Agency Plan website.
480
+
481
+ Each entry includes the schedule expression and the command executed on that schedule.
482
+
483
+ - **Method**: `GET`
484
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/cron-jobs`
485
+
486
+ #### agency-hosting_createWebsiteCronJobV1
487
+
488
+ Creates a cron job for an Agency Plan website from a schedule expression and a command.
489
+
490
+ Returns the created cron job, including its uuid, which is required to delete the cron job.
491
+
492
+ - **Method**: `POST`
493
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/cron-jobs`
494
+
495
+ #### agency-hosting_deleteWebsiteCronJobV1
496
+
497
+ Permanently deletes the cron job identified by its uuid from an Agency Plan website.
498
+
499
+ The operation is idempotent: deleting a cron job that does not exist succeeds without error.
500
+
501
+ - **Method**: `DELETE`
502
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/cron-jobs/{uuid}`
503
+
504
+ #### agency-hosting_listWebsiteDatabasesV1
505
+
506
+ Returns a paginated list of MySQL databases created for an Agency Plan website.
507
+
508
+ Each entry includes the database's non-system users.
509
+
510
+ - **Method**: `GET`
511
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/databases`
512
+
513
+ #### agency-hosting_createWebsiteDatabaseV1
514
+
515
+ Creates a MySQL database with a dedicated user for an Agency Plan website.
516
+
517
+ The database name, username, and password must all be provided by the caller.
518
+
519
+ - **Method**: `POST`
520
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/databases`
521
+
522
+ #### agency-hosting_deleteWebsiteDatabaseV1
523
+
524
+ Permanently deletes a MySQL database and all its data from an Agency Plan website, including its users.
525
+
526
+ The operation is idempotent: deleting a database that does not exist succeeds without error.
527
+
528
+ - **Method**: `DELETE`
529
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/databases/{database_name}`
530
+
531
+ #### agency-hosting_createWebsiteDatabaseUserV1
532
+
533
+ Creates a user for an existing database on an Agency Plan website.
534
+
535
+ Each database supports a single non-system user; creating a user for a database that already has one fails.
536
+
537
+ - **Method**: `POST`
538
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/databases/{database_name}/users`
539
+
540
+ #### agency-hosting_deleteWebsiteDatabaseUserV1
541
+
542
+ Permanently deletes a database user from an Agency Plan website database, revoking all access it had.
543
+
544
+ The operation is idempotent: deleting a user that does not exist succeeds without error.
545
+
546
+ - **Method**: `DELETE`
547
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/databases/{database_name}/users/{database_user_name}`
548
+
549
+ #### agency-hosting_getWebsiteDetailsV1
550
+
551
+ Retrieves detailed information about a specific Agency Plan website, including configuration,
552
+ status, metadata, hosting plan details, and resource quotas.
553
+
554
+ - **Method**: `GET`
555
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}`
556
+
557
+ #### agency-hosting_deleteWebsiteV1
558
+
559
+ Permanently deletes an Agency Plan website. Deletion is processed asynchronously: the
560
+ website is immediately transitioned to a deleting state and the underlying server
561
+ resources are removed in the background.
562
+
563
+ - **Method**: `DELETE`
564
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}`
565
+
566
+ #### agency-hosting_listAgencyPlanWebsitesV1
567
+
568
+ Retrieve a paginated list of Agency Plan websites (H5G, Builder, and Horizons) accessible to
569
+ the authenticated client.
570
+
571
+ This endpoint returns websites from your hosting accounts as well as
572
+ websites from other client hosting accounts that have shared access
573
+ with you.
574
+
575
+ The response shape differs per platform — see the `platform` field on each item.
576
+
577
+ Use `website_types` to list only websites of a given detected type, e.g. only
578
+ WordPress websites (`website_types=wordpress`) or only Node.js websites
579
+ (`website_types=nodejs`). Combine with `order_ids`, `states`, or `domain` for more
580
+ targeted results.
581
+
582
+ - **Method**: `GET`
583
+ - **Path**: `/api/agency-hosting/v1/websites`
584
+
585
+ #### agency-hosting_listWebsiteProcessesV1
586
+
587
+ Lists active and recently completed asynchronous processes for an Agency Plan website.
588
+
589
+ Each process has a unique ID (for tracking), a type, and a status (running, completed, failed).
590
+ Poll this endpoint after initiating async operations (SSL setup, backups, cloning) to track progress.
591
+
592
+ - **Method**: `GET`
593
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/processes`
594
+
595
+ #### agency-hosting_changeWordPressVersionV1
596
+
597
+ Changes the installed WordPress core version on an Agency Plan website to one of the versions available for installation.
598
+
599
+ - **Method**: `PATCH`
600
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/wordpress/settings/version`
601
+
602
+ #### agency-hosting_getWordPressSettingsV1
603
+
604
+ Returns the current WordPress settings for an Agency Plan website: installed core version,
605
+ LiteSpeed Cache plugin status, object cache status, and maintenance mode status.
606
+
607
+ - **Method**: `GET`
608
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/wordpress/settings`
609
+
610
+ #### agency-hosting_listAvailableWordPressVersionsV1
611
+
612
+ Lists the WordPress core versions available for installation on an Agency Plan website.
613
+
614
+ - **Method**: `GET`
615
+ - **Path**: `/api/agency-hosting/v1/websites/{website_uid}/wordpress/settings/versions`
616
+
617
+ ### `hostinger-billing-mcp`
618
+
619
+ #### billing_getCatalogItemListV1
620
+
621
+ Retrieve catalog items available for order.
622
+
623
+ Prices in catalog items is displayed as cents (without floating point),
624
+ e.g: float `17.99` is displayed as integer `1799`.
625
+
626
+ Use this endpoint to view available services and pricing before placing orders.
627
+
628
+ - **Method**: `GET`
629
+ - **Path**: `/api/billing/v1/catalog`
630
+
631
+ #### billing_createPurchaseOrderV1
632
+
633
+ Create a purchase order for any Hostinger product.
634
+
635
+ This unified endpoint places an order for one or more catalog items and
636
+ works across all Hostinger products, leveraging the existing billing
637
+ infrastructure. Use the [catalog endpoint](#tag/billing-catalog) to look
638
+ up the `item_id` values available for purchase.
639
+
640
+ If no payment method is provided, your default payment method will be used automatically.
641
+
642
+ This endpoint only places the order. Product-specific provisioning
643
+ (e.g. VPS setup or domain registration) is not performed here — once the
644
+ order completes, use the relevant product endpoints or
645
+ [hPanel](https://hpanel.hostinger.com/) to finalize setup.
646
+
647
+ Use this endpoint to purchase any product available in the catalog.
648
+
649
+ - **Method**: `POST`
650
+ - **Path**: `/api/billing/v1/orders`
651
+
652
+ #### billing_setDefaultPaymentMethodV1
653
+
654
+ Set the default payment method for your account.
655
+
656
+ Use this endpoint to configure the primary payment method for future orders.
657
+
658
+ - **Method**: `POST`
659
+ - **Path**: `/api/billing/v1/payment-methods/{paymentMethodId}`
660
+
661
+ #### billing_deletePaymentMethodV1
662
+
663
+ Delete a payment method from your account.
664
+
665
+ Use this endpoint to remove unused payment methods from user accounts.
666
+
667
+ - **Method**: `DELETE`
668
+ - **Path**: `/api/billing/v1/payment-methods/{paymentMethodId}`
669
+
670
+ #### billing_getPaymentMethodListV1
671
+
672
+ Retrieve available payment methods that can be used for placing new orders.
673
+
674
+ If you want to add new payment method,
675
+ please use [hPanel](https://hpanel.hostinger.com/billing/payment-methods).
676
+
677
+ Use this endpoint to view available payment options before creating orders.
678
+
679
+ - **Method**: `GET`
680
+ - **Path**: `/api/billing/v1/payment-methods`
681
+
682
+ #### billing_getSubscriptionListV1
683
+
684
+ Retrieve a list of all subscriptions associated with your account.
685
+
686
+ Use this endpoint to monitor active services and billing status.
687
+
688
+ - **Method**: `GET`
689
+ - **Path**: `/api/billing/v1/subscriptions`
690
+
691
+ #### billing_disableAutoRenewalV1
692
+
693
+ Disable auto-renewal for a subscription.
694
+
695
+ Use this endpoint when disable auto-renewal for a subscription.
696
+
697
+ - **Method**: `DELETE`
698
+ - **Path**: `/api/billing/v1/subscriptions/{subscriptionId}/auto-renewal/disable`
699
+
700
+ #### billing_enableAutoRenewalV1
701
+
702
+ Enable auto-renewal for a subscription.
703
+
704
+ Use this endpoint when enable auto-renewal for a subscription.
705
+
706
+ - **Method**: `PATCH`
707
+ - **Path**: `/api/billing/v1/subscriptions/{subscriptionId}/auto-renewal/enable`
708
+
709
+ #### billing_renewSubscriptionV1
710
+
711
+ Create a renewal order for an existing Hostinger subscription.
712
+
713
+ This endpoint places a renewal order for a single subscription, leveraging
714
+ the existing billing infrastructure. Use the
715
+ [subscriptions endpoint](#tag/billing-subscriptions) to look up the
716
+ `subscriptionId` values available for renewal.
717
+
718
+ If no payment method is provided, your default payment method will be used automatically.
719
+
720
+ Use this endpoint to renew any subscription available in your account.
721
+
722
+ - **Method**: `POST`
723
+ - **Path**: `/api/billing/v1/subscriptions/{subscriptionId}/renew`
724
+
725
+ ### `hostinger-dns-mcp`
726
+
727
+ #### DNS_getDNSSnapshotV1
728
+
729
+ Retrieve particular DNS snapshot with contents of DNS zone records.
730
+
731
+ Use this endpoint to view historical DNS configurations for domains.
732
+
733
+ - **Method**: `GET`
734
+ - **Path**: `/api/dns/v1/snapshots/{domain}/{snapshotId}`
735
+
736
+ #### DNS_getDNSSnapshotListV1
737
+
738
+ Retrieve DNS snapshots for a domain.
739
+
740
+ Use this endpoint to view available DNS backup points for restoration.
741
+
742
+ - **Method**: `GET`
743
+ - **Path**: `/api/dns/v1/snapshots/{domain}`
744
+
745
+ #### DNS_restoreDNSSnapshotV1
746
+
747
+ Restore DNS zone to the selected snapshot.
748
+
749
+ Use this endpoint to revert domain DNS to a previous configuration.
750
+
751
+ - **Method**: `POST`
752
+ - **Path**: `/api/dns/v1/snapshots/{domain}/{snapshotId}/restore`
753
+
754
+ #### DNS_getDNSRecordsV1
755
+
756
+ Retrieve DNS zone records for a specific domain.
757
+
758
+ Use this endpoint to view current DNS configuration for domain management.
759
+
760
+ - **Method**: `GET`
761
+ - **Path**: `/api/dns/v1/zones/{domain}`
762
+
763
+ #### DNS_updateDNSRecordsV1
764
+
765
+ Update DNS records for the selected domain.
766
+
767
+ Using `overwrite = true` will replace existing records with the provided ones.
768
+ Otherwise existing records will be updated and new records will be added.
769
+
770
+ Use this endpoint to modify domain DNS configuration.
771
+
772
+ - **Method**: `PUT`
773
+ - **Path**: `/api/dns/v1/zones/{domain}`
774
+
775
+ #### DNS_deleteDNSRecordsV1
776
+
777
+ Delete DNS records for the selected domain.
778
+
779
+ To filter which records to delete, add the `name` of the record and `type` to the filter.
780
+ Multiple filters can be provided with single request.
781
+
782
+ If you have multiple records with the same name and type, and you want to delete only part of them,
783
+ refer to the `Update zone records` endpoint.
784
+
785
+ Use this endpoint to remove specific DNS records from domains.
786
+
787
+ - **Method**: `DELETE`
788
+ - **Path**: `/api/dns/v1/zones/{domain}`
789
+
790
+ #### DNS_resetDNSRecordsV1
791
+
792
+ Reset DNS zone to the default records.
793
+
794
+ Use this endpoint to restore domain DNS to original configuration.
795
+
796
+ - **Method**: `POST`
797
+ - **Path**: `/api/dns/v1/zones/{domain}/reset`
798
+
799
+ #### DNS_validateDNSRecordsV1
800
+
801
+ Validate DNS records prior to update for the selected domain.
802
+
803
+ If the validation is successful, the response will contain `200 Success` code.
804
+ If there is validation error, the response will fail with `422 Validation error` code.
805
+
806
+ Use this endpoint to verify DNS record validity before applying changes.
807
+
808
+ - **Method**: `POST`
809
+ - **Path**: `/api/dns/v1/zones/{domain}/validate`
810
+
811
+ ### `hostinger-domains-mcp`
812
+
813
+ #### v2_getDomainVerificationsDIRECT
814
+
815
+ Retrieve a list of pending and completed domain verifications.
816
+
817
+ - **Method**: `GET`
818
+ - **Path**: `/api/v2/direct/verifications/active`
819
+
820
+ #### domains_suggestDomainNamesFromADescriptionV1
821
+
822
+ Suggest available domain names based on a free-text description of your project.
823
+
824
+ Suggestions are generated by an AI model, so they differ between calls.
825
+
826
+ Endpoint has rate limit of 90 requests per minute.
827
+
828
+ Use this endpoint to find a domain name when you only know what the website is about.
829
+
830
+ - **Method**: `POST`
831
+ - **Path**: `/api/domains/v1/availability/alternatives-from-description`
832
+
833
+ #### domains_suggestDomainNamesFromADomainV1
834
+
835
+ Suggest available domain names based on a domain name you already have in mind.
836
+
837
+ Suggestions are generated by an AI model, so they differ between calls.
838
+
839
+ Endpoint has rate limit of 90 requests per minute.
840
+
841
+ Use this endpoint when the domain you wanted is taken and you need close alternatives.
842
+
843
+ - **Method**: `POST`
844
+ - **Path**: `/api/domains/v1/availability/alternatives-from-domain`
845
+
846
+ #### domains_checkDomainAvailabilityV1
847
+
848
+ Check availability of domain names across multiple TLDs.
849
+
850
+ Multiple TLDs can be checked at once.
851
+ If you want alternative domains with response, provide only one TLD and set `with_alternatives` to `true`.
852
+ TLDs should be provided without leading dot (e.g. `com`, `net`, `org`).
853
+
854
+ Endpoint has rate limit of 90 requests per minute.
855
+
856
+ Use this endpoint to verify domain availability before purchase.
857
+
858
+ - **Method**: `POST`
859
+ - **Path**: `/api/domains/v1/availability`
860
+
861
+ #### domains_getDomainForwardingV1
862
+
863
+ Retrieve domain forwarding data.
864
+
865
+ Use this endpoint to view current redirect configuration for domains.
866
+
867
+ - **Method**: `GET`
868
+ - **Path**: `/api/domains/v1/forwarding/{domain}`
869
+
870
+ #### domains_updateDomainForwardingV1
871
+
872
+ Update domain forwarding configuration.
873
+
874
+ Use this endpoint to modify existing redirect configuration for domains.
875
+
876
+ - **Method**: `PUT`
877
+ - **Path**: `/api/domains/v1/forwarding/{domain}`
878
+
879
+ #### domains_deleteDomainForwardingV1
880
+
881
+ Delete domain forwarding data.
882
+
883
+ Use this endpoint to remove redirect configuration from domains.
884
+
885
+ - **Method**: `DELETE`
886
+ - **Path**: `/api/domains/v1/forwarding/{domain}`
887
+
888
+ #### domains_createDomainForwardingV1
889
+
890
+ Create domain forwarding configuration.
891
+
892
+ Use this endpoint to set up domain redirects to other URLs.
893
+
894
+ - **Method**: `POST`
895
+ - **Path**: `/api/domains/v1/forwarding`
896
+
897
+ #### domains_getPendingIRTPVerificationV1
898
+
899
+ Retrieve a pending IRTP verification for a domain.
900
+
901
+ Both the old and new registrant must confirm it before the WHOIS change takes effect.
902
+
903
+ Use this endpoint to check the status of a WHOIS change awaiting registrant confirmation.
904
+
905
+ - **Method**: `GET`
906
+ - **Path**: `/api/domains/v1/irtp/{domain}`
907
+
908
+ #### domains_cancelPendingIRTPVerificationV1
909
+
910
+ Cancel a pending IRTP verification.
911
+
912
+ Use this endpoint to back out of a WHOIS change that is stuck waiting on registrant confirmation,
913
+ for example when the confirmation email cannot be received, without waiting out the 5-day expiry.
914
+
915
+ - **Method**: `DELETE`
916
+ - **Path**: `/api/domains/v1/irtp/{domain}`
917
+
918
+ #### domains_getIncomingDomainMoveV1
919
+
920
+ Retrieve the incoming move for a specified domain.
921
+
922
+ Returns 404 when no account is moving this domain to you.
923
+
924
+ Use this endpoint to check whether a domain addressed to you is still waiting to be accepted.
925
+
926
+ - **Method**: `GET`
927
+ - **Path**: `/api/domains/v1/move/incoming/{domain}`
928
+
929
+ #### domains_acceptIncomingDomainMoveV1
930
+
931
+ Accept an incoming move for a specified domain.
932
+
933
+ The provided WHOIS profiles become the contacts of the domain, so they must belong
934
+ to your account and satisfy the requirements of the TLD. Only the contact types the
935
+ domain actually uses are applied, but all four profile IDs have to be provided.
936
+
937
+ The move has to still be waiting for your decision, already accepted moves
938
+ cannot be accepted again.
939
+
940
+ Accepting does not complete the move. A confirmation email is sent to the email address of
941
+ the new owner contact, and the domain changes hands only after the change is confirmed from it.
942
+ Until then the move stays in the `activating` status, which can be followed with the
943
+ [incoming move endpoint](#tag/domains-move).
944
+
945
+ Use this endpoint to take ownership of a domain offered to you.
946
+
947
+ - **Method**: `PUT`
948
+ - **Path**: `/api/domains/v1/move/incoming/{domain}`
949
+
950
+ #### domains_rejectIncomingDomainMoveV1
951
+
952
+ Reject an incoming move for a specified domain.
953
+
954
+ The domain stays in the account which initiated the move.
955
+ Moves you have already accepted cannot be rejected anymore.
956
+
957
+ Use this endpoint to decline a domain you do not want to take over.
958
+
959
+ - **Method**: `DELETE`
960
+ - **Path**: `/api/domains/v1/move/incoming/{domain}`
961
+
962
+ #### domains_getIncomingDomainMoveListV1
963
+
964
+ Retrieve all domains other Hostinger accounts are moving to your account.
965
+
966
+ Moves of every status are returned, including the ones which already completed.
967
+
968
+ Use this endpoint to find domains waiting for you to accept them.
969
+
970
+ - **Method**: `GET`
971
+ - **Path**: `/api/domains/v1/move/incoming`
972
+
973
+ #### domains_getOutgoingDomainMoveV1
974
+
975
+ Retrieve the outgoing move for a specified domain.
976
+
977
+ Returns 404 when the domain has no move in progress.
978
+
979
+ Use this endpoint to track the status of a move you have initiated for a single domain.
980
+
981
+ - **Method**: `GET`
982
+ - **Path**: `/api/domains/v1/move/outgoing/{domain}`
983
+
984
+ #### domains_startOutgoingDomainMoveV1
985
+
986
+ Initiate a move of a specified domain to another Hostinger account.
987
+
988
+ The receiving account has to already exist and accept the move before the domain changes hands.
989
+
990
+ The domain must be active. The subscription it belongs to is resolved automatically,
991
+ and the request is rejected with a 404 status code when the domain has no domain
992
+ subscription of its own.
993
+
994
+ Domains protected by premium protection require an additional verification step,
995
+ such requests are rejected with a 428 status code.
996
+
997
+ Use this endpoint to hand a domain over to another Hostinger user.
998
+
999
+ - **Method**: `POST`
1000
+ - **Path**: `/api/domains/v1/move/outgoing/{domain}`
1001
+
1002
+ #### domains_cancelOutgoingDomainMoveV1
1003
+
1004
+ Cancel an outgoing move for a specified domain.
1005
+
1006
+ The move can only be cancelled while the receiving account has not accepted it yet.
1007
+ The domain stays in your account.
1008
+
1009
+ Use this endpoint to withdraw a move you no longer want to complete.
1010
+
1011
+ - **Method**: `DELETE`
1012
+ - **Path**: `/api/domains/v1/move/outgoing/{domain}`
1013
+
1014
+ #### domains_getOutgoingDomainMoveListV1
1015
+
1016
+ Retrieve all domains you are moving to other Hostinger accounts.
1017
+
1018
+ Only moves which have not completed yet are returned.
1019
+
1020
+ Use this endpoint to track moves you have initiated and the accounts they are addressed to.
1021
+
1022
+ - **Method**: `GET`
1023
+ - **Path**: `/api/domains/v1/move/outgoing`
1024
+
1025
+ #### domains_getDomainAuthorizationCodeV1
1026
+
1027
+ Retrieve the authorization (EPP) code for a specified domain so it can be transferred
1028
+ away from Hostinger to another registrar.
1029
+
1030
+ Requesting a new code invalidates any code retrieved previously.
1031
+
1032
+ Use this endpoint to obtain the code required to transfer a domain to another registrar.
1033
+
1034
+ - **Method**: `GET`
1035
+ - **Path**: `/api/domains/v1/portfolio/{domain}/auth-code`
1036
+
1037
+ #### domains_claimFreeDomainV1
1038
+
1039
+ Claim a free domain available on your account and register it.
1040
+
1041
+ Unlike purchasing a domain, this consumes a free domain you already have,
1042
+ so no payment method is required.
1043
+
1044
+ A successful response means the domain is registered. If registration fails, login to
1045
+ [hPanel](https://hpanel.hostinger.com/) and check domain registration status.
1046
+
1047
+ If no WHOIS information is provided, default contact information for that TLD will be used.
1048
+ Before making request, ensure WHOIS information for desired TLD exists in your account.
1049
+
1050
+ Some TLDs require `additional_details` to be provided and these will be validated before claiming.
1051
+
1052
+ Requests which cannot be fulfilled are rejected with an error code in the response body,
1053
+ for example `2037` when no free domain is available.
1054
+
1055
+ Use this endpoint to register a domain using a free domain from your account.
1056
+
1057
+ - **Method**: `POST`
1058
+ - **Path**: `/api/domains/v1/portfolio/claim`
1059
+
1060
+ #### domains_enableDomainLockV1
1061
+
1062
+ Enable domain lock for the domain.
1063
+
1064
+ When domain lock is enabled,
1065
+ the domain cannot be transferred to another registrar without first disabling the lock.
1066
+
1067
+ Use this endpoint to secure domains against unauthorized transfers.
1068
+
1069
+ - **Method**: `PUT`
1070
+ - **Path**: `/api/domains/v1/portfolio/{domain}/domain-lock`
1071
+
1072
+ #### domains_disableDomainLockV1
1073
+
1074
+ Disable domain lock for the domain.
1075
+
1076
+ Domain lock needs to be disabled before transferring the domain to another registrar.
1077
+
1078
+ Use this endpoint to prepare domains for transfer to other registrars.
1079
+
1080
+ - **Method**: `DELETE`
1081
+ - **Path**: `/api/domains/v1/portfolio/{domain}/domain-lock`
1082
+
1083
+ #### domains_getDomainDetailsV1
1084
+
1085
+ Retrieve detailed information for specified domain.
1086
+
1087
+ Use this endpoint to view comprehensive domain configuration and status.
1088
+
1089
+ - **Method**: `GET`
1090
+ - **Path**: `/api/domains/v1/portfolio/{domain}`
1091
+
1092
+ #### domains_getDomainListV1
1093
+
1094
+ Retrieve all domains associated with your account.
1095
+
1096
+ Use this endpoint to view user's domain portfolio.
1097
+
1098
+ - **Method**: `GET`
1099
+ - **Path**: `/api/domains/v1/portfolio`
1100
+
1101
+ #### domains_purchaseNewDomainV1
1102
+
1103
+ Purchase and register a new domain name.
1104
+
1105
+ If registration fails, login to [hPanel](https://hpanel.hostinger.com/) and check domain registration status.
1106
+
1107
+ If no payment method is provided, your default payment method will be used automatically.
1108
+
1109
+ If no WHOIS information is provided, default contact information for that TLD will be used.
1110
+ Before making request, ensure WHOIS information for desired TLD exists in your account.
1111
+
1112
+ Some TLDs require `additional_details` to be provided and these will be validated before completing purchase.
1113
+
1114
+ Use this endpoint to register new domains for users.
1115
+
1116
+ - **Method**: `POST`
1117
+ - **Path**: `/api/domains/v1/portfolio`
1118
+
1119
+ #### domains_enablePrivacyProtectionV1
1120
+
1121
+ Enable privacy protection for the domain.
1122
+
1123
+ When privacy protection is enabled, domain owner's personal information is hidden from public WHOIS database.
1124
+
1125
+ Use this endpoint to protect domain owner's personal information from public view.
1126
+
1127
+ - **Method**: `PUT`
1128
+ - **Path**: `/api/domains/v1/portfolio/{domain}/privacy-protection`
1129
+
1130
+ #### domains_disablePrivacyProtectionV1
1131
+
1132
+ Disable privacy protection for the domain.
1133
+
1134
+ When privacy protection is disabled, domain owner's personal information is visible in public WHOIS database.
1135
+
1136
+ Use this endpoint to make domain owner's information publicly visible.
1137
+
1138
+ - **Method**: `DELETE`
1139
+ - **Path**: `/api/domains/v1/portfolio/{domain}/privacy-protection`
1140
+
1141
+ #### domains_getDomainRenewalInformationV1
1142
+
1143
+ Retrieve renewal information for a specified domain, including its status and current
1144
+ expiration date.
1145
+
1146
+ Use this endpoint to build renewal automation and expiry monitoring for a single domain.
1147
+
1148
+ - **Method**: `GET`
1149
+ - **Path**: `/api/domains/v1/portfolio/{domain}/renewal`
1150
+
1151
+ #### domains_updateDomainNameserversV1
1152
+
1153
+ Set nameservers for a specified domain.
1154
+
1155
+ Be aware, that improper nameserver configuration can lead to the domain being unresolvable or unavailable.
1156
+
1157
+ Use this endpoint to configure custom DNS hosting for domains.
1158
+
1159
+ - **Method**: `PUT`
1160
+ - **Path**: `/api/domains/v1/portfolio/{domain}/nameservers`
1161
+
1162
+ #### domains_claimFreeDomainTransferV1
1163
+
1164
+ Claim a free domain transfer available on your account and start the transfer.
1165
+
1166
+ Unlike purchasing a transfer, this consumes a free domain transfer you already have,
1167
+ so no payment method is required.
1168
+
1169
+ Before making request, unlock the domain at the current registrar and get its authorization
1170
+ code. The transfer is validated first, so domains which cannot be transferred are rejected
1171
+ before the free domain transfer is consumed.
1172
+
1173
+ A successful response means the transfer has been started. Completion depends on the current
1174
+ registrar and can be followed with the [transfer list endpoint](#tag/domains-transfer).
1175
+
1176
+ If no WHOIS information is provided, default contact information for that TLD will be used.
1177
+ Before making request, ensure WHOIS information for desired TLD exists in your account.
1178
+
1179
+ Requests which cannot be fulfilled are rejected with an error code in the response body.
1180
+
1181
+ Use this endpoint to transfer a domain using a free domain transfer from your account.
1182
+
1183
+ - **Method**: `POST`
1184
+ - **Path**: `/api/domains/v1/transfers/claim`
1185
+
1186
+ #### domains_getTransferV1
1187
+
1188
+ Retrieve the transfer for a specified domain.
1189
+
1190
+ Use this endpoint to track an incoming or outgoing registrar transfer and its status.
1191
+
1192
+ - **Method**: `GET`
1193
+ - **Path**: `/api/domains/v1/transfers/{domain}`
1194
+
1195
+ #### domains_getTransferListV1
1196
+
1197
+ Retrieve all domain transfers in your portfolio.
1198
+
1199
+ Use this endpoint to monitor incoming and outgoing registrar transfers across your domains.
1200
+
1201
+ - **Method**: `GET`
1202
+ - **Path**: `/api/domains/v1/transfers`
1203
+
1204
+ #### domains_changeWHOISProfileForDomainV1
1205
+
1206
+ Change WHOIS contact profile for a domain.
1207
+
1208
+ Repoints the given contact roles to a new WHOIS profile and submits the change to the registry.
1209
+ The profile currently assigned to those roles is resolved automatically;
1210
+ the request fails if the given roles are not all on the same profile today.
1211
+
1212
+ Changing transfer sensitive fields on the owner contact starts an IRTP verification.
1213
+
1214
+ The change is processed asynchronously.
1215
+
1216
+ Use this endpoint to move a registered domain onto different contact information.
1217
+
1218
+ - **Method**: `PUT`
1219
+ - **Path**: `/api/domains/v1/whois/change`
1220
+
1221
+ #### domains_setWHOISProfileAsDefaultV1
1222
+
1223
+ Set WHOIS contact profile as default.
1224
+
1225
+ The default profile is pre-selected for the TLD it belongs to when registering new domains.
1226
+
1227
+ Use this endpoint to avoid picking contact information for every registration.
1228
+
1229
+ - **Method**: `PUT`
1230
+ - **Path**: `/api/domains/v1/whois/default/{whoisId}`
1231
+
1232
+ #### domains_unsetDefaultWHOISProfileV1
1233
+
1234
+ Unset WHOIS contact profile as default.
1235
+
1236
+ The profile itself is kept, it is only no longer pre-selected for its TLD.
1237
+
1238
+ Use this endpoint to stop reusing contact information for new registrations.
1239
+
1240
+ - **Method**: `DELETE`
1241
+ - **Path**: `/api/domains/v1/whois/default/{whoisId}`
1242
+
1243
+ #### domains_getWHOISProfileV1
1244
+
1245
+ Retrieve a WHOIS contact profile.
1246
+
1247
+ Use this endpoint to view domain registration contact information.
1248
+
1249
+ - **Method**: `GET`
1250
+ - **Path**: `/api/domains/v1/whois/{whoisId}`
1251
+
1252
+ #### domains_deleteWHOISProfileV1
1253
+
1254
+ Delete WHOIS contact profile.
1255
+
1256
+ Use this endpoint to remove unused contact profiles from account.
1257
+
1258
+ - **Method**: `DELETE`
1259
+ - **Path**: `/api/domains/v1/whois/{whoisId}`
1260
+
1261
+ #### domains_getWHOISProfileListV1
1262
+
1263
+ Retrieve WHOIS contact profiles.
1264
+
1265
+ Use this endpoint to view available contact profiles for domain registration.
1266
+
1267
+ - **Method**: `GET`
1268
+ - **Path**: `/api/domains/v1/whois`
1269
+
1270
+ #### domains_createWHOISProfileV1
1271
+
1272
+ Create WHOIS contact profile.
1273
+
1274
+ Use this endpoint to add new contact information for domain registration.
1275
+
1276
+ - **Method**: `POST`
1277
+ - **Path**: `/api/domains/v1/whois`
1278
+
1279
+ #### domains_getWHOISProfileUsageV1
1280
+
1281
+ Retrieve domain list where provided WHOIS contact profile is used.
1282
+
1283
+ Use this endpoint to view which domains use specific contact profiles.
1284
+
1285
+ - **Method**: `GET`
1286
+ - **Path**: `/api/domains/v1/whois/{whoisId}/usage`
1287
+
1288
+ ### `hostinger-ecommerce-mcp`
1289
+
1290
+ #### ecommerce_listDiscountsV1
1291
+
1292
+ List a store's discounts. Filter by free text over code and name, or by disabled state.
1293
+ Amounts for fixed discounts are integers in the smallest currency unit; percentage
1294
+ discounts carry a whole-number value between 1 and 100.
1295
+
1296
+ - **Method**: `GET`
1297
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/discounts`
1298
+
1299
+ #### ecommerce_createADiscountV1
1300
+
1301
+ Create a discount for a store. Fixed discounts take an amount in the smallest currency
1302
+ unit (e.g. $10 is 1000); percentage discounts take a whole-number value between 1 and 100.
1303
+ Free-shipping discounts ignore value. Returns the created discount.
1304
+
1305
+ - **Method**: `POST`
1306
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/discounts`
1307
+
1308
+ #### ecommerce_getCustomStorefrontSetupInstructionsV1
1309
+
1310
+ Retrieve step-by-step setup instructions, formatted as Markdown, for connecting a custom sales
1311
+ channel to your store and keeping your catalog, orders, shipping and payments in sync through
1312
+ the Ecommerce API.
1313
+
1314
+ - **Method**: `GET`
1315
+ - **Path**: `/api/ecommerce/v1/miscellaneous/custom-storefront-instructions`
1316
+
1317
+ #### ecommerce_cancelAnOrderV1
1318
+
1319
+ Cancel the order and optionally email the customer. Returns the updated order summary.
1320
+
1321
+ - **Method**: `POST`
1322
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/orders/{order_id}/cancel`
1323
+
1324
+ #### ecommerce_fulfilAnOrderV1
1325
+
1326
+ Create a fulfilment for the order and attach tracking in one call. Omit items to fulfil
1327
+ every remaining unfulfilled item. Returns the updated order summary.
1328
+
1329
+ - **Method**: `POST`
1330
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/orders/{order_id}/fulfill`
1331
+
1332
+ #### ecommerce_listStoreOrdersV1
1333
+
1334
+ List a store's orders newest first as summaries. Filter by status, payment or fulfilment
1335
+ status, customer email, order number or a free-text query. Amounts are in the smallest
1336
+ currency unit. Retrieve a single order for its line items, addresses and fulfilments.
1337
+
1338
+ - **Method**: `GET`
1339
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/orders`
1340
+
1341
+ #### ecommerce_retrieveAnOrderV1
1342
+
1343
+ Retrieve one order in full: line items (each with the id the fulfil endpoint needs),
1344
+ addresses, the totals breakdown and fulfilments with tracking. Amounts are in the
1345
+ smallest currency unit.
1346
+
1347
+ - **Method**: `GET`
1348
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/orders/{order_id}`
1349
+
1350
+ #### ecommerce_enableManualPaymentMethodV1
1351
+
1352
+ Enable a manual payment method so the store can accept orders without an online payment provider.
1353
+
1354
+ - **Method**: `POST`
1355
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/payment-methods/manual`
1356
+
1357
+ #### ecommerce_createAPaymentProviderConnectLinkV1
1358
+
1359
+ Create an onboarding link for connecting a payment gateway to the store. Returns the gateway
1360
+ onboarding URL for the merchant to open and a deep-link into the store admin.
1361
+
1362
+ - **Method**: `POST`
1363
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/payment-providers/{provider_id}/connect-link`
1364
+
1365
+ #### ecommerce_listStorePaymentProvidersV1
1366
+
1367
+ List a store's payment providers, split into providers already connected to the store and
1368
+ gateways available to install. Never exposes gateway credentials, secrets, or configuration.
1369
+
1370
+ - **Method**: `GET`
1371
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/payment-providers`
1372
+
1373
+ #### ecommerce_createAProductImageUploadURLV1
1374
+
1375
+ Returns a signed URL to upload a product image to (multipart/form-data POST). Then call the
1376
+ attach-image endpoint with the returned object_name to scan and attach it to the product.
1377
+
1378
+ - **Method**: `POST`
1379
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}/images/upload-url`
1380
+
1381
+ #### ecommerce_deleteAProductV1
1382
+
1383
+ Delete a product and its variants from the store. A subscription product with active
1384
+ subscribers is archived instead of deleted so its data stays available.
1385
+
1386
+ - **Method**: `DELETE`
1387
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}`
1388
+
1389
+ #### ecommerce_updateAProductV1
1390
+
1391
+ Update a product's name, description or status. Set status to published to make it buyable,
1392
+ draft to hide it, or archived to retire it. Variants, prices and inventory are managed
1393
+ through the variant endpoints, not here. Returns the updated product summary.
1394
+
1395
+ - **Method**: `PATCH`
1396
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}`
1397
+
1398
+ #### ecommerce_createDigitalProductV1
1399
+
1400
+ Create a published digital product with a single variant and an optional external download link.
1401
+
1402
+ - **Method**: `POST`
1403
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/products/digital`
1404
+
1405
+ #### ecommerce_listProductsV1
1406
+
1407
+ List a store's products newest first as lean summaries (name, status, thumbnail, variant
1408
+ count and price range). Prices are integers in the smallest currency unit and live on
1409
+ variants. Filter by status, free text or a set of product ids. Use include=variants to
1410
+ embed each product's variants with prices and inventory, and include=media to embed its media.
1411
+
1412
+ - **Method**: `GET`
1413
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/products`
1414
+
1415
+ #### ecommerce_createPhysicalProductV1
1416
+
1417
+ Create a published physical product with a single variant priced in the store currency.
1418
+
1419
+ - **Method**: `POST`
1420
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/products/physical`
1421
+
1422
+ #### ecommerce_uploadAndAttachAProductImageV1
1423
+
1424
+ Fetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a
1425
+ single call. The image is virus-scanned and validated by content, then stored on the CDN. Set
1426
+ is_thumbnail to make it the product's primary image.
1427
+
1428
+ - **Method**: `POST`
1429
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}/images`
1430
+
1431
+ #### ecommerce_listSalesChannelsV1
1432
+
1433
+ List a store's active sales channels with their full metadata.
1434
+
1435
+ - **Method**: `GET`
1436
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/sales-channels`
1437
+
1438
+ #### ecommerce_createASalesChannelV1
1439
+
1440
+ Create a sales channel for a store. A "custom" channel is headless: build your own frontend and keep
1441
+ your catalog, orders, shipping and payments in sync through the Ecommerce API. A "quick-link" channel
1442
+ is a hosted one-page store whose handle is auto-generated.
1443
+
1444
+ - **Method**: `POST`
1445
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/sales-channels`
1446
+
1447
+ #### ecommerce_updateSalesChannelV1
1448
+
1449
+ Update a custom sales channel. The merchant-facing `name` and the public `url`
1450
+ (returned as the channel `domain`) can be changed. Pass `null` to clear a value.
1451
+
1452
+ - **Method**: `PATCH`
1453
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/sales-channels/{sales_channel_id}`
1454
+
1455
+ #### ecommerce_setStoreShippingV1
1456
+
1457
+ Set the flat-rate shipping price for a store, creating the shipping zone if it does not exist yet.
1458
+
1459
+ - **Method**: `POST`
1460
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/shipping`
1461
+
1462
+ #### ecommerce_deleteStoreV1
1463
+
1464
+ Soft-delete a store owned by your account.
1465
+
1466
+ The underlying store data is preserved; only the store is marked as deleted.
1467
+
1468
+ - **Method**: `DELETE`
1469
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}`
1470
+
1471
+ #### ecommerce_getStoresV1
1472
+
1473
+ Retrieve the stores associated with your account.
1474
+
1475
+ - **Method**: `GET`
1476
+ - **Path**: `/api/ecommerce/v1/stores`
1477
+
1478
+ #### ecommerce_createStoreV1
1479
+
1480
+ Create a new store for your account.
1481
+
1482
+ A primary sales channel is created alongside the store.
1483
+
1484
+ - **Method**: `POST`
1485
+ - **Path**: `/api/ecommerce/v1/stores`
1486
+
1487
+ #### ecommerce_getStoreMetadataV1
1488
+
1489
+ Get a store's readiness metadata: whether payment methods and shipping are configured,
1490
+ plus its default currency. Useful to verify prerequisites before building a storefront.
1491
+
1492
+ - **Method**: `GET`
1493
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/metadata`
1494
+
1495
+ #### ecommerce_updateProductVariantsInBatchV1
1496
+
1497
+ Update up to 100 existing variants in place by id — title, inventory, stock tracking and
1498
+ prices. Variants omitted from the request are left untouched. Prices replace the variant's
1499
+ existing prices in full. Returns the updated variants.
1500
+
1501
+ - **Method**: `PATCH`
1502
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants/batch`
1503
+
1504
+ #### ecommerce_deleteAProductVariantV1
1505
+
1506
+ Delete a single variant from the product.
1507
+
1508
+ - **Method**: `DELETE`
1509
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants/{variant_id}`
1510
+
1511
+ #### ecommerce_listProductVariantsV1
1512
+
1513
+ List a product's variants, ordered by rank, with their options, prices and inventory.
1514
+ Prices are integers in the smallest currency unit and live on variants.
1515
+
1516
+ - **Method**: `GET`
1517
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants`
1518
+
1519
+ #### ecommerce_createAProductVariantV1
1520
+
1521
+ Add a variant to a product along one or more option dimensions (e.g. Size, Color). Options
1522
+ missing from the product are created automatically; provide a value for every option the
1523
+ product already has. Prices are integers in the smallest currency unit and default to the
1524
+ store currency. Returns the created variant.
1525
+
1526
+ - **Method**: `POST`
1527
+ - **Path**: `/api/ecommerce/v1/stores/{store_id}/products/{product_id}/variants`
1528
+
1529
+ ### `hostinger-horizons-mcp`
1530
+
1531
+ #### horizons_createWebsiteV1
1532
+
1533
+ Create new Hostinger Horizons website from the given message.\n
1534
+ Use this tool when user asks you to create a website, landing page, blog
1535
+ or any other type of application.\n
1536
+ This tool initiates the website creation process and returns a website URL and ID.
1537
+ The generation happens asynchronously.\n
1538
+ After invoking this tool, your chat reply must be EXACTLY 1 sentence summarizing
1539
+ that Hostinger Horizons is now creating their website and it will be ready in a few minutes
1540
+ and you should provide the website URL to the user immediately
1541
+ Do not write code.\n\nTo edit afterwards, users must go to Hostinger Horizons interface
1542
+ in the provided website URL.
1543
+ If the tool call fails with an error, you should provide a clear explanation of the error
1544
+ and do not generate code yourself in the chat.
1545
+ \n
1546
+ TECHNOLOGY STACK CONSTRAINTS (STRICTLY ENFORCED):\n
1547
+ The environment is limited to the following technologies.
1548
+ You MUST NOT use, suggest, or implement any technology outside this list:\n
1549
+ \n
1550
+ - Language: JavaScript ONLY.
1551
+ - Languages like TypeScript, Rust, Python, Java, PHP, etc., are STRICTLY PROHIBITED.\n
1552
+ - Framework: React.\n
1553
+ - Navigation: React Router.\n
1554
+ - Styling: TailwindCSS.\n
1555
+ - Components: shadcn/ui (built with @radix-ui primitives).\n
1556
+ - Icons: Lucide React.\n
1557
+ - Animations: Framer Motion.\n
1558
+ \n
1559
+ BACKEND & DATA STORAGE:\n
1560
+ - Horizons integrated backend is the EXCLUSIVE solution for persistent data storage,
1561
+ authentication, and database needs.\n
1562
+ - Local databases (SQLite, MySQL, etc.) are STRICTLY PROHIBITED.\n
1563
+ - Third-party services (Firebase, AWS Amplify) are allowed ONLY if explicitly requested by the user.\n
1564
+ \n
1565
+ MAPS:\n
1566
+ - OpenStreetMap is the default provider.\n
1567
+ - Alternative providers (Google Maps, Mapbox) are allowed ONLY if explicitly requested by the user.\n
1568
+
1569
+ - **Method**: `POST`
1570
+ - **Path**: `/api/horizons/v1/websites`
1571
+
1572
+ #### horizons_getWebsiteV1
1573
+
1574
+ Get a link for the user to edit their website in Hostinger Horizons interface.\n
1575
+ Use this tool when user wants to modify, edit or add new features to an existing website.\n
1576
+ Websites can only be edited in Hostinger Horizons interface in the provided website URL.
1577
+
1578
+ - **Method**: `GET`
1579
+ - **Path**: `/api/horizons/v1/websites/{websiteId}`
1580
+
1581
+ ### `hostinger-hosting-mcp`
1582
+
1583
+ #### hosting_importWordpressWebsite
1584
+
1585
+ Import a WordPress website from an archive file to a hosting server. This tool uploads a website archive (zip, tar, tar.gz, etc.) and a database dump (.sql file) to deploy a complete WordPress website. The archive will be extracted on the server automatically. Note: This process may take a while for larger sites. After upload completion, files are being extracted and the site will be available in a few minutes. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the files yourself, this tool does it end-to-end. The username will be automatically resolved from the domain.
1586
+
1587
+ - **Method**: `custom`
1588
+ - **Path**: `custom`
1589
+
1590
+ #### hosting_deployWordpressPlugin
1591
+
1592
+ Deploy a WordPress plugin from a directory to a hosting server. This tool uploads all plugin files and triggers plugin deployment. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the files yourself, this tool does it end-to-end.
1593
+
1594
+ - **Method**: `custom`
1595
+ - **Path**: `custom`
1596
+
1597
+ #### hosting_deployWordpressTheme
1598
+
1599
+ Deploy a WordPress theme from a directory to a hosting server. This tool uploads all theme files and triggers theme deployment. The uploaded theme can optionally be activated after deployment. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the files yourself, this tool does it end-to-end.
1600
+
1601
+ - **Method**: `custom`
1602
+ - **Path**: `custom`
1603
+
1604
+ #### hosting_deployJsApplication
1605
+
1606
+ Deploy a JavaScript application from an archive file to a hosting server. IMPORTANT: the archive must ONLY contain application source files, not the build output, skip node_modules directory; also exclude all files matched by .gitignore if the ignore file exists. The build process will be triggered automatically on the server after the archive is uploaded. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the archive yourself, this tool does it end-to-end. After deployment, use the hosting_listJsDeployments tool to check deployment status and track build progress.
1607
+
1608
+ - **Method**: `custom`
1609
+ - **Path**: `custom`
1610
+
1611
+ #### hosting_deployStaticWebsite
1612
+
1613
+ Deploy a static website from an archive file to a hosting server. IMPORTANT: This tool only works for static websites with no build process. The archive must contain pre-built static files (HTML, CSS, JavaScript, images, etc.) ready to be served. If the website has a package.json file or requires a build command, use hosting_deployJsApplication instead. The tool uploads the archive to the website's file browser over TUS and triggers deployment; the archive is extracted and deployed directly without any build steps. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the archive yourself, this tool does it end-to-end. The username will be automatically resolved from the domain.
1614
+
1615
+ - **Method**: `custom`
1616
+ - **Path**: `custom`
1617
+
1618
+ #### hosting_listJsDeployments
1619
+
1620
+ List javascript application deployments for checking their status. Use this tool when customer asks for the status of the deployment. This tool retrieves a paginated list of Node.js application deployments for a domain with optional filtering by deployment states.
1621
+
1622
+ - **Method**: `custom`
1623
+ - **Path**: `custom`
1624
+
1625
+ #### hosting_showJsDeploymentLogs
1626
+
1627
+ Retrieve logs for a specified JavaScript application deployment for debugging purposes in case of failure.
1628
+
1629
+ - **Method**: `custom`
1630
+ - **Path**: `custom`
1631
+
1632
+ #### hosting_clearWebsiteCacheV1
1633
+
1634
+ Permanently clears all server-side cache for the website at once. Use it when content was
1635
+ updated and needs to be visible immediately, or after making major changes.
1636
+
1637
+ Also purges the Hostinger CDN cache when CDN is enabled on the website. For a WordPress
1638
+ installation living in a subdirectory, pass the directory query parameter to clear its cache.
1639
+
1640
+ - **Method**: `DELETE`
1641
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/cache/clear`
1642
+
1643
+ #### hosting_toggleCachelessModeV1
1644
+
1645
+ Turns development (cacheless) mode on or off, based on the enabled flag. When enabled, nothing
1646
+ is cached, effectively turning off all caching for the website; use it while actively developing,
1647
+ testing changes, debugging issues, or when real-time updates must be visible. Disable it after
1648
+ finishing development work to restore the performance benefits of caching.
1649
+
1650
+ - **Method**: `PATCH`
1651
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/cacheless-mode/toggle`
1652
+
1653
+ #### hosting_toggleWebsiteCacheV1
1654
+
1655
+ Turns server-side caching for the website on or off, based on the enabled flag. Enable it for
1656
+ faster page loads, reduced server load, and improved user experience; recommended for production
1657
+ websites. Disabling may impact performance; to temporarily bypass caching while developing or
1658
+ debugging, prefer toggling cacheless mode instead.
1659
+
1660
+ Does nothing if caching is already in the requested state.
1661
+
1662
+ - **Method**: `PATCH`
1663
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/cache/toggle`
1664
+
1665
+ #### hosting_listAccountCronJobsV1
1666
+
1667
+ Returns the list of cron jobs configured for the specified account, including their schedule and command.
1668
+
1669
+ - **Method**: `GET`
1670
+ - **Path**: `/api/hosting/v1/accounts/{username}/cron-jobs`
1671
+
1672
+ #### hosting_createAccountCronJobV1
1673
+
1674
+ Creates a cron job for the specified account from a schedule expression and a command.
1675
+
1676
+ Returns the created cron job, including its uid, which is required to delete the cron job or fetch its output.
1677
+
1678
+ - **Method**: `POST`
1679
+ - **Path**: `/api/hosting/v1/accounts/{username}/cron-jobs`
1680
+
1681
+ #### hosting_deleteAccountCronJobV1
1682
+
1683
+ Permanently deletes the cron job identified by its uid.
1684
+
1685
+ The uid is returned by the list cron jobs endpoint.
1686
+
1687
+ - **Method**: `DELETE`
1688
+ - **Path**: `/api/hosting/v1/accounts/{username}/cron-jobs/{uid}`
1689
+
1690
+ #### hosting_getCronJobOutputV1
1691
+
1692
+ Returns the output captured from the last execution of the cron job identified by its uid.
1693
+
1694
+ The uid is returned by the list cron jobs endpoint.
1695
+
1696
+ - **Method**: `GET`
1697
+ - **Path**: `/api/hosting/v1/accounts/{username}/cron-jobs/{uid}/output`
1698
+
1699
+ #### hosting_changeDatabasePasswordV1
1700
+
1701
+ Changes the password for the specified database user.
1702
+
1703
+ The database name must be the full name returned by the list databases endpoint.
1704
+ The password must also be updated in any website configuration that uses this database.
1705
+
1706
+ - **Method**: `PATCH`
1707
+ - **Path**: `/api/hosting/v1/accounts/{username}/databases/{name}/change-password`
1708
+
1709
+ #### hosting_listAccountDatabasesV1
1710
+
1711
+ Returns a paginated list of databases for the specified account.
1712
+
1713
+ Use the domain and is_assigned filters to find databases assigned to a specific domain.
1714
+
1715
+ - **Method**: `GET`
1716
+ - **Path**: `/api/hosting/v1/accounts/{username}/databases`
1717
+
1718
+ #### hosting_createAccountDatabaseV1
1719
+
1720
+ Creates a database with a database user and password for the specified account.
1721
+
1722
+ The database name and user are automatically prefixed with the account username when needed.
1723
+
1724
+ - **Method**: `POST`
1725
+ - **Path**: `/api/hosting/v1/accounts/{username}/databases`
1726
+
1727
+ #### hosting_deleteAccountDatabaseV1
1728
+
1729
+ Permanently deletes a database and its remote connections.
1730
+
1731
+ The database name must be the full name returned by the list databases endpoint.
1732
+
1733
+ - **Method**: `DELETE`
1734
+ - **Path**: `/api/hosting/v1/accounts/{username}/databases/{name}`
1735
+
1736
+ #### hosting_createDatabaseRemoteConnectionV1
1737
+
1738
+ Allows a remote host to connect to the specified database.
1739
+
1740
+ Provide an IPv4/IPv6 address, or "%" to allow any host. The database name must be
1741
+ the full name returned by the list databases endpoint.
1742
+
1743
+ - **Method**: `POST`
1744
+ - **Path**: `/api/hosting/v1/accounts/{username}/databases/{name}/remote-connections`
1745
+
1746
+ #### hosting_deleteDatabaseRemoteConnectionV1
1747
+
1748
+ Permanently removes a remote-access rule, revoking the given host's remote access to the database.
1749
+
1750
+ Identify the rule with the required ip query parameter (the IPv4/IPv6 address, or "%",
1751
+ exactly as returned by the list remote connections endpoint). The database name must be
1752
+ the full name returned by the list databases endpoint.
1753
+
1754
+ - **Method**: `DELETE`
1755
+ - **Path**: `/api/hosting/v1/accounts/{username}/databases/{name}/remote-connections`
1756
+
1757
+ #### hosting_listDatabaseRemoteConnectionsV1
1758
+
1759
+ Returns the remote-access rules for the specified account: the remote hosts
1760
+ (IPv4/IPv6 addresses, or "%" for any host) allowed to connect to the account databases.
1761
+
1762
+ Use the domain filter to only return rules for databases assigned to a specific domain.
1763
+
1764
+ - **Method**: `GET`
1765
+ - **Path**: `/api/hosting/v1/accounts/{username}/databases/remote-connections`
1766
+
1767
+ #### hosting_repairDatabaseV1
1768
+
1769
+ Repairs corrupted database tables asynchronously.
1770
+
1771
+ Use when database errors, crashes, or corruption are reported.
1772
+ The database name must be the full name returned by the list databases endpoint.
1773
+
1774
+ - **Method**: `PATCH`
1775
+ - **Path**: `/api/hosting/v1/accounts/{username}/databases/{name}/repair`
1776
+
1777
+ #### hosting_getPhpMyAdminLinkV1
1778
+
1779
+ Returns a direct sign-on link to phpMyAdmin for the specified database.
1780
+
1781
+ Use this when a visual database interface is needed for SQL queries, imports, exports, or table management.
1782
+ The database name must be the full name returned by the list databases endpoint.
1783
+
1784
+ - **Method**: `GET`
1785
+ - **Path**: `/api/hosting/v1/accounts/{username}/databases/{name}/phpmyadmin-link`
1786
+
1787
+ #### hosting_listAvailableDatacentersV1
1788
+
1789
+ Retrieve a list of datacenters available for setting up hosting plans
1790
+ based on available datacenter capacity and hosting plan of your order.
1791
+ The first item in the list is the best match for your specific order
1792
+ requirements.
1793
+
1794
+ - **Method**: `GET`
1795
+ - **Path**: `/api/hosting/v1/datacenters`
1796
+
1797
+ #### hosting_generateAFreeSubdomainV1
1798
+
1799
+ Generate a unique free subdomain that can be used for hosting services without purchasing custom domains.
1800
+ Free subdomains allow you to start using hosting services immediately
1801
+ and you can always connect a custom domain to your site later.
1802
+
1803
+ - **Method**: `POST`
1804
+ - **Path**: `/api/hosting/v1/domains/free-subdomains`
1805
+
1806
+ #### hosting_listWebsiteParkedDomainsV1
1807
+
1808
+ Retrieve all parked or alias domains created under the selected website.
1809
+
1810
+ Use this endpoint to inspect parked domain configuration for a specific website,
1811
+ including the parent domain and root directory assigned to each parked domain.
1812
+
1813
+ - **Method**: `GET`
1814
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/parked-domains`
1815
+
1816
+ #### hosting_createWebsiteParkedDomainV1
1817
+
1818
+ Create a parked or alias domain for the selected website.
1819
+
1820
+ Provide a domain name or IP address to park on the website so it serves the same content
1821
+ as the parent domain.
1822
+
1823
+ - **Method**: `POST`
1824
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/parked-domains`
1825
+
1826
+ #### hosting_deleteWebsiteParkedDomainV1
1827
+
1828
+ Delete an existing parked or alias domain from the selected website.
1829
+
1830
+ Use this endpoint to remove parked domains that are no longer needed.
1831
+
1832
+ - **Method**: `DELETE`
1833
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/parked-domains/{parkedDomain}`
1834
+
1835
+ #### hosting_listWebsiteSubdomainsV1
1836
+
1837
+ Retrieve all subdomains created under the selected website.
1838
+
1839
+ Use this endpoint to inspect subdomain configuration for a specific website,
1840
+ including the parent domain and root directory assigned to each subdomain.
1841
+
1842
+ - **Method**: `GET`
1843
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/subdomains`
1844
+
1845
+ #### hosting_createWebsiteSubdomainV1
1846
+
1847
+ Create a new subdomain for the selected website.
1848
+
1849
+ Provide a subdomain prefix and, optionally, a custom directory or the
1850
+ website public directory to use as the subdomain root.
1851
+
1852
+ - **Method**: `POST`
1853
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/subdomains`
1854
+
1855
+ #### hosting_deleteWebsiteSubdomainV1
1856
+
1857
+ Delete an existing subdomain from the selected website.
1858
+
1859
+ Use this endpoint to remove subdomains that are no longer needed.
1860
+
1861
+ - **Method**: `DELETE`
1862
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/subdomains/{subdomain}`
1863
+
1864
+ #### hosting_verifyDomainOwnershipV1
1865
+
1866
+ Verify ownership of a single domain and return the verification status.
1867
+
1868
+ Use this endpoint to check if a domain is accessible for you before using it for new websites.
1869
+ If the domain is accessible, the response will have `is_accessible: true`.
1870
+ If not, add the given TXT record to your domain's DNS records and try verifying again.
1871
+ Keep in mind that it may take up to 10 minutes for new TXT DNS records to propagate.
1872
+
1873
+ Skip this verification when using Hostinger's free subdomains (*.hostingersite.com).
1874
+
1875
+ - **Method**: `POST`
1876
+ - **Path**: `/api/hosting/v1/domains/verify-ownership`
1877
+
1878
+ #### hosting_generateUploadURLV1
1879
+
1880
+ Generate a file browser upload URL with authentication credentials
1881
+ for uploading files directly to a website's file storage.
1882
+
1883
+ Returns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the
1884
+ website's `public_html` directory via the TUS resumable upload protocol (TUS 1.0.0).
1885
+ Send `X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request
1886
+ below.
1887
+
1888
+ 1. Create the upload: `POST` to `{url}/{relative_file_path}?override=true` with headers
1889
+ `upload-length: {file size in bytes}` and `upload-offset: 0`. Expect `201 Created`.
1890
+ 2. Upload the file: send the file bytes to the same location (any TUS 1.0.0 client, or
1891
+ `PATCH` requests with an `upload-offset` header tracking progress) until complete.
1892
+
1893
+ `relative_file_path` is the destination path inside `public_html`, e.g. `app.zip`.
1894
+
1895
+ Instead of a TUS client, plain `curl` also works:
1896
+ ```
1897
+ FILE=app.zip
1898
+ SIZE=$(stat -f%z "$FILE") # stat -c%s on Linux
1899
+
1900
+ curl -i -X POST "{url}/${FILE}?override=true" \
1901
+ -H "X-Auth: {auth_key}" \
1902
+ -H "X-Auth-Rest: {rest_auth_key}" \
1903
+ -H "Tus-Resumable: 1.0.0" \
1904
+ -H "Upload-Length: ${SIZE}" \
1905
+ -H "Upload-Offset: 0"
1906
+ # -> 201 Created
1907
+
1908
+ curl -i -X PATCH "{url}/${FILE}?override=true" \
1909
+ -H "X-Auth: {auth_key}" \
1910
+ -H "X-Auth-Rest: {rest_auth_key}" \
1911
+ -H "Tus-Resumable: 1.0.0" \
1912
+ -H "Content-Type: application/offset+octet-stream" \
1913
+ -H "Upload-Offset: 0" \
1914
+ --data-binary "@${FILE}"
1915
+ # -> 204 No Content, Upload-Offset response header equals SIZE when done
1916
+ ```
1917
+
1918
+ - **Method**: `POST`
1919
+ - **Path**: `/api/hosting/v1/files/upload-urls`
1920
+
1921
+ #### hosting_listWebsiteFilesAndDirectoriesV1
1922
+
1923
+ List files and directories under a website's document root.
1924
+
1925
+ Use `directory` to browse a subdirectory relative to the document root. Symlinked entries
1926
+ are listed but never traversed into or resolved.
1927
+
1928
+ - **Method**: `GET`
1929
+ - **Path**: `/api/hosting/v1/accounts/{username}/domains/{domain}/files`
1930
+
1931
+ #### hosting_getWebsiteFileContentV1
1932
+
1933
+ Get a single file's content, relative to a website's document root.
1934
+
1935
+ Read-only; refuses symlinks, oversized files, non-text file types, and files identified as
1936
+ containing secrets (e.g. credential files) — none of these are returned by this endpoint.
1937
+
1938
+ - **Method**: `GET`
1939
+ - **Path**: `/api/hosting/v1/accounts/{username}/domains/{domain}/files/content`
1940
+
1941
+ #### hosting_listNodeJSBuildsV1
1942
+
1943
+ Retrieve a paginated list of Node.js build processes for a specific website.
1944
+
1945
+ Each build represents a single run of the Node.js build pipeline. Use the `states`
1946
+ query parameter to filter results by build state (pending, running, completed, failed).
1947
+ Use the `uuid` from a build to poll its output via the `Get Node.js Build Logs` endpoint.
1948
+
1949
+ - **Method**: `GET`
1950
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/nodejs/builds`
1951
+
1952
+ #### hosting_startNode_jsBuildV1
1953
+
1954
+ Start a Node.js build process using files already present on the website's file storage.
1955
+
1956
+ WARNING: on success this overwrites the website's existing contents and cannot be
1957
+ undone — verify this is intended before calling this endpoint.
1958
+
1959
+ The `source_type` must be `archive` and `source_options.archive_path` must point to an
1960
+ existing archive file on the server (relative to the website document root).
1961
+ Use the `Generate Upload URL` endpoint to obtain credentials and upload the archive first.
1962
+
1963
+ To auto-detect build settings from an archive before starting, first call the
1964
+ `Get Node.js Build Settings from Archive` endpoint.
1965
+
1966
+ The returned build `uuid` can be used to poll progress and retrieve logs via
1967
+ the `Get Node.js Build Logs` endpoint.
1968
+
1969
+ - **Method**: `POST`
1970
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/nodejs/builds`
1971
+
1972
+ #### hosting_getNode_jsBuildSettingsFromArchiveV1
1973
+
1974
+ Auto-detect Node.js build settings from a package.json inside an archive already on the server.
1975
+
1976
+ Use this before calling `Start Node.js Build` to preview what settings will be used,
1977
+ or to let the user review and override values (framework, node version, root directory,
1978
+ output directory, build script) before committing to a build.
1979
+
1980
+ The archive must already be present on the website's file storage. Use the
1981
+ `Generate Upload URL` endpoint to obtain credentials and upload the archive first.
1982
+
1983
+ - **Method**: `GET`
1984
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/nodejs/builds/settings/from-archive`
1985
+
1986
+ #### hosting_listNode_jsEnvironmentVariablesV1
1987
+
1988
+ Lists the Node.js environment variables currently set for the website. Values are always
1989
+ masked as `********` and cannot be read back through this API. Use this endpoint to see
1990
+ which keys are configured or to verify a change, not to read values.
1991
+
1992
+ To change variables, use the `Replace Node.js environment variables` endpoint. It replaces
1993
+ the whole set, so never copy the masked values from this response into that request; send
1994
+ the full desired set with real values taken from the project `.env` file or the user
1995
+ prompt instead.
1996
+
1997
+ - **Method**: `GET`
1998
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/nodejs/builds/settings/env`
1999
+
2000
+ #### hosting_replaceNode_jsEnvironmentVariablesV1
2001
+
2002
+ Replaces the website's Node.js environment variables with the ones provided. This is a
2003
+ full replace: any variable not in the request is deleted, and sending an empty `env_vars`
2004
+ array deletes every variable. Saving writes the values and restarts the running Node.js
2005
+ process.
2006
+
2007
+ A restart is enough for apps that read environment variables at process start, such as
2008
+ Express or NestJS. It is not enough for frameworks that bake variables into the build.
2009
+ Next.js standalone is one of those: build-time values (including `NEXT_PUBLIC_*`) need a
2010
+ fresh build. After this call, use the `Start Node.js build` endpoint so those apps
2011
+ pick up the new values.
2012
+
2013
+ The `List Node.js environment variables` endpoint returns masked values (`********`), so
2014
+ never copy values from it into this request. Always send the full desired set with real
2015
+ values taken from the project `.env` file or the user prompt.
2016
+
2017
+ - **Method**: `PUT`
2018
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/nodejs/builds/settings/env`
2019
+
2020
+ #### hosting_getNodeJSBuildLogsV1
2021
+
2022
+ Retrieve logs from a specific Node.js build process.
2023
+
2024
+ To stream live output while a build is running, poll this endpoint repeatedly
2025
+ while the build state is `running`, passing the previously returned `lines` count
2026
+ as `from_line` to fetch only new output since the last call.
2027
+ Log content may contain ANSI escape sequences (color codes).
2028
+
2029
+ - **Method**: `GET`
2030
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/nodejs/builds/{uuid}/logs`
2031
+
2032
+ #### hosting_restartNode_jsApplicationV1
2033
+
2034
+ Restarts the Node.js server process for the website. Does not rebuild or redeploy the
2035
+ application. Use it to apply environment or configuration changes, or to recover a hung
2036
+ application.
2037
+
2038
+ Only applicable to server-side applications (Express, Next.js, NestJS, etc.). Static
2039
+ front-end apps (React, Vue, Vite) have no persistent server process, so restarting them
2040
+ has no effect. Returns success even when the website has no server process to restart.
2041
+
2042
+ - **Method**: `POST`
2043
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/nodejs/server/restart`
2044
+
2045
+ #### hosting_listNode_jsVulnerabilitiesV1
2046
+
2047
+ Lists known npm package vulnerabilities detected on a Node.js website, enriched with
2048
+ advisory metadata (severity, CVSS score, CVE, advisory URL). Results are sorted from
2049
+ the most severe to the least severe, then by publish date (newest first). Use the
2050
+ `severities` query parameter to filter.
2051
+
2052
+ Vulnerabilities with `is_patchable` set to `true` can be auto-fixed via the
2053
+ `Patch Node.js Vulnerabilities` endpoint, which opens a GitHub pull request with
2054
+ updated package versions. Auto-fix is only available for websites deployed from a
2055
+ connected GitHub repository. Vulnerabilities with `is_patching_in_progress` set to
2056
+ `true` are already included in an open patch pull request; while any patch pull
2057
+ request is open, new patch requests for this website are rejected until it is merged
2058
+ or closed.
2059
+
2060
+ Data comes from periodic dependency scans, so it may lag behind the latest deployment.
2061
+ An empty list means the most recent scan found no vulnerabilities; it does not
2062
+ guarantee the current deployment is vulnerability-free. Available on Business and
2063
+ Cloud Hosting plans.
2064
+
2065
+ - **Method**: `GET`
2066
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/nodejs/vulnerabilities`
2067
+
2068
+ #### hosting_patchNode_jsVulnerabilitiesV1
2069
+
2070
+ Patches the selected Node.js vulnerabilities by updating the affected package versions
2071
+ in `package.json` and opening a GitHub pull request in the connected repository. The
2072
+ customer reviews and merges the pull request; merging triggers the automatic deployment.
2073
+
2074
+ Auto-fix is only available for websites deployed from a connected GitHub repository.
2075
+ Websites deployed from an archive have no auto-fix path and return a 404. The Hostinger
2076
+ GitHub App needs write access to the repository; without it the request fails with a
2077
+ 403 explaining the missing permission.
2078
+
2079
+ Only vulnerabilities with `is_patchable` set to `true` can be patched. Non-patchable
2080
+ IDs in the selection are skipped; the pull request covers the patchable subset, listed
2081
+ in `patched_vulnerability_ids`. Selections without any patchable vulnerability are
2082
+ rejected with a 422. Only one patch pull request can be open at a time per website;
2083
+ close or merge it before patching again. Available on Business and Cloud Hosting plans.
2084
+
2085
+ - **Method**: `POST`
2086
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/nodejs/vulnerabilities/patch`
2087
+
2088
+ #### hosting_listOrdersV1
2089
+
2090
+ Retrieve a paginated list of orders accessible to the authenticated client.
2091
+
2092
+ This endpoint returns orders of your hosting accounts as well as orders
2093
+ of other client hosting accounts that have shared access with you.
2094
+
2095
+ Use the available query parameters to filter results by order statuses
2096
+ or specific order IDs for more targeted results.
2097
+
2098
+ - **Method**: `GET`
2099
+ - **Path**: `/api/hosting/v1/orders`
2100
+
2101
+ #### hosting_resetPHPExtensionsV1
2102
+
2103
+ Resets all PHP extensions of the website to their default state.
2104
+
2105
+ Use it to recover from extension conflicts or restore the original configuration.
2106
+
2107
+ - **Method**: `PATCH`
2108
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/php/extensions/reset`
2109
+
2110
+ #### hosting_getPHPDetailsV1
2111
+
2112
+ Returns the full PHP configuration for the website: current version, available versions
2113
+ (supported and unsupported), enabled/disabled extensions, options with their current value,
2114
+ default, type and the plan limit (`max`), and conflicting extension groups.
2115
+
2116
+ Use it to check the current PHP setup before updating the version, extensions or options.
2117
+
2118
+ - **Method**: `GET`
2119
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/php/details`
2120
+
2121
+ #### hosting_getPHPInfoV1
2122
+
2123
+ Returns the full phpinfo page (HTML) for the website.
2124
+
2125
+ Use it to debug PHP issues or inspect the complete PHP environment of the website.
2126
+
2127
+ - **Method**: `GET`
2128
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/php/php-info`
2129
+
2130
+ #### hosting_updatePHPExtensionsV1
2131
+
2132
+ Enables or disables PHP extensions (modules) for the website.
2133
+
2134
+ Use the Get PHP details endpoint to check the current extension states before changing them.
2135
+
2136
+ - **Method**: `PATCH`
2137
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/php/extensions`
2138
+
2139
+ #### hosting_updatePHPOptionsV1
2140
+
2141
+ Updates PHP options for the website (e.g. `memory_limit`, `max_execution_time`, `upload_max_filesize`).
2142
+ Only provide the options you want to change, inside the `options` object.
2143
+
2144
+ Values above the account plan limit are silently capped to that limit, so the request can succeed
2145
+ with a smaller applied value. Call the Get PHP details endpoint afterwards to read the applied value.
2146
+
2147
+ - **Method**: `PATCH`
2148
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/php/options`
2149
+
2150
+ #### hosting_updatePHPVersionV1
2151
+
2152
+ Changes the PHP version of the website.
2153
+
2154
+ Use the Get PHP details endpoint to see the versions available for the website.
2155
+
2156
+ - **Method**: `PATCH`
2157
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/php/version`
2158
+
2159
+ #### hosting_listWebsiteRedirectsV1
2160
+
2161
+ Returns a paginated list of redirects configured for the selected website.
2162
+
2163
+ - **Method**: `GET`
2164
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/redirects`
2165
+
2166
+ #### hosting_createWebsiteRedirectV1
2167
+
2168
+ Creates a redirect from a URL on the selected website to another URL or IP address.
2169
+
2170
+ - **Method**: `POST`
2171
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/redirects`
2172
+
2173
+ #### hosting_deleteWebsiteRedirectV1
2174
+
2175
+ Permanently deletes the redirect identified by its source URL.
2176
+
2177
+ Pass the `from` value exactly as returned by the list redirects endpoint.
2178
+
2179
+ - **Method**: `DELETE`
2180
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/redirects`
2181
+
2182
+ #### hosting_listWebsitesV1
2183
+
2184
+ Retrieve a paginated list of websites (CloudLinux, Builder, and Horizons) accessible to the
2185
+ authenticated client.
2186
+
2187
+ This endpoint returns websites from your hosting accounts as well as
2188
+ websites from other client hosting accounts that have shared access
2189
+ with you.
2190
+
2191
+ Each website includes a `website_type` field describing the type of
2192
+ website detected on the underlying platform (`wordpress`, `builder`,
2193
+ `horizons`, `nodejs`, or `other`). Some fields, such as
2194
+ `vhost_type`, `username`, and `root_directory`, only apply to
2195
+ CloudLinux websites and are null for other platforms.
2196
+
2197
+ Use `website_types` to list only websites of a given detected type, e.g. only
2198
+ WordPress websites (`website_types=wordpress`) or only Node.js websites
2199
+ (`website_types=nodejs`). Combine with the other available query parameters to
2200
+ filter by username, order ID, enabled status, or domain name for more targeted
2201
+ results.
2202
+
2203
+ - **Method**: `GET`
2204
+ - **Path**: `/api/hosting/v1/websites`
2205
+
2206
+ #### hosting_createWebsiteV1
2207
+
2208
+ Create a new website for the authenticated client.
2209
+
2210
+ Provide the domain name and associated order ID to create a new website.
2211
+ The datacenter_code parameter is required when creating the first website
2212
+ on a new hosting plan - this will set up and configure new hosting account
2213
+ in the selected datacenter.
2214
+
2215
+ Subsequent websites will be hosted on the same datacenter automatically.
2216
+
2217
+ Website creation takes up to a few minutes to complete. Check the
2218
+ websites list endpoint to see when your new website becomes available.
2219
+
2220
+ - **Method**: `POST`
2221
+ - **Path**: `/api/hosting/v1/websites`
2222
+
2223
+ #### hosting_deployStaticSiteArchiveV1
2224
+
2225
+ Deploy a static application from an archive file.
2226
+
2227
+ WARNING: this overwrites the website's existing contents and cannot be undone —
2228
+ verify this is intended before calling this endpoint.
2229
+
2230
+ This endpoint allows you to deploy a static application from an archive
2231
+ file that has been uploaded to the website's directory.
2232
+
2233
+ This only works for static sites (pre-built HTML/CSS/JS with no build step). For
2234
+ Node.js applications, use `Create NodeJS build from archive` instead, or
2235
+ `Start Node.js build` if the archive is already uploaded. For WordPress sites,
2236
+ use `Import WordPress website`.
2237
+
2238
+ - **Method**: `POST`
2239
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/deploy`
2240
+
2241
+ #### hosting_deleteWebsiteV1
2242
+
2243
+ This endpoint permanently removes a website and all of its data. This action
2244
+ cannot be undone. Before calling it, make sure the user understands the
2245
+ consequences and explicitly confirms that they want to proceed.
2246
+
2247
+ All website files, databases and related configuration will be removed.
2248
+ The hosting plan itself is kept, so a new website can be created on it afterwards.
2249
+
2250
+ Supported websites: main and addon domain websites on web hosting plans, and
2251
+ Website Builder websites. Parked domains and subdomains cannot be deleted with
2252
+ this endpoint. The domain must be the exact website domain, not a preview
2253
+ domain or an alias.
2254
+
2255
+ Returns 404 when the domain does not exist or does not belong to the
2256
+ authenticated client.
2257
+
2258
+ Website removal is processed asynchronously and can take a few minutes to
2259
+ complete. The response returns before the removal finishes.
2260
+
2261
+ - **Method**: `DELETE`
2262
+ - **Path**: `/api/hosting/v1/websites/{domain}`
2263
+
2264
+ ### `hostinger-mail-mcp`
2265
+
2266
+ #### mail_createAliasV1
2267
+
2268
+ Create an alias for the given mailbox. The alias address is formed
2269
+ from the given local part and the domain of the mailbox. Messages
2270
+ sent to the alias are delivered to the mailbox.
2271
+
2272
+ - **Method**: `POST`
2273
+ - **Path**: `/api/mail/v1/mailboxes/{mailboxId}/aliases`
2274
+
2275
+ #### mail_deleteAliasV1
2276
+
2277
+ Delete an alias. Messages sent to the alias address are no longer
2278
+ delivered to the mailbox.
2279
+
2280
+ - **Method**: `DELETE`
2281
+ - **Path**: `/api/mail/v1/aliases/{aliasId}`
2282
+
2283
+ #### mail_listAliasesV1
2284
+
2285
+ Retrieve a paginated list of aliases across all mailboxes of a mail
2286
+ order.
2287
+
2288
+ - **Method**: `GET`
2289
+ - **Path**: `/api/mail/v1/orders/{orderId}/aliases`
2290
+
2291
+ #### mail_createAPITokenV1
2292
+
2293
+ Create an API token for the given mail order. The token grants access
2294
+ to the [Hostinger Email API](https://api.mail.hostinger.com/), where
2295
+ you can provision and manage the mailboxes it is scoped to.
2296
+
2297
+ The plaintext token is returned only in this response, never again.
2298
+ A maximum of 10 tokens can exist per order. Use
2299
+ `scope.has_all_mailboxes` to cover all current and future mailboxes,
2300
+ or list specific mailboxes in `scope.mailbox_ids`.
2301
+
2302
+ - **Method**: `POST`
2303
+ - **Path**: `/api/mail/v1/orders/{orderId}/api-tokens`
2304
+
2305
+ #### mail_revokeAPITokenV1
2306
+
2307
+ Revoke an API token. The token immediately loses access to the
2308
+ [Hostinger Email API](https://api.mail.hostinger.com/). This action
2309
+ cannot be undone.
2310
+
2311
+ - **Method**: `DELETE`
2312
+ - **Path**: `/api/mail/v1/api-tokens/{tokenId}`
2313
+
2314
+ #### mail_listAPITokensV1
2315
+
2316
+ Retrieve a paginated list of
2317
+ [Hostinger Email API](https://api.mail.hostinger.com/) tokens across
2318
+ all your mail orders, optionally filtered by order. Plaintext tokens
2319
+ are never included; they are returned only when a token is created.
2320
+
2321
+ - **Method**: `GET`
2322
+ - **Path**: `/api/mail/v1/api-tokens`
2323
+
2324
+ #### mail_createAutoreplyV1
2325
+
2326
+ Create an automatic reply for the given mailbox. A mailbox can have
2327
+ only one autoreply. Omit `starts_at` to activate the autoreply
2328
+ immediately and omit `ends_at` to keep it active indefinitely.
2329
+
2330
+ - **Method**: `POST`
2331
+ - **Path**: `/api/mail/v1/mailboxes/{mailboxId}/autoreplies`
2332
+
2333
+ #### mail_updateAutoreplyV1
2334
+
2335
+ Replace the autoreply with the given content and schedule. Omitted
2336
+ optional fields are cleared: omit `starts_at` to activate the
2337
+ autoreply immediately and omit `ends_at` to keep it active
2338
+ indefinitely.
2339
+
2340
+ - **Method**: `PUT`
2341
+ - **Path**: `/api/mail/v1/autoreplies/{autoreplyId}`
2342
+
2343
+ #### mail_deleteAutoreplyV1
2344
+
2345
+ Delete the autoreply of a mailbox. The mailbox stops sending
2346
+ automatic replies immediately.
2347
+
2348
+ - **Method**: `DELETE`
2349
+ - **Path**: `/api/mail/v1/autoreplies/{autoreplyId}`
2350
+
2351
+ #### mail_listAutorepliesV1
2352
+
2353
+ Retrieve a paginated list of autoreplies across all mailboxes of a
2354
+ mail order.
2355
+
2356
+ - **Method**: `GET`
2357
+ - **Path**: `/api/mail/v1/orders/{orderId}/autoreplies`
2358
+
2359
+ #### mail_createCatchAllV1
2360
+
2361
+ Create a catch-all that routes all messages sent to unknown addresses
2362
+ of the domain to the given mailbox. The mailbox address receives a
2363
+ confirmation email and the catch-all becomes active only after it is
2364
+ confirmed. A domain can have only one catch-all.
2365
+
2366
+ - **Method**: `POST`
2367
+ - **Path**: `/api/mail/v1/mailboxes/{mailboxId}/catchalls`
2368
+
2369
+ #### mail_deleteCatchAllV1
2370
+
2371
+ Delete a catch-all. Messages sent to unknown addresses of the domain
2372
+ are no longer routed to the mailbox.
2373
+
2374
+ - **Method**: `DELETE`
2375
+ - **Path**: `/api/mail/v1/catchalls/{catchallId}`
2376
+
2377
+ #### mail_listCatchAllsV1
2378
+
2379
+ Retrieve a paginated list of catch-alls across all mailboxes of a
2380
+ mail order.
2381
+
2382
+ - **Method**: `GET`
2383
+ - **Path**: `/api/mail/v1/orders/{orderId}/catchalls`
2384
+
2385
+ #### mail_resendCatchAllConfirmationV1
2386
+
2387
+ Resend the confirmation email to the mailbox address of an
2388
+ unconfirmed catch-all.
2389
+
2390
+ - **Method**: `POST`
2391
+ - **Path**: `/api/mail/v1/catchalls/{catchallId}/confirmation/resend`
2392
+
2393
+ #### mail_createForwarderV1
2394
+
2395
+ Create a forwarder from the given mailbox to the destination address.
2396
+ The destination receives a confirmation email and forwarding becomes
2397
+ active only after it is confirmed.
2398
+
2399
+ - **Method**: `POST`
2400
+ - **Path**: `/api/mail/v1/mailboxes/{mailboxId}/forwarders`
2401
+
2402
+ #### mail_deleteForwarderV1
2403
+
2404
+ Delete a forwarder. The mailbox stops forwarding messages to the
2405
+ destination address immediately.
2406
+
2407
+ - **Method**: `DELETE`
2408
+ - **Path**: `/api/mail/v1/forwarders/{forwarderId}`
2409
+
2410
+ #### mail_listForwardersV1
2411
+
2412
+ Retrieve a paginated list of forwarders across all mailboxes of a
2413
+ mail order.
2414
+
2415
+ - **Method**: `GET`
2416
+ - **Path**: `/api/mail/v1/orders/{orderId}/forwarders`
2417
+
2418
+ #### mail_resendForwarderConfirmationV1
2419
+
2420
+ Resend the confirmation email to the destination address of an
2421
+ unconfirmed forwarder.
2422
+
2423
+ - **Method**: `POST`
2424
+ - **Path**: `/api/mail/v1/forwarders/{forwarderId}/confirmation/resend`
2425
+
2426
+ #### mail_updateForwarderKeepCopySettingV1
2427
+
2428
+ Enable or disable keeping a copy of forwarded messages in the
2429
+ mailbox.
2430
+
2431
+ - **Method**: `PATCH`
2432
+ - **Path**: `/api/mail/v1/forwarders/{forwarderId}/keep-copy`
2433
+
2434
+ #### mail_listAccessLogsV1
2435
+
2436
+ Retrieve paginated access logs for the domain attached to the given
2437
+ mail order. Supports filtering by account, date range, protocol,
2438
+ status, and deletion flag. Results are sorted by timestamp descending.
2439
+
2440
+ - **Method**: `GET`
2441
+ - **Path**: `/api/mail/v1/orders/{orderId}/logs/access`
2442
+
2443
+ #### mail_listActionLogsV1
2444
+
2445
+ Retrieve paginated account action logs (administrative and user
2446
+ actions) for the given mail order. Supports filtering by account,
2447
+ date range, and status. Results are sorted by timestamp descending.
2448
+
2449
+ - **Method**: `GET`
2450
+ - **Path**: `/api/mail/v1/orders/{orderId}/logs/action`
2451
+
2452
+ #### mail_listInboundLogsV1
2453
+
2454
+ Retrieve paginated inbound (received mail) delivery logs for the
2455
+ domain attached to the given mail order. Supports filtering by
2456
+ account, date range, status, sender, and recipient. Results are
2457
+ sorted by timestamp descending.
2458
+
2459
+ - **Method**: `GET`
2460
+ - **Path**: `/api/mail/v1/orders/{orderId}/logs/inbound`
2461
+
2462
+ #### mail_listMailboxActionLogsV1
2463
+
2464
+ Retrieve paginated mailbox action logs (message and mailbox events)
2465
+ for a mailbox in the given mail order. The mailbox email must belong
2466
+ to the order's domain. Supports date range and event type filters.
2467
+ Results are sorted by timestamp descending.
2468
+
2469
+ - **Method**: `GET`
2470
+ - **Path**: `/api/mail/v1/orders/{orderId}/logs/mailbox-actions`
2471
+
2472
+ #### mail_listOutboundLogsV1
2473
+
2474
+ Retrieve paginated outbound (sent mail) delivery logs for the domain
2475
+ attached to the given mail order. Supports filtering by account, date
2476
+ range, status, sender, and recipient. Results are sorted by timestamp
2477
+ descending.
2478
+
2479
+ - **Method**: `GET`
2480
+ - **Path**: `/api/mail/v1/orders/{orderId}/logs/outbound`
2481
+
2482
+ #### mail_listMailboxesV1
2483
+
2484
+ Retrieve a paginated list of mailboxes belonging to a mail order.
2485
+
2486
+ Use this endpoint to monitor mailboxes of your mail service, including
2487
+ their status, enabled protocols, attached resource counts, and
2488
+ periodically synced usage numbers (usage may lag behind live values).
2489
+
2490
+ - **Method**: `GET`
2491
+ - **Path**: `/api/mail/v1/orders/{orderId}/mailboxes`
2492
+
2493
+ #### mail_createMailboxV1
2494
+
2495
+ Create a mailbox under the given mail order. The full email address is
2496
+ composed from the given local part and the domain of the order.
2497
+
2498
+ - **Method**: `POST`
2499
+ - **Path**: `/api/mail/v1/orders/{orderId}/mailboxes`
2500
+
2501
+ #### mail_deleteMailboxV1
2502
+
2503
+ Delete a mailbox. The mailbox is soft-deleted and stays restorable
2504
+ for a limited period before it is permanently removed.
2505
+
2506
+ - **Method**: `DELETE`
2507
+ - **Path**: `/api/mail/v1/mailboxes/{mailboxId}`
2508
+
2509
+ #### mail_changeMailboxPasswordV1
2510
+
2511
+ Change the password of a mailbox.
2512
+
2513
+ - **Method**: `PATCH`
2514
+ - **Path**: `/api/mail/v1/mailboxes/{mailboxId}/password`
2515
+
2516
+ #### mail_listOrdersV1
2517
+
2518
+ Retrieve a paginated list of mail orders associated with your account.
2519
+
2520
+ Use this endpoint to monitor your mail services, including their status,
2521
+ plan, attached domain, and expiration details.
2522
+
2523
+ - **Method**: `GET`
2524
+ - **Path**: `/api/mail/v1/orders`
2525
+
2526
+ #### mail_getOrderPlanV1
2527
+
2528
+ Retrieve the plan the given mail order was purchased with, including
2529
+ domain-level and mailbox-level quotas, limits, and protocol
2530
+ availability.
2531
+
2532
+ - **Method**: `GET`
2533
+ - **Path**: `/api/mail/v1/orders/{orderId}/plan`
2534
+
2535
+ #### mail_createWebhookV1
2536
+
2537
+ Create a webhook for the given mailbox. The generated secret is
2538
+ returned only in this response and is sent as a bearer token with
2539
+ every delivery.
2540
+
2541
+ - **Method**: `POST`
2542
+ - **Path**: `/api/mail/v1/mailboxes/{mailboxId}/webhooks`
2543
+
2544
+ #### mail_listWebhookDeliveryLogsV1
2545
+
2546
+ Retrieve a paginated list of webhook delivery logs for the given mail
2547
+ order, including delivery outcome, duration, and retry counts.
2548
+ Supports filtering by mailbox.
2549
+
2550
+ - **Method**: `GET`
2551
+ - **Path**: `/api/mail/v1/orders/{orderId}/webhooks/delivery-logs`
2552
+
2553
+ #### mail_getWebhookV1
2554
+
2555
+ Retrieve the details of a single webhook. The webhook secret is never
2556
+ included; it is returned only when a webhook is created or its secret
2557
+ is regenerated.
2558
+
2559
+ - **Method**: `GET`
2560
+ - **Path**: `/api/mail/v1/webhooks/{webhookId}`
2561
+
2562
+ #### mail_deleteWebhookV1
2563
+
2564
+ Permanently delete a webhook. This action cannot be undone. After
2565
+ deletion the URL no longer receives event notifications.
2566
+
2567
+ - **Method**: `DELETE`
2568
+ - **Path**: `/api/mail/v1/webhooks/{webhookId}`
2569
+
2570
+ #### mail_updateWebhookV1
2571
+
2572
+ Partially update a webhook. Only the fields included in the request
2573
+ body are changed; omitted fields retain their current values. Pass
2574
+ `"description": null` to clear the description.
2575
+
2576
+ - **Method**: `PATCH`
2577
+ - **Path**: `/api/mail/v1/webhooks/{webhookId}`
2578
+
2579
+ #### mail_listWebhooksV1
2580
+
2581
+ Retrieve a paginated list of webhooks belonging to the given mail
2582
+ order. Supports filtering by mailbox and status. The webhook secret
2583
+ is never included; it is returned only when a webhook is created or
2584
+ its secret is regenerated.
2585
+
2586
+ - **Method**: `GET`
2587
+ - **Path**: `/api/mail/v1/orders/{orderId}/webhooks`
2588
+
2589
+ #### mail_regenerateWebhookSecretV1
2590
+
2591
+ Regenerate the secret of a webhook. The previous secret is
2592
+ immediately invalidated. The new secret is returned only in this
2593
+ response and is sent as a bearer token with every delivery.
2594
+
2595
+ - **Method**: `POST`
2596
+ - **Path**: `/api/mail/v1/webhooks/{webhookId}/regenerate-secret`
2597
+
2598
+ #### mail_testWebhookV1
2599
+
2600
+ Send a test delivery to the webhook URL and return the result. Test
2601
+ requests are rate limited upstream.
2602
+
2603
+ - **Method**: `POST`
2604
+ - **Path**: `/api/mail/v1/webhooks/{webhookId}/test`
2605
+
2606
+ ### `hostinger-reach-mcp`
2607
+
2608
+ #### reach_getAutomationDetailsV1
2609
+
2610
+ Get a single automation with the counts of contacts that entered it, are moving through it,
2611
+ finished it or failed on the way.
2612
+
2613
+ This describes the automation itself. To see the workflow it runs, use the steps endpoint.
2614
+
2615
+ - **Method**: `GET`
2616
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/automations/{automationUuid}`
2617
+
2618
+ #### reach_listAutomationsV1
2619
+
2620
+ Get a paginated list of the automations in a profile.
2621
+
2622
+ Every automation comes with the counts of contacts that entered it, are moving through it,
2623
+ finished it or failed on the way. Those counts describe the contact journey and are not
2624
+ email engagement metrics - for opens, clicks and unsubscribes use the campaign statistics
2625
+ endpoint instead.
2626
+
2627
+ - **Method**: `GET`
2628
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/automations`
2629
+
2630
+ #### reach_listAutomationStepsV1
2631
+
2632
+ Get the workflow of an automation as a flat list of steps.
2633
+
2634
+ The steps form a tree rather than a straight line: follow `parent_uuid` to reconstruct the
2635
+ branches, and use `step_order` to order the steps that share a parent. An automation with no
2636
+ steps yet returns an empty list.
2637
+
2638
+ - **Method**: `GET`
2639
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/automations/{automationUuid}/steps`
2640
+
2641
+ #### reach_getCampaignDetailsV1
2642
+
2643
+ Get a single campaign with its sender, subject, template reference, targeting and delivery
2644
+ progress.
2645
+
2646
+ This describes how the campaign was set up and how far it has got. For opens, clicks and
2647
+ unsubscribes use the campaign statistics endpoint.
2648
+
2649
+ - **Method**: `GET`
2650
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/campaigns/{campaignUuid}`
2651
+
2652
+ #### reach_listCampaignsV1
2653
+
2654
+ Get a paginated list of the campaigns in a profile.
2655
+
2656
+ Each campaign carries its headline engagement rates. Filter by status to find drafts,
2657
+ scheduled, sending or sent campaigns, keeping in mind that a fully sent campaign has the
2658
+ status `publish`. By default only regular campaigns are returned - pass `type` to get the
2659
+ emails sent by automations or the double opt-in confirmations instead.
2660
+
2661
+ - **Method**: `GET`
2662
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/campaigns`
2663
+
2664
+ #### reach_getCampaignPerformanceV1
2665
+
2666
+ Get the performance of a campaign: delivery, opens, clicks and unsubscribes, with the
2667
+ matching rates.
2668
+
2669
+ Every count is unique contacts rather than raw events, so a contact who opens the same email
2670
+ five times is counted once.
2671
+
2672
+ - **Method**: `GET`
2673
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/campaigns/{campaignUuid}/statistics`
2674
+
2675
+ #### reach_deleteAContactV1
2676
+
2677
+ Delete a contact with the specified UUID.
2678
+
2679
+ This endpoint permanently removes a contact from the email marketing system.
2680
+
2681
+ **Deprecated.** This endpoint cannot target a profile, so it always falls back to the
2682
+ client's default profile and cannot delete contacts of any other profile. Use
2683
+ `DELETE /api/reach/v1/profiles/{profileUuid}/contacts/{contactUuid}` instead.
2684
+
2685
+ - **Method**: `DELETE`
2686
+ - **Path**: `/api/reach/v1/contacts/{uuid}`
2687
+
2688
+ #### reach_deleteAContactFieldV1
2689
+
2690
+ Delete a custom contact field.
2691
+
2692
+ Every value contacts hold for the field is deleted with it, and for the choice types so
2693
+ are its options. The contacts themselves are not affected.
2694
+
2695
+ - **Method**: `DELETE`
2696
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/contacts/fields/{fieldUuid}`
2697
+
2698
+ #### reach_updateAContactFieldV1
2699
+
2700
+ Rename a custom contact field and, for the choice types, replace its option set.
2701
+
2702
+ Options carrying a uuid are kept and relabelled, options without one are created, and any
2703
+ existing option left out of the list is deleted along with the values contacts hold for
2704
+ it. The field type and slug cannot be changed.
2705
+
2706
+ - **Method**: `PATCH`
2707
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/contacts/fields/{fieldUuid}`
2708
+
2709
+ #### reach_listContactFieldsV1
2710
+
2711
+ Get the custom contact fields defined in a profile.
2712
+
2713
+ Custom fields let you store your own attributes on contacts. The returned uuids are what
2714
+ you pass to the contact update endpoint to set values, and choice fields also list the
2715
+ options available to pick from.
2716
+
2717
+ - **Method**: `GET`
2718
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/contacts/fields`
2719
+
2720
+ #### reach_createAContactFieldV1
2721
+
2722
+ Define a new custom contact field in a profile.
2723
+
2724
+ The `slug` is derived from the label and, like the field type, cannot be changed later.
2725
+ Use the returned uuid to set values on contacts.
2726
+
2727
+ - **Method**: `POST`
2728
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/contacts/fields`
2729
+
2730
+ #### reach_listContactGroupsV1
2731
+
2732
+ Get a list of all contact groups.
2733
+
2734
+ This endpoint returns a list of contact groups that can be used to organize contacts.
2735
+
2736
+ - **Method**: `GET`
2737
+ - **Path**: `/api/reach/v1/contacts/groups`
2738
+
2739
+ #### reach_listContactsV1
2740
+
2741
+ Get a list of contacts, optionally filtered by group and subscription status.
2742
+
2743
+ This endpoint returns a paginated list of contacts with their basic information.
2744
+ You can filter contacts by group UUID and subscription status.
2745
+
2746
+ **Deprecated.** This endpoint cannot target a profile, so it always falls back to the
2747
+ client's default profile and cannot list contacts of any other profile. Use
2748
+ `GET /api/reach/v1/profiles/{profileUuid}/contacts` instead, which also replaces the
2749
+ group filter with a tag filter.
2750
+
2751
+ - **Method**: `GET`
2752
+ - **Path**: `/api/reach/v1/contacts`
2753
+
2754
+ #### reach_createANewContactV1
2755
+
2756
+ Create a new contact in the email marketing system.
2757
+
2758
+ This endpoint allows you to create a new contact with basic information like name, email, and surname.
2759
+
2760
+ If double opt-in is enabled,
2761
+ the contact will be created with a pending status and a confirmation email will be sent.
2762
+
2763
+ - **Method**: `POST`
2764
+ - **Path**: `/api/reach/v1/contacts`
2765
+
2766
+ #### reach_getContactDetailsV1
2767
+
2768
+ Get the full details of a single contact.
2769
+
2770
+ Alongside the contact's own attributes this returns the tags assigned to it and the
2771
+ values it holds for the profile's custom contact fields.
2772
+
2773
+ - **Method**: `GET`
2774
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/contacts/{contactUuid}`
2775
+
2776
+ #### reach_deleteAProfileContactV1
2777
+
2778
+ Permanently delete a contact from a profile.
2779
+
2780
+ The contact is removed together with its custom field values and tag assignments.
2781
+
2782
+ - **Method**: `DELETE`
2783
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/contacts/{contactUuid}`
2784
+
2785
+ #### reach_updateAContactV1
2786
+
2787
+ Update a contact's attributes and custom field values.
2788
+
2789
+ Only the properties present in the request body are changed, so a partial body is enough
2790
+ to change a single attribute. Sending a property as `null` clears it.
2791
+
2792
+ The response carries the contact's core attributes. Read back its tags, custom field
2793
+ values, source and note with `GET /api/reach/v1/profiles/{profileUuid}/contacts/{contactUuid}`.
2794
+
2795
+ - **Method**: `PATCH`
2796
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/contacts/{contactUuid}`
2797
+
2798
+ #### reach_createContactsInBulkV1
2799
+
2800
+ Create many contacts in a profile in a single call.
2801
+
2802
+ The contacts are imported in the background, so a success response means the import was
2803
+ accepted rather than finished. Contacts whose email already exists in the profile are
2804
+ left as they are. If double opt-in is enabled, new contacts start off pending and are
2805
+ sent a confirmation email.
2806
+
2807
+ - **Method**: `POST`
2808
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/contacts/bulk`
2809
+
2810
+ #### reach_listProfileContactsV1
2811
+
2812
+ Get a paginated list of contacts belonging to a profile.
2813
+
2814
+ Contacts can be filtered by subscription status, by tag, and by an email search term.
2815
+ The `meta.total` field of the response is the number of contacts matching the filters,
2816
+ so calling this endpoint without filters gives the profile's total contact count.
2817
+
2818
+ - **Method**: `GET`
2819
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/contacts`
2820
+
2821
+ #### reach_createNewContactsV1
2822
+
2823
+ Create a new contact in the email marketing system.
2824
+
2825
+ This endpoint allows you to create a new contact with basic information like name, email, and surname.
2826
+
2827
+ If double opt-in is enabled, the contact will be created with a pending status
2828
+ and a confirmation email will be sent.
2829
+
2830
+ - **Method**: `POST`
2831
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/contacts`
2832
+
2833
+ #### reach_listSegmentsV1
2834
+
2835
+ Get a list of all contact segments.
2836
+
2837
+ This endpoint returns a list of contact segments that can be used to organize contacts.
2838
+
2839
+ **Deprecated.** This endpoint cannot target a profile, so it always falls back to
2840
+ the client's default profile and cannot list the segments of any other profile. Use
2841
+ `GET /api/reach/v1/profiles/{profileUuid}/segmentation/segments` instead.
2842
+
2843
+ - **Method**: `GET`
2844
+ - **Path**: `/api/reach/v1/segmentation/segments`
2845
+
2846
+ #### reach_createANewContactSegmentV1
2847
+
2848
+ Create a new contact segment.
2849
+
2850
+ This endpoint allows creating a new contact segment that can be used to organize contacts.
2851
+ The segment can be configured with specific criteria like email, name, subscription status, etc.
2852
+
2853
+ **Deprecated.** This endpoint cannot target a profile, so it always falls back to
2854
+ the client's default profile and cannot create segments in any other profile. Use
2855
+ `POST /api/reach/v1/profiles/{profileUuid}/segmentation/segments` instead.
2856
+
2857
+ - **Method**: `POST`
2858
+ - **Path**: `/api/reach/v1/segmentation/segments`
2859
+
2860
+ #### reach_countProfileSegmentContactsV1
2861
+
2862
+ Count the contacts currently matching a segment without listing them.
2863
+
2864
+ Cheaper than paging through the segment contacts endpoint when only the size is needed.
2865
+
2866
+ - **Method**: `GET`
2867
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/segmentation/segments/{segmentUuid}/count`
2868
+
2869
+ #### reach_listProfileSegmentContactsV1
2870
+
2871
+ Retrieve contacts associated with a specific segment for a given profile.
2872
+
2873
+ This endpoint allows you to fetch and filter contacts that belong to a particular segment,
2874
+ identified by its UUID, scoped to a specific profile.
2875
+
2876
+ - **Method**: `GET`
2877
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/segmentation/segments/{segmentUuid}/contacts`
2878
+
2879
+ #### reach_getProfileSegmentDetailsV1
2880
+
2881
+ Get a single segment of a profile, including the conditions that define it.
2882
+
2883
+ To retrieve the contacts currently matching those conditions, use the segment contacts
2884
+ endpoint instead.
2885
+
2886
+ - **Method**: `GET`
2887
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/segmentation/segments/{segmentUuid}`
2888
+
2889
+ #### reach_updateAProfileSegmentV1
2890
+
2891
+ Rename a segment and/or replace the conditions that define it.
2892
+
2893
+ `name` is always required. Omit `conditions` to rename without touching the conditions;
2894
+ supply them and they replace the existing set entirely rather than being merged into it.
2895
+ Contacts are never modified, but which of them match the segment can change immediately.
2896
+
2897
+ - **Method**: `PUT`
2898
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/segmentation/segments/{segmentUuid}`
2899
+
2900
+ #### reach_deleteAProfileSegmentV1
2901
+
2902
+ Delete a segment.
2903
+
2904
+ Only the segment definition is removed. The contacts that matched it are left untouched.
2905
+
2906
+ - **Method**: `DELETE`
2907
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/segmentation/segments/{segmentUuid}`
2908
+
2909
+ #### reach_listSegmentFilterAttributesV1
2910
+
2911
+ List every attribute a segment condition can filter on, with the operators each attribute
2912
+ accepts, the value format they expect and, where the value is constrained, the allowed
2913
+ values.
2914
+
2915
+ The list is profile specific: it includes the profile's custom contact fields, its tags and
2916
+ its 20 most recently published campaigns, so the valid attributes cannot be hardcoded. Read
2917
+ it before creating or updating a segment to discover the valid `attribute`, `operator` and
2918
+ `value` combinations.
2919
+
2920
+ - **Method**: `GET`
2921
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/segmentation/filters/attributes`
2922
+
2923
+ #### reach_previewContactsMatchingConditionsV1
2924
+
2925
+ Preview the contacts matching a set of conditions without saving a segment.
2926
+
2927
+ The body is the same set of conditions accepted when creating or updating a segment, so this
2928
+ is how to check who a filter reaches, and how many, before persisting it. Nothing is stored
2929
+ and no contact is modified.
2930
+
2931
+ Call the segment filter attributes endpoint first to discover the valid `attribute`,
2932
+ `operator` and `value` combinations.
2933
+
2934
+ - **Method**: `POST`
2935
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/segmentation/filters/contacts`
2936
+
2937
+ #### reach_listProfileSegmentsV1
2938
+
2939
+ Get a paginated list of the segments defined in a profile.
2940
+
2941
+ Each entry carries the number of contacts currently matching it, which is recalculated on
2942
+ read rather than stored. Use `count_type` to count either every matching contact or only
2943
+ the subscribed ones.
2944
+
2945
+ - **Method**: `GET`
2946
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/segmentation/segments`
2947
+
2948
+ #### reach_createAProfileSegmentV1
2949
+
2950
+ Create a segment in a profile.
2951
+
2952
+ A segment is a saved set of conditions rather than a fixed list, so its membership changes
2953
+ as contacts change. Creating one does not modify any contact.
2954
+
2955
+ - **Method**: `POST`
2956
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/segmentation/segments`
2957
+
2958
+ #### reach_listSegmentContactsV1
2959
+
2960
+ Retrieve contacts associated with a specific segment.
2961
+
2962
+ This endpoint allows you to fetch and filter contacts that belong to a particular segment,
2963
+ identified by its UUID.
2964
+
2965
+ **Deprecated.** This endpoint cannot target a profile, so it always falls back to
2966
+ the client's default profile and cannot read segments of any other profile. Use
2967
+ `GET /api/reach/v1/profiles/{profileUuid}/segmentation/segments/{segmentUuid}/contacts` instead.
2968
+
2969
+ - **Method**: `GET`
2970
+ - **Path**: `/api/reach/v1/segmentation/segments/{segmentUuid}/contacts`
2971
+
2972
+ #### reach_getSegmentDetailsV1
2973
+
2974
+ Get details of a specific segment.
2975
+
2976
+ This endpoint retrieves information about a single segment identified by UUID.
2977
+ Segments are used to organize and group contacts based on specific criteria.
2978
+
2979
+ **Deprecated.** This endpoint cannot target a profile, so it always falls back to
2980
+ the client's default profile and cannot read segments of any other profile. Use
2981
+ `GET /api/reach/v1/profiles/{profileUuid}/segmentation/segments/{segmentUuid}` instead.
2982
+
2983
+ - **Method**: `GET`
2984
+ - **Path**: `/api/reach/v1/segmentation/segments/{segmentUuid}`
2985
+
2986
+ #### reach_assignAContactToATagV1
2987
+
2988
+ Assign a tag to a single contact.
2989
+
2990
+ Unlike the bulk endpoint this is applied immediately rather than queued. Assigning a tag
2991
+ the contact already carries succeeds without duplicating it.
2992
+
2993
+ - **Method**: `POST`
2994
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/tags/{tagUuid}/contacts/{contactUuid}`
2995
+
2996
+ #### reach_removeAContactFromATagV1
2997
+
2998
+ Remove a tag from a single contact.
2999
+
3000
+ Unlike the bulk endpoint this is applied immediately rather than queued. Neither the tag
3001
+ nor the contact is deleted.
3002
+
3003
+ - **Method**: `DELETE`
3004
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/tags/{tagUuid}/contacts/{contactUuid}`
3005
+
3006
+ #### reach_assignContactsToATagV1
3007
+
3008
+ Assign a tag to many contacts at once.
3009
+
3010
+ Pass `contact_uuids` to target specific contacts, or `all_contacts` to target every contact
3011
+ in the profile. The work is queued, so a success response means it was accepted rather than
3012
+ finished. Contacts that already carry the tag are left alone.
3013
+
3014
+ - **Method**: `POST`
3015
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/tags/{tagUuid}/contacts`
3016
+
3017
+ #### reach_removeContactsFromATagV1
3018
+
3019
+ Remove a tag from many contacts at once.
3020
+
3021
+ Pass `contact_uuids` to target specific contacts, or `all_contacts` to target every contact
3022
+ in the profile. The work is queued, so a success response means it was accepted rather than
3023
+ finished. The tag itself and the contacts are not deleted.
3024
+
3025
+ - **Method**: `DELETE`
3026
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/tags/{tagUuid}/contacts`
3027
+
3028
+ #### reach_deleteATagV1
3029
+
3030
+ Delete a tag and remove it from every contact carrying it.
3031
+
3032
+ The contacts themselves are not deleted. This is idempotent: deleting a tag that does not
3033
+ exist in the profile still succeeds.
3034
+
3035
+ - **Method**: `DELETE`
3036
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/tags/{tagUuid}`
3037
+
3038
+ #### reach_renameATagV1
3039
+
3040
+ Rename a tag.
3041
+
3042
+ The contacts assigned to the tag are unaffected. Names are unique within a profile, so
3043
+ renaming a tag to a name that is already taken is rejected.
3044
+
3045
+ - **Method**: `PATCH`
3046
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/tags/{tagUuid}`
3047
+
3048
+ #### reach_listProfileTagsV1
3049
+
3050
+ Get all tags defined in a profile.
3051
+
3052
+ Tags are the way contacts are grouped in Reach, and can be used to filter the contact
3053
+ list or to build segments.
3054
+
3055
+ - **Method**: `GET`
3056
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/tags`
3057
+
3058
+ #### reach_createOrFindTagsV1
3059
+
3060
+ Create tags in a profile.
3061
+
3062
+ Names that already exist in the profile are not duplicated: the existing tag is returned
3063
+ instead, so the call is safe to repeat. Every tag in the request is returned, whether it
3064
+ was created now or already existed.
3065
+
3066
+ - **Method**: `POST`
3067
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/tags`
3068
+
3069
+ #### reach_getFormDetailsV1
3070
+
3071
+ Get a single form with the URL of its hosted template and the tags it applies to the contacts
3072
+ it captures.
3073
+
3074
+ There is no ready-made embed snippet in the response - either serve the template HTML yourself
3075
+ or build your own embed around the form uuid.
3076
+
3077
+ - **Method**: `GET`
3078
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/forms/{formUuid}`
3079
+
3080
+ #### reach_deleteFormV1
3081
+
3082
+ Permanently delete a form together with its template.
3083
+
3084
+ A form that has already captured submissions cannot be deleted, so that the contacts it collected
3085
+ are never silently discarded - pause the form instead to stop it collecting new ones. Views alone
3086
+ do not block deletion.
3087
+
3088
+ - **Method**: `DELETE`
3089
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/forms/{formUuid}`
3090
+
3091
+ #### reach_listFormsV1
3092
+
3093
+ Get a paginated list of the signup forms in a profile.
3094
+
3095
+ Each form carries a reference to the template that renders it. Get the form details for a
3096
+ directly usable template URL and for the tags the form puts on the contacts it captures.
3097
+
3098
+ - **Method**: `GET`
3099
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/forms`
3100
+
3101
+ #### reach_getProfileDomainDNSStatusV1
3102
+
3103
+ Retrieve the DNS configuration status for a profile's domain.
3104
+
3105
+ This endpoint reports the state of MX, SPF, DKIM and DMARC records, including the
3106
+ actual records found and the suggested records required for correct email delivery.
3107
+
3108
+ - **Method**: `GET`
3109
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/domains/dns-status`
3110
+
3111
+ #### reach_getConnectedSendingDomainV1
3112
+
3113
+ Get the sending domain connected to the profile, its verification status and any suspended
3114
+ sender addresses.
3115
+
3116
+ Campaigns only go out once a domain is connected and active, so this is the cheapest way to
3117
+ check that precondition before building one. A profile with no domain connected returns the
3118
+ same shape with every field set to `null`. For the individual MX, SPF, DKIM and DMARC records
3119
+ behind the status, use the DNS status endpoint.
3120
+
3121
+ - **Method**: `GET`
3122
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/domains`
3123
+
3124
+ #### reach_listPlanFeatureAccessV1
3125
+
3126
+ List which plan features the profile can use.
3127
+
3128
+ This is the feature lock matrix, not a usage quota. `available` means the feature can be
3129
+ used right now and `locked` means it is not part of the base plan, so an upgrade is needed.
3130
+ For remaining emails, recipients and AI credits use the limits endpoint instead.
3131
+
3132
+ Worth checking before building something that cannot be activated afterwards, such as an
3133
+ automation on a plan without automation activation.
3134
+
3135
+ - **Method**: `GET`
3136
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/features`
3137
+
3138
+ #### reach_getRemainingPlanLimitsV1
3139
+
3140
+ Get how much of the plan is left for the current period.
3141
+
3142
+ Two things to keep in mind before you build alerting on this. The period is a calendar month
3143
+ rather than a billing anniversary, so the counters reset on the 1st no matter when the
3144
+ subscription started. And usage is tracked per order, so every profile on the same order shares
3145
+ one pool and reports the same numbers here. Only the current period is available, past usage is
3146
+ not kept.
3147
+
3148
+ - **Method**: `GET`
3149
+ - **Path**: `/api/reach/v1/profiles/{profileUuid}/limits`
3150
+
3151
+ #### reach_listProfilesV1
3152
+
3153
+ This endpoint returns all profiles available to the client, including their basic information.
3154
+
3155
+ - **Method**: `GET`
3156
+ - **Path**: `/api/reach/v1/profiles`
3157
+
3158
+ ### `hostinger-vps-mcp`
3159
+
3160
+ #### VPS_getDataCenterListV1
3161
+
3162
+ Retrieve all available data centers.
3163
+
3164
+ Use this endpoint to view location options before deploying VPS instances.
3165
+
3166
+ - **Method**: `GET`
3167
+ - **Path**: `/api/vps/v1/data-centers`
3168
+
3169
+ #### VPS_getProjectContainersV1
3170
+
3171
+ Retrieves a list of all containers belonging to a specific Docker Compose project on the virtual machine.
3172
+
3173
+ This endpoint returns detailed information about each container including
3174
+ their current status, port mappings, and runtime configuration.
3175
+
3176
+ Use this to monitor the health and state of all services within your Docker Compose project.
3177
+
3178
+ - **Method**: `GET`
3179
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/docker/{projectName}/containers`
3180
+
3181
+ #### VPS_getProjectContentsV1
3182
+
3183
+ Retrieves the complete project information including the docker-compose.yml
3184
+ file contents, project metadata, and current deployment status.
3185
+
3186
+ This endpoint provides the full configuration and state details of a specific Docker Compose project.
3187
+
3188
+ Use this to inspect project settings, review the compose file, or check the overall project health.
3189
+
3190
+ - **Method**: `GET`
3191
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/docker/{projectName}`
3192
+
3193
+ #### VPS_deleteProjectV1
3194
+
3195
+ Completely removes a Docker Compose project from the virtual machine, stopping all containers and cleaning up
3196
+ associated resources including networks, volumes, and images.
3197
+
3198
+ This operation is irreversible and will delete all project data.
3199
+
3200
+ Use this when you want to permanently remove a project and free up system resources.
3201
+
3202
+ - **Method**: `DELETE`
3203
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/docker/{projectName}/down`
3204
+
3205
+ #### VPS_getProjectListV1
3206
+
3207
+ Retrieves a list of all Docker Compose projects currently deployed on the virtual machine.
3208
+
3209
+ This endpoint returns basic information about each project including name,
3210
+ status, file path and list of containers with details about their names,
3211
+ image, status, health and ports. Container stats are omitted in this
3212
+ endpoint. If you need to get detailed information about container with
3213
+ stats included, use the `Get project containers` endpoint.
3214
+
3215
+ Use this to get an overview of all Docker projects on your VPS instance.
3216
+
3217
+ - **Method**: `GET`
3218
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/docker`
3219
+
3220
+ #### VPS_createNewProjectV1
3221
+
3222
+ Deploy new project from docker-compose.yaml contents or download contents from URL.
3223
+
3224
+ URL can be Github repository url in format https://github.com/[user]/[repo]
3225
+ and it will be automatically resolved to docker-compose.yaml file in
3226
+ master branch. Any other URL provided must return docker-compose.yaml
3227
+ file contents.
3228
+
3229
+ If project with the same name already exists, existing project will be replaced.
3230
+
3231
+ - **Method**: `POST`
3232
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/docker`
3233
+
3234
+ #### VPS_getProjectLogsV1
3235
+
3236
+ Retrieves aggregated log entries from all services within a Docker Compose project.
3237
+
3238
+ This endpoint returns recent log output from each container, organized by service name with timestamps.
3239
+ The response contains the last 300 log entries across all services.
3240
+
3241
+ Use this for debugging, monitoring application behavior, and
3242
+ troubleshooting issues across your entire project stack.
3243
+
3244
+ - **Method**: `GET`
3245
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/docker/{projectName}/logs`
3246
+
3247
+ #### VPS_restartProjectV1
3248
+
3249
+ Restarts all services in a Docker Compose project by stopping and starting
3250
+ containers in the correct dependency order.
3251
+
3252
+ This operation preserves data volumes and network configurations while refreshing the running containers.
3253
+
3254
+ Use this to apply configuration changes or recover from service failures.
3255
+
3256
+ - **Method**: `POST`
3257
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/docker/{projectName}/restart`
3258
+
3259
+ #### VPS_startProjectV1
3260
+
3261
+ Starts all services in a Docker Compose project that are currently stopped.
3262
+
3263
+ This operation brings up containers in the correct dependency order as defined in the compose file.
3264
+
3265
+ Use this to resume a project that was previously stopped or to start services after a system reboot.
3266
+
3267
+ - **Method**: `POST`
3268
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/docker/{projectName}/start`
3269
+
3270
+ #### VPS_stopProjectV1
3271
+
3272
+ Stops all running services in a Docker Compose project while preserving
3273
+ container configurations and data volumes.
3274
+
3275
+ This operation gracefully shuts down containers in reverse dependency order.
3276
+
3277
+ Use this to temporarily halt a project without removing data or configurations.
3278
+
3279
+ - **Method**: `POST`
3280
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/docker/{projectName}/stop`
3281
+
3282
+ #### VPS_updateProjectV1
3283
+
3284
+ Updates a Docker Compose project by pulling the latest image versions and
3285
+ recreating containers with new configurations.
3286
+
3287
+ This operation preserves data volumes while applying changes from the compose file.
3288
+
3289
+ Use this to deploy application updates, apply configuration changes, or
3290
+ refresh container images to their latest versions.
3291
+
3292
+ - **Method**: `POST`
3293
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/docker/{projectName}/update`
3294
+
3295
+ #### VPS_activateFirewallV1
3296
+
3297
+ Activate a firewall for a specified virtual machine.
3298
+
3299
+ Only one firewall can be active for a virtual machine at a time.
3300
+
3301
+ Use this endpoint to apply firewall rules to VPS instances.
3302
+
3303
+ - **Method**: `POST`
3304
+ - **Path**: `/api/vps/v1/firewall/{firewallId}/activate/{virtualMachineId}`
3305
+
3306
+ #### VPS_deactivateFirewallV1
3307
+
3308
+ Deactivate a firewall for a specified virtual machine.
3309
+
3310
+ Use this endpoint to remove firewall protection from VPS instances.
3311
+
3312
+ - **Method**: `POST`
3313
+ - **Path**: `/api/vps/v1/firewall/{firewallId}/deactivate/{virtualMachineId}`
3314
+
3315
+ #### VPS_getFirewallDetailsV1
3316
+
3317
+ Retrieve firewall by its ID and rules associated with it.
3318
+
3319
+ Use this endpoint to view specific firewall configuration and rules.
3320
+
3321
+ - **Method**: `GET`
3322
+ - **Path**: `/api/vps/v1/firewall/{firewallId}`
3323
+
3324
+ #### VPS_deleteFirewallV1
3325
+
3326
+ Delete a specified firewall.
3327
+
3328
+ Any virtual machine that has this firewall activated will automatically have it deactivated.
3329
+
3330
+ Use this endpoint to remove unused firewall configurations.
3331
+
3332
+ - **Method**: `DELETE`
3333
+ - **Path**: `/api/vps/v1/firewall/{firewallId}`
3334
+
3335
+ #### VPS_getFirewallListV1
3336
+
3337
+ Retrieve all available firewalls.
3338
+
3339
+ Use this endpoint to view existing firewall configurations.
3340
+
3341
+ - **Method**: `GET`
3342
+ - **Path**: `/api/vps/v1/firewall`
3343
+
3344
+ #### VPS_createNewFirewallV1
3345
+
3346
+ Create a new firewall.
3347
+
3348
+ Use this endpoint to set up new firewall configurations for VPS security.
3349
+
3350
+ - **Method**: `POST`
3351
+ - **Path**: `/api/vps/v1/firewall`
3352
+
3353
+ #### VPS_updateFirewallRuleV1
3354
+
3355
+ Update a specific firewall rule from a specified firewall.
3356
+
3357
+ Any virtual machine that has this firewall activated will lose sync with the firewall
3358
+ and will have to be synced again manually.
3359
+
3360
+ Use this endpoint to modify existing firewall rules.
3361
+
3362
+ - **Method**: `PUT`
3363
+ - **Path**: `/api/vps/v1/firewall/{firewallId}/rules/{ruleId}`
3364
+
3365
+ #### VPS_deleteFirewallRuleV1
3366
+
3367
+ Delete a specific firewall rule from a specified firewall.
3368
+
3369
+ Any virtual machine that has this firewall activated will lose sync with the firewall
3370
+ and will have to be synced again manually.
3371
+
3372
+ Use this endpoint to remove specific firewall rules.
3373
+
3374
+ - **Method**: `DELETE`
3375
+ - **Path**: `/api/vps/v1/firewall/{firewallId}/rules/{ruleId}`
3376
+
3377
+ #### VPS_replaceAllFirewallRulesInGroupV1
3378
+
3379
+ Replaces all firewall rules within a specified firewall group with the provided set of rules
3380
+ in a single atomic operation, instead of creating or deleting rules one by one.
3381
+
3382
+ Any virtual machine using this firewall group will need to be synchronized after replacing rules;
3383
+ pass the "sync" parameter to trigger synchronization immediately.
3384
+
3385
+ - **Method**: `PUT`
3386
+ - **Path**: `/api/vps/v1/firewall/{firewallId}/rules`
3387
+
3388
+ #### VPS_createFirewallRuleV1
3389
+
3390
+ Create new firewall rule for a specified firewall.
3391
+
3392
+ By default, the firewall drops all incoming traffic,
3393
+ which means you must add accept rules for all ports you want to use.
3394
+
3395
+ Any virtual machine that has this firewall activated will lose sync with the firewall
3396
+ and will have to be synced again manually.
3397
+
3398
+ Use this endpoint to add new security rules to firewalls.
3399
+
3400
+ - **Method**: `POST`
3401
+ - **Path**: `/api/vps/v1/firewall/{firewallId}/rules`
3402
+
3403
+ #### VPS_syncFirewallV1
3404
+
3405
+ Sync a firewall for a specified virtual machine.
3406
+
3407
+ Firewall can lose sync with virtual machine if the firewall has new rules added, removed or updated.
3408
+
3409
+ Use this endpoint to apply updated firewall rules to VPS instances.
3410
+
3411
+ - **Method**: `POST`
3412
+ - **Path**: `/api/vps/v1/firewall/{firewallId}/sync/{virtualMachineId}`
3413
+
3414
+ #### VPS_getPostInstallScriptV1
3415
+
3416
+ Retrieve post-install script by its ID.
3417
+
3418
+ Use this endpoint to view specific automation script details.
3419
+
3420
+ - **Method**: `GET`
3421
+ - **Path**: `/api/vps/v1/post-install-scripts/{postInstallScriptId}`
3422
+
3423
+ #### VPS_updatePostInstallScriptV1
3424
+
3425
+ Update a specific post-install script.
3426
+
3427
+ Use this endpoint to modify existing automation scripts.
3428
+
3429
+ - **Method**: `PUT`
3430
+ - **Path**: `/api/vps/v1/post-install-scripts/{postInstallScriptId}`
3431
+
3432
+ #### VPS_deletePostInstallScriptV1
3433
+
3434
+ Delete a post-install script from your account.
3435
+
3436
+ Use this endpoint to remove unused automation scripts.
3437
+
3438
+ - **Method**: `DELETE`
3439
+ - **Path**: `/api/vps/v1/post-install-scripts/{postInstallScriptId}`
3440
+
3441
+ #### VPS_getPostInstallScriptsV1
3442
+
3443
+ Retrieve post-install scripts associated with your account.
3444
+
3445
+ Use this endpoint to view available automation scripts for VPS deployment.
3446
+
3447
+ - **Method**: `GET`
3448
+ - **Path**: `/api/vps/v1/post-install-scripts`
3449
+
3450
+ #### VPS_createPostInstallScriptV1
3451
+
3452
+ Add a new post-install script to your account, which can then be used after virtual machine installation.
3453
+
3454
+ The script contents will be saved to the file `/post_install` with executable attribute set
3455
+ and will be executed once virtual machine is installed.
3456
+ The output of the script will be redirected to `/post_install.log`. Maximum script size is 48KB.
3457
+
3458
+ Use this endpoint to create automation scripts for VPS setup tasks.
3459
+
3460
+ - **Method**: `POST`
3461
+ - **Path**: `/api/vps/v1/post-install-scripts`
3462
+
3463
+ #### VPS_attachPublicKeyV1
3464
+
3465
+ Attach existing public keys from your account to a specified virtual machine.
3466
+
3467
+ Multiple keys can be attached to a single virtual machine.
3468
+
3469
+ Use this endpoint to enable SSH key authentication for VPS instances.
3470
+
3471
+ - **Method**: `POST`
3472
+ - **Path**: `/api/vps/v1/public-keys/attach/{virtualMachineId}`
3473
+
3474
+ #### VPS_deletePublicKeyV1
3475
+
3476
+ Delete a public key from your account.
3477
+
3478
+ **Deleting public key from account does not remove it from virtual machine**
3479
+
3480
+ Use this endpoint to remove unused SSH keys from account.
3481
+
3482
+ - **Method**: `DELETE`
3483
+ - **Path**: `/api/vps/v1/public-keys/{publicKeyId}`
3484
+
3485
+ #### VPS_getPublicKeysV1
3486
+
3487
+ Retrieve public keys associated with your account.
3488
+
3489
+ Use this endpoint to view available SSH keys for VPS authentication.
3490
+
3491
+ - **Method**: `GET`
3492
+ - **Path**: `/api/vps/v1/public-keys`
3493
+
3494
+ #### VPS_createPublicKeyV1
3495
+
3496
+ Add a new public key to your account.
3497
+
3498
+ Use this endpoint to register SSH keys for VPS authentication.
3499
+
3500
+ - **Method**: `POST`
3501
+ - **Path**: `/api/vps/v1/public-keys`
3502
+
3503
+ #### VPS_getTemplateDetailsV1
3504
+
3505
+ Retrieve detailed information about a specific OS template for virtual machines.
3506
+
3507
+ Use this endpoint to view specific template specifications before deployment.
3508
+
3509
+ - **Method**: `GET`
3510
+ - **Path**: `/api/vps/v1/templates/{templateId}`
3511
+
3512
+ #### VPS_getTemplatesV1
3513
+
3514
+ Retrieve available OS templates for virtual machines.
3515
+
3516
+ Use this endpoint to view operating system options before creating or recreating VPS instances.
3517
+
3518
+ - **Method**: `GET`
3519
+ - **Path**: `/api/vps/v1/templates`
3520
+
3521
+ #### VPS_getActionDetailsV1
3522
+
3523
+ Retrieve detailed information about a specific action performed on a specified virtual machine.
3524
+
3525
+ Use this endpoint to monitor specific VPS operation status and details.
3526
+
3527
+ - **Method**: `GET`
3528
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/actions/{actionId}`
3529
+
3530
+ #### VPS_getActionsV1
3531
+
3532
+ Retrieve actions performed on a specified virtual machine.
3533
+
3534
+ Actions are operations or events that have been executed on the virtual
3535
+ machine, such as starting, stopping, or modifying the machine. This endpoint
3536
+ allows you to view the history of these actions, providing details about
3537
+ each action, such as the action name, timestamp, and status.
3538
+
3539
+ Use this endpoint to view VPS operation history and troubleshoot issues.
3540
+
3541
+ - **Method**: `GET`
3542
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/actions`
3543
+
3544
+ #### VPS_getAttachedPublicKeysV1
3545
+
3546
+ Retrieve public keys attached to a specified virtual machine.
3547
+
3548
+ Use this endpoint to view SSH keys configured for specific VPS instances.
3549
+
3550
+ - **Method**: `GET`
3551
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/public-keys`
3552
+
3553
+ #### VPS_getBackupsV1
3554
+
3555
+ Retrieve backups for a specified virtual machine.
3556
+
3557
+ Use this endpoint to view available backup points for VPS data recovery.
3558
+
3559
+ - **Method**: `GET`
3560
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/backups`
3561
+
3562
+ #### VPS_restoreBackupV1
3563
+
3564
+ Restore a backup for a specified virtual machine.
3565
+
3566
+ The system will then initiate the restore process, which may take some time depending on the size of the backup.
3567
+
3568
+ **All data on the virtual machine will be overwritten with the data from the backup.**
3569
+
3570
+ Use this endpoint to recover VPS data from backup points.
3571
+
3572
+ - **Method**: `POST`
3573
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/backups/{backupId}/restore`
3574
+
3575
+ #### VPS_setHostnameV1
3576
+
3577
+ Set hostname for a specified virtual machine.
3578
+
3579
+ Changing hostname does not update PTR record automatically.
3580
+ If you want your virtual machine to be reachable by a hostname,
3581
+ you need to point your domain A/AAAA records to virtual machine IP as well.
3582
+
3583
+ Use this endpoint to configure custom hostnames for VPS instances.
3584
+
3585
+ - **Method**: `PUT`
3586
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/hostname`
3587
+
3588
+ #### VPS_resetHostnameV1
3589
+
3590
+ Reset hostname and PTR record of a specified virtual machine to default value.
3591
+
3592
+ Use this endpoint to restore default hostname configuration for VPS instances.
3593
+
3594
+ - **Method**: `DELETE`
3595
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/hostname`
3596
+
3597
+ #### VPS_getVirtualMachineDetailsV1
3598
+
3599
+ Retrieve detailed information about a specified virtual machine.
3600
+
3601
+ Use this endpoint to view comprehensive VPS configuration and status.
3602
+
3603
+ - **Method**: `GET`
3604
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}`
3605
+
3606
+ #### VPS_getVirtualMachinesV1
3607
+
3608
+ Retrieve all available virtual machines.
3609
+
3610
+ Use this endpoint to view available VPS instances.
3611
+
3612
+ - **Method**: `GET`
3613
+ - **Path**: `/api/vps/v1/virtual-machines`
3614
+
3615
+ #### VPS_purchaseNewVirtualMachineV1
3616
+
3617
+ Purchase and setup a new virtual machine.
3618
+
3619
+ If virtual machine setup fails for any reason, login to
3620
+ [hPanel](https://hpanel.hostinger.com/) and complete the setup manually.
3621
+
3622
+ If no payment method is provided, your default payment method will be used automatically.
3623
+
3624
+ Use this endpoint to create new VPS instances.
3625
+
3626
+ - **Method**: `POST`
3627
+ - **Path**: `/api/vps/v1/virtual-machines`
3628
+
3629
+ #### VPS_getScanMetricsV1
3630
+
3631
+ Retrieve scan metrics for the [Monarx](https://www.monarx.com/) malware scanner
3632
+ installed on a specified virtual machine.
3633
+
3634
+ The scan metrics provide detailed information about malware scans performed
3635
+ by Monarx, including number of scans, detected threats, and other relevant
3636
+ statistics. This information is useful for monitoring security status of the
3637
+ virtual machine and assessing effectiveness of the malware scanner.
3638
+
3639
+ Use this endpoint to monitor VPS security scan results and threat detection.
3640
+
3641
+ - **Method**: `GET`
3642
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/monarx`
3643
+
3644
+ #### VPS_installMonarxV1
3645
+
3646
+ Install the Monarx malware scanner on a specified virtual machine.
3647
+
3648
+ [Monarx](https://www.monarx.com/) is a security tool designed to detect and
3649
+ prevent malware infections on virtual machines. By installing Monarx, users
3650
+ can enhance the security of their virtual machines, ensuring that they are
3651
+ protected against malicious software.
3652
+
3653
+ Use this endpoint to enable malware protection on VPS instances.
3654
+
3655
+ - **Method**: `POST`
3656
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/monarx`
3657
+
3658
+ #### VPS_uninstallMonarxV1
3659
+
3660
+ Uninstall the Monarx malware scanner on a specified virtual machine.
3661
+
3662
+ If Monarx is not installed, the request will still be processed without any effect.
3663
+
3664
+ Use this endpoint to remove malware scanner from VPS instances.
3665
+
3666
+ - **Method**: `DELETE`
3667
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/monarx`
3668
+
3669
+ #### VPS_getMetricsV1
3670
+
3671
+ Retrieve historical metrics for a specified virtual machine.
3672
+
3673
+ It includes the following metrics:
3674
+ - CPU usage
3675
+ - Memory usage
3676
+ - Disk usage
3677
+ - Network usage
3678
+ - Uptime
3679
+
3680
+ Use this endpoint to monitor VPS performance and resource utilization over time.
3681
+
3682
+ - **Method**: `GET`
3683
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/metrics`
3684
+
3685
+ #### VPS_setNameserversV1
3686
+
3687
+ Set nameservers for a specified virtual machine.
3688
+
3689
+ Be aware, that improper nameserver configuration can lead to the virtual
3690
+ machine being unable to resolve domain names.
3691
+
3692
+ Use this endpoint to configure custom DNS resolvers for VPS instances.
3693
+
3694
+ - **Method**: `PUT`
3695
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/nameservers`
3696
+
3697
+ #### VPS_createPTRRecordV1
3698
+
3699
+ Create or update a PTR (Pointer) record for a specified virtual machine.
3700
+
3701
+ Use this endpoint to configure reverse DNS lookup for VPS IP addresses.
3702
+
3703
+ - **Method**: `POST`
3704
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/ptr/{ipAddressId}`
3705
+
3706
+ #### VPS_deletePTRRecordV1
3707
+
3708
+ Delete a PTR (Pointer) record for a specified virtual machine.
3709
+
3710
+ Once deleted, reverse DNS lookups to the virtual machine's IP address will
3711
+ no longer return the previously configured hostname.
3712
+
3713
+ Use this endpoint to remove reverse DNS configuration from VPS instances.
3714
+
3715
+ - **Method**: `DELETE`
3716
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/ptr/{ipAddressId}`
3717
+
3718
+ #### VPS_setPanelPasswordV1
3719
+
3720
+ Set panel password for a specified virtual machine.
3721
+
3722
+ If virtual machine does not use panel OS, the request will still be processed without any effect.
3723
+ Requirements for password are same as in the [recreate virtual machine
3724
+ endpoint](/#tag/vps-virtual-machine/POST/api/vps/v1/virtual-machines/{virtualMachineId}/recreate).
3725
+
3726
+ Use this endpoint to configure control panel access credentials for VPS instances.
3727
+
3728
+ - **Method**: `PUT`
3729
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/panel-password`
3730
+
3731
+ #### VPS_startRecoveryModeV1
3732
+
3733
+ Initiate recovery mode for a specified virtual machine.
3734
+
3735
+ Recovery mode is a special state that allows users to perform system rescue operations,
3736
+ such as repairing file systems, recovering data, or troubleshooting issues that prevent the virtual machine
3737
+ from booting normally.
3738
+
3739
+ Virtual machine will boot recovery disk image and original disk image will be mounted in `/mnt` directory.
3740
+
3741
+ Use this endpoint to enable system rescue operations on VPS instances.
3742
+
3743
+ - **Method**: `POST`
3744
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/recovery`
3745
+
3746
+ #### VPS_stopRecoveryModeV1
3747
+
3748
+ Stop recovery mode for a specified virtual machine.
3749
+
3750
+ If virtual machine is not in recovery mode, this operation will fail.
3751
+
3752
+ Use this endpoint to exit system rescue mode and return VPS to normal operation.
3753
+
3754
+ - **Method**: `DELETE`
3755
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/recovery`
3756
+
3757
+ #### VPS_recreateVirtualMachineV1
3758
+
3759
+ Recreate a virtual machine from scratch.
3760
+
3761
+ The recreation process involves reinstalling the operating system and
3762
+ resetting the virtual machine to its initial state.
3763
+ Snapshots, if there are any, will be deleted.
3764
+
3765
+ ## Password Requirements
3766
+ Password will be checked against leaked password databases.
3767
+ Requirements for the password are:
3768
+ - At least 12 characters long
3769
+ - At least one uppercase letter
3770
+ - At least one lowercase letter
3771
+ - At least one number
3772
+ - Is not leaked publicly
3773
+
3774
+ **This operation is irreversible and will result in the loss of all data stored on the virtual machine!**
3775
+
3776
+ Use this endpoint to completely rebuild VPS instances with fresh OS installation.
3777
+
3778
+ - **Method**: `POST`
3779
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/recreate`
3780
+
3781
+ #### VPS_restartVirtualMachineV1
3782
+
3783
+ Restart a specified virtual machine by fully stopping and starting it.
3784
+
3785
+ If the virtual machine was stopped, it will be started.
3786
+
3787
+ Use this endpoint to reboot VPS instances.
3788
+
3789
+ - **Method**: `POST`
3790
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/restart`
3791
+
3792
+ #### VPS_setRootPasswordV1
3793
+
3794
+ Set root password for a specified virtual machine.
3795
+
3796
+ Requirements for password are same as in the [recreate virtual machine
3797
+ endpoint](/#tag/vps-virtual-machine/POST/api/vps/v1/virtual-machines/{virtualMachineId}/recreate).
3798
+
3799
+ Use this endpoint to update administrator credentials for VPS instances.
3800
+
3801
+ - **Method**: `PUT`
3802
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/root-password`
3803
+
3804
+ #### VPS_setupPurchasedVirtualMachineV1
3805
+
3806
+ Setup newly purchased virtual machine with `initial` state.
3807
+
3808
+ Use this endpoint to configure and initialize purchased VPS instances.
3809
+
3810
+ - **Method**: `POST`
3811
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/setup`
3812
+
3813
+ #### VPS_getSnapshotV1
3814
+
3815
+ Retrieve snapshot for a specified virtual machine.
3816
+
3817
+ Use this endpoint to view current VPS snapshot information.
3818
+
3819
+ - **Method**: `GET`
3820
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/snapshot`
3821
+
3822
+ #### VPS_createSnapshotV1
3823
+
3824
+ Create a snapshot of a specified virtual machine.
3825
+
3826
+ A snapshot captures the state and data of the virtual machine at a specific point in time,
3827
+ allowing users to restore the virtual machine to that state if needed.
3828
+ This operation is useful for backup purposes, system recovery,
3829
+ and testing changes without affecting the current state of the virtual machine.
3830
+
3831
+ **Creating new snapshot will overwrite the existing snapshot!**
3832
+
3833
+ Use this endpoint to capture VPS state for backup and recovery purposes.
3834
+
3835
+ - **Method**: `POST`
3836
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/snapshot`
3837
+
3838
+ #### VPS_deleteSnapshotV1
3839
+
3840
+ Delete a snapshot of a specified virtual machine.
3841
+
3842
+ Use this endpoint to remove VPS snapshots.
3843
+
3844
+ - **Method**: `DELETE`
3845
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/snapshot`
3846
+
3847
+ #### VPS_restoreSnapshotV1
3848
+
3849
+ Restore a specified virtual machine to a previous state using a snapshot.
3850
+
3851
+ Restoring from a snapshot allows users to revert the virtual machine to that state,
3852
+ which is useful for system recovery, undoing changes, or testing.
3853
+
3854
+ Use this endpoint to revert VPS instances to previous saved states.
3855
+
3856
+ - **Method**: `POST`
3857
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/snapshot/restore`
3858
+
3859
+ #### VPS_startVirtualMachineV1
3860
+
3861
+ Start a specified virtual machine.
3862
+
3863
+ If the virtual machine is already running, the request will still be processed without any effect.
3864
+
3865
+ Use this endpoint to power on stopped VPS instances.
3866
+
3867
+ - **Method**: `POST`
3868
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/start`
3869
+
3870
+ #### VPS_stopVirtualMachineV1
3871
+
3872
+ Stop a specified virtual machine.
3873
+
3874
+ If the virtual machine is already stopped, the request will still be processed without any effect.
3875
+
3876
+ This is a compute-only power state change and does not affect billing. To stop future charges,
3877
+ disable auto-renewal on the owning subscription.
3878
+
3879
+ Use this endpoint to power off running VPS instances.
3880
+
3881
+ - **Method**: `POST`
3882
+ - **Path**: `/api/vps/v1/virtual-machines/{virtualMachineId}/stop`
3883
+
3884
+ ### `hostinger-wordpress-mcp`
3885
+
3886
+ #### hosting_showAIOptionStatusV1
3887
+
3888
+ Show the current AI option status for the Hostinger Tools plugin on the
3889
+ specified WordPress installation. Filter by `option` to return a single
3890
+ option, or omit it to return all options.
3891
+
3892
+ Provide the WordPress installation (software) identifier in the path. It can
3893
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
3894
+
3895
+ - **Method**: `GET`
3896
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/hostinger-plugins/ai-option/status`
3897
+
3898
+ #### hosting_setAIOptionStatusV1
3899
+
3900
+ Enable or disable an AI option for the Hostinger Tools plugin on the specified
3901
+ WordPress installation.
3902
+
3903
+ Provide the WordPress installation (software) identifier in the path. It can
3904
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
3905
+
3906
+ - **Method**: `PATCH`
3907
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/hostinger-plugins/ai-option/status`
3908
+
3909
+ #### hosting_checkIfWordPressInstallationsAreValidV1
3910
+
3911
+ Check whether one or more WordPress installations are valid and working
3912
+ correctly. Detects broken installations caused by missing files, broken
3913
+ plugins, themes and similar issues.
3914
+
3915
+ Provide the WordPress installation (software) identifiers in the body. They
3916
+ can be obtained from GET /api/hosting/v1/wordpress/installations (the `id`
3917
+ field).
3918
+
3919
+ - **Method**: `POST`
3920
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/installations/check-is-valid`
3921
+
3922
+ #### hosting_deleteWordPressInstallationV1
3923
+
3924
+ Delete the specified WordPress installation, with optional file and database
3925
+ removal. This removes all associated components including plugins, themes,
3926
+ staging websites and any other related data.
3927
+
3928
+ Provide the WordPress installation (software) identifier in the path. It can
3929
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
3930
+
3931
+ - **Method**: `DELETE`
3932
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}`
3933
+
3934
+ #### hosting_detectWordPressInstallationsV1
3935
+
3936
+ Trigger a background scan to detect WordPress installations for the account.
3937
+
3938
+ This operation is asynchronous: a successful response only means the scan has
3939
+ been queued. Poll GET /api/hosting/v1/wordpress/installations to fetch the
3940
+ detected installations once the scan completes.
3941
+
3942
+ - **Method**: `POST`
3943
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/installations/detect`
3944
+
3945
+ #### hosting_importWordPressWebsiteV1
3946
+
3947
+ Import WordPress website to the specified domain.
3948
+
3949
+ WARNING: this overwrites the website's existing contents and cannot be undone —
3950
+ verify this is intended before calling this endpoint.
3951
+
3952
+ This endpoint allows you to import a WordPress website from archive and
3953
+ database files that have been uploaded to the website's directory.
3954
+
3955
+ - **Method**: `POST`
3956
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/wordpress/import`
3957
+
3958
+ #### hosting_installWordPressV1
3959
+
3960
+ Install WordPress on an existing website.
3961
+
3962
+ The website must already exist before calling this endpoint. To create a new
3963
+ website first, use POST /api/hosting/v1/websites and poll
3964
+ GET /api/hosting/v1/websites until it appears.
3965
+
3966
+ Call GET /api/hosting/v1/wordpress/installations filtered by username and
3967
+ domain before proceeding to check whether WordPress is already installed on
3968
+ the target domain/path. If WordPress already exists and `overwrite` is false
3969
+ (the default), the async job will fail.
3970
+
3971
+ This operation is asynchronous: a successful response only means the install
3972
+ job has been queued, not that WordPress is ready. Installation typically
3973
+ takes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered
3974
+ by username and domain to track progress. When the installation appears in
3975
+ that list, WordPress is ready.
3976
+
3977
+ - **Method**: `POST`
3978
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/installations`
3979
+
3980
+ #### hosting_listWordPressInstallationsV1
3981
+
3982
+ List WordPress installations accessible to the authenticated client.
3983
+
3984
+ Use this endpoint to discover existing WordPress installations and to poll
3985
+ for installation status after calling the install endpoint. When a newly
3986
+ requested installation appears in this list, WordPress is ready. Filter by
3987
+ username and domain to narrow results to a specific website.
3988
+
3989
+ Each installation includes a `valid` flag and, when invalid, a
3990
+ `validationError` describing why.
3991
+
3992
+ - **Method**: `GET`
3993
+ - **Path**: `/api/hosting/v1/wordpress/installations`
3994
+
3995
+ #### hosting_listAvailableWordPressCoreUpdatesV1
3996
+
3997
+ List available WordPress core updates for the specified installation.
3998
+
3999
+ Provide the WordPress installation (software) identifier in the path. It can
4000
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4001
+
4002
+ - **Method**: `GET`
4003
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/updates`
4004
+
4005
+ #### hosting_getInstallationJWTTokenV1
4006
+
4007
+ Return a JWT token used to authenticate requests against the specified
4008
+ WordPress installation, including its MCP (Model Context Protocol) endpoint.
4009
+
4010
+ Provide the WordPress installation (software) identifier in the path. It can
4011
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4012
+
4013
+ - **Method**: `GET`
4014
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/jwt-token`
4015
+
4016
+ #### hosting_showWordPressCoreVersionV1
4017
+
4018
+ Show the WordPress core version for the specified installation, along with
4019
+ known vulnerabilities affecting it.
4020
+
4021
+ Provide the WordPress installation (software) identifier in the path. It can
4022
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4023
+
4024
+ - **Method**: `GET`
4025
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/version`
4026
+
4027
+ #### hosting_updateWordPressCoreV1
4028
+
4029
+ Update the WordPress core for the specified installation (minor update or a
4030
+ specific version).
4031
+
4032
+ Provide the WordPress installation (software) identifier in the path. It can
4033
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4034
+
4035
+ This operation is asynchronous: a successful response only means the update
4036
+ job has been queued.
4037
+
4038
+ - **Method**: `POST`
4039
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/update`
4040
+
4041
+ #### hosting_purgeLiteSpeedCacheV1
4042
+
4043
+ Purge the LiteSpeed Cache for the specified WordPress installation.
4044
+
4045
+ Provide the WordPress installation (software) identifier in the path. It can
4046
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4047
+
4048
+ - **Method**: `POST`
4049
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/litespeed-cache/purge`
4050
+
4051
+ #### hosting_showLiteSpeedCacheStatusV1
4052
+
4053
+ Show the LiteSpeed Cache status for the specified WordPress installation.
4054
+
4055
+ Provide the WordPress installation (software) identifier in the path. It can
4056
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4057
+
4058
+ - **Method**: `GET`
4059
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/litespeed-cache/status`
4060
+
4061
+ #### hosting_createLoginLinksV1
4062
+
4063
+ Create temporary auto-login links for the specified WordPress installation.
4064
+
4065
+ Provide the WordPress installation (software) identifier in the path. It can
4066
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4067
+
4068
+ - **Method**: `POST`
4069
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/login/links`
4070
+
4071
+ #### hosting_showMaintenanceStatusV1
4072
+
4073
+ Show the maintenance mode status for the specified WordPress installation.
4074
+
4075
+ Provide the WordPress installation (software) identifier in the path. It can
4076
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4077
+
4078
+ - **Method**: `GET`
4079
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/maintenance/status`
4080
+
4081
+ #### hosting_toggleMaintenanceModeV1
4082
+
4083
+ Enable or disable maintenance mode for the specified WordPress installation,
4084
+ based on the `enabled` flag.
4085
+
4086
+ Provide the WordPress installation (software) identifier in the path. It can
4087
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4088
+
4089
+ - **Method**: `PATCH`
4090
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/maintenance/toggle`
4091
+
4092
+ #### hosting_showMemcachedObjectCacheStatusV1
4093
+
4094
+ Show the Memcached object cache status for the specified WordPress
4095
+ installation.
4096
+
4097
+ Provide the WordPress installation (software) identifier in the path. It can
4098
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4099
+
4100
+ - **Method**: `GET`
4101
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/memcached/status`
4102
+
4103
+ #### hosting_toggleMemcachedObjectCacheV1
4104
+
4105
+ Activate or deactivate the Memcached object cache for the specified WordPress
4106
+ installation, based on the `enabled` flag.
4107
+
4108
+ Provide the WordPress installation (software) identifier in the path. It can
4109
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4110
+
4111
+ - **Method**: `PATCH`
4112
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/memcached/toggle`
4113
+
4114
+ #### hosting_activateWordPressPluginV1
4115
+
4116
+ Activate an installed plugin on a WordPress installation.
4117
+
4118
+ Provide the WordPress installation (software) identifier in the path. It can
4119
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4120
+
4121
+ This operation is asynchronous: a successful response only means the activation
4122
+ job has been queued.
4123
+
4124
+ - **Method**: `POST`
4125
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/plugins/activate`
4126
+
4127
+ #### hosting_deactivateWordPressPluginV1
4128
+
4129
+ Deactivate an installed plugin on a WordPress installation.
4130
+
4131
+ Provide the WordPress installation (software) identifier in the path. It can
4132
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4133
+
4134
+ This operation is asynchronous: a successful response only means the
4135
+ deactivation job has been queued.
4136
+
4137
+ - **Method**: `POST`
4138
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/plugins/deactivate`
4139
+
4140
+ #### hosting_deployWordPressPluginV1
4141
+
4142
+ Deploy a WordPress plugin from an already uploaded directory.
4143
+
4144
+ This endpoint allows you to deploy a WordPress plugin that has been uploaded to the website's directory.
4145
+ The plugin will be activated and made available in the WordPress admin panel.
4146
+
4147
+ - **Method**: `POST`
4148
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/wordpress/plugins/deploy`
4149
+
4150
+ #### hosting_installWordPressPluginsV1
4151
+
4152
+ Install one or more plugins on an existing WordPress installation.
4153
+
4154
+ Provide the WordPress installation (software) identifier in the path. It can
4155
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id`
4156
+ field). Use GET /api/hosting/v1/wordpress/plugins to discover the plugin
4157
+ slugs available for installation.
4158
+
4159
+ This operation is asynchronous: a successful response only means the install
4160
+ job has been queued, not that the plugins are ready.
4161
+
4162
+ - **Method**: `POST`
4163
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/plugins/install`
4164
+
4165
+ #### hosting_listAvailableWordPressPluginsV1
4166
+
4167
+ List plugins recommended for installation on a WordPress installation that are
4168
+ not yet installed.
4169
+
4170
+ Provide the WordPress installation (software) identifier in the path. It can
4171
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4172
+
4173
+ - **Method**: `GET`
4174
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/plugins/available`
4175
+
4176
+ #### hosting_listInstalledWordPressPluginsV1
4177
+
4178
+ List plugins installed on a WordPress installation, including their status,
4179
+ available updates and known vulnerabilities.
4180
+
4181
+ Provide the WordPress installation (software) identifier in the path. It can
4182
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4183
+
4184
+ - **Method**: `GET`
4185
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/plugins`
4186
+
4187
+ #### hosting_searchWordPressPluginsV1
4188
+
4189
+ Search the WordPress.org plugin directory for plugins available to install.
4190
+
4191
+ Use the returned `slug` values with
4192
+ POST /api/hosting/v1/accounts/{username}/wordpress/{software}/plugins/install.
4193
+
4194
+ - **Method**: `GET`
4195
+ - **Path**: `/api/hosting/v1/wordpress/plugins`
4196
+
4197
+ #### hosting_listSuggestedWordPressPluginsV1
4198
+
4199
+ List curated plugin suggestions grouped by website type.
4200
+
4201
+ Use the returned `slug` values with
4202
+ POST /api/hosting/v1/accounts/{username}/wordpress/{software}/plugins/install.
4203
+
4204
+ - **Method**: `GET`
4205
+ - **Path**: `/api/hosting/v1/wordpress/plugins/suggested`
4206
+
4207
+ #### hosting_checkIfWooCommerceIsInstalledV1
4208
+
4209
+ Check whether WooCommerce is installed on any WordPress installation of a
4210
+ domain. Optionally filter by domain to scope the check.
4211
+
4212
+ - **Method**: `GET`
4213
+ - **Path**: `/api/hosting/v1/wordpress/plugins/is-woocommerce-installed`
4214
+
4215
+ #### hosting_uninstallWordPressPluginsV1
4216
+
4217
+ Uninstall one or more plugins from a WordPress installation.
4218
+
4219
+ Provide the WordPress installation (software) identifier in the path. It can
4220
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4221
+
4222
+ This operation is asynchronous: a successful response only means the uninstall
4223
+ job has been queued.
4224
+
4225
+ - **Method**: `POST`
4226
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/plugins/uninstall`
4227
+
4228
+ #### hosting_updateHostingerWordPressPluginV1
4229
+
4230
+ Update a Hostinger plugin to its latest version on a WordPress installation.
4231
+
4232
+ Provide the WordPress installation (software) identifier in the path. It can
4233
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4234
+
4235
+ This operation is asynchronous: a successful response only means the update job
4236
+ has been queued.
4237
+
4238
+ - **Method**: `POST`
4239
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/plugins/hostinger/update`
4240
+
4241
+ #### hosting_updateWordPressPluginsV1
4242
+
4243
+ Update one or more installed plugins to their latest version on a WordPress
4244
+ installation.
4245
+
4246
+ Provide the WordPress installation (software) identifier in the path. It can
4247
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4248
+
4249
+ This operation is asynchronous: a successful response only means the update job
4250
+ has been queued.
4251
+
4252
+ - **Method**: `POST`
4253
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/plugins/update`
4254
+
4255
+ #### hosting_activateWordPressThemeV1
4256
+
4257
+ Activate an installed theme on a WordPress installation.
4258
+
4259
+ Provide the WordPress installation (software) identifier in the path. It can
4260
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4261
+
4262
+ This operation is asynchronous: a successful response only means the activation
4263
+ job has been queued.
4264
+
4265
+ - **Method**: `POST`
4266
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/themes/activate`
4267
+
4268
+ #### hosting_deployWordPressThemeV1
4269
+
4270
+ Deploy a WordPress theme from an already uploaded directory.
4271
+
4272
+ This endpoint allows you to deploy a WordPress theme that has been uploaded to the website's directory.
4273
+ The theme can be optionally activated after deployment.
4274
+
4275
+ - **Method**: `POST`
4276
+ - **Path**: `/api/hosting/v1/accounts/{username}/websites/{domain}/wordpress/themes/deploy`
4277
+
4278
+ #### hosting_installWordPressThemeV1
4279
+
4280
+ Install a theme on an existing WordPress installation.
4281
+
4282
+ Provide the WordPress installation (software) identifier in the path. It can
4283
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id`
4284
+ field).
4285
+
4286
+ When the theme is one of the Hostinger themes (hostinger-blog,
4287
+ hostinger-affiliate-theme, hostinger-ai-theme), the optional `palette`,
4288
+ `layout`, and `font` fields are forwarded to the custom installer (defaults:
4289
+ palette1, layout1, default). For any other theme they are ignored.
4290
+
4291
+ This operation is asynchronous: a successful response only means the install
4292
+ job has been queued, not that the theme is ready.
4293
+
4294
+ - **Method**: `POST`
4295
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/themes/install`
4296
+
4297
+ #### hosting_listInstalledWordPressThemesV1
4298
+
4299
+ List themes installed on a WordPress installation, including their status,
4300
+ available updates and known vulnerabilities.
4301
+
4302
+ Provide the WordPress installation (software) identifier in the path. It can
4303
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4304
+
4305
+ - **Method**: `GET`
4306
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/themes`
4307
+
4308
+ #### hosting_listWordPressThemesV1
4309
+
4310
+ List WordPress themes available to install.
4311
+
4312
+ Use the returned `slug` values with
4313
+ POST /api/hosting/v1/accounts/{username}/wordpress/{software}/themes/install.
4314
+
4315
+ - **Method**: `GET`
4316
+ - **Path**: `/api/hosting/v1/wordpress/themes`
4317
+
4318
+ #### hosting_uninstallWordPressThemesV1
4319
+
4320
+ Uninstall one or more themes from a WordPress installation.
4321
+
4322
+ Provide the WordPress installation (software) identifier in the path. It can
4323
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4324
+
4325
+ This operation is asynchronous: a successful response only means the uninstall
4326
+ job has been queued.
4327
+
4328
+ - **Method**: `POST`
4329
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/themes/uninstall`
4330
+
4331
+ #### hosting_updateWordPressThemesV1
4332
+
4333
+ Update one or more installed themes to their latest version on a WordPress
4334
+ installation.
4335
+
4336
+ Provide the WordPress installation (software) identifier in the path. It can
4337
+ be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
4338
+
4339
+ This operation is asynchronous: a successful response only means the update job
4340
+ has been queued.
4341
+
4342
+ - **Method**: `POST`
4343
+ - **Path**: `/api/hosting/v1/accounts/{username}/wordpress/{software}/themes/update`