← MCP Security Catalog

hostinger-api-mcp 1.57.0

npm · hostinger-api-mcp · latest release

Scan failed
Security result
382
Observed tools
Version rating
Change risk

Independent inventory

Observed 2026-09-04T22:32:58.606Z using mcpSecurity-inventory. Protocol 2025-06-18.

ToolCategoryRisk
agency-hosting_buildWebsiteNodeJSAssetsV1Builds and deploys a Node.js application for an Agency Plan website from an already-uploaded archive. Upload the archive to file browser first, then provide its relative path from document root in this request. Website contents are overwritten by the build result, which is deployed to public_html.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "archive_path": {
      "type": "string",
      "description": "Directory, relative to the website document root, where the uploaded site archive currently lives. Most commonly this is simply `public_html`."
    }
  },
  "required": [
    "website_uid",
    "archive_path"
  ]
}
Annotations
{
  "title": "Build website NodeJS assets",
  "readOnlyHint": false,
  "destructiveHint": false
}
agency-hosting_changeWebsiteDomainV1Changes the primary domain for an Agency Plan website. Provide the current domain in the path and the new domain in the request body. Set domain to null to revert to the temporary domain.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "from_domain": {
      "type": "string",
      "description": "Current domain name to change from"
    },
    "domain": {
      "type": "string",
      "description": "New domain to assign to the website. Set to null to revert to the temporary domain."
    }
  },
  "required": [
    "website_uid",
    "from_domain",
    "domain"
  ]
}
Annotations
{
  "title": "Change website domain",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
agency-hosting_changeWordPressVersionV1Changes the installed WordPress core version on an Agency Plan website to one of the versions available for installation.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "version": {
      "type": "string",
      "description": "Target WordPress core version to install. Must be one of the available versions."
    }
  },
  "required": [
    "website_uid",
    "version"
  ]
}
Annotations
{
  "title": "Change WordPress version",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
agency-hosting_clearWebsiteCacheV1Clears cache for all domains associated with an Agency Plan website, including its preview domain. This operation clears all cache types for the website.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    }
  },
  "required": [
    "website_uid"
  ]
}
Annotations
{
  "title": "Clear website cache",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
agency-hosting_createANewWebsiteV1Provisions a new website on one of your Agency Plan hosting orders. Choose the datacenter, stack (`flavor`), and PHP version for the site. Optionally attach your own `domain` — omit it, set it to `null`, or leave it unavailable and a free `*.hostingersite.com` subdomain is generated instead — and/or install WordPress by supplying the `wordpress` details (admin account, site title, and language). Common setups: - **Plain PHP site**: `flavor` set to `php-fpm`, with `settings.php.version`; omit `wordpress` and `type`. - **WordPress site**: `flavor` set to the desired WordPress version (e.g. `wp-7.0`), plus the `wordpress` block (admin account, title, language). - **Static/Node.js frontend app**: `flavor` set to `php-fpm` and `type` set to `node-static`. Provisioning runs in the background, so the response returns immediately with a setup UUID that identifies the job. The new website becomes reachable once provisioning finishes.
Input schema
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "description": "Agency Plan order ID"
    },
    "datacenter_code": {
      "type": "string",
      "description": "Datacenter code where the website should be provisioned. Available codes depend on live capacity and are not a fixed set."
    },
    "flavor": {
      "type": "string",
      "description": "Setup flavor: a specific WordPress version in the format `wp-<major>.<minor>` or `wp-<major>.<minor>.<patch>` (e.g. `wp-6.8.2`), or `php-fpm` for a plain PHP stack. Generic versions like `wp-latest` are not allowed."
    },
    "settings": {
      "type": "object",
      "description": "Website settings",
      "properties": {
        "php": {
          "type": "object",
          "description": "php parameter",
          "properties": {
            "version": {
              "type": "string",
              "description": "PHP version"
            }
          },
          "required": [
            "version"
          ]
        }
      },
      "required": [
        "php"
      ]
    },
    "domain": {
      "type": "string",
      "description": "Primary domain to attach to the website. Omit or set to null to get a free auto-generated *.hostingersite.com subdomain instead."
    },
    "type": {
      "type": "string",
      "description": "Website type",
      "enum": [
        "node-static"
      ]
    },
    "wordpress": {
      "type": "object",
      "description": "WordPress installation options",
      "properties": {
        "language": {
          "type": "string",
          "description": "language parameter"
        },
        "title": {
          "type": "string",
          "description": "title parameter"
        },
        "admin": {
          "type": "object",
          "description": "admin parameter",
          "properties": {
            "user": {
              "type": "string",
              "description": "user parameter"
            },
            "password": {
              "type": "string",
              "description": "password parameter"
            },
            "email": {
              "type": "string",
              "description": "email parameter"
            }
          },
          "required": [
            "user",
            "password",
            "email"
          ]
        }
      },
      "required": [
        "language",
        "title",
        "admin"
      ]
    }
  },
  "required": [
    "order_id",
    "datacenter_code",
    "flavor",
    "settings"
  ]
}
Annotations
{
  "title": "Create a new website",
  "readOnlyHint": false,
  "destructiveHint": false
}
agency-hosting_createWebsiteCronJobV1Creates a cron job for an Agency Plan website from a schedule expression and a command. Returns the created cron job, including its uuid, which is required to delete the cron job.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "time": {
      "type": "string",
      "description": "Cron schedule expression (standard 5-field crontab syntax)."
    },
    "command": {
      "type": "string",
      "description": "Command to run on the schedule. Must not contain pipe (|) or redirection (<, >) characters."
    }
  },
  "required": [
    "website_uid",
    "time",
    "command"
  ]
}
Annotations
{
  "title": "Create website cron job",
  "readOnlyHint": false,
  "destructiveHint": false
}
agency-hosting_createWebsiteDatabaseUserV1Creates a user for an existing database on an Agency Plan website. Each database supports a single non-system user; creating a user for a database that already has one fails.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "database_name": {
      "type": "string",
      "description": "Full database name as returned by the list databases endpoint."
    },
    "database_user": {
      "type": "string",
      "description": "Database username to create (alphanumeric and underscores)."
    },
    "password": {
      "type": "string",
      "description": "Password for the database user (requires mixed case, letters, and numbers)."
    },
    "host": {
      "type": "string",
      "description": "Host the user connects from (IPv4, IPv6, % wildcard, or localhost). Defaults to localhost."
    }
  },
  "required": [
    "website_uid",
    "database_name",
    "database_user",
    "password"
  ]
}
Annotations
{
  "title": "Create website database user",
  "readOnlyHint": false,
  "destructiveHint": false
}
agency-hosting_createWebsiteDatabaseV1Creates a MySQL database with a dedicated user for an Agency Plan website. The database name, username, and password must all be provided by the caller.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "database_name": {
      "type": "string",
      "description": "Database name to create (alphanumeric characters)."
    },
    "database_user": {
      "type": "string",
      "description": "Database username to create alongside the database (alphanumeric characters)."
    },
    "password": {
      "type": "string",
      "description": "Password for the database user (requires mixed case, letters, and numbers)."
    }
  },
  "required": [
    "website_uid",
    "database_name",
    "database_user",
    "password"
  ]
}
Annotations
{
  "title": "Create website database",
  "readOnlyHint": false,
  "destructiveHint": false
}
agency-hosting_deleteWebsiteCronJobV1Permanently deletes the cron job identified by its uuid from an Agency Plan website. The operation is idempotent: deleting a cron job that does not exist succeeds without error.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "uuid": {
      "type": "string",
      "description": "Unique identifier of the cron job as returned by the list cron jobs endpoint."
    }
  },
  "required": [
    "website_uid",
    "uuid"
  ]
}
Annotations
{
  "title": "Delete website cron job",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
agency-hosting_deleteWebsiteDatabaseUserV1Permanently deletes a database user from an Agency Plan website database, revoking all access it had. The operation is idempotent: deleting a user that does not exist succeeds without error.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "database_name": {
      "type": "string",
      "description": "Full database name as returned by the list databases endpoint."
    },
    "database_user_name": {
      "type": "string",
      "description": "Database username as returned by the list databases endpoint."
    }
  },
  "required": [
    "website_uid",
    "database_name",
    "database_user_name"
  ]
}
Annotations
{
  "title": "Delete website database user",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
agency-hosting_deleteWebsiteDatabaseV1Permanently deletes a MySQL database and all its data from an Agency Plan website, including its users. The operation is idempotent: deleting a database that does not exist succeeds without error.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "database_name": {
      "type": "string",
      "description": "Full database name as returned by the list databases endpoint."
    }
  },
  "required": [
    "website_uid",
    "database_name"
  ]
}
Annotations
{
  "title": "Delete website database",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
agency-hosting_deleteWebsiteV1Permanently deletes an Agency Plan website. Deletion is processed asynchronously: the website is immediately transitioned to a deleting state and the underlying server resources are removed in the background.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    }
  },
  "required": [
    "website_uid"
  ]
}
Annotations
{
  "title": "Delete website",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
agency-hosting_deployNodeStaticWebsiteDeploy 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.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name of the Agency Plan website (e.g., example.com)"
    },
    "archivePath": {
      "type": "string",
      "description": "Absolute or relative path to the website archive file. Supported formats: zip, tar, tar.gz, tgz. The archive must contain the application source files. If user provides a directory path, create an archive from it before proceeding using EXACTLY this naming pattern: directoryname_YYYYMMDD_HHMMSS.zip (e.g., mywebsite_20250115_143022.zip)"
    },
    "removeArchive": {
      "type": "boolean",
      "description": "Whether to remove the local archive file after successful deployment (default: true)"
    }
  },
  "required": [
    "domain",
    "archivePath"
  ]
}
Annotations
{
  "title": "Deploy node-static website",
  "readOnlyHint": false,
  "destructiveHint": true
}
agency-hosting_deployPhpApplicationDeploy 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.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name of the Agency Plan website (e.g., example.com)"
    },
    "archivePath": {
      "type": "string",
      "description": "Absolute or relative path to the website archive file. Supported formats: zip, tar, tar.gz, tgz. If user provides a directory path, create an archive from it before proceeding using EXACTLY this naming pattern: directoryname_YYYYMMDD_HHMMSS.zip (e.g., mywebsite_20250115_143022.zip)"
    },
    "removeArchive": {
      "type": "boolean",
      "description": "Whether to remove the local archive file after successful deployment (default: true)"
    }
  },
  "required": [
    "domain",
    "archivePath"
  ]
}
Annotations
{
  "title": "Deploy PHP application",
  "readOnlyHint": false,
  "destructiveHint": true
}
agency-hosting_generateUploadURLV1Generate a file browser upload URL with authentication credentials for uploading files to an Agency Plan website's file storage. Returns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the website's file storage via the TUS resumable upload protocol (TUS 1.0.0). Send `X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request below. 1. Create the upload: `POST` to `{url}/{relative_file_path}?override=true` with headers `upload-length: {file size in bytes}` and `upload-offset: 0`. Expect `201 Created`. 2. Upload the file: send the file bytes to the same location (any TUS 1.0.0 client, or `PATCH` requests with an `upload-offset` header tracking progress) until complete. `relative_file_path` is the destination path inside the website's file storage, e.g. `app.zip`. Instead of a TUS client, plain `curl` also works: ``` FILE=app.zip SIZE=$(stat -f%z "$FILE") # stat -c%s on Linux curl -i -X POST "{url}/${FILE}?override=true" \ -H "X-Auth: {auth_key}" \ -H "X-Auth-Rest: {rest_auth_key}" \ -H "Tus-Resumable: 1.0.0" \ -H "Upload-Length: ${SIZE}" \ -H "Upload-Offset: 0" # -> 201 Created curl -i -X PATCH "{url}/${FILE}?override=true" \ -H "X-Auth: {auth_key}" \ -H "X-Auth-Rest: {rest_auth_key}" \ -H "Tus-Resumable: 1.0.0" \ -H "Content-Type: application/offset+octet-stream" \ -H "Upload-Offset: 0" \ --data-binary "@${FILE}" # -> 204 No Content, Upload-Offset response header equals SIZE when done ```
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    }
  },
  "required": [
    "website_uid"
  ]
}
Annotations
{
  "title": "Generate upload URL",
  "readOnlyHint": false,
  "destructiveHint": false
}
agency-hosting_getWebsiteDetailsV1Retrieves detailed information about a specific Agency Plan website, including configuration, status, metadata, hosting plan details, and resource quotas.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    }
  },
  "required": [
    "website_uid"
  ]
}
Annotations
{
  "title": "Get website details",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_getWebsiteSetupStatusV1Returns the current status of an Agency Plan website setup started via the setups endpoint. Poll this endpoint using the `setup_uuid` returned from the provisioning request until `status` becomes `completed`, at which point `website_uid` identifies the new website.
Input schema
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "description": "Agency Plan order ID"
    },
    "setup_uuid": {
      "type": "string",
      "description": "Website setup UUID"
    }
  },
  "required": [
    "order_id",
    "setup_uuid"
  ]
}
Annotations
{
  "title": "Get website setup status",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_getWordPressSettingsV1Returns the current WordPress settings for an Agency Plan website: installed core version, LiteSpeed Cache plugin status, object cache status, and maintenance mode status.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    }
  },
  "required": [
    "website_uid"
  ]
}
Annotations
{
  "title": "Get WordPress settings",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_importWebsiteFromArchiveV1Imports an Agency Plan website from an already-uploaded archive. Upload the archive to the website's root directory via file browser first, then provide its filename in this request. Website contents are overwritten by the archive contents. Supported archive types: .zip, .tar, .tar.gz, .tgz.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "archive_name": {
      "type": "string",
      "description": "Archive filename (e.g., archive.zip). The file must already be uploaded to the website's .h5g/ directory."
    }
  },
  "required": [
    "website_uid",
    "archive_name"
  ]
}
Annotations
{
  "title": "Import website from archive",
  "readOnlyHint": false,
  "destructiveHint": true
}
agency-hosting_linkDomainToWebsiteV1Links a domain to the specified Agency Plan website so it can serve traffic for that domain.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "domain": {
      "type": "string",
      "description": "Fully qualified domain name to link to the website"
    }
  },
  "required": [
    "website_uid",
    "domain"
  ]
}
Annotations
{
  "title": "Link domain to website",
  "readOnlyHint": false,
  "destructiveHint": false
}
agency-hosting_listAgencyPlanOrderDiskUsageMetricsV1Returns aggregated disk and inode usage for the Agency Plan order over the selected time frame, plus the plan quotas. Figures cover the whole order account. Values may be up to one hour stale. CPU, memory, and process usage are on the resource-usage-metrics endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "description": "Agency Plan order ID"
    },
    "time_frame_days": {
      "type": "integer",
      "description": "Length of the window in days, ending now. Bucket size grows with the window.",
      "enum": [
        1,
        7,
        14,
        30
      ]
    }
  },
  "required": [
    "order_id"
  ]
}
Annotations
{
  "title": "List Agency Plan order disk usage metrics",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_listAgencyPlanWebsitesV1Retrieve a paginated list of Agency Plan websites (H5G, Builder, and Horizons) accessible to the authenticated client. This endpoint returns websites from your hosting accounts as well as websites from other client hosting accounts that have shared access with you. The response shape differs per platform — see the `platform` field on each item. Use `website_types` to list only websites of a given detected type, e.g. only WordPress websites (`website_types=wordpress`) or only Node.js websites (`website_types=nodejs`). Combine with `order_ids`, `states`, or `domain` for more targeted results.
Input schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    },
    "order_ids": {
      "type": "array",
      "description": "Filter by order IDs. Accepts a comma-separated list.",
      "items": {
        "type": "integer",
        "description": "order_ids parameter"
      }
    },
    "states": {
      "type": "array",
      "description": "Filter by website state. Accepts a comma-separated list.",
      "items": {
        "type": "string",
        "description": "states parameter",
        "enum": [
          "active",
          "locked",
          "suspended",
          "deleting",
          "deleted"
        ]
      }
    },
    "website_types": {
      "type": "array",
      "description": "Filter by detected website type, e.g. wordpress,nodejs. Accepts a comma-separated list.",
      "items": {
        "type": "string",
        "description": "website_types parameter",
        "enum": [
          "wordpress",
          "builder",
          "horizons",
          "nodejs",
          "other"
        ]
      }
    },
    "domain": {
      "type": "string",
      "description": "Filter by domain name (case-insensitive substring match)"
    }
  },
  "required": []
}
Annotations
{
  "title": "List Agency Plan websites",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_listAvailableDatacentersV1Lists the datacenters available for provisioning a new website on the given Agency Plan hosting order. Each datacenter includes a `pinger_url` you can ping from the client to measure round-trip latency; comparing the results across datacenters lets you pick the nearest one (lowest ping) before choosing its `code` as the `datacenter_code` when creating a website setup.
Input schema
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "description": "Agency Plan order ID"
    }
  },
  "required": [
    "order_id"
  ]
}
Annotations
{
  "title": "List available datacenters",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_listAvailablePHPVersionsForAnOrderV1Lists 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.
Input schema
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "description": "Agency Plan order ID"
    }
  },
  "required": [
    "order_id"
  ]
}
Annotations
{
  "title": "List available PHP versions for an order",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_listAvailablePHPVersionsForAWebsiteV1Lists 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.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    }
  },
  "required": [
    "website_uid"
  ]
}
Annotations
{
  "title": "List available PHP versions for a website",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_listAvailableWordPressVersionsV1Lists the WordPress core versions available for installation on an Agency Plan website.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    }
  },
  "required": [
    "website_uid"
  ]
}
Annotations
{
  "title": "List available WordPress versions",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_listDomainsV1Returns a paginated list of domains associated with Agency Plan websites accessible to the authenticated client. Use the website_uuids filter to narrow results to specific websites.
Input schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    },
    "website_uuids": {
      "type": "array",
      "description": "Filter by website UIDs",
      "items": {
        "type": "string",
        "description": "website_uuids parameter"
      }
    }
  },
  "required": []
}
Annotations
{
  "title": "List domains",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_listOrderResourceUsageMetricsV1Returns aggregated CPU, memory, and process usage for the Agency Plan order over the selected time frame, plus the plan quotas and a per-website breakdown. Each website is identified by uid. Suspended and deleted websites are excluded from both the order totals and the per-website breakdown. Values may be up to one hour stale. Disk and inode usage are on the disk-usage-metrics endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "description": "Agency Plan order ID"
    },
    "time_frame_hours": {
      "type": "integer",
      "description": "Length of the window in hours, ending now. Bucket size grows with the window.",
      "enum": [
        1,
        24,
        168,
        336,
        720
      ]
    }
  },
  "required": [
    "order_id"
  ]
}
Annotations
{
  "title": "List order resource usage metrics",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_listOrdersV1Returns a paginated list of Agency Plan orders accessible to the authenticated client.
Input schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": []
}
Annotations
{
  "title": "List orders",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_listPHPExtensionsForAWebsiteV1Lists every PHP extension available to an Agency Plan website and whether it is currently enabled.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    }
  },
  "required": [
    "website_uid"
  ]
}
Annotations
{
  "title": "List PHP extensions for a website",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_listPHPOptionsForAWebsiteV1Lists 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.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    }
  },
  "required": [
    "website_uid"
  ]
}
Annotations
{
  "title": "List PHP options for a website",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_listWebsiteCronJobsV1Returns a paginated list of cron jobs configured for an Agency Plan website. Each entry includes the schedule expression and the command executed on that schedule.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "website_uid"
  ]
}
Annotations
{
  "title": "List website cron jobs",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_listWebsiteDatabasesV1Returns a paginated list of MySQL databases created for an Agency Plan website. Each entry includes the database's non-system users.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "website_uid"
  ]
}
Annotations
{
  "title": "List website databases",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_listWebsiteProcessesV1Lists active and recently completed asynchronous processes for an Agency Plan website. Each process has a unique ID (for tracking), a type, and a status (running, completed, failed). Poll this endpoint after initiating async operations (SSL setup, backups, cloning) to track progress.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    }
  },
  "required": [
    "website_uid"
  ]
}
Annotations
{
  "title": "List website processes",
  "readOnlyHint": true,
  "destructiveHint": false
}
agency-hosting_replaceWebsitePHPExtensionsV1Replaces 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.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "extensions": {
      "type": "array",
      "description": "Extension names, exactly as returned by the extensions endpoint.",
      "items": {
        "type": "string",
        "description": "extensions parameter"
      }
    }
  },
  "required": [
    "website_uid",
    "extensions"
  ]
}
Annotations
{
  "title": "Replace website PHP extensions",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
agency-hosting_replaceWebsitePHPOptionsV1Replaces 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.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "options": {
      "type": "array",
      "description": "Option names and values. Each name must be one of the options returned by the options endpoint, and each value must satisfy that option's allowed_values when it declares them.",
      "items": {
        "type": "object",
        "description": "options parameter",
        "properties": {
          "name": {
            "type": "string",
            "description": "php.ini directive name."
          },
          "value": {
            "type": "string",
            "description": "Value to apply."
          }
        },
        "required": [
          "name",
          "value"
        ]
      }
    }
  },
  "required": [
    "website_uid",
    "options"
  ]
}
Annotations
{
  "title": "Replace website PHP options",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
agency-hosting_unlinkDomainFromWebsiteV1Unlinks a domain from the specified Agency Plan website. The website stops serving traffic on this domain immediately. Website files and database are preserved, and any other linked domains remain accessible. If this is the only domain on the website, unlinking leaves the website without an accessible domain.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "website_uid",
    "domain"
  ]
}
Annotations
{
  "title": "Unlink domain from website",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
agency-hosting_updateWebsitePHPVersionV1Switches 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.
Input schema
{
  "type": "object",
  "properties": {
    "website_uid": {
      "type": "string",
      "description": "Agency Plan website UID"
    },
    "version": {
      "type": "string",
      "description": "PHP version to switch the website to, as major.minor. Must be one of the versions returned by the available versions endpoint."
    }
  },
  "required": [
    "website_uid",
    "version"
  ]
}
Annotations
{
  "title": "Update website PHP version",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
billing_createPurchaseOrderV1Create a purchase order for any Hostinger product. This unified endpoint places an order for one or more catalog items and works across all Hostinger products, leveraging the existing billing infrastructure. Use the [catalog endpoint](#tag/billing-catalog) to look up the `item_id` values available for purchase. If no payment method is provided, your default payment method will be used automatically. This endpoint only places the order. Product-specific provisioning (e.g. VPS setup or domain registration) is not performed here — once the order completes, use the relevant product endpoints or [hPanel](https://hpanel.hostinger.com/) to finalize setup. Use this endpoint to purchase any product available in the catalog.
Input schema
{
  "type": "object",
  "properties": {
    "payment_method_id": {
      "type": "integer",
      "description": "Payment method ID, default will be used if not provided"
    },
    "items": {
      "type": "array",
      "description": "Catalog price items to purchase",
      "items": {
        "type": "object",
        "description": "items parameter",
        "properties": {
          "item_id": {
            "type": "string",
            "description": "Catalog price item ID"
          },
          "quantity": {
            "type": "integer",
            "description": "Quantity to purchase"
          }
        },
        "required": [
          "item_id"
        ]
      }
    },
    "coupons": {
      "type": "array",
      "description": "Discount coupon codes",
      "items": {
        "type": "string",
        "description": "coupons parameter"
      }
    }
  },
  "required": [
    "items"
  ]
}
Annotations
{
  "title": "Create purchase order",
  "readOnlyHint": false,
  "destructiveHint": false
}
billing_deletePaymentMethodV1Delete a payment method from your account. Use this endpoint to remove unused payment methods from user accounts.
Input schema
{
  "type": "object",
  "properties": {
    "paymentMethodId": {
      "type": "integer",
      "description": "Payment method ID"
    }
  },
  "required": [
    "paymentMethodId"
  ]
}
Annotations
{
  "title": "Delete payment method",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
billing_disableAutoRenewalV1Disable auto-renewal for a subscription. Use this endpoint when disable auto-renewal for a subscription.
Input schema
{
  "type": "object",
  "properties": {
    "subscriptionId": {
      "type": "string",
      "description": "Subscription ID"
    }
  },
  "required": [
    "subscriptionId"
  ]
}
Annotations
{
  "title": "Disable auto-renewal",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
billing_enableAutoRenewalV1Enable auto-renewal for a subscription. Use this endpoint when enable auto-renewal for a subscription.
Input schema
{
  "type": "object",
  "properties": {
    "subscriptionId": {
      "type": "string",
      "description": "Subscription ID"
    }
  },
  "required": [
    "subscriptionId"
  ]
}
Annotations
{
  "title": "Enable auto-renewal",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
billing_getCatalogItemListV1Retrieve catalog items available for order. Prices in catalog items is displayed as cents (without floating point), e.g: float `17.99` is displayed as integer `1799`. Use this endpoint to view available services and pricing before placing orders.
Input schema
{
  "type": "object",
  "properties": {
    "category": {
      "type": "string",
      "description": "Filter catalog items by category",
      "enum": [
        "DOMAIN",
        "VPS",
        "EMAIL"
      ]
    },
    "name": {
      "type": "string",
      "description": "Filter catalog items by name. Use `*` for wildcard search, e.g. `.COM*` to find .com domain"
    }
  },
  "required": []
}
Annotations
{
  "title": "Get catalog item list",
  "readOnlyHint": true,
  "destructiveHint": false
}
billing_getPaymentMethodListV1Retrieve available payment methods that can be used for placing new orders. If you want to add new payment method, please use [hPanel](https://hpanel.hostinger.com/billing/payment-methods). Use this endpoint to view available payment options before creating orders.
Input schema
{
  "type": "object",
  "properties": {},
  "required": []
}
Annotations
{
  "title": "Get payment method list",
  "readOnlyHint": true,
  "destructiveHint": false
}
billing_getSubscriptionListV1Retrieve a list of all subscriptions associated with your account. Use this endpoint to monitor active services and billing status.
Input schema
{
  "type": "object",
  "properties": {},
  "required": []
}
Annotations
{
  "title": "Get subscription list",
  "readOnlyHint": true,
  "destructiveHint": false
}
billing_renewSubscriptionV1Create a renewal order for an existing Hostinger subscription. This endpoint places a renewal order for a single subscription, leveraging the existing billing infrastructure. Use the [subscriptions endpoint](#tag/billing-subscriptions) to look up the `subscriptionId` values available for renewal. If no payment method is provided, your default payment method will be used automatically. Use this endpoint to renew any subscription available in your account.
Input schema
{
  "type": "object",
  "properties": {
    "subscriptionId": {
      "type": "string",
      "description": "Subscription ID"
    },
    "payment_method_id": {
      "type": "integer",
      "description": "Payment method ID, default will be used if not provided"
    },
    "coupons": {
      "type": "array",
      "description": "Discount coupon codes",
      "items": {
        "type": "string",
        "description": "coupons parameter"
      }
    }
  },
  "required": [
    "subscriptionId"
  ]
}
Annotations
{
  "title": "Renew subscription",
  "readOnlyHint": false,
  "destructiveHint": false
}
billing_setDefaultPaymentMethodV1Set the default payment method for your account. Use this endpoint to configure the primary payment method for future orders.
Input schema
{
  "type": "object",
  "properties": {
    "paymentMethodId": {
      "type": "integer",
      "description": "Payment method ID"
    }
  },
  "required": [
    "paymentMethodId"
  ]
}
Annotations
{
  "title": "Set default payment method",
  "readOnlyHint": false,
  "destructiveHint": false
}
DNS_deleteDNSRecordsV1Delete DNS records for the selected domain. To filter which records to delete, add the `name` of the record and `type` to the filter. Multiple filters can be provided with single request. If you have multiple records with the same name and type, and you want to delete only part of them, refer to the `Update zone records` endpoint. Use this endpoint to remove specific DNS records from domains.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Delete DNS records",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
DNS_getDNSRecordsV1Retrieve DNS zone records for a specific domain. Use this endpoint to view current DNS configuration for domain management.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Get DNS records",
  "readOnlyHint": true,
  "destructiveHint": false
}
DNS_getDNSSnapshotListV1Retrieve DNS snapshots for a domain. Use this endpoint to view available DNS backup points for restoration.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Get DNS snapshot list",
  "readOnlyHint": true,
  "destructiveHint": false
}
DNS_getDNSSnapshotV1Retrieve particular DNS snapshot with contents of DNS zone records. Use this endpoint to view historical DNS configurations for domains.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "snapshotId": {
      "type": "integer",
      "description": "Snapshot ID"
    }
  },
  "required": [
    "domain",
    "snapshotId"
  ]
}
Annotations
{
  "title": "Get DNS snapshot",
  "readOnlyHint": true,
  "destructiveHint": false
}
DNS_resetDNSRecordsV1Reset DNS zone to the default records. Use this endpoint to restore domain DNS to original configuration.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "sync": {
      "type": "boolean",
      "description": "Determines if operation should be run synchronously"
    },
    "reset_email_records": {
      "type": "boolean",
      "description": "Determines if email records should be reset"
    },
    "whitelisted_record_types": {
      "type": "array",
      "description": "Specifies which record types to not reset",
      "items": {
        "type": "string",
        "description": "whitelisted_record_types parameter"
      }
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Reset DNS records",
  "readOnlyHint": false,
  "destructiveHint": true
}
DNS_restoreDNSSnapshotV1Restore DNS zone to the selected snapshot. Use this endpoint to revert domain DNS to a previous configuration.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "snapshotId": {
      "type": "integer",
      "description": "Snapshot ID"
    }
  },
  "required": [
    "domain",
    "snapshotId"
  ]
}
Annotations
{
  "title": "Restore DNS snapshot",
  "readOnlyHint": false,
  "destructiveHint": true
}
DNS_updateDNSRecordsV1Update DNS records for the selected domain. Using `overwrite = true` will replace existing records with the provided ones. Otherwise existing records will be updated and new records will be added. Use this endpoint to modify domain DNS configuration.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "overwrite": {
      "type": "boolean",
      "description": "If `true`, resource records (RRs) matching name and type will be deleted and new RRs will be created,\notherwise resource records' ttl's are updated and new records are appended.\nIf no matching RRs are found, they are created."
    },
    "zone": {
      "type": "array",
      "description": "zone parameter",
      "items": {
        "type": "object",
        "description": "zone parameter",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the record (use `@` for wildcard name)"
          },
          "records": {
            "type": "array",
            "description": "Records assigned to the name",
            "items": {
              "type": "object",
              "description": "records parameter",
              "properties": {
                "content": {
                  "type": "string",
                  "description": "Content of the name record"
                }
              },
              "required": [
                "content"
              ]
            }
          },
          "ttl": {
            "type": "integer",
            "description": "TTL (Time-To-Live) of the record"
          },
          "type": {
            "type": "string",
            "description": "Type of the record",
            "enum": [
              "A",
              "AAAA",
              "CNAME",
              "ALIAS",
              "MX",
              "TXT",
              "NS",
              "SOA",
              "SRV",
              "CAA"
            ]
          }
        },
        "required": [
          "name",
          "records",
          "type"
        ]
      }
    }
  },
  "required": [
    "domain",
    "zone"
  ]
}
Annotations
{
  "title": "Update DNS records",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
DNS_validateDNSRecordsV1Validate DNS records prior to update for the selected domain. If the validation is successful, the response will contain `200 Success` code. If there is validation error, the response will fail with `422 Validation error` code. Use this endpoint to verify DNS record validity before applying changes.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "overwrite": {
      "type": "boolean",
      "description": "If `true`, resource records (RRs) matching name and type will be deleted and new RRs will be created,\notherwise resource records' ttl's are updated and new records are appended.\nIf no matching RRs are found, they are created."
    },
    "zone": {
      "type": "array",
      "description": "zone parameter",
      "items": {
        "type": "object",
        "description": "zone parameter",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the record (use `@` for wildcard name)"
          },
          "records": {
            "type": "array",
            "description": "Records assigned to the name",
            "items": {
              "type": "object",
              "description": "records parameter",
              "properties": {
                "content": {
                  "type": "string",
                  "description": "Content of the name record"
                }
              },
              "required": [
                "content"
              ]
            }
          },
          "ttl": {
            "type": "integer",
            "description": "TTL (Time-To-Live) of the record"
          },
          "type": {
            "type": "string",
            "description": "Type of the record",
            "enum": [
              "A",
              "AAAA",
              "CNAME",
              "ALIAS",
              "MX",
              "TXT",
              "NS",
              "SOA",
              "SRV",
              "CAA"
            ]
          }
        },
        "required": [
          "name",
          "records",
          "type"
        ]
      }
    }
  },
  "required": [
    "domain",
    "zone"
  ]
}
Annotations
{
  "title": "Validate DNS records",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_acceptIncomingDomainMoveV1Accept an incoming move for a specified domain. The provided WHOIS profiles become the contacts of the domain, so they must belong to your account and satisfy the requirements of the TLD. Only the contact types the domain actually uses are applied, but all four profile IDs have to be provided. The move has to still be waiting for your decision, already accepted moves cannot be accepted again. Accepting does not complete the move. A confirmation email is sent to the email address of the new owner contact, and the domain changes hands only after the change is confirmed from it. Until then the move stays in the `activating` status, which can be followed with the [incoming move endpoint](#tag/domains-move). Use this endpoint to take ownership of a domain offered to you.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "domain_contacts": {
      "type": "object",
      "description": "WHOIS profiles of the accepting account. Only the contact types required by the TLD are applied, but all four IDs must be provided.",
      "properties": {
        "owner_id": {
          "type": "integer",
          "description": "Owner contact WHOIS record ID"
        },
        "admin_id": {
          "type": "integer",
          "description": "Administrative contact WHOIS record ID"
        },
        "billing_id": {
          "type": "integer",
          "description": "Billing contact WHOIS record ID"
        },
        "tech_id": {
          "type": "integer",
          "description": "Technical contact WHOIS record ID"
        }
      },
      "required": [
        "owner_id",
        "admin_id",
        "billing_id",
        "tech_id"
      ]
    }
  },
  "required": [
    "domain",
    "domain_contacts"
  ]
}
Annotations
{
  "title": "Accept incoming domain move",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
domains_cancelOutgoingDomainMoveV1Cancel an outgoing move for a specified domain. The move can only be cancelled while the receiving account has not accepted it yet. The domain stays in your account. Use this endpoint to withdraw a move you no longer want to complete.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Cancel outgoing domain move",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
domains_cancelPendingIRTPVerificationV1Cancel a pending IRTP verification. Use this endpoint to back out of a WHOIS change that is stuck waiting on registrant confirmation, for example when the confirmation email cannot be received, without waiting out the 5-day expiry.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Cancel pending IRTP verification",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
domains_changeWHOISProfileForDomainV1Change WHOIS contact profile for a domain. Repoints the given contact roles to a new WHOIS profile and submits the change to the registry. The profile currently assigned to those roles is resolved automatically; the request fails if the given roles are not all on the same profile today. Changing transfer sensitive fields on the owner contact starts an IRTP verification. The change is processed asynchronously. Use this endpoint to move a registered domain onto different contact information.
Input schema
{
  "type": "object",
  "properties": {
    "new_whois_id": {
      "type": "integer",
      "description": "WHOIS profile ID to assign to the domain"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "change_for": {
      "type": "array",
      "description": "Contact roles to repoint to the new WHOIS profile",
      "items": {
        "type": "string",
        "description": "change_for parameter",
        "enum": [
          "owner",
          "admin",
          "billing",
          "tech"
        ]
      }
    }
  },
  "required": [
    "new_whois_id",
    "domain",
    "change_for"
  ]
}
Annotations
{
  "title": "Change WHOIS profile for domain",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
domains_checkDomainAvailabilityV1Check availability of domain names across multiple TLDs. Multiple TLDs can be checked at once. If you want alternative domains with response, provide only one TLD and set `with_alternatives` to `true`. TLDs should be provided without leading dot (e.g. `com`, `net`, `org`). Endpoint has rate limit of 90 requests per minute. Use this endpoint to verify domain availability before purchase.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name (without TLD)"
    },
    "tlds": {
      "type": "array",
      "description": "TLDs list",
      "items": {
        "type": "string",
        "description": "TLD without leading dot"
      }
    },
    "with_alternatives": {
      "type": "boolean",
      "description": "Should response include alternatives"
    }
  },
  "required": [
    "domain",
    "tlds"
  ]
}
Annotations
{
  "title": "Check domain availability",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_claimFreeDomainTransferV1Claim a free domain transfer available on your account and start the transfer. Unlike purchasing a transfer, this consumes a free domain transfer you already have, so no payment method is required. Before making request, unlock the domain at the current registrar and get its authorization code. The transfer is validated first, so domains which cannot be transferred are rejected before the free domain transfer is consumed. A successful response means the transfer has been started. Completion depends on the current registrar and can be followed with the [transfer list endpoint](#tag/domains-transfer). If no WHOIS information is provided, default contact information for that TLD will be used. Before making request, ensure WHOIS information for desired TLD exists in your account. Requests which cannot be fulfilled are rejected with an error code in the response body. Use this endpoint to transfer a domain using a free domain transfer from your account.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "auth_code": {
      "type": "string",
      "description": "Authorization code from the current registrar"
    },
    "domain_contacts": {
      "type": "object",
      "description": "Domain contact information",
      "properties": {
        "owner_id": {
          "type": "integer",
          "description": "Owner contact WHOIS record ID"
        },
        "admin_id": {
          "type": "integer",
          "description": "Administrative contact WHOIS record ID"
        },
        "billing_id": {
          "type": "integer",
          "description": "Billing contact WHOIS record ID"
        },
        "tech_id": {
          "type": "integer",
          "description": "Technical contact WHOIS record ID"
        }
      }
    },
    "should_keep_ns": {
      "type": "boolean",
      "description": "Keep the existing nameservers of the domain"
    }
  },
  "required": [
    "domain",
    "auth_code"
  ]
}
Annotations
{
  "title": "Claim free domain transfer",
  "readOnlyHint": false,
  "destructiveHint": false
}
domains_claimFreeDomainV1Claim a free domain available on your account and register it. Unlike purchasing a domain, this consumes a free domain you already have, so no payment method is required. A successful response means the domain is registered. If registration fails, login to [hPanel](https://hpanel.hostinger.com/) and check domain registration status. If no WHOIS information is provided, default contact information for that TLD will be used. Before making request, ensure WHOIS information for desired TLD exists in your account. Some TLDs require `additional_details` to be provided and these will be validated before claiming. Requests which cannot be fulfilled are rejected with an error code in the response body, for example `2037` when no free domain is available. Use this endpoint to register a domain using a free domain from your account.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "domain_contacts": {
      "type": "object",
      "description": "Domain contact information",
      "properties": {
        "owner_id": {
          "type": "integer",
          "description": "Owner contact WHOIS record ID"
        },
        "admin_id": {
          "type": "integer",
          "description": "Administrative contact WHOIS record ID"
        },
        "billing_id": {
          "type": "integer",
          "description": "Billing contact WHOIS record ID"
        },
        "tech_id": {
          "type": "integer",
          "description": "Technical contact WHOIS record ID"
        }
      }
    },
    "additional_details": {
      "type": "object",
      "description": "Additional registration data, possible values depends on TLD",
      "properties": {}
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Claim free domain",
  "readOnlyHint": false,
  "destructiveHint": false
}
domains_createDomainForwardingV1Create domain forwarding configuration. Use this endpoint to set up domain redirects to other URLs.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "redirect_type": {
      "type": "string",
      "description": "Redirect type",
      "enum": [
        "301",
        "302"
      ]
    },
    "redirect_url": {
      "type": "string",
      "description": "URL to forward domain to"
    }
  },
  "required": [
    "domain",
    "redirect_type",
    "redirect_url"
  ]
}
Annotations
{
  "title": "Create domain forwarding",
  "readOnlyHint": false,
  "destructiveHint": false
}
domains_createWHOISProfileV1Create WHOIS contact profile. Use this endpoint to add new contact information for domain registration.
Input schema
{
  "type": "object",
  "properties": {
    "tld": {
      "type": "string",
      "description": "TLD of the domain (without leading dot)"
    },
    "country": {
      "type": "string",
      "description": "ISO 3166 2-letter country code"
    },
    "entity_type": {
      "type": "string",
      "description": "Legal entity type",
      "enum": [
        "individual",
        "organization"
      ]
    },
    "tld_details": {
      "type": "object",
      "description": "TLD details",
      "properties": {}
    },
    "whois_details": {
      "type": "object",
      "description": "WHOIS details",
      "properties": {}
    }
  },
  "required": [
    "tld",
    "entity_type",
    "country",
    "whois_details"
  ]
}
Annotations
{
  "title": "Create WHOIS profile",
  "readOnlyHint": false,
  "destructiveHint": false
}
domains_deleteDomainForwardingV1Delete domain forwarding data. Use this endpoint to remove redirect configuration from domains.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Delete domain forwarding",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
domains_deleteWHOISProfileV1Delete WHOIS contact profile. Use this endpoint to remove unused contact profiles from account.
Input schema
{
  "type": "object",
  "properties": {
    "whoisId": {
      "type": "integer",
      "description": "WHOIS ID"
    }
  },
  "required": [
    "whoisId"
  ]
}
Annotations
{
  "title": "Delete WHOIS profile",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
domains_disableDomainLockV1Disable domain lock for the domain. Domain lock needs to be disabled before transferring the domain to another registrar. Use this endpoint to prepare domains for transfer to other registrars.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Disable domain lock",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
domains_disablePrivacyProtectionV1Disable privacy protection for the domain. When privacy protection is disabled, domain owner's personal information is visible in public WHOIS database. Use this endpoint to make domain owner's information publicly visible.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Disable privacy protection",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
domains_enableDomainLockV1Enable domain lock for the domain. When domain lock is enabled, the domain cannot be transferred to another registrar without first disabling the lock. Use this endpoint to secure domains against unauthorized transfers.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Enable domain lock",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
domains_enablePrivacyProtectionV1Enable privacy protection for the domain. When privacy protection is enabled, domain owner's personal information is hidden from public WHOIS database. Use this endpoint to protect domain owner's personal information from public view.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Enable privacy protection",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
domains_getDomainAuthorizationCodeV1Retrieve the authorization (EPP) code for a specified domain so it can be transferred away from Hostinger to another registrar. Requesting a new code invalidates any code retrieved previously. Use this endpoint to obtain the code required to transfer a domain to another registrar.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Get domain authorization code",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_getDomainDetailsV1Retrieve detailed information for specified domain. Use this endpoint to view comprehensive domain configuration and status.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Get domain details",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_getDomainForwardingV1Retrieve domain forwarding data. Use this endpoint to view current redirect configuration for domains.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Get domain forwarding",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_getDomainListV1Retrieve all domains associated with your account. Use this endpoint to view user's domain portfolio.
Input schema
{
  "type": "object",
  "properties": {},
  "required": []
}
Annotations
{
  "title": "Get domain list",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_getDomainRenewalInformationV1Retrieve renewal information for a specified domain, including its status and current expiration date. Use this endpoint to build renewal automation and expiry monitoring for a single domain.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Get domain renewal information",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_getIncomingDomainMoveListV1Retrieve all domains other Hostinger accounts are moving to your account. Moves of every status are returned, including the ones which already completed. Use this endpoint to find domains waiting for you to accept them.
Input schema
{
  "type": "object",
  "properties": {},
  "required": []
}
Annotations
{
  "title": "Get incoming domain move list",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_getIncomingDomainMoveV1Retrieve the incoming move for a specified domain. Returns 404 when no account is moving this domain to you. Use this endpoint to check whether a domain addressed to you is still waiting to be accepted.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "force_sync": {
      "type": "boolean",
      "description": "Re-check the move against the registry before responding. Only has an effect while the move is in the `activating` status."
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Get incoming domain move",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_getOutgoingDomainMoveListV1Retrieve all domains you are moving to other Hostinger accounts. Only moves which have not completed yet are returned. Use this endpoint to track moves you have initiated and the accounts they are addressed to.
Input schema
{
  "type": "object",
  "properties": {},
  "required": []
}
Annotations
{
  "title": "Get outgoing domain move list",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_getOutgoingDomainMoveV1Retrieve the outgoing move for a specified domain. Returns 404 when the domain has no move in progress. Use this endpoint to track the status of a move you have initiated for a single domain.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Get outgoing domain move",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_getPendingIRTPVerificationV1Retrieve a pending IRTP verification for a domain. Both the old and new registrant must confirm it before the WHOIS change takes effect. Use this endpoint to check the status of a WHOIS change awaiting registrant confirmation.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Get pending IRTP verification",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_getTransferListV1Retrieve all domain transfers in your portfolio. Use this endpoint to monitor incoming and outgoing registrar transfers across your domains.
Input schema
{
  "type": "object",
  "properties": {},
  "required": []
}
Annotations
{
  "title": "Get transfer list",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_getTransferV1Retrieve the transfer for a specified domain. Use this endpoint to track an incoming or outgoing registrar transfer and its status.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Get transfer",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_getWHOISProfileListV1Retrieve WHOIS contact profiles. Use this endpoint to view available contact profiles for domain registration.
Input schema
{
  "type": "object",
  "properties": {
    "tld": {
      "type": "string",
      "description": "Filter by TLD (without leading dot)"
    }
  },
  "required": []
}
Annotations
{
  "title": "Get WHOIS profile list",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_getWHOISProfileUsageV1Retrieve domain list where provided WHOIS contact profile is used. Use this endpoint to view which domains use specific contact profiles.
Input schema
{
  "type": "object",
  "properties": {
    "whoisId": {
      "type": "integer",
      "description": "WHOIS ID"
    }
  },
  "required": [
    "whoisId"
  ]
}
Annotations
{
  "title": "Get WHOIS profile usage",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_getWHOISProfileV1Retrieve a WHOIS contact profile. Use this endpoint to view domain registration contact information.
Input schema
{
  "type": "object",
  "properties": {
    "whoisId": {
      "type": "integer",
      "description": "WHOIS ID"
    }
  },
  "required": [
    "whoisId"
  ]
}
Annotations
{
  "title": "Get WHOIS profile",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_purchaseNewDomainV1Purchase and register a new domain name. If registration fails, login to [hPanel](https://hpanel.hostinger.com/) and check domain registration status. If no payment method is provided, your default payment method will be used automatically. If no WHOIS information is provided, default contact information for that TLD will be used. Before making request, ensure WHOIS information for desired TLD exists in your account. Some TLDs require `additional_details` to be provided and these will be validated before completing purchase. Use this endpoint to register new domains for users.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "item_id": {
      "type": "string",
      "description": "Catalog price item ID"
    },
    "payment_method_id": {
      "type": "integer",
      "description": "Payment method ID, default will be used if not provided"
    },
    "domain_contacts": {
      "type": "object",
      "description": "Domain contact information",
      "properties": {
        "owner_id": {
          "type": "integer",
          "description": "Owner contact WHOIS record ID"
        },
        "admin_id": {
          "type": "integer",
          "description": "Administrative contact WHOIS record ID"
        },
        "billing_id": {
          "type": "integer",
          "description": "Billing contact WHOIS record ID"
        },
        "tech_id": {
          "type": "integer",
          "description": "Technical contact WHOIS record ID"
        }
      }
    },
    "additional_details": {
      "type": "object",
      "description": "Additional registration data, possible values depends on TLD",
      "properties": {}
    },
    "coupons": {
      "type": "array",
      "description": "Discount coupon codes",
      "items": {
        "type": "string",
        "description": "coupons parameter"
      }
    }
  },
  "required": [
    "domain",
    "item_id"
  ]
}
Annotations
{
  "title": "Purchase new domain",
  "readOnlyHint": false,
  "destructiveHint": false
}
domains_rejectIncomingDomainMoveV1Reject an incoming move for a specified domain. The domain stays in the account which initiated the move. Moves you have already accepted cannot be rejected anymore. Use this endpoint to decline a domain you do not want to take over.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Reject incoming domain move",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
domains_setWHOISProfileAsDefaultV1Set WHOIS contact profile as default. The default profile is pre-selected for the TLD it belongs to when registering new domains. Use this endpoint to avoid picking contact information for every registration.
Input schema
{
  "type": "object",
  "properties": {
    "whoisId": {
      "type": "integer",
      "description": "WHOIS ID"
    }
  },
  "required": [
    "whoisId"
  ]
}
Annotations
{
  "title": "Set WHOIS profile as default",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
domains_startOutgoingDomainMoveV1Initiate a move of a specified domain to another Hostinger account. The receiving account has to already exist and accept the move before the domain changes hands. The domain must be active. The subscription it belongs to is resolved automatically, and the request is rejected with a 404 status code when the domain has no domain subscription of its own. Domains protected by premium protection require an additional verification step, such requests are rejected with a 428 status code. Use this endpoint to hand a domain over to another Hostinger user.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "new_customer_email": {
      "type": "string",
      "description": "Email address of the Hostinger account receiving the domain"
    }
  },
  "required": [
    "domain",
    "new_customer_email"
  ]
}
Annotations
{
  "title": "Start outgoing domain move",
  "readOnlyHint": false,
  "destructiveHint": false
}
domains_suggestDomainNamesFromADescriptionV1Suggest available domain names based on a free-text description of your project. Suggestions are generated by an AI model, so they differ between calls. Endpoint has rate limit of 90 requests per minute. Use this endpoint to find a domain name when you only know what the website is about.
Input schema
{
  "type": "object",
  "properties": {
    "description": {
      "type": "string",
      "description": "Free-text description of the project the domain is needed for"
    },
    "limit": {
      "type": "integer",
      "description": "Amount of domain names to suggest"
    }
  },
  "required": [
    "description",
    "limit"
  ]
}
Annotations
{
  "title": "Suggest domain names from a description",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_suggestDomainNamesFromADomainV1Suggest available domain names based on a domain name you already have in mind. Suggestions are generated by an AI model, so they differ between calls. Endpoint has rate limit of 90 requests per minute. Use this endpoint when the domain you wanted is taken and you need close alternatives.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name to base the suggestions on"
    },
    "limit": {
      "type": "integer",
      "description": "Amount of domain names to suggest"
    }
  },
  "required": [
    "domain",
    "limit"
  ]
}
Annotations
{
  "title": "Suggest domain names from a domain",
  "readOnlyHint": true,
  "destructiveHint": false
}
domains_unsetDefaultWHOISProfileV1Unset WHOIS contact profile as default. The profile itself is kept, it is only no longer pre-selected for its TLD. Use this endpoint to stop reusing contact information for new registrations.
Input schema
{
  "type": "object",
  "properties": {
    "whoisId": {
      "type": "integer",
      "description": "WHOIS ID"
    }
  },
  "required": [
    "whoisId"
  ]
}
Annotations
{
  "title": "Unset default WHOIS profile",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
domains_updateDomainForwardingV1Update domain forwarding configuration. Use this endpoint to modify existing redirect configuration for domains.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "redirect_type": {
      "type": "string",
      "description": "Redirect type",
      "enum": [
        "301",
        "302"
      ]
    },
    "redirect_url": {
      "type": "string",
      "description": "URL to forward domain to"
    }
  },
  "required": [
    "domain",
    "redirect_type",
    "redirect_url"
  ]
}
Annotations
{
  "title": "Update domain forwarding",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
domains_updateDomainNameserversV1Set nameservers for a specified domain. Be aware, that improper nameserver configuration can lead to the domain being unresolvable or unavailable. Use this endpoint to configure custom DNS hosting for domains.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "ns1": {
      "type": "string",
      "description": "First name server"
    },
    "ns2": {
      "type": "string",
      "description": "Second name server"
    },
    "ns3": {
      "type": "string",
      "description": "Third name server"
    },
    "ns4": {
      "type": "string",
      "description": "Fourth name server"
    }
  },
  "required": [
    "domain",
    "ns1",
    "ns2"
  ]
}
Annotations
{
  "title": "Update domain nameservers",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
ecommerce_cancelAnOrderV1Cancel the order and optionally email the customer. Returns the updated order summary.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store that owns the order."
    },
    "order_id": {
      "type": "string",
      "description": "The ID of the order to cancel."
    },
    "notify_customer": {
      "type": "boolean",
      "description": "Whether to email the customer about the cancellation. Defaults to true."
    }
  },
  "required": [
    "store_id",
    "order_id"
  ]
}
Annotations
{
  "title": "Cancel an order",
  "readOnlyHint": false,
  "destructiveHint": false
}
ecommerce_createADiscountV1Create a discount for a store. Fixed discounts take an amount in the smallest currency unit (e.g. $10 is 1000); percentage discounts take a whole-number value between 1 and 100. Free-shipping discounts ignore value. Returns the created discount.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store to create the discount for."
    },
    "code": {
      "type": "string",
      "description": "The discount code customers enter at checkout."
    },
    "name": {
      "type": "string",
      "description": "A human-friendly discount name."
    },
    "type": {
      "type": "string",
      "description": "The discount type.",
      "enum": [
        "percentage",
        "fixed",
        "free_shipping"
      ]
    },
    "value": {
      "type": "integer",
      "description": "For percentage discounts a whole number 1-100; for fixed discounts an amount in the smallest currency unit (e.g. $10 is 1000). Ignored for free_shipping."
    },
    "allocation": {
      "type": "string",
      "description": "Whether the discount applies to the cart total or to each eligible item.",
      "enum": [
        "total",
        "item"
      ]
    },
    "starts_at": {
      "type": "string",
      "description": "When the discount becomes active. A bare date (2026-11-27) anchors to time_zone. Defaults to now when omitted."
    },
    "ends_at": {
      "type": "string",
      "description": "When the discount expires. A bare date runs to the end of that day in time_zone. Never expires when omitted."
    },
    "usage_limit": {
      "type": "integer",
      "description": "Maximum number of times the discount can be redeemed."
    },
    "min_cart_value": {
      "type": "integer",
      "description": "Minimum cart value in the smallest currency unit required for the discount to apply."
    },
    "time_zone": {
      "type": "string",
      "description": "IANA time zone used to interpret starts_at and ends_at."
    }
  },
  "required": [
    "store_id",
    "code",
    "type",
    "value"
  ]
}
Annotations
{
  "title": "Create a discount",
  "readOnlyHint": false,
  "destructiveHint": false
}
ecommerce_createAPaymentProviderConnectLinkV1Create an onboarding link for connecting a payment gateway to the store. Returns the gateway onboarding URL for the merchant to open and a deep-link into the store admin.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store to connect the payment provider to."
    },
    "provider_id": {
      "type": "string",
      "description": "The ID of the payment gateway to connect, e.g. stripe."
    }
  },
  "required": [
    "store_id",
    "provider_id"
  ]
}
Annotations
{
  "title": "Create a payment provider connect link",
  "readOnlyHint": false,
  "destructiveHint": false
}
ecommerce_createAProductImageUploadURLV1Returns a signed URL to upload a product image to (multipart/form-data POST). Then call the attach-image endpoint with the returned object_name to scan and attach it to the product.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store the product belongs to."
    },
    "product_id": {
      "type": "string",
      "description": "The ID of the product the image will be attached to."
    }
  },
  "required": [
    "store_id",
    "product_id"
  ]
}
Annotations
{
  "title": "Create a product image upload URL",
  "readOnlyHint": false,
  "destructiveHint": false
}
ecommerce_createAProductVariantV1Add a variant to a product along one or more option dimensions (e.g. Size, Color). Options missing from the product are created automatically; provide a value for every option the product already has. Prices are integers in the smallest currency unit and default to the store currency. Returns the created variant.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store that owns the product."
    },
    "product_id": {
      "type": "string",
      "description": "The ID of the product to add the variant to."
    },
    "title": {
      "type": "string",
      "description": "The variant title. Defaults to the option values joined with ' / ' (e.g. 'Red / L')."
    },
    "sku": {
      "type": "string",
      "description": "The variant SKU."
    },
    "options": {
      "type": "array",
      "description": "Option name/value pairs that distinguish this variant, e.g. [{name: Size, value: M}]. Options missing from the product are created; provide a value for every option the product already has.",
      "items": {
        "type": "object",
        "description": "options parameter",
        "properties": {
          "name": {
            "type": "string",
            "description": "Option name, e.g. Size."
          },
          "value": {
            "type": "string",
            "description": "Option value for this variant, e.g. M."
          }
        },
        "required": [
          "name",
          "value"
        ]
      }
    },
    "prices": {
      "type": "array",
      "description": "Prices per currency. Amounts are integers in the smallest currency unit. A free item is amount: 0.",
      "items": {
        "type": "object",
        "description": "prices parameter",
        "properties": {
          "amount": {
            "type": "integer",
            "description": "Price in the smallest currency unit (e.g. cents)."
          },
          "sale_amount": {
            "type": "integer",
            "description": "Optional sale price in the smallest currency unit; must be lower than amount."
          },
          "currency": {
            "type": "string",
            "description": "ISO 4217 currency code. Defaults to the store's default currency when omitted."
          }
        },
        "required": [
          "amount"
        ]
      }
    },
    "inventory_quantity": {
      "type": "integer",
      "description": "Units in stock. Defaults to 0."
    },
    "manage_inventory": {
      "type": "boolean",
      "description": "Whether stock is tracked for this variant. Defaults to false."
    }
  },
  "required": [
    "store_id",
    "product_id",
    "options"
  ]
}
Annotations
{
  "title": "Create a product variant",
  "readOnlyHint": false,
  "destructiveHint": false
}
ecommerce_createASalesChannelV1Create a sales channel for a store. A "custom" channel is headless: build your own frontend and keep your catalog, orders, shipping and payments in sync through the Ecommerce API. A "quick-link" channel is a hosted one-page store whose handle is auto-generated.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store to create the sales channel for."
    },
    "type": {
      "type": "string",
      "description": "Sales channel type. \"custom\" is a headless channel: it requires a name and takes an optional public url.\n\"quick-link\" is a one-page store whose handle is auto-generated; it supports neither name nor url.",
      "enum": [
        "custom",
        "quick-link"
      ]
    },
    "name": {
      "type": "string",
      "description": "Merchant-facing custom name. Required for custom channels; not supported for quick-link."
    },
    "url": {
      "type": "string",
      "description": "Optional public url for the channel. Custom channels only; not supported for quick-link."
    }
  },
  "required": [
    "store_id",
    "type"
  ]
}
Annotations
{
  "title": "Create a sales channel",
  "readOnlyHint": false,
  "destructiveHint": false
}
ecommerce_createDigitalProductV1Create a published digital product with a single variant and an optional external download link.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store to create the product in."
    },
    "name": {
      "type": "string",
      "description": "The product name."
    },
    "price": {
      "type": "integer",
      "description": "Price in the smallest currency unit (e.g. cents). Must be positive."
    },
    "description": {
      "type": "string",
      "description": "The product description."
    },
    "currency": {
      "type": "string",
      "description": "ISO 4217 currency code. Defaults to the store's default currency when omitted."
    },
    "download_url": {
      "type": "string",
      "description": "Optional external download link delivered to the customer after purchase."
    }
  },
  "required": [
    "store_id",
    "name",
    "price"
  ]
}
Annotations
{
  "title": "Create digital product",
  "readOnlyHint": false,
  "destructiveHint": false
}
ecommerce_createPhysicalProductV1Create a published physical product with a single variant priced in the store currency.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store to create the product in."
    },
    "name": {
      "type": "string",
      "description": "The product name."
    },
    "price": {
      "type": "integer",
      "description": "Price in the smallest currency unit (e.g. cents). Must be positive."
    },
    "description": {
      "type": "string",
      "description": "The product description."
    },
    "currency": {
      "type": "string",
      "description": "ISO 4217 currency code. Defaults to the store's default currency when omitted."
    }
  },
  "required": [
    "store_id",
    "name",
    "price"
  ]
}
Annotations
{
  "title": "Create physical product",
  "readOnlyHint": false,
  "destructiveHint": false
}
ecommerce_createStoreV1Create a new store for your account. A primary sales channel is created alongside the store.
Input schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "name parameter"
    },
    "country_code": {
      "type": "string",
      "description": "ISO 3166-1 alpha-2 country code."
    },
    "company_email": {
      "type": "string",
      "description": "company_email parameter"
    },
    "company_name": {
      "type": "string",
      "description": "company_name parameter"
    },
    "language": {
      "type": "string",
      "description": "ISO 639-1 language code."
    },
    "sales_channel": {
      "type": "object",
      "description": "sales_channel parameter",
      "properties": {
        "type": {
          "type": "string",
          "description": "Sales channel type. Only \"custom\" channels can be created via the API.",
          "enum": [
            "custom"
          ]
        },
        "external_id": {
          "type": "string",
          "description": "External identifier for the sales channel."
        }
      }
    }
  },
  "required": []
}
Annotations
{
  "title": "Create store",
  "readOnlyHint": false,
  "destructiveHint": false
}
ecommerce_deleteAProductV1Delete a product and its variants from the store. A subscription product with active subscribers is archived instead of deleted so its data stays available.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store that owns the product."
    },
    "product_id": {
      "type": "string",
      "description": "The ID of the product to delete."
    }
  },
  "required": [
    "store_id",
    "product_id"
  ]
}
Annotations
{
  "title": "Delete a product",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
ecommerce_deleteAProductVariantV1Delete a single variant from the product.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store that owns the product."
    },
    "product_id": {
      "type": "string",
      "description": "The ID of the product that owns the variant."
    },
    "variant_id": {
      "type": "string",
      "description": "The ID of the variant to delete."
    }
  },
  "required": [
    "store_id",
    "product_id",
    "variant_id"
  ]
}
Annotations
{
  "title": "Delete a product variant",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
ecommerce_deleteStoreV1Soft-delete a store owned by your account. The underlying store data is preserved; only the store is marked as deleted.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store to delete."
    }
  },
  "required": [
    "store_id"
  ]
}
Annotations
{
  "title": "Delete store",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
ecommerce_enableManualPaymentMethodV1Enable a manual payment method so the store can accept orders without an online payment provider.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store to enable manual payment for."
    },
    "title": {
      "type": "string",
      "description": "Optional display name shown to customers at checkout."
    }
  },
  "required": [
    "store_id"
  ]
}
Annotations
{
  "title": "Enable manual payment method",
  "readOnlyHint": false,
  "destructiveHint": false
}
ecommerce_fulfilAnOrderV1Create a fulfilment for the order and attach tracking in one call. Omit items to fulfil every remaining unfulfilled item. Returns the updated order summary.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store that owns the order."
    },
    "order_id": {
      "type": "string",
      "description": "The ID of the order to fulfil."
    },
    "items": {
      "type": "array",
      "description": "Line items to fulfil. Omit to fulfil every remaining unfulfilled item.",
      "items": {
        "type": "object",
        "description": "items parameter",
        "properties": {
          "line_item_id": {
            "type": "string",
            "description": "The line item to fulfil, from the order detail items[].id."
          },
          "quantity": {
            "type": "integer",
            "description": "Quantity of the line item to fulfil."
          }
        },
        "required": [
          "line_item_id",
          "quantity"
        ]
      }
    },
    "tracking_number": {
      "type": "string",
      "description": "Carrier tracking number for the shipment."
    },
    "tracking_url": {
      "type": "string",
      "description": "Public tracking URL for the shipment. Requires tracking_number."
    },
    "notify_customer": {
      "type": "boolean",
      "description": "Whether to email the customer about the fulfilment. Defaults to true."
    }
  },
  "required": [
    "store_id",
    "order_id"
  ]
}
Annotations
{
  "title": "Fulfil an order",
  "readOnlyHint": false,
  "destructiveHint": false
}
ecommerce_getCustomStorefrontSetupInstructionsV1Retrieve step-by-step setup instructions, formatted as Markdown, for connecting a custom sales channel to your store and keeping your catalog, orders, shipping and payments in sync through the Ecommerce API.
Input schema
{
  "type": "object",
  "properties": {},
  "required": []
}
Annotations
{
  "title": "Get custom storefront setup instructions",
  "readOnlyHint": true,
  "destructiveHint": false
}
ecommerce_getStoreMetadataV1Get a store's readiness metadata: whether payment methods and shipping are configured, plus its default currency. Useful to verify prerequisites before building a storefront.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store to read metadata for."
    }
  },
  "required": [
    "store_id"
  ]
}
Annotations
{
  "title": "Get store metadata",
  "readOnlyHint": true,
  "destructiveHint": false
}
ecommerce_getStoresV1Retrieve the stores associated with your account.
Input schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "description": "Page number"
    }
  },
  "required": []
}
Annotations
{
  "title": "Get stores",
  "readOnlyHint": true,
  "destructiveHint": false
}
ecommerce_listDiscountsV1List a store's discounts. Filter by free text over code and name, or by disabled state. Amounts for fixed discounts are integers in the smallest currency unit; percentage discounts carry a whole-number value between 1 and 100.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store to list discounts for."
    },
    "q": {
      "type": "string",
      "description": "Free-text search over discount code and name."
    },
    "is_disabled": {
      "type": "string",
      "description": "Filter by disabled state.",
      "enum": [
        "true",
        "false"
      ]
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    }
  },
  "required": [
    "store_id"
  ]
}
Annotations
{
  "title": "List discounts",
  "readOnlyHint": true,
  "destructiveHint": false
}
ecommerce_listProductsV1List a store's products newest first as lean summaries (name, status, thumbnail, variant count and price range). Prices are integers in the smallest currency unit and live on variants. Filter by status, free text or a set of product ids. Use include=variants to embed each product's variants with prices and inventory, and include=media to embed its media.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store to list products for."
    },
    "product_ids": {
      "type": "array",
      "description": "Restrict to these product ids. Doubles as a single-product lookup. Up to 200 ids.",
      "items": {
        "type": "string",
        "description": "product_ids parameter"
      }
    },
    "status": {
      "type": "array",
      "description": "Product statuses to include.",
      "items": {
        "type": "string",
        "description": "status parameter",
        "enum": [
          "draft",
          "proposed",
          "published",
          "rejected",
          "archived"
        ]
      }
    },
    "q": {
      "type": "string",
      "description": "Free-text search over product title and SKU."
    },
    "include": {
      "type": "array",
      "description": "Opt-in heavy data: \"variants\" embeds each product's variants; \"media\" embeds its media.",
      "items": {
        "type": "string",
        "description": "include parameter",
        "enum": [
          "variants",
          "media"
        ]
      }
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    }
  },
  "required": [
    "store_id"
  ]
}
Annotations
{
  "title": "List products",
  "readOnlyHint": true,
  "destructiveHint": false
}
ecommerce_listProductVariantsV1List a product's variants, ordered by rank, with their options, prices and inventory. Prices are integers in the smallest currency unit and live on variants.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store that owns the product."
    },
    "product_id": {
      "type": "string",
      "description": "The ID of the product to list variants for."
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    }
  },
  "required": [
    "store_id",
    "product_id"
  ]
}
Annotations
{
  "title": "List product variants",
  "readOnlyHint": true,
  "destructiveHint": false
}
ecommerce_listSalesChannelsV1List a store's active sales channels with their full metadata.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store to list sales channels for."
    }
  },
  "required": [
    "store_id"
  ]
}
Annotations
{
  "title": "List sales channels",
  "readOnlyHint": true,
  "destructiveHint": false
}
ecommerce_listStoreOrdersV1List a store's orders newest first as summaries. Filter by status, payment or fulfilment status, customer email, order number or a free-text query. Amounts are in the smallest currency unit. Retrieve a single order for its line items, addresses and fulfilments.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store to list orders for."
    },
    "status": {
      "type": "array",
      "description": "Order statuses to include.",
      "items": {
        "type": "string",
        "description": "status parameter",
        "enum": [
          "pending",
          "completed",
          "archived",
          "canceled",
          "requires_action"
        ]
      }
    },
    "payment_status": {
      "type": "array",
      "description": "Payment statuses to include. A paid order is \"captured\".",
      "items": {
        "type": "string",
        "description": "payment_status parameter",
        "enum": [
          "not_paid",
          "awaiting",
          "captured",
          "partially_refunded",
          "refunded",
          "canceled",
          "requires_action",
          "not_required"
        ]
      }
    },
    "fulfillment_status": {
      "type": "array",
      "description": "Fulfilment statuses to include.",
      "items": {
        "type": "string",
        "description": "fulfillment_status parameter",
        "enum": [
          "not_fulfilled",
          "partially_fulfilled",
          "fulfilled",
          "partially_shipped",
          "shipped",
          "partially_returned",
          "returned",
          "canceled",
          "requires_action"
        ]
      }
    },
    "email": {
      "type": "string",
      "description": "Customer email, matched exactly."
    },
    "display_id": {
      "type": "string",
      "description": "The order number the merchant and customer see."
    },
    "q": {
      "type": "string",
      "description": "Free-text search over customer name, email, order number and line items."
    },
    "created_at_from": {
      "type": "string",
      "description": "Earliest creation time to include, inclusive. Accepts a date or ISO date-time (UTC)."
    },
    "created_at_to": {
      "type": "string",
      "description": "Latest creation time to include, inclusive. A bare date covers that whole day."
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    }
  },
  "required": [
    "store_id"
  ]
}
Annotations
{
  "title": "List store orders",
  "readOnlyHint": true,
  "destructiveHint": false
}
ecommerce_listStorePaymentProvidersV1List a store's payment providers, split into providers already connected to the store and gateways available to install. Never exposes gateway credentials, secrets, or configuration.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store to list payment providers for."
    },
    "include_currency_unsupported": {
      "type": "boolean",
      "description": "Include gateways that do not support the store currency in the available list."
    }
  },
  "required": [
    "store_id"
  ]
}
Annotations
{
  "title": "List store payment providers",
  "readOnlyHint": true,
  "destructiveHint": false
}
ecommerce_retrieveAnOrderV1Retrieve one order in full: line items (each with the id the fulfil endpoint needs), addresses, the totals breakdown and fulfilments with tracking. Amounts are in the smallest currency unit.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store that owns the order."
    },
    "order_id": {
      "type": "string",
      "description": "The ID of the order to retrieve."
    }
  },
  "required": [
    "store_id",
    "order_id"
  ]
}
Annotations
{
  "title": "Retrieve an order",
  "readOnlyHint": true,
  "destructiveHint": false
}
ecommerce_setStoreShippingV1Set the flat-rate shipping price for a store, creating the shipping zone if it does not exist yet.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store to configure shipping for."
    },
    "price": {
      "type": "integer",
      "description": "Flat shipping rate in the smallest currency unit (e.g. cents). Use 0 for free shipping."
    }
  },
  "required": [
    "store_id",
    "price"
  ]
}
Annotations
{
  "title": "Set store shipping",
  "readOnlyHint": false,
  "destructiveHint": false
}
ecommerce_updateAProductV1Update a product's name, description or status. Set status to published to make it buyable, draft to hide it, or archived to retire it. Variants, prices and inventory are managed through the variant endpoints, not here. Returns the updated product summary.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store that owns the product."
    },
    "product_id": {
      "type": "string",
      "description": "The ID of the product to update."
    },
    "name": {
      "type": "string",
      "description": "The product name."
    },
    "description": {
      "type": "string",
      "description": "The product description."
    },
    "status": {
      "type": "string",
      "description": "Set \"published\" to make the product buyable, \"draft\" to hide it, or \"archived\" to retire it.",
      "enum": [
        "draft",
        "published",
        "archived"
      ]
    }
  },
  "required": [
    "store_id",
    "product_id"
  ]
}
Annotations
{
  "title": "Update a product",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
ecommerce_updateProductVariantsInBatchV1Update up to 100 existing variants in place by id — title, inventory, stock tracking and prices. Variants omitted from the request are left untouched. Prices replace the variant's existing prices in full. Returns the updated variants.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store that owns the product."
    },
    "product_id": {
      "type": "string",
      "description": "The ID of the product whose variants are being updated."
    },
    "variants": {
      "type": "array",
      "description": "Variants to update in place by id, up to 100. Variants omitted from the list are left untouched.",
      "items": {
        "type": "object",
        "description": "variants parameter",
        "properties": {
          "variant_id": {
            "type": "string",
            "description": "The id of the variant to update."
          },
          "title": {
            "type": "string",
            "description": "The variant title."
          },
          "inventory_quantity": {
            "type": "integer",
            "description": "Units in stock."
          },
          "manage_inventory": {
            "type": "boolean",
            "description": "Whether stock is tracked for this variant."
          },
          "prices": {
            "type": "array",
            "description": "The full list of prices for the variant, replacing the existing ones. A free item is amount: 0.",
            "items": {
              "type": "object",
              "description": "prices parameter",
              "properties": {
                "amount": {
                  "type": "integer",
                  "description": "Price in the smallest currency unit (e.g. cents)."
                },
                "sale_amount": {
                  "type": "integer",
                  "description": "Optional sale price in the smallest currency unit; must be lower than amount."
                },
                "currency": {
                  "type": "string",
                  "description": "ISO 4217 currency code. Defaults to the store's default currency."
                }
              },
              "required": [
                "amount"
              ]
            }
          }
        },
        "required": [
          "variant_id"
        ]
      }
    }
  },
  "required": [
    "store_id",
    "product_id",
    "variants"
  ]
}
Annotations
{
  "title": "Update product variants in batch",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
ecommerce_updateSalesChannelV1Update a custom sales channel. The merchant-facing `name` and the public `url` (returned as the channel `domain`) can be changed. Pass `null` to clear a value.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store that owns the sales channel."
    },
    "sales_channel_id": {
      "type": "string",
      "description": "The ID of the sales channel to update."
    },
    "name": {
      "type": "string",
      "description": "Merchant-facing custom name shown in the sales channels list. Pass null to clear it."
    },
    "url": {
      "type": "string",
      "description": "Public address where the custom sales channel lives. Pass null to clear it."
    }
  },
  "required": [
    "store_id",
    "sales_channel_id"
  ]
}
Annotations
{
  "title": "Update sales channel",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
ecommerce_uploadAndAttachAProductImageV1Fetch a raster image (JPEG, PNG, GIF or WebP, max 15MB) from a URL and attach it to a product in a single call. The image is virus-scanned and validated by content, then stored on the CDN. Set is_thumbnail to make it the product's primary image.
Input schema
{
  "type": "object",
  "properties": {
    "store_id": {
      "type": "string",
      "description": "The ID of the store the product belongs to."
    },
    "product_id": {
      "type": "string",
      "description": "The ID of the product to attach the image to."
    },
    "image_url": {
      "type": "string",
      "description": "Publicly reachable URL of the raster image (JPEG, PNG, GIF or WebP), maximum 15MB. The image is\nfetched, virus-scanned and validated by content, then stored on the CDN. SVG is not accepted.\nProvide either this or object_name."
    },
    "object_name": {
      "type": "string",
      "description": "Key returned by the upload-url endpoint. Provide this instead of image_url to attach an uploaded image."
    },
    "is_thumbnail": {
      "type": "boolean",
      "description": "When true, the image becomes the product's thumbnail (primary image). When omitted, it becomes the\nthumbnail only if the product does not have one yet."
    }
  },
  "required": [
    "store_id",
    "product_id"
  ]
}
Annotations
{
  "title": "Upload and attach a product image",
  "readOnlyHint": false,
  "destructiveHint": false
}
horizons_createWebsiteV1Create new Hostinger Horizons website from the given message.\n Use this tool when user asks you to create a website, landing page, blog or any other type of application.\n This tool initiates the website creation process and returns a website URL and ID. The generation happens asynchronously.\n After invoking this tool, your chat reply must be EXACTLY 1 sentence summarizing that Hostinger Horizons is now creating their website and it will be ready in a few minutes and you should provide the website URL to the user immediately Do not write code.\n\nTo edit afterwards, users must go to Hostinger Horizons interface in the provided website URL. If the tool call fails with an error, you should provide a clear explanation of the error and do not generate code yourself in the chat. \n TECHNOLOGY STACK CONSTRAINTS (STRICTLY ENFORCED):\n The environment is limited to the following technologies. You MUST NOT use, suggest, or implement any technology outside this list:\n \n - Language: JavaScript ONLY. - Languages like TypeScript, Rust, Python, Java, PHP, etc., are STRICTLY PROHIBITED.\n - Framework: React.\n - Navigation: React Router.\n - Styling: TailwindCSS.\n - Components: shadcn/ui (built with @radix-ui primitives).\n - Icons: Lucide React.\n - Animations: Framer Motion.\n \n BACKEND & DATA STORAGE:\n - Horizons integrated backend is the EXCLUSIVE solution for persistent data storage, authentication, and database needs.\n - Local databases (SQLite, MySQL, etc.) are STRICTLY PROHIBITED.\n - Third-party services (Firebase, AWS Amplify) are allowed ONLY if explicitly requested by the user.\n \n MAPS:\n - OpenStreetMap is the default provider.\n - Alternative providers (Google Maps, Mapbox) are allowed ONLY if explicitly requested by the user.\n
Input schema
{
  "type": "object",
  "properties": {
    "message": {
      "type": "array",
      "description": "message parameter",
      "items": {
        "type": "object",
        "description": "message parameter",
        "properties": {
          "type": {
            "type": "string",
            "description": "type parameter",
            "enum": [
              "text"
            ]
          },
          "text": {
            "type": "string",
            "description": "Detailed project specification.\nInclude purpose, key features, user flows, data models, and design preferences.\nThe specification should be detailed and comprehensive, covering all aspects of the project."
          }
        },
        "required": [
          "type",
          "text"
        ]
      }
    }
  },
  "required": [
    "message"
  ]
}
Annotations
{
  "title": "Create website",
  "readOnlyHint": false,
  "destructiveHint": false
}
horizons_getWebsiteV1Get a link for the user to edit their website in Hostinger Horizons interface.\n Use this tool when user wants to modify, edit or add new features to an existing website.\n Websites can only be edited in Hostinger Horizons interface in the provided website URL.
Input schema
{
  "type": "object",
  "properties": {
    "websiteId": {
      "type": "string",
      "description": "The website ID"
    }
  },
  "required": [
    "websiteId"
  ]
}
Annotations
{
  "title": "Get website",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_activateWordPressPluginV1Activate an installed plugin on a WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field). This operation is asynchronous: a successful response only means the activation job has been queued.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "plugin": {
      "type": "string",
      "description": "Slug of the installed plugin to activate."
    }
  },
  "required": [
    "username",
    "software",
    "plugin"
  ]
}
Annotations
{
  "title": "Activate WordPress plugin",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_activateWordPressThemeV1Activate an installed theme on a WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field). This operation is asynchronous: a successful response only means the activation job has been queued.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "theme": {
      "type": "string",
      "description": "Slug of the installed theme to activate."
    }
  },
  "required": [
    "username",
    "software",
    "theme"
  ]
}
Annotations
{
  "title": "Activate WordPress theme",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_analyseFailedNode_jsBuildV1Returns an AI analysis of why a build failed and how to fix it, based on the build logs, the project file list and package.json. Only builds in the `failed` state can be analysed; any other state returns 422. When no analysis could be produced both `analysis` and `solution` are null, in which case read `Get NodeJS build logs` instead. Each call runs the analysis again, so call it once per failed build and keep the result. Limited to 5 calls per minute per API client (429 above that).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "uuid": {
      "type": "string",
      "description": "Build UUID"
    }
  },
  "required": [
    "username",
    "domain",
    "uuid"
  ]
}
Annotations
{
  "title": "Analyse failed Node.js build",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_changeDatabasePasswordV1Changes the password for the specified database user. The database name must be the full name returned by the list databases endpoint. The password must also be updated in any website configuration that uses this database.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "name": {
      "type": "string",
      "description": "Full database name as returned by the list databases endpoint."
    },
    "password": {
      "type": "string",
      "description": "New database user password."
    }
  },
  "required": [
    "username",
    "name",
    "password"
  ]
}
Annotations
{
  "title": "Change database password",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_checkIfWooCommerceIsInstalledV1Check whether WooCommerce is installed on any WordPress installation of a domain. Optionally filter by domain to scope the check.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Filter by domain name (case-insensitive substring match)"
    }
  },
  "required": []
}
Annotations
{
  "title": "Check if WooCommerce is installed",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_checkIfWordPressInstallationsAreValidV1Check whether one or more WordPress installations are valid and working correctly. Detects broken installations caused by missing files, broken plugins, themes and similar issues. Provide the WordPress installation (software) identifiers in the body. They can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software_ids": {
      "type": "array",
      "description": "WordPress installation (software) identifiers to validate.",
      "items": {
        "type": "string",
        "description": "Software identifier"
      }
    },
    "force": {
      "type": "boolean",
      "description": "Force fresh validation without cache. Preferable for troubleshooting purposes."
    }
  },
  "required": [
    "username",
    "software_ids"
  ]
}
Annotations
{
  "title": "Check if WordPress installations are valid",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_clearNode_jsRuntimeLogsV1Empties the Node.js application's runtime log file. This cannot be undone, so confirm with the user before calling it. Returns success even when no log file exists yet. Use it before reproducing a problem so the next `Get Node.js runtime logs` call returns only fresh entries; start that call with `period` again instead of reusing a `from_line` from before the clear.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "Clear Node.js runtime logs",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_clearWebsiteCacheV1Permanently clears all server-side cache for the website at once. Use it when content was updated and needs to be visible immediately, or after making major changes. Also purges the Hostinger CDN cache when CDN is enabled on the website. For a WordPress installation living in a subdirectory, pass the directory query parameter to clear its cache.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "directory": {
      "type": "string",
      "description": "Directory of the website installation to clear, relative to the website root.\nDefaults to the website root."
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "Clear website cache",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_createAccountCronJobV1Creates a cron job for the specified account from a schedule expression and a command. Returns the created cron job, including its uid, which is required to delete the cron job or fetch its output.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "time": {
      "type": "string",
      "description": "Cron schedule expression (for example \"0 2 * * *\" runs daily at 02:00)."
    },
    "command": {
      "type": "string",
      "description": "Command to execute on the schedule."
    }
  },
  "required": [
    "username",
    "time",
    "command"
  ]
}
Annotations
{
  "title": "Create account cron job",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_createAccountDatabaseV1Creates a database with a database user and password for the specified account. The database name and user are automatically prefixed with the account username when needed.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "name": {
      "type": "string",
      "description": "Database name. If the account username prefix is omitted, it is added automatically."
    },
    "user": {
      "type": "string",
      "description": "Database user. If the account username prefix is omitted, it is added automatically."
    },
    "password": {
      "type": "string",
      "description": "Database user password."
    },
    "website_domain": {
      "type": "string",
      "description": "Website domain assigned to the database."
    }
  },
  "required": [
    "username",
    "name",
    "user",
    "password",
    "website_domain"
  ]
}
Annotations
{
  "title": "Create account database",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_createDatabaseRemoteConnectionV1Allows a remote host to connect to the specified database. Provide an IPv4/IPv6 address, or "%" to allow any host. The database name must be the full name returned by the list databases endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "name": {
      "type": "string",
      "description": "Full database name as returned by the list databases endpoint."
    },
    "ip": {
      "type": "string",
      "description": "Remote host to allow: an IPv4/IPv6 address, or \"%\" for any host."
    }
  },
  "required": [
    "username",
    "name",
    "ip"
  ]
}
Annotations
{
  "title": "Create database remote connection",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_createLoginLinksV1Create temporary auto-login links for the specified WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    }
  },
  "required": [
    "username",
    "software"
  ]
}
Annotations
{
  "title": "Create login links",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_createWebsiteParkedDomainV1Create a parked or alias domain for the selected website. Provide a domain name or IP address to park on the website so it serves the same content as the parent domain.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "parked_domain": {
      "type": "string",
      "description": "Domain name or IP address to park on the selected website"
    }
  },
  "required": [
    "username",
    "domain",
    "parked_domain"
  ]
}
Annotations
{
  "title": "Create website parked domain",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_createWebsiteRedirectV1Creates a redirect from a URL on the selected website to another URL or IP address.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "from": {
      "type": "string",
      "description": "Source URL on the selected website"
    },
    "to": {
      "type": "string",
      "description": "Destination URL or IP address"
    }
  },
  "required": [
    "username",
    "domain",
    "from",
    "to"
  ]
}
Annotations
{
  "title": "Create website redirect",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_createWebsiteSubdomainV1Create a new subdomain for the selected website. Provide a subdomain prefix and, optionally, a custom directory or the website public directory to use as the subdomain root.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "subdomain": {
      "type": "string",
      "description": "Subdomain prefix to create under the selected website"
    },
    "directory": {
      "type": "string",
      "description": "Directory name for the subdomain relative to the website root"
    },
    "is_using_public_directory": {
      "type": "boolean",
      "description": "Use the website public directory as the subdomain root directory"
    }
  },
  "required": [
    "username",
    "domain",
    "subdomain"
  ]
}
Annotations
{
  "title": "Create website subdomain",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_createWebsiteV1Create a new website for the authenticated client. Provide the domain name and associated order ID to create a new website. The datacenter_code parameter is required when creating the first website on a new hosting plan - this will set up and configure new hosting account in the selected datacenter. Subsequent websites will be hosted on the same datacenter automatically. Website creation takes up to a few minutes to complete. Check the websites list endpoint to see when your new website becomes available.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name for the website. Cannot start with \"www.\""
    },
    "order_id": {
      "type": "integer",
      "description": "ID of the associated order"
    },
    "datacenter_code": {
      "type": "string",
      "description": "Datacenter code. This parameter is required when creating the first website on a new hosting plan."
    }
  },
  "required": [
    "domain",
    "order_id"
  ]
}
Annotations
{
  "title": "Create website",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_deactivateWordPressPluginV1Deactivate an installed plugin on a WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field). This operation is asynchronous: a successful response only means the deactivation job has been queued.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "plugin": {
      "type": "string",
      "description": "Slug of the installed plugin to deactivate."
    }
  },
  "required": [
    "username",
    "software",
    "plugin"
  ]
}
Annotations
{
  "title": "Deactivate WordPress plugin",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_deleteAccountCronJobV1Permanently deletes the cron job identified by its uid. The uid is returned by the list cron jobs endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "uid": {
      "type": "string",
      "description": "Unique identifier of the cron job as returned by the list cron jobs endpoint."
    }
  },
  "required": [
    "username",
    "uid"
  ]
}
Annotations
{
  "title": "Delete account cron job",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_deleteAccountDatabaseV1Permanently deletes a database and its remote connections. The database name must be the full name returned by the list databases endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "name": {
      "type": "string",
      "description": "Full database name as returned by the list databases endpoint."
    }
  },
  "required": [
    "username",
    "name"
  ]
}
Annotations
{
  "title": "Delete account database",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_deleteDatabaseRemoteConnectionV1Permanently removes a remote-access rule, revoking the given host's remote access to the database. Identify the rule with the required ip query parameter (the IPv4/IPv6 address, or "%", exactly as returned by the list remote connections endpoint). The database name must be the full name returned by the list databases endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "name": {
      "type": "string",
      "description": "Full database name as returned by the list databases endpoint."
    },
    "ip": {
      "type": "string",
      "description": "Remote host to revoke: the IPv4/IPv6 address, or \"%\",\nexactly as returned by the list remote connections endpoint."
    }
  },
  "required": [
    "username",
    "name",
    "ip"
  ]
}
Annotations
{
  "title": "Delete database remote connection",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_deleteWebsiteParkedDomainV1Delete an existing parked or alias domain from the selected website. Use this endpoint to remove parked domains that are no longer needed.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "parkedDomain": {
      "type": "string",
      "description": "parkedDomain parameter"
    }
  },
  "required": [
    "username",
    "domain",
    "parkedDomain"
  ]
}
Annotations
{
  "title": "Delete website parked domain",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_deleteWebsiteRedirectV1Permanently deletes the redirect identified by its source URL. Pass the `from` value exactly as returned by the list redirects endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "from": {
      "type": "string",
      "description": "Source URL returned by the list redirects endpoint."
    }
  },
  "required": [
    "username",
    "domain",
    "from"
  ]
}
Annotations
{
  "title": "Delete website redirect",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_deleteWebsiteSubdomainV1Delete an existing subdomain from the selected website. Use this endpoint to remove subdomains that are no longer needed.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "subdomain": {
      "type": "string",
      "description": "subdomain parameter"
    }
  },
  "required": [
    "username",
    "domain",
    "subdomain"
  ]
}
Annotations
{
  "title": "Delete website subdomain",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_deleteWebsiteV1This endpoint permanently removes a website and all of its data. This action cannot be undone. Before calling it, make sure the user understands the consequences and explicitly confirms that they want to proceed. All website files, databases and related configuration will be removed. The hosting plan itself is kept, so a new website can be created on it afterwards. Supported websites: main and addon domain websites on web hosting plans, and Website Builder websites. Parked domains and subdomains cannot be deleted with this endpoint. The domain must be the exact website domain, not a preview domain or an alias. Returns 404 when the domain does not exist or does not belong to the authenticated client. Website removal is processed asynchronously and can take a few minutes to complete. The response returns before the removal finishes.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Delete website",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_deleteWordPressInstallationV1Delete the specified WordPress installation, with optional file and database removal. This removes all associated components including plugins, themes, staging websites and any other related data. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    }
  },
  "required": [
    "username",
    "software"
  ]
}
Annotations
{
  "title": "Delete WordPress installation",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_deployJsApplicationDeploy 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.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name associated with the hosting account (e.g., example.com)"
    },
    "archivePath": {
      "type": "string",
      "description": "Absolute or relative path to the application archive file. Supported formats: zip, tar, tar.gz, tgz, 7z, gz, gzip. If user provides directory path, create archive from it before proceeding. IMPORTANT: the archive must ONLY contain application source files, not the build output, skip node_modules directory."
    },
    "removeArchive": {
      "type": "boolean",
      "description": "Whether to remove the archive file after successful deployment (default: false)"
    }
  },
  "required": [
    "domain",
    "archivePath"
  ]
}
Annotations
{
  "title": "Deploy JavaScript application",
  "readOnlyHint": false,
  "destructiveHint": true
}
hosting_deployStaticSiteArchiveV1Deploy a static application from an archive file. WARNING: this overwrites the website's existing contents and cannot be undone — verify this is intended before calling this endpoint. This endpoint allows you to deploy a static application from an archive file that has been uploaded to the website's directory. This only works for static sites (pre-built HTML/CSS/JS with no build step). For Node.js applications, use `Create NodeJS build from archive` instead, or `Start Node.js build` if the archive is already uploaded. For WordPress sites, use `Import WordPress website`.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "archive_path": {
      "type": "string",
      "description": "Relative path to the archive file from website root directory"
    }
  },
  "required": [
    "username",
    "domain",
    "archive_path"
  ]
}
Annotations
{
  "title": "Deploy static site archive",
  "readOnlyHint": false,
  "destructiveHint": true
}
hosting_deployStaticWebsiteDeploy 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.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name associated with the hosting account (e.g., example.com)"
    },
    "archivePath": {
      "type": "string",
      "description": "Absolute or relative path to the static website archive file. Supported formats: zip, tar, tar.gz, tgz, 7z, gz, gzip. If user provides directory path, create archive from it before proceeding using EXACTLY this naming pattern: directoryname_YYYYMMDD_HHMMSS.zip (e.g., mystaticwebsite_20250115_143022.zip)"
    },
    "removeArchive": {
      "type": "boolean",
      "description": "Whether to remove the archive file after successful deployment (default: false)"
    }
  },
  "required": [
    "domain",
    "archivePath"
  ]
}
Annotations
{
  "title": "Deploy static website",
  "readOnlyHint": false,
  "destructiveHint": true
}
hosting_deployWordpressPluginDeploy 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.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name associated with the hosting account (e.g., example.com)"
    },
    "slug": {
      "type": "string",
      "description": "WordPress plugin slug (e.g., omnisend)"
    },
    "pluginPath": {
      "type": "string",
      "description": "Absolute or relative path to the plugin directory containing all plugin files"
    }
  },
  "required": [
    "domain",
    "slug",
    "pluginPath"
  ]
}
Annotations
{
  "title": "Deploy WordPress plugin",
  "readOnlyHint": false,
  "destructiveHint": true
}
hosting_deployWordPressPluginV1Deploy a WordPress plugin from an already uploaded directory. This endpoint allows you to deploy a WordPress plugin that has been uploaded to the website's directory. The plugin will be activated and made available in the WordPress admin panel.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "slug": {
      "type": "string",
      "description": "Slug of the plugin"
    },
    "plugin_path": {
      "type": "string",
      "description": "Relative path to the plugin directory from wp-content/plugins"
    }
  },
  "required": [
    "username",
    "domain",
    "slug",
    "plugin_path"
  ]
}
Annotations
{
  "title": "Deploy WordPress plugin",
  "readOnlyHint": false,
  "destructiveHint": true
}
hosting_deployWordpressThemeDeploy 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.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name associated with the hosting account (e.g., example.com)"
    },
    "slug": {
      "type": "string",
      "description": "WordPress theme slug (e.g., twentytwentyfive)"
    },
    "themePath": {
      "type": "string",
      "description": "Absolute or relative path to the theme directory containing all theme files"
    },
    "activate": {
      "type": "boolean",
      "description": "Whether to activate the theme after deployment (default: false)"
    }
  },
  "required": [
    "domain",
    "slug",
    "themePath"
  ]
}
Annotations
{
  "title": "Deploy WordPress theme",
  "readOnlyHint": false,
  "destructiveHint": true
}
hosting_deployWordPressThemeV1Deploy a WordPress theme from an already uploaded directory. This endpoint allows you to deploy a WordPress theme that has been uploaded to the website's directory. The theme can be optionally activated after deployment.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "slug": {
      "type": "string",
      "description": "Slug of the theme"
    },
    "theme_path": {
      "type": "string",
      "description": "Relative path to the theme directory from wp-content/themes"
    },
    "is_activated": {
      "type": "boolean",
      "description": "Whether to activate the theme after deployment"
    }
  },
  "required": [
    "username",
    "domain",
    "slug",
    "theme_path"
  ]
}
Annotations
{
  "title": "Deploy WordPress theme",
  "readOnlyHint": false,
  "destructiveHint": true
}
hosting_detectWordPressInstallationsV1Trigger a background scan to detect WordPress installations for the account. This operation is asynchronous: a successful response only means the scan has been queued. Poll GET /api/hosting/v1/wordpress/installations to fetch the detected installations once the scan completes.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    }
  },
  "required": [
    "username"
  ]
}
Annotations
{
  "title": "Detect WordPress installations",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_generateAFreeSubdomainV1Generate a unique free subdomain that can be used for hosting services without purchasing custom domains. Free subdomains allow you to start using hosting services immediately and you can always connect a custom domain to your site later.
Input schema
{
  "type": "object",
  "properties": {},
  "required": []
}
Annotations
{
  "title": "Generate a free subdomain",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_generateUploadURLV1Generate a file browser upload URL with authentication credentials for uploading files directly to a website's file storage. Returns `url`, `auth_key` and `rest_auth_key`. Use these to upload a file to the website's `public_html` directory via the TUS resumable upload protocol (TUS 1.0.0). Send `X-Auth: {auth_key}` and `X-Auth-Rest: {rest_auth_key}` headers on every request below. 1. Create the upload: `POST` to `{url}/{relative_file_path}?override=true` with headers `upload-length: {file size in bytes}` and `upload-offset: 0`. Expect `201 Created`. 2. Upload the file: send the file bytes to the same location (any TUS 1.0.0 client, or `PATCH` requests with an `upload-offset` header tracking progress) until complete. `relative_file_path` is the destination path inside `public_html`, e.g. `app.zip`. Instead of a TUS client, plain `curl` also works: ``` FILE=app.zip SIZE=$(stat -f%z "$FILE") # stat -c%s on Linux curl -i -X POST "{url}/${FILE}?override=true" \ -H "X-Auth: {auth_key}" \ -H "X-Auth-Rest: {rest_auth_key}" \ -H "Tus-Resumable: 1.0.0" \ -H "Upload-Length: ${SIZE}" \ -H "Upload-Offset: 0" # -> 201 Created curl -i -X PATCH "{url}/${FILE}?override=true" \ -H "X-Auth: {auth_key}" \ -H "X-Auth-Rest: {rest_auth_key}" \ -H "Tus-Resumable: 1.0.0" \ -H "Content-Type: application/offset+octet-stream" \ -H "Upload-Offset: 0" \ --data-binary "@${FILE}" # -> 204 No Content, Upload-Offset response header equals SIZE when done ```
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "Account username"
    },
    "domain": {
      "type": "string",
      "description": "Website domain"
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "Generate upload URL",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_getCronJobOutputV1Returns the output captured from the last execution of the cron job identified by its uid. The uid is returned by the list cron jobs endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "uid": {
      "type": "string",
      "description": "Unique identifier of the cron job as returned by the list cron jobs endpoint."
    }
  },
  "required": [
    "username",
    "uid"
  ]
}
Annotations
{
  "title": "Get cron job output",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_getInstallationJWTTokenV1Return a JWT token used to authenticate requests against the specified WordPress installation, including its MCP (Model Context Protocol) endpoint. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    }
  },
  "required": [
    "username",
    "software"
  ]
}
Annotations
{
  "title": "Get installation JWT token",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_getNode_jsBuildDetailsV1Returns one build by UUID: its state (`pending`, `running`, `completed`, `failed`), the options it ran with and timestamps. Poll this while a build is pending or running. When it is failed, read `Get NodeJS build logs` and `Analyse failed Node.js build` for the cause. Returns 404 when the UUID does not belong to a build of this website.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "uuid": {
      "type": "string",
      "description": "Build UUID"
    }
  },
  "required": [
    "username",
    "domain",
    "uuid"
  ]
}
Annotations
{
  "title": "Get Node.js build details",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_getNode_jsBuildSettingsFromArchiveV1Auto-detect Node.js build settings from a package.json inside an archive already on the server. Use this before calling `Start Node.js Build` to preview what settings will be used, or to let the user review and override values (framework, node version, root directory, output directory, build script) before committing to a build. The archive must already be present on the website's file storage. Use the `Generate Upload URL` endpoint to obtain credentials and upload the archive first.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "archive_path": {
      "type": "string",
      "description": "The path to the archive file relative to the document root of the vhost"
    }
  },
  "required": [
    "username",
    "domain",
    "archive_path"
  ]
}
Annotations
{
  "title": "Get Node.js build settings from archive",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_getNode_jsBuildSettingsV1Returns the build settings stored for the website: framework (`app_type`), Node.js version, root and output directory, build script, entry file and package manager. Stored settings drive Git auto-deployment builds. A build started through the API uses the values sent in that request and saves them here only when no settings exist yet. Returns 404 until the first build or the first settings update stores them. Use this after a failed build to check whether the framework or the entry file were detected wrong, then fix them with the `Update Node.js build settings` endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "Get Node.js build settings",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_getNode_jsRuntimeLogsV1Returns the Node.js application's runtime console log entries, oldest first, each with timestamp, level and message. On the first call send `period` (`1h`, `1d`, `1w` or `1m`) and optionally `levels` and `limit` (1-5000, default 1000); when more entries match than `limit`, the newest are kept. To poll for new entries send `total_lines + 1` from the previous response as `from_line` and omit `period`; `period` and `from_line` cannot be combined. Lines that are not JSON with a timestamp, level and message are skipped, so `logs` may hold fewer than `limit` entries while `total_lines` counts every raw line. Entries with a timestamp before `last_deployed_at` belong to the previous deployment. Returns an empty `logs` list when the application has not written a log file yet.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "period": {
      "type": "string",
      "description": "Time window for the first fetch. Required when `from_line` is not sent.",
      "enum": [
        "1h",
        "1d",
        "1w",
        "1m"
      ]
    },
    "from_line": {
      "type": "integer",
      "description": "1-based line of the log file to start from. For polling send `total_lines + 1` from the\nprevious response. Cannot be combined with `period`."
    },
    "limit": {
      "type": "integer",
      "description": "Maximum number of log entries to return. When more entries match, the newest are kept."
    },
    "levels": {
      "type": "array",
      "description": "Return only entries with these log levels, sent as a comma-separated list, e.g. ERROR,WARN.\nMatching runs on the raw log line, so entries written with numeric levels (for example by\npino) are excluded while this filter is set.",
      "items": {
        "type": "string",
        "description": "levels parameter",
        "enum": [
          "LOG",
          "ERROR",
          "WARN",
          "INFO",
          "DEBUG",
          "TRACE"
        ]
      }
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "Get Node.js runtime logs",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_getNodeJSBuildLogsV1Retrieve logs from a specific Node.js build process. To stream live output while a build is running, poll this endpoint repeatedly while the build state is `running`, passing the previously returned `lines` count as `from_line` to fetch only new output since the last call. Log content may contain ANSI escape sequences (color codes).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "uuid": {
      "type": "string",
      "description": "Build UUID"
    },
    "from_line": {
      "type": "integer",
      "description": "Line from which to start retrieving logs"
    }
  },
  "required": [
    "username",
    "domain",
    "uuid"
  ]
}
Annotations
{
  "title": "Get NodeJS build logs",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_getPHPDetailsV1Returns the full PHP configuration for the website: current version, available versions (supported and unsupported), enabled/disabled extensions, options with their current value, default, type and the plan limit (`max`), and conflicting extension groups. Use it to check the current PHP setup before updating the version, extensions or options.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "Get PHP details",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_getPHPInfoV1Returns the full phpinfo page (HTML) for the website. Use it to debug PHP issues or inspect the complete PHP environment of the website.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "Get PHP info",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_getPhpMyAdminLinkV1Returns a direct sign-on link to phpMyAdmin for the specified database. Use this when a visual database interface is needed for SQL queries, imports, exports, or table management. The database name must be the full name returned by the list databases endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "name": {
      "type": "string",
      "description": "Full database name as returned by the list databases endpoint."
    }
  },
  "required": [
    "username",
    "name"
  ]
}
Annotations
{
  "title": "Get phpMyAdmin link",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_getWebsiteFileContentV1Get a single file's content, relative to a website's document root. Read-only; refuses symlinks, oversized files, non-text file types, and files identified as containing secrets (e.g. credential files) — none of these are returned by this endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "path": {
      "type": "string",
      "description": "File path, relative to the document root."
    },
    "from_line": {
      "type": "integer",
      "description": "Line offset to start reading from."
    },
    "max_lines": {
      "type": "integer",
      "description": "Max number of lines to return."
    }
  },
  "required": [
    "username",
    "domain",
    "path"
  ]
}
Annotations
{
  "title": "Get website file content",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_importWordpressWebsiteImport 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.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name associated with the hosting account (e.g., example.com)"
    },
    "archivePath": {
      "type": "string",
      "description": "Absolute or relative path to the website archive file. Supported formats: zip, tar, tar.gz, tgz, 7z, gz, gzip. If user provides directory path, create archive from it before proceeding using EXACTLY this naming pattern: directoryname_YYYYMMDD_HHMMSS.zip (e.g., mywebsite_20250115_143022.zip)"
    },
    "databaseDump": {
      "type": "string",
      "description": "Absolute or relative path to a database dump file (.sql)"
    }
  },
  "required": [
    "domain",
    "archivePath",
    "databaseDump"
  ]
}
Annotations
{
  "title": "Import WordPress website",
  "readOnlyHint": false,
  "destructiveHint": true
}
hosting_importWordPressWebsiteV1Import WordPress website to the specified domain. WARNING: this overwrites the website's existing contents and cannot be undone — verify this is intended before calling this endpoint. This endpoint allows you to import a WordPress website from archive and database files that have been uploaded to the website's directory.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "archive_path": {
      "type": "string",
      "description": "Path to the WordPress archive file (relative to website root)"
    },
    "sql_path": {
      "type": "string",
      "description": "Path to the database SQL file (relative to website root)"
    }
  },
  "required": [
    "username",
    "domain",
    "archive_path",
    "sql_path"
  ]
}
Annotations
{
  "title": "Import WordPress website",
  "readOnlyHint": false,
  "destructiveHint": true
}
hosting_installWordPressPluginsV1Install one or more plugins on an existing WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field). Use GET /api/hosting/v1/wordpress/plugins to discover the plugin slugs available for installation. This operation is asynchronous: a successful response only means the install job has been queued, not that the plugins are ready.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "plugins": {
      "type": "array",
      "description": "Plugin slugs to install. Use GET /api/hosting/v1/wordpress/plugins to discover available slugs.",
      "items": {
        "type": "string",
        "description": "Plugin slug"
      }
    }
  },
  "required": [
    "username",
    "software",
    "plugins"
  ]
}
Annotations
{
  "title": "Install WordPress plugins",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_installWordPressThemeV1Install a theme on an existing WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field). When the theme is one of the Hostinger themes (hostinger-blog, hostinger-affiliate-theme, hostinger-ai-theme), the optional `palette`, `layout`, and `font` fields are forwarded to the custom installer (defaults: palette1, layout1, default). For any other theme they are ignored. This operation is asynchronous: a successful response only means the install job has been queued, not that the theme is ready.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "theme": {
      "type": "string",
      "description": "Slug of the theme to install. Hostinger theme slugs (hostinger-blog, hostinger-affiliate-theme, hostinger-ai-theme) trigger the custom installer and forward the optional palette/layout/font fields; any other WordPress theme slug uses the standard installer and ignores those fields."
    },
    "palette": {
      "type": "string",
      "description": "Palette identifier. Only applied when the theme is a Hostinger theme; the default is used when omitted."
    },
    "layout": {
      "type": "string",
      "description": "Layout identifier. Only applied when the theme is a Hostinger theme; the default is used when omitted."
    },
    "font": {
      "type": "string",
      "description": "Font identifier. Only applied when the theme is a Hostinger theme; the default is used when omitted.",
      "enum": [
        "professional",
        "modern",
        "elegant",
        "creative",
        "dynamic",
        "default"
      ]
    }
  },
  "required": [
    "username",
    "software",
    "theme"
  ]
}
Annotations
{
  "title": "Install WordPress theme",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_installWordPressV1Install WordPress on an existing website. The website must already exist before calling this endpoint. To create a new website first, use POST /api/hosting/v1/websites and poll GET /api/hosting/v1/websites until it appears. Call GET /api/hosting/v1/wordpress/installations filtered by username and domain before proceeding to check whether WordPress is already installed on the target domain/path. If WordPress already exists and `overwrite` is false (the default), the async job will fail. This operation is asynchronous: a successful response only means the install job has been queued, not that WordPress is ready. Installation typically takes 1-2 minutes. Poll GET /api/hosting/v1/wordpress/installations filtered by username and domain to track progress. When the installation appears in that list, WordPress is ready.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain of the existing website where WordPress will be installed"
    },
    "site_title": {
      "type": "string",
      "description": "Title of the WordPress site"
    },
    "language": {
      "type": "string",
      "description": "WordPress locale. Defaults to en_US when omitted."
    },
    "directory": {
      "type": "string",
      "description": "Relative directory to install WordPress into. Defaults to the website root when omitted."
    },
    "overwrite": {
      "type": "boolean",
      "description": "When false (default), does not replace an existing installation. If WordPress is already installed on the domain/path, the async install job fails unless true."
    },
    "auto_updates": {
      "type": "string",
      "description": "WordPress core auto-update policy",
      "enum": [
        "all",
        "none",
        "minor"
      ]
    },
    "version": {
      "type": "string",
      "description": "WordPress core version to install. If omitted, the latest core version compatible with the account vhost PHP version is selected."
    },
    "credentials": {
      "type": "object",
      "description": "WordPress admin credentials",
      "properties": {
        "email": {
          "type": "string",
          "description": "email parameter"
        },
        "login": {
          "type": "string",
          "description": "WordPress admin username"
        },
        "password": {
          "type": "string",
          "description": "password parameter"
        }
      },
      "required": [
        "email",
        "login",
        "password"
      ]
    },
    "database": {
      "type": "object",
      "description": "Optional. If the named database already exists, it will be used for this WordPress install. Otherwise a new database is created with a generated name and random credentials.",
      "properties": {
        "name": {
          "type": "string",
          "description": "Database name (username prefix added if missing)"
        },
        "password": {
          "type": "string",
          "description": "password parameter"
        }
      }
    }
  },
  "required": [
    "username",
    "domain",
    "site_title",
    "credentials"
  ]
}
Annotations
{
  "title": "Install WordPress",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_listAccountCronJobsV1Returns the list of cron jobs configured for the specified account, including their schedule and command.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    }
  },
  "required": [
    "username"
  ]
}
Annotations
{
  "title": "List account cron jobs",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listAccountDatabasesV1Returns a paginated list of databases for the specified account. Use the domain and is_assigned filters to find databases assigned to a specific domain.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    },
    "domain": {
      "type": "string",
      "description": "Filter by domain name (case-insensitive substring match)"
    },
    "is_assigned": {
      "type": "boolean",
      "description": "When used with domain, return only databases assigned to that domain."
    },
    "search": {
      "type": "string",
      "description": "Search databases by name, user, or creation date."
    }
  },
  "required": [
    "username"
  ]
}
Annotations
{
  "title": "List account databases",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listAvailableDatacentersV1Retrieve a list of datacenters available for setting up hosting plans based on available datacenter capacity and hosting plan of your order. The first item in the list is the best match for your specific order requirements.
Input schema
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "description": "Order ID"
    }
  },
  "required": [
    "order_id"
  ]
}
Annotations
{
  "title": "List available datacenters",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listAvailableWordPressCoreUpdatesV1List available WordPress core updates for the specified installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    }
  },
  "required": [
    "username",
    "software"
  ]
}
Annotations
{
  "title": "List available WordPress core updates",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listAvailableWordPressPluginsV1List plugins recommended for installation on a WordPress installation that are not yet installed. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    }
  },
  "required": [
    "username",
    "software"
  ]
}
Annotations
{
  "title": "List available WordPress plugins",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listDatabaseRemoteConnectionsV1Returns the remote-access rules for the specified account: the remote hosts (IPv4/IPv6 addresses, or "%" for any host) allowed to connect to the account databases. Use the domain filter to only return rules for databases assigned to a specific domain.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Filter remote connections by the domain the database is assigned to.\nRules for databases not assigned to any domain are always included."
    }
  },
  "required": [
    "username"
  ]
}
Annotations
{
  "title": "List database remote connections",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listInstalledWordPressPluginsV1List plugins installed on a WordPress installation, including their status, available updates and known vulnerabilities. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "category": {
      "type": "string",
      "description": "Filter installed plugins by category.",
      "enum": [
        "cache"
      ]
    }
  },
  "required": [
    "username",
    "software"
  ]
}
Annotations
{
  "title": "List installed WordPress plugins",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listInstalledWordPressThemesV1List themes installed on a WordPress installation, including their status, available updates and known vulnerabilities. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    }
  },
  "required": [
    "username",
    "software"
  ]
}
Annotations
{
  "title": "List installed WordPress themes",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listJsDeploymentsList 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.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name associated with the hosting account (e.g., example.com)"
    },
    "page": {
      "type": "integer",
      "description": "Page number for pagination (optional)"
    },
    "perPage": {
      "type": "integer",
      "description": "Number of items per page (optional)"
    },
    "states": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "pending",
          "completed",
          "running",
          "failed"
        ]
      },
      "description": "Filter by deployment states (optional). Valid values: pending, completed, running, failed"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "List JavaScript deployments",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listNode_jsEnvironmentVariablesV1Lists the Node.js environment variables currently set for the website. Values are always masked as `********` and cannot be read back through this API. Use this endpoint to see which keys are configured or to verify a change, not to read values. To change variables, use the `Replace Node.js environment variables` endpoint. It replaces the whole set, so never copy the masked values from this response into that request; send the full desired set with real values taken from the project `.env` file or the user prompt instead.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "List Node.js environment variables",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listNode_jsVulnerabilitiesV1Lists known npm package vulnerabilities detected on a Node.js website, enriched with advisory metadata (severity, CVSS score, CVE, advisory URL). Results are sorted from the most severe to the least severe, then by publish date (newest first). Use the `severities` query parameter to filter. Vulnerabilities with `is_patchable` set to `true` can be auto-fixed via the `Patch Node.js Vulnerabilities` endpoint, which opens a GitHub pull request with updated package versions. Auto-fix is only available for websites deployed from a connected GitHub repository. Vulnerabilities with `is_patching_in_progress` set to `true` are already included in an open patch pull request; while any patch pull request is open, new patch requests for this website are rejected until it is merged or closed. Data comes from periodic dependency scans, so it may lag behind the latest deployment. An empty list means the most recent scan found no vulnerabilities; it does not guarantee the current deployment is vulnerability-free. Available on Business and Cloud Hosting plans.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "severities": {
      "type": "array",
      "description": "Severities to filter by",
      "items": {
        "type": "string",
        "description": "severities parameter",
        "enum": [
          "low",
          "moderate",
          "high",
          "critical",
          "unknown"
        ]
      }
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "List Node.js vulnerabilities",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listNodeJSBuildsV1Retrieve a paginated list of Node.js build processes for a specific website. Each build represents a single run of the Node.js build pipeline. Use the `states` query parameter to filter results by build state (pending, running, completed, failed). Use the `uuid` from a build to poll its output via the `Get Node.js Build Logs` endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    },
    "states": {
      "type": "array",
      "description": "Build states to filter by",
      "items": {
        "type": "string",
        "description": "states parameter",
        "enum": [
          "pending",
          "running",
          "completed",
          "failed"
        ]
      }
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "List NodeJS builds",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listOrdersV1Retrieve a paginated list of orders accessible to the authenticated client. This endpoint returns orders of your hosting accounts as well as orders of other client hosting accounts that have shared access with you. Use the available query parameters to filter results by order statuses or specific order IDs for more targeted results.
Input schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    },
    "statuses": {
      "type": "array",
      "description": "Filter by order statuses",
      "items": {
        "type": "string",
        "description": "statuses parameter",
        "enum": [
          "active",
          "deleting",
          "deleted",
          "suspended"
        ]
      }
    },
    "order_ids": {
      "type": "array",
      "description": "Filter by specific order IDs",
      "items": {
        "type": "integer",
        "description": "order_ids parameter"
      }
    }
  },
  "required": []
}
Annotations
{
  "title": "List orders",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listSuggestedWordPressPluginsV1List curated plugin suggestions grouped by website type. Use the returned `slug` values with POST /api/hosting/v1/accounts/{username}/wordpress/{software}/plugins/install.
Input schema
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "description": "Optionally scope suggestions to a specific order."
    }
  },
  "required": []
}
Annotations
{
  "title": "List suggested WordPress plugins",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listWebsiteFilesAndDirectoriesV1List files and directories under a website's document root. Use `directory` to browse a subdirectory relative to the document root. Symlinked entries are listed but never traversed into or resolved.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "directory": {
      "type": "string",
      "description": "Directory path to check"
    },
    "max_depth": {
      "type": "integer",
      "description": "How many directory levels deep to recurse."
    },
    "max_items": {
      "type": "integer",
      "description": "Max number of entries to return in this page."
    },
    "offset": {
      "type": "integer",
      "description": "Number of entries to skip. Page with offset + item count until reaching total_items."
    },
    "file_types": {
      "type": "array",
      "description": "Filter by entry type, e.g. file,directory. Omit for all types.",
      "items": {
        "type": "string",
        "description": "file_types parameter",
        "enum": [
          "file",
          "directory",
          "symlink",
          "other"
        ]
      }
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "List website files and directories",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listWebsiteParkedDomainsV1Retrieve all parked or alias domains created under the selected website. Use this endpoint to inspect parked domain configuration for a specific website, including the parent domain and root directory assigned to each parked domain.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "List website parked domains",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listWebsiteRedirectsV1Returns a paginated list of redirects configured for the selected website.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "List website redirects",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listWebsiteSubdomainsV1Retrieve all subdomains created under the selected website. Use this endpoint to inspect subdomain configuration for a specific website, including the parent domain and root directory assigned to each subdomain.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "List website subdomains",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listWebsitesV1Retrieve a paginated list of websites (CloudLinux, Builder, and Horizons) accessible to the authenticated client. This endpoint returns websites from your hosting accounts as well as websites from other client hosting accounts that have shared access with you. Each website includes a `website_type` field describing the type of website detected on the underlying platform (`wordpress`, `builder`, `horizons`, `nodejs`, or `other`). Some fields, such as `vhost_type`, `username`, and `root_directory`, only apply to CloudLinux websites and are null for other platforms. Use `website_types` to list only websites of a given detected type, e.g. only WordPress websites (`website_types=wordpress`) or only Node.js websites (`website_types=nodejs`). Combine with the other available query parameters to filter by username, order ID, enabled status, or domain name for more targeted results.
Input schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    },
    "username": {
      "type": "string",
      "description": "Filter by specific username"
    },
    "order_id": {
      "type": "integer",
      "description": "Order ID"
    },
    "is_enabled": {
      "type": "boolean",
      "description": "Filter by enabled status"
    },
    "domain": {
      "type": "string",
      "description": "Filter by domain name (case-insensitive substring match)"
    },
    "website_types": {
      "type": "array",
      "description": "Filter by detected website type, e.g. wordpress,nodejs. Accepts a comma-separated list.",
      "items": {
        "type": "string",
        "description": "website_types parameter",
        "enum": [
          "wordpress",
          "builder",
          "horizons",
          "nodejs",
          "other"
        ]
      }
    }
  },
  "required": []
}
Annotations
{
  "title": "List websites",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listWordPressInstallationsV1List WordPress installations accessible to the authenticated client. Use this endpoint to discover existing WordPress installations and to poll for installation status after calling the install endpoint. When a newly requested installation appears in this list, WordPress is ready. Filter by username and domain to narrow results to a specific website. Each installation includes a `valid` flag and, when invalid, a `validationError` describing why.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "Filter by specific username"
    },
    "domain": {
      "type": "string",
      "description": "Filter by domain name (case-insensitive substring match)"
    },
    "ownership": {
      "type": "string",
      "description": "Filter by ownership type. Defaults to \"owned\". Use \"all\" to include both owned and managed installations.",
      "enum": [
        "owned",
        "managed",
        "all"
      ]
    }
  },
  "required": []
}
Annotations
{
  "title": "List WordPress installations",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_listWordPressThemesV1List WordPress themes available to install. Use the returned `slug` values with POST /api/hosting/v1/accounts/{username}/wordpress/{software}/themes/install.
Input schema
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "integer",
      "description": "Optionally scope themes to a specific order."
    },
    "search": {
      "type": "string",
      "description": "Search term to match against theme names."
    }
  },
  "required": []
}
Annotations
{
  "title": "List WordPress themes",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_patchNode_jsVulnerabilitiesV1Patches the selected Node.js vulnerabilities by updating the affected package versions in `package.json` and opening a GitHub pull request in the connected repository. The customer reviews and merges the pull request; merging triggers the automatic deployment. Auto-fix is only available for websites deployed from a connected GitHub repository. Websites deployed from an archive have no auto-fix path and return a 404. The Hostinger GitHub App needs write access to the repository; without it the request fails with a 403 explaining the missing permission. Only vulnerabilities with `is_patchable` set to `true` can be patched. Non-patchable IDs in the selection are skipped; the pull request covers the patchable subset, listed in `patched_vulnerability_ids`. Selections without any patchable vulnerability are rejected with a 422. Only one patch pull request can be open at a time per website; close or merge it before patching again. Available on Business and Cloud Hosting plans.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "vulnerability_ids": {
      "type": "array",
      "description": "List of vulnerability IDs to patch, as returned by the list vulnerabilities endpoint.",
      "items": {
        "type": "string",
        "description": "vulnerability_ids parameter"
      }
    }
  },
  "required": [
    "username",
    "domain",
    "vulnerability_ids"
  ]
}
Annotations
{
  "title": "Patch Node.js vulnerabilities",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_purgeLiteSpeedCacheV1Purge the LiteSpeed Cache for the specified WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    }
  },
  "required": [
    "username",
    "software"
  ]
}
Annotations
{
  "title": "Purge LiteSpeed Cache",
  "readOnlyHint": false,
  "destructiveHint": true
}
hosting_repairDatabaseV1Repairs corrupted database tables asynchronously. Use when database errors, crashes, or corruption are reported. The database name must be the full name returned by the list databases endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "name": {
      "type": "string",
      "description": "Full database name as returned by the list databases endpoint."
    }
  },
  "required": [
    "username",
    "name"
  ]
}
Annotations
{
  "title": "Repair database",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_replaceNode_jsEnvironmentVariablesV1Replaces the website's Node.js environment variables with the ones provided. This is a full replace: any variable not in the request is deleted, and sending an empty `env_vars` array deletes every variable. Saving writes the values and restarts the running Node.js process. A restart is enough for apps that read environment variables at process start, such as Express or NestJS. It is not enough for frameworks that bake variables into the build. Next.js standalone is one of those: build-time values (including `NEXT_PUBLIC_*`) need a fresh build. After this call, use the `Start Node.js build` endpoint so those apps pick up the new values. The `List Node.js environment variables` endpoint returns masked values (`********`), so never copy values from it into this request. Always send the full desired set with real values taken from the project `.env` file or the user prompt.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "env_vars": {
      "type": "array",
      "description": "Environment variables to set. This is the full desired set: any variable not in\nthis list is deleted, and an empty array deletes every variable.",
      "items": {
        "type": "object",
        "description": "env_vars parameter",
        "properties": {
          "key": {
            "type": "string",
            "description": "Environment variable name. Must start with an uppercase letter or\nunderscore, followed by uppercase letters, digits or underscores."
          },
          "value": {
            "type": "string",
            "description": "Environment variable value."
          }
        },
        "required": [
          "key",
          "value"
        ]
      }
    }
  },
  "required": [
    "username",
    "domain",
    "env_vars"
  ]
}
Annotations
{
  "title": "Replace Node.js environment variables",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_resetPHPExtensionsV1Resets all PHP extensions of the website to their default state. Use it to recover from extension conflicts or restore the original configuration.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "Reset PHP extensions",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_restartNode_jsApplicationV1Restarts the Node.js server process for the website. Does not rebuild or redeploy the application. Use it to apply environment or configuration changes, or to recover a hung application. Only applicable to server-side applications (Express, Next.js, NestJS, etc.). Static front-end apps (React, Vue, Vite) have no persistent server process, so restarting them has no effect. Returns success even when the website has no server process to restart.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "Restart Node.js application",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_searchWordPressPluginsV1Search the WordPress.org plugin directory for plugins available to install. Use the returned `slug` values with POST /api/hosting/v1/accounts/{username}/wordpress/{software}/plugins/install.
Input schema
{
  "type": "object",
  "properties": {
    "search": {
      "type": "string",
      "description": "Search term to match against plugin names. Minimum 3 characters."
    }
  },
  "required": [
    "search"
  ]
}
Annotations
{
  "title": "Search WordPress plugins",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_setAIOptionStatusV1Enable or disable an AI option for the Hostinger Tools plugin on the specified WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "option": {
      "type": "string",
      "description": "AI option name",
      "enum": [
        "llmstxt",
        "web2agent"
      ]
    },
    "enable": {
      "type": "boolean",
      "description": "Enable (true) or disable (false) the AI option."
    }
  },
  "required": [
    "username",
    "software",
    "option",
    "enable"
  ]
}
Annotations
{
  "title": "Set AI option status",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_showAIOptionStatusV1Show the current AI option status for the Hostinger Tools plugin on the specified WordPress installation. Filter by `option` to return a single option, or omit it to return all options. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "option": {
      "type": "string",
      "description": "Filter the status by a single AI option.",
      "enum": [
        "llmstxt",
        "web2agent"
      ]
    }
  },
  "required": [
    "username",
    "software"
  ]
}
Annotations
{
  "title": "Show AI option status",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_showJsDeploymentLogsRetrieve logs for a specified JavaScript application deployment for debugging purposes in case of failure.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain name associated with the hosting account (e.g., example.com)"
    },
    "fromLine": {
      "type": "integer",
      "description": "Line from which to retrieve logs (optional, default 0)"
    },
    "buildUuid": {
      "type": "string",
      "description": "UUID of the JavaScript deployment build"
    }
  },
  "required": [
    "domain",
    "buildUuid"
  ]
}
Annotations
{
  "title": "Show JavaScript deployment logs",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_showLiteSpeedCacheStatusV1Show the LiteSpeed Cache status for the specified WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    }
  },
  "required": [
    "username",
    "software"
  ]
}
Annotations
{
  "title": "Show LiteSpeed Cache status",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_showMaintenanceStatusV1Show the maintenance mode status for the specified WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    }
  },
  "required": [
    "username",
    "software"
  ]
}
Annotations
{
  "title": "Show maintenance status",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_showMemcachedObjectCacheStatusV1Show the Memcached object cache status for the specified WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    }
  },
  "required": [
    "username",
    "software"
  ]
}
Annotations
{
  "title": "Show Memcached object cache status",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_showWordPressCoreVersionV1Show the WordPress core version for the specified installation, along with known vulnerabilities affecting it. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    }
  },
  "required": [
    "username",
    "software"
  ]
}
Annotations
{
  "title": "Show WordPress core version",
  "readOnlyHint": true,
  "destructiveHint": false
}
hosting_startNode_jsBuildV1Start a Node.js build process using files already present on the website's file storage. WARNING: on success this overwrites the website's existing contents and cannot be undone — verify this is intended before calling this endpoint. The `source_type` must be `archive` and `source_options.archive_path` must point to an existing archive file on the server (relative to the website document root). Use the `Generate Upload URL` endpoint to obtain credentials and upload the archive first. To auto-detect build settings from an archive before starting, first call the `Get Node.js Build Settings from Archive` endpoint. The returned build `uuid` can be used to poll progress and retrieve logs via the `Get Node.js Build Logs` endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "node_version": {
      "type": "integer",
      "description": "Node.js version",
      "enum": [
        18,
        20,
        22,
        24
      ]
    },
    "app_type": {
      "type": "string",
      "description": "Node.js application type",
      "enum": [
        "create-react-app",
        "gatsby",
        "vite",
        "angular",
        "react",
        "vue",
        "parcel",
        "next",
        "nuxt",
        "nest",
        "express",
        "fastify",
        "astro",
        "svelte",
        "svelte-kit",
        "hono",
        "react-router",
        "nitro",
        "other"
      ]
    },
    "root_directory": {
      "type": "string",
      "description": "Application root directory (where package.json is located) relative to public_html"
    },
    "output_directory": {
      "type": "string",
      "description": "Build output directory relative to the root directory"
    },
    "build_script": {
      "type": "string",
      "description": "Build script that will be ran to build the application"
    },
    "entry_file": {
      "type": "string",
      "description": "The main entry point file for the application"
    },
    "package_manager": {
      "type": "string",
      "description": "Package manager",
      "enum": [
        "npm",
        "yarn",
        "pnpm"
      ]
    },
    "source_type": {
      "type": "string",
      "description": "The source type of the files",
      "enum": [
        "archive"
      ]
    },
    "source_options": {
      "type": "object",
      "description": "Source-specific options",
      "properties": {
        "archive_path": {
          "type": "string",
          "description": "The path to the archive file relative to the document root of the vhost (required if source is \"archive\")"
        }
      }
    }
  },
  "required": [
    "username",
    "domain",
    "node_version",
    "app_type",
    "root_directory",
    "output_directory",
    "build_script",
    "source_type",
    "source_options"
  ]
}
Annotations
{
  "title": "Start Node.js build",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_toggleCachelessModeV1Turns development (cacheless) mode on or off, based on the enabled flag. When enabled, nothing is cached, effectively turning off all caching for the website; use it while actively developing, testing changes, debugging issues, or when real-time updates must be visible. Disable it after finishing development work to restore the performance benefits of caching.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "enabled": {
      "type": "boolean",
      "description": "Turn development (cacheless) mode on (true) or off (false) for the website."
    }
  },
  "required": [
    "username",
    "domain",
    "enabled"
  ]
}
Annotations
{
  "title": "Toggle cacheless mode",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_toggleMaintenanceModeV1Enable or disable maintenance mode for the specified WordPress installation, based on the `enabled` flag. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "enabled": {
      "type": "boolean",
      "description": "Enable (true) or disable (false) maintenance mode for the WordPress installation."
    }
  },
  "required": [
    "username",
    "software",
    "enabled"
  ]
}
Annotations
{
  "title": "Toggle maintenance mode",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_toggleMemcachedObjectCacheV1Activate or deactivate the Memcached object cache for the specified WordPress installation, based on the `enabled` flag. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field).
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "enabled": {
      "type": "boolean",
      "description": "Activate (true) or deactivate (false) the Memcached object cache for the WordPress installation."
    }
  },
  "required": [
    "username",
    "software",
    "enabled"
  ]
}
Annotations
{
  "title": "Toggle Memcached object cache",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_toggleWebsiteCacheV1Turns server-side caching for the website on or off, based on the enabled flag. Enable it for faster page loads, reduced server load, and improved user experience; recommended for production websites. Disabling may impact performance; to temporarily bypass caching while developing or debugging, prefer toggling cacheless mode instead. Does nothing if caching is already in the requested state.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "enabled": {
      "type": "boolean",
      "description": "Turn server-side caching on (true) or off (false) for the website."
    }
  },
  "required": [
    "username",
    "domain",
    "enabled"
  ]
}
Annotations
{
  "title": "Toggle website cache",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_uninstallWordPressPluginsV1Uninstall one or more plugins from a WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field). This operation is asynchronous: a successful response only means the uninstall job has been queued.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "plugins": {
      "type": "array",
      "description": "Slugs of the installed plugins to uninstall.",
      "items": {
        "type": "string",
        "description": "Plugin slug"
      }
    }
  },
  "required": [
    "username",
    "software",
    "plugins"
  ]
}
Annotations
{
  "title": "Uninstall WordPress plugins",
  "readOnlyHint": false,
  "destructiveHint": true
}
hosting_uninstallWordPressThemesV1Uninstall one or more themes from a WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field). This operation is asynchronous: a successful response only means the uninstall job has been queued.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "themes": {
      "type": "array",
      "description": "Slugs of the installed themes to uninstall.",
      "items": {
        "type": "string",
        "description": "Theme slug"
      }
    }
  },
  "required": [
    "username",
    "software",
    "themes"
  ]
}
Annotations
{
  "title": "Uninstall WordPress themes",
  "readOnlyHint": false,
  "destructiveHint": true
}
hosting_updateHostingerWordPressPluginV1Update a Hostinger plugin to its latest version on a WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field). This operation is asynchronous: a successful response only means the update job has been queued.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "slug": {
      "type": "string",
      "description": "Slug of the Hostinger plugin to update to its latest version.",
      "enum": [
        "hostinger",
        "hostinger-ai-assistant",
        "hostinger-affiliate-plugin",
        "hostinger-easy-onboarding",
        "hostinger-reach"
      ]
    }
  },
  "required": [
    "username",
    "software",
    "slug"
  ]
}
Annotations
{
  "title": "Update Hostinger WordPress plugin",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_updateNode_jsBuildSettingsV1Replaces the build settings stored for the website. Send the full set: `node_version` is required and every nullable field you omit is stored as null. Creates the settings when none exist yet. This does not start a build. Stored settings drive Git auto-deployment builds; a build started through the API uses the values sent in that request, so to rebuild with corrected settings call `Start Node.js build` with the same values. Typical fixes: a wrong `app_type` after auto-detection, or a missing `entry_file` for express, fastify, nest, nuxt and hono apps.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "node_version": {
      "type": "integer",
      "description": "Node.js major version",
      "enum": [
        18,
        20,
        22,
        24
      ]
    },
    "app_type": {
      "type": "string",
      "description": "Node.js application framework. Set it explicitly when auto-detection picked the wrong one.",
      "enum": [
        "create-react-app",
        "gatsby",
        "vite",
        "angular",
        "react",
        "vue",
        "parcel",
        "next",
        "nuxt",
        "nest",
        "express",
        "fastify",
        "astro",
        "svelte",
        "svelte-kit",
        "hono",
        "react-router",
        "nitro",
        "other"
      ]
    },
    "root_directory": {
      "type": "string",
      "description": "Application root directory (where package.json is located) relative to public_html.\nOmit it, or send \".\", for public_html itself."
    },
    "output_directory": {
      "type": "string",
      "description": "Build output directory relative to the root directory"
    },
    "build_script": {
      "type": "string",
      "description": "The package.json script that builds the application"
    },
    "entry_file": {
      "type": "string",
      "description": "The main entry point file for the application\n(required for express, fastify, nest, nuxt and hono app types)"
    },
    "package_manager": {
      "type": "string",
      "description": "Package manager used to install dependencies",
      "enum": [
        "npm",
        "yarn",
        "pnpm"
      ]
    }
  },
  "required": [
    "username",
    "domain",
    "node_version"
  ]
}
Annotations
{
  "title": "Update Node.js build settings",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_updatePHPExtensionsV1Enables or disables PHP extensions (modules) for the website. Use the Get PHP details endpoint to check the current extension states before changing them.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "enable": {
      "type": "array",
      "description": "PHP extensions to enable.",
      "items": {
        "type": "string",
        "description": "enable parameter"
      }
    },
    "disable": {
      "type": "array",
      "description": "PHP extensions to disable.",
      "items": {
        "type": "string",
        "description": "disable parameter"
      }
    }
  },
  "required": [
    "username",
    "domain"
  ]
}
Annotations
{
  "title": "Update PHP extensions",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_updatePHPOptionsV1Updates PHP options for the website (e.g. `memory_limit`, `max_execution_time`, `upload_max_filesize`). Only provide the options you want to change, inside the `options` object. Values above the account plan limit are silently capped to that limit, so the request can succeed with a smaller applied value. Call the Get PHP details endpoint afterwards to read the applied value.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "options": {
      "type": "object",
      "description": "Map of PHP options to update, keyed by option name. Only include options you want to change.",
      "properties": {}
    }
  },
  "required": [
    "username",
    "domain",
    "options"
  ]
}
Annotations
{
  "title": "Update PHP options",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_updatePHPVersionV1Changes the PHP version of the website. Use the Get PHP details endpoint to see the versions available for the website.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "domain": {
      "type": "string",
      "description": "Domain name"
    },
    "version": {
      "type": "string",
      "description": "PHP version to switch the website to."
    }
  },
  "required": [
    "username",
    "domain",
    "version"
  ]
}
Annotations
{
  "title": "Update PHP version",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
hosting_updateWordPressCoreV1Update the WordPress core for the specified installation (minor update or a specific version). Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field). This operation is asynchronous: a successful response only means the update job has been queued.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "minor": {
      "type": "boolean",
      "description": "Update the minor version only."
    },
    "version": {
      "type": "string",
      "description": "Update to a specific WordPress core version."
    }
  },
  "required": [
    "username",
    "software"
  ]
}
Annotations
{
  "title": "Update WordPress core",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_updateWordPressPluginsV1Update one or more installed plugins to their latest version on a WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field). This operation is asynchronous: a successful response only means the update job has been queued.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "plugins": {
      "type": "array",
      "description": "Slugs of the installed plugins to update to their latest version.",
      "items": {
        "type": "string",
        "description": "Plugin slug"
      }
    }
  },
  "required": [
    "username",
    "software",
    "plugins"
  ]
}
Annotations
{
  "title": "Update WordPress plugins",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_updateWordPressThemesV1Update one or more installed themes to their latest version on a WordPress installation. Provide the WordPress installation (software) identifier in the path. It can be obtained from GET /api/hosting/v1/wordpress/installations (the `id` field). This operation is asynchronous: a successful response only means the update job has been queued.
Input schema
{
  "type": "object",
  "properties": {
    "username": {
      "type": "string",
      "description": "username parameter"
    },
    "software": {
      "type": "string",
      "description": "WordPress installation (software) identifier"
    },
    "themes": {
      "type": "array",
      "description": "Slugs of the installed themes to update to their latest version.",
      "items": {
        "type": "string",
        "description": "Theme slug"
      }
    }
  },
  "required": [
    "username",
    "software",
    "themes"
  ]
}
Annotations
{
  "title": "Update WordPress themes",
  "readOnlyHint": false,
  "destructiveHint": false
}
hosting_verifyDomainOwnershipV1Verify ownership of a single domain and return the verification status. Use this endpoint to check if a domain is accessible for you before using it for new websites. If the domain is accessible, the response will have `is_accessible: true`. If not, add the given TXT record to your domain's DNS records and try verifying again. Keep in mind that it may take up to 10 minutes for new TXT DNS records to propagate. Skip this verification when using Hostinger's free subdomains (*.hostingersite.com).
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Domain to verify ownership for"
    }
  },
  "required": [
    "domain"
  ]
}
Annotations
{
  "title": "Verify domain ownership",
  "readOnlyHint": false,
  "destructiveHint": false
}
mail_changeMailboxPasswordV1Change the password of a mailbox.
Input schema
{
  "type": "object",
  "properties": {
    "mailboxId": {
      "type": "string",
      "description": "Mailbox resource ID"
    },
    "password": {
      "type": "string",
      "description": "New mailbox password. Minimum 8 characters with uppercase, lowercase, number and special character; must not be a commonly used password."
    }
  },
  "required": [
    "mailboxId",
    "password"
  ]
}
Annotations
{
  "title": "Change mailbox password",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
mail_createAliasV1Create an alias for the given mailbox. The alias address is formed from the given local part and the domain of the mailbox. Messages sent to the alias are delivered to the mailbox.
Input schema
{
  "type": "object",
  "properties": {
    "mailboxId": {
      "type": "string",
      "description": "Mailbox resource ID"
    },
    "local_part": {
      "type": "string",
      "description": "Local part of the alias address (the part before the @). The domain is taken from the mailbox. Case-insensitive and stored lowercase; must start and end with a letter or digit; single dots, underscores and hyphens are allowed in between."
    }
  },
  "required": [
    "mailboxId",
    "local_part"
  ]
}
Annotations
{
  "title": "Create alias",
  "readOnlyHint": false,
  "destructiveHint": false
}
mail_createAPITokenV1Create an API token for the given mail order. The token grants access to the [Hostinger Email API](https://api.mail.hostinger.com/), where you can provision and manage the mailboxes it is scoped to. The plaintext token is returned only in this response, never again. A maximum of 10 tokens can exist per order. Use `scope.has_all_mailboxes` to cover all current and future mailboxes, or list specific mailboxes in `scope.mailbox_ids`.
Input schema
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "Order resource ID"
    },
    "name": {
      "type": "string",
      "description": "Human-readable label for this token"
    },
    "scope": {
      "type": "object",
      "description": "Mailbox scope this token can access",
      "properties": {
        "has_all_mailboxes": {
          "type": "boolean",
          "description": "Grant access to all current and future mailboxes of the order"
        },
        "mailbox_ids": {
          "type": "array",
          "description": "Required when `has_all_mailboxes` is false. Mailbox resource IDs of this order.",
          "items": {
            "type": "string",
            "description": "mailbox_ids parameter"
          }
        }
      },
      "required": [
        "has_all_mailboxes"
      ]
    }
  },
  "required": [
    "orderId",
    "name",
    "scope"
  ]
}
Annotations
{
  "title": "Create API token",
  "readOnlyHint": false,
  "destructiveHint": false
}
mail_createAutoreplyV1Create an automatic reply for the given mailbox. A mailbox can have only one autoreply. Omit `starts_at` to activate the autoreply immediately and omit `ends_at` to keep it active indefinitely.
Input schema
{
  "type": "object",
  "properties": {
    "mailboxId": {
      "type": "string",
      "description": "Mailbox resource ID"
    },
    "subject": {
      "type": "string",
      "description": "Subject of the automatic reply"
    },
    "body": {
      "type": "string",
      "description": "Body of the automatic reply"
    },
    "display_name": {
      "type": "string",
      "description": "Sender display name used for the reply"
    },
    "starts_at": {
      "type": "string",
      "description": "When the autoreply becomes active. Defaults to now."
    },
    "ends_at": {
      "type": "string",
      "description": "When the autoreply stops. Omit for an indefinite autoreply."
    }
  },
  "required": [
    "mailboxId",
    "subject",
    "body"
  ]
}
Annotations
{
  "title": "Create autoreply",
  "readOnlyHint": false,
  "destructiveHint": false
}
mail_createCatchAllV1Create a catch-all that routes all messages sent to unknown addresses of the domain to the given mailbox. The mailbox address receives a confirmation email and the catch-all becomes active only after it is confirmed. A domain can have only one catch-all.
Input schema
{
  "type": "object",
  "properties": {
    "mailboxId": {
      "type": "string",
      "description": "Mailbox resource ID"
    }
  },
  "required": [
    "mailboxId"
  ]
}
Annotations
{
  "title": "Create catch-all",
  "readOnlyHint": false,
  "destructiveHint": false
}
mail_createForwarderV1Create a forwarder from the given mailbox to the destination address. The destination receives a confirmation email and forwarding becomes active only after it is confirmed.
Input schema
{
  "type": "object",
  "properties": {
    "mailboxId": {
      "type": "string",
      "description": "Mailbox resource ID"
    },
    "destination": {
      "type": "string",
      "description": "Email address the messages will be forwarded to"
    },
    "is_keep_copy_enabled": {
      "type": "boolean",
      "description": "Whether to keep a copy of forwarded messages in the mailbox. Defaults to false."
    }
  },
  "required": [
    "mailboxId",
    "destination"
  ]
}
Annotations
{
  "title": "Create forwarder",
  "readOnlyHint": false,
  "destructiveHint": false
}
mail_createMailboxV1Create a mailbox under the given mail order. The full email address is composed from the given local part and the domain of the order.
Input schema
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "Order resource ID"
    },
    "local_part": {
      "type": "string",
      "description": "Local part of the mailbox address (the part before the @). The domain is taken from the order. Must start and end with a letter or digit; single dots, underscores and hyphens are allowed in between."
    },
    "password": {
      "type": "string",
      "description": "Mailbox password. Minimum 8 characters with uppercase, lowercase, number and special character."
    }
  },
  "required": [
    "orderId",
    "local_part",
    "password"
  ]
}
Annotations
{
  "title": "Create mailbox",
  "readOnlyHint": false,
  "destructiveHint": false
}
mail_createWebhookV1Create a webhook for the given mailbox. The generated secret is returned only in this response and is sent as a bearer token with every delivery.
Input schema
{
  "type": "object",
  "properties": {
    "mailboxId": {
      "type": "string",
      "description": "Mailbox resource ID"
    },
    "name": {
      "type": "string",
      "description": "Human-readable name for this webhook"
    },
    "description": {
      "type": "string",
      "description": "Optional description of the webhook's purpose"
    },
    "events": {
      "type": "array",
      "description": "Events that trigger this webhook",
      "items": {
        "type": "string",
        "description": "events parameter",
        "enum": [
          "message.received"
        ]
      }
    },
    "status": {
      "type": "string",
      "description": "Initial status of the webhook",
      "enum": [
        "active",
        "disabled",
        "paused"
      ]
    },
    "url": {
      "type": "string",
      "description": "Publicly reachable URL that receives the webhook POST requests"
    }
  },
  "required": [
    "mailboxId",
    "name",
    "events",
    "url"
  ]
}
Annotations
{
  "title": "Create webhook",
  "readOnlyHint": false,
  "destructiveHint": false
}
mail_deleteAliasV1Delete an alias. Messages sent to the alias address are no longer delivered to the mailbox.
Input schema
{
  "type": "object",
  "properties": {
    "aliasId": {
      "type": "string",
      "description": "Alias resource ID"
    }
  },
  "required": [
    "aliasId"
  ]
}
Annotations
{
  "title": "Delete alias",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
mail_deleteAutoreplyV1Delete the autoreply of a mailbox. The mailbox stops sending automatic replies immediately.
Input schema
{
  "type": "object",
  "properties": {
    "autoreplyId": {
      "type": "string",
      "description": "Autoreply resource ID"
    }
  },
  "required": [
    "autoreplyId"
  ]
}
Annotations
{
  "title": "Delete autoreply",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
mail_deleteCatchAllV1Delete a catch-all. Messages sent to unknown addresses of the domain are no longer routed to the mailbox.
Input schema
{
  "type": "object",
  "properties": {
    "catchallId": {
      "type": "string",
      "description": "Catch-all resource ID"
    }
  },
  "required": [
    "catchallId"
  ]
}
Annotations
{
  "title": "Delete catch-all",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
mail_deleteForwarderV1Delete a forwarder. The mailbox stops forwarding messages to the destination address immediately.
Input schema
{
  "type": "object",
  "properties": {
    "forwarderId": {
      "type": "string",
      "description": "Forwarder resource ID"
    }
  },
  "required": [
    "forwarderId"
  ]
}
Annotations
{
  "title": "Delete forwarder",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
mail_deleteMailboxV1Delete a mailbox. The mailbox is soft-deleted and stays restorable for a limited period before it is permanently removed.
Input schema
{
  "type": "object",
  "properties": {
    "mailboxId": {
      "type": "string",
      "description": "Mailbox resource ID"
    }
  },
  "required": [
    "mailboxId"
  ]
}
Annotations
{
  "title": "Delete mailbox",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
mail_deleteWebhookV1Permanently delete a webhook. This action cannot be undone. After deletion the URL no longer receives event notifications.
Input schema
{
  "type": "object",
  "properties": {
    "webhookId": {
      "type": "string",
      "description": "Webhook ID (returned when the webhook was created)"
    }
  },
  "required": [
    "webhookId"
  ]
}
Annotations
{
  "title": "Delete webhook",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
mail_getOrderPlanV1Retrieve the plan the given mail order was purchased with, including domain-level and mailbox-level quotas, limits, and protocol availability.
Input schema
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "Order resource ID"
    }
  },
  "required": [
    "orderId"
  ]
}
Annotations
{
  "title": "Get order plan",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_getWebhookV1Retrieve the details of a single webhook. The webhook secret is never included; it is returned only when a webhook is created or its secret is regenerated.
Input schema
{
  "type": "object",
  "properties": {
    "webhookId": {
      "type": "string",
      "description": "Webhook ID (returned when the webhook was created)"
    }
  },
  "required": [
    "webhookId"
  ]
}
Annotations
{
  "title": "Get webhook",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_listAccessLogsV1Retrieve paginated access logs for the domain attached to the given mail order. Supports filtering by account, date range, protocol, status, and deletion flag. Results are sorted by timestamp descending.
Input schema
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "Order resource ID"
    },
    "account": {
      "type": "string",
      "description": "Filter log entries by a specific email account"
    },
    "date": {
      "type": "string",
      "description": "Exact date filter (YYYY-MM-DD). Takes precedence over `from_date`/`to_date` when both are given."
    },
    "from_date": {
      "type": "string",
      "description": "Date range start (RFC 3339)"
    },
    "to_date": {
      "type": "string",
      "description": "Date range end (RFC 3339)"
    },
    "status": {
      "type": "string",
      "description": "Filter log entries by status",
      "enum": [
        "Successful",
        "Failed"
      ]
    },
    "protocol": {
      "type": "string",
      "description": "Filter access log entries by protocol",
      "enum": [
        "imap",
        "pop3",
        "smtp"
      ]
    },
    "has_deletions": {
      "type": "boolean",
      "description": "Filter access log entries by whether the session had deletions"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "orderId"
  ]
}
Annotations
{
  "title": "List access logs",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_listActionLogsV1Retrieve paginated account action logs (administrative and user actions) for the given mail order. Supports filtering by account, date range, and status. Results are sorted by timestamp descending.
Input schema
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "Order resource ID"
    },
    "account": {
      "type": "string",
      "description": "Filter log entries by a specific email account"
    },
    "date": {
      "type": "string",
      "description": "Exact date filter (YYYY-MM-DD). Takes precedence over `from_date`/`to_date` when both are given."
    },
    "from_date": {
      "type": "string",
      "description": "Date range start (RFC 3339)"
    },
    "to_date": {
      "type": "string",
      "description": "Date range end (RFC 3339)"
    },
    "status": {
      "type": "string",
      "description": "Filter log entries by status",
      "enum": [
        "Successful",
        "Failed"
      ]
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "orderId"
  ]
}
Annotations
{
  "title": "List action logs",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_listAliasesV1Retrieve a paginated list of aliases across all mailboxes of a mail order.
Input schema
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "Order resource ID"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "orderId"
  ]
}
Annotations
{
  "title": "List aliases",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_listAPITokensV1Retrieve a paginated list of [Hostinger Email API](https://api.mail.hostinger.com/) tokens across all your mail orders, optionally filtered by order. Plaintext tokens are never included; they are returned only when a token is created.
Input schema
{
  "type": "object",
  "properties": {
    "order_id": {
      "type": "string",
      "description": "Filter tokens by order resource ID. Single value or comma-separated list."
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": []
}
Annotations
{
  "title": "List API tokens",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_listAutorepliesV1Retrieve a paginated list of autoreplies across all mailboxes of a mail order.
Input schema
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "Order resource ID"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "orderId"
  ]
}
Annotations
{
  "title": "List autoreplies",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_listCatchAllsV1Retrieve a paginated list of catch-alls across all mailboxes of a mail order.
Input schema
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "Order resource ID"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "orderId"
  ]
}
Annotations
{
  "title": "List catch-alls",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_listForwardersV1Retrieve a paginated list of forwarders across all mailboxes of a mail order.
Input schema
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "Order resource ID"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "orderId"
  ]
}
Annotations
{
  "title": "List forwarders",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_listInboundLogsV1Retrieve paginated inbound (received mail) delivery logs for the domain attached to the given mail order. Supports filtering by account, date range, status, sender, and recipient. Results are sorted by timestamp descending.
Input schema
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "Order resource ID"
    },
    "account": {
      "type": "string",
      "description": "Filter log entries by a specific email account"
    },
    "date": {
      "type": "string",
      "description": "Exact date filter (YYYY-MM-DD). Takes precedence over `from_date`/`to_date` when both are given."
    },
    "from_date": {
      "type": "string",
      "description": "Date range start (RFC 3339)"
    },
    "to_date": {
      "type": "string",
      "description": "Date range end (RFC 3339)"
    },
    "status": {
      "type": "string",
      "description": "Filter log entries by status",
      "enum": [
        "Successful",
        "Failed"
      ]
    },
    "sender": {
      "type": "string",
      "description": "Filter log entries by sender. Accepts a full email address or a domain."
    },
    "recipient": {
      "type": "string",
      "description": "Filter log entries by recipient. Accepts a full email address or a domain."
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "orderId"
  ]
}
Annotations
{
  "title": "List inbound logs",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_listMailboxActionLogsV1Retrieve paginated mailbox action logs (message and mailbox events) for a mailbox in the given mail order. The mailbox email must belong to the order's domain. Supports date range and event type filters. Results are sorted by timestamp descending.
Input schema
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "Order resource ID"
    },
    "email": {
      "type": "string",
      "description": "Mailbox email address. Must belong to the order's domain."
    },
    "date": {
      "type": "string",
      "description": "Exact date filter (YYYY-MM-DD). Takes precedence over `from_date`/`to_date` when both are given."
    },
    "from_date": {
      "type": "string",
      "description": "Date range start (RFC 3339)"
    },
    "to_date": {
      "type": "string",
      "description": "Date range end (RFC 3339)"
    },
    "event": {
      "type": "string",
      "description": "Filter mailbox action log entries by event type",
      "enum": [
        "MessageNew",
        "MessageRead",
        "MessageAppend",
        "MessageExpunge",
        "MailboxCreate",
        "MailboxDelete",
        "MailboxRename"
      ]
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "orderId",
    "email"
  ]
}
Annotations
{
  "title": "List mailbox action logs",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_listMailboxesV1Retrieve a paginated list of mailboxes belonging to a mail order. Use this endpoint to monitor mailboxes of your mail service, including their status, enabled protocols, attached resource counts, and periodically synced usage numbers (usage may lag behind live values).
Input schema
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "Order resource ID"
    },
    "search": {
      "type": "string",
      "description": "Filter mailboxes whose email address contains the given string"
    },
    "sort": {
      "type": "string",
      "description": "Sort mailboxes by field. Prefix with `-` for descending order.",
      "enum": [
        "address",
        "-address"
      ]
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "orderId"
  ]
}
Annotations
{
  "title": "List mailboxes",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_listOrdersV1Retrieve a paginated list of mail orders associated with your account. Use this endpoint to monitor your mail services, including their status, plan, attached domain, and expiration details.
Input schema
{
  "type": "object",
  "properties": {
    "domain": {
      "type": "string",
      "description": "Filter orders by domain name (exact match)"
    },
    "status": {
      "type": "string",
      "description": "Filter orders by status",
      "enum": [
        "pending_setup",
        "active",
        "suspended"
      ]
    },
    "is_trial": {
      "type": "boolean",
      "description": "Filter orders by trial state"
    },
    "sort": {
      "type": "string",
      "description": "Sort orders by field. Prefix with `-` for descending order.",
      "enum": [
        "created_at",
        "-created_at",
        "expires_at",
        "-expires_at"
      ]
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": []
}
Annotations
{
  "title": "List orders",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_listOutboundLogsV1Retrieve paginated outbound (sent mail) delivery logs for the domain attached to the given mail order. Supports filtering by account, date range, status, sender, and recipient. Results are sorted by timestamp descending.
Input schema
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "Order resource ID"
    },
    "account": {
      "type": "string",
      "description": "Filter log entries by a specific email account"
    },
    "date": {
      "type": "string",
      "description": "Exact date filter (YYYY-MM-DD). Takes precedence over `from_date`/`to_date` when both are given."
    },
    "from_date": {
      "type": "string",
      "description": "Date range start (RFC 3339)"
    },
    "to_date": {
      "type": "string",
      "description": "Date range end (RFC 3339)"
    },
    "status": {
      "type": "string",
      "description": "Filter log entries by status",
      "enum": [
        "Successful",
        "Failed"
      ]
    },
    "sender": {
      "type": "string",
      "description": "Filter log entries by sender. Accepts a full email address or a domain."
    },
    "recipient": {
      "type": "string",
      "description": "Filter log entries by recipient. Accepts a full email address or a domain."
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "orderId"
  ]
}
Annotations
{
  "title": "List outbound logs",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_listWebhookDeliveryLogsV1Retrieve a paginated list of webhook delivery logs for the given mail order, including delivery outcome, duration, and retry counts. Supports filtering by mailbox.
Input schema
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "Order resource ID"
    },
    "mailbox_id": {
      "type": "string",
      "description": "Filter by the mailbox resource ID the webhooks are attached to"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "orderId"
  ]
}
Annotations
{
  "title": "List webhook delivery logs",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_listWebhooksV1Retrieve a paginated list of webhooks belonging to the given mail order. Supports filtering by mailbox and status. The webhook secret is never included; it is returned only when a webhook is created or its secret is regenerated.
Input schema
{
  "type": "object",
  "properties": {
    "orderId": {
      "type": "string",
      "description": "Order resource ID"
    },
    "mailbox_id": {
      "type": "string",
      "description": "Filter by the mailbox resource ID the webhooks are attached to"
    },
    "status": {
      "type": "string",
      "description": "Filter webhooks by status",
      "enum": [
        "active",
        "disabled",
        "paused"
      ]
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "orderId"
  ]
}
Annotations
{
  "title": "List webhooks",
  "readOnlyHint": true,
  "destructiveHint": false
}
mail_regenerateWebhookSecretV1Regenerate the secret of a webhook. The previous secret is immediately invalidated. The new secret is returned only in this response and is sent as a bearer token with every delivery.
Input schema
{
  "type": "object",
  "properties": {
    "webhookId": {
      "type": "string",
      "description": "Webhook ID (returned when the webhook was created)"
    }
  },
  "required": [
    "webhookId"
  ]
}
Annotations
{
  "title": "Regenerate webhook secret",
  "readOnlyHint": false,
  "destructiveHint": false
}
mail_resendCatchAllConfirmationV1Resend the confirmation email to the mailbox address of an unconfirmed catch-all.
Input schema
{
  "type": "object",
  "properties": {
    "catchallId": {
      "type": "string",
      "description": "Catch-all resource ID"
    }
  },
  "required": [
    "catchallId"
  ]
}
Annotations
{
  "title": "Resend catch-all confirmation",
  "readOnlyHint": false,
  "destructiveHint": false
}
mail_resendForwarderConfirmationV1Resend the confirmation email to the destination address of an unconfirmed forwarder.
Input schema
{
  "type": "object",
  "properties": {
    "forwarderId": {
      "type": "string",
      "description": "Forwarder resource ID"
    }
  },
  "required": [
    "forwarderId"
  ]
}
Annotations
{
  "title": "Resend forwarder confirmation",
  "readOnlyHint": false,
  "destructiveHint": false
}
mail_revokeAPITokenV1Revoke an API token. The token immediately loses access to the [Hostinger Email API](https://api.mail.hostinger.com/). This action cannot be undone.
Input schema
{
  "type": "object",
  "properties": {
    "tokenId": {
      "type": "string",
      "description": "API token ID (returned when the token was created)"
    }
  },
  "required": [
    "tokenId"
  ]
}
Annotations
{
  "title": "Revoke API token",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
mail_testWebhookV1Send a test delivery to the webhook URL and return the result. Test requests are rate limited upstream.
Input schema
{
  "type": "object",
  "properties": {
    "webhookId": {
      "type": "string",
      "description": "Webhook ID (returned when the webhook was created)"
    }
  },
  "required": [
    "webhookId"
  ]
}
Annotations
{
  "title": "Test webhook",
  "readOnlyHint": false,
  "destructiveHint": false
}
mail_updateAutoreplyV1Replace the autoreply with the given content and schedule. Omitted optional fields are cleared: omit `starts_at` to activate the autoreply immediately and omit `ends_at` to keep it active indefinitely.
Input schema
{
  "type": "object",
  "properties": {
    "autoreplyId": {
      "type": "string",
      "description": "Autoreply resource ID"
    },
    "subject": {
      "type": "string",
      "description": "Subject of the automatic reply"
    },
    "body": {
      "type": "string",
      "description": "Body of the automatic reply"
    },
    "display_name": {
      "type": "string",
      "description": "Sender display name used for the reply"
    },
    "starts_at": {
      "type": "string",
      "description": "When the autoreply becomes active. Defaults to now."
    },
    "ends_at": {
      "type": "string",
      "description": "When the autoreply stops. Omit for an indefinite autoreply."
    }
  },
  "required": [
    "autoreplyId",
    "subject",
    "body"
  ]
}
Annotations
{
  "title": "Update autoreply",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
mail_updateForwarderKeepCopySettingV1Enable or disable keeping a copy of forwarded messages in the mailbox.
Input schema
{
  "type": "object",
  "properties": {
    "forwarderId": {
      "type": "string",
      "description": "Forwarder resource ID"
    },
    "is_keep_copy_enabled": {
      "type": "boolean",
      "description": "Whether to keep a copy of forwarded messages in the mailbox"
    }
  },
  "required": [
    "forwarderId",
    "is_keep_copy_enabled"
  ]
}
Annotations
{
  "title": "Update forwarder keep-copy setting",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
mail_updateWebhookV1Partially update a webhook. Only the fields included in the request body are changed; omitted fields retain their current values. Pass `"description": null` to clear the description.
Input schema
{
  "type": "object",
  "properties": {
    "webhookId": {
      "type": "string",
      "description": "Webhook ID (returned when the webhook was created)"
    },
    "name": {
      "type": "string",
      "description": "New human-readable name for the webhook"
    },
    "description": {
      "type": "string",
      "description": "New description, or null to clear it"
    },
    "events": {
      "type": "array",
      "description": "Replaces the full list of subscribed events",
      "items": {
        "type": "string",
        "description": "events parameter",
        "enum": [
          "message.received"
        ]
      }
    },
    "status": {
      "type": "string",
      "description": "New status for the webhook",
      "enum": [
        "active",
        "disabled",
        "paused"
      ]
    },
    "url": {
      "type": "string",
      "description": "New URL to deliver events to"
    }
  },
  "required": [
    "webhookId"
  ]
}
Annotations
{
  "title": "Update webhook",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
reach_assignAContactToATagV1Assign a tag to a single contact. Unlike the bulk endpoint this is applied immediately rather than queued. Assigning a tag the contact already carries succeeds without duplicating it.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "tagUuid": {
      "type": "string",
      "description": "Tag uuid parameter"
    },
    "contactUuid": {
      "type": "string",
      "description": "Contact uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "tagUuid",
    "contactUuid"
  ]
}
Annotations
{
  "title": "Assign a contact to a tag",
  "readOnlyHint": false,
  "destructiveHint": false
}
reach_assignContactsToATagV1Assign a tag to many contacts at once. Pass `contact_uuids` to target specific contacts, or `all_contacts` to target every contact in the profile. The work is queued, so a success response means it was accepted rather than finished. Contacts that already carry the tag are left alone.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "tagUuid": {
      "type": "string",
      "description": "Tag uuid parameter"
    },
    "contact_uuids": {
      "type": "array",
      "description": "Contacts to apply the change to. Required unless all_contacts is true.",
      "items": {
        "type": "string",
        "description": "contact_uuids parameter"
      }
    },
    "all_contacts": {
      "type": "boolean",
      "description": "Apply to every contact in the profile"
    }
  },
  "required": [
    "profileUuid",
    "tagUuid"
  ]
}
Annotations
{
  "title": "Assign contacts to a tag",
  "readOnlyHint": false,
  "destructiveHint": false
}
reach_countProfileSegmentContactsV1Count the contacts currently matching a segment without listing them. Cheaper than paging through the segment contacts endpoint when only the size is needed.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "segmentUuid": {
      "type": "string",
      "description": "Segment uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "segmentUuid"
  ]
}
Annotations
{
  "title": "Count profile segment contacts",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_createAContactFieldV1Define a new custom contact field in a profile. The `slug` is derived from the label and, like the field type, cannot be changed later. Use the returned uuid to set values on contacts.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "type": {
      "type": "string",
      "description": "Immutable once the field exists",
      "enum": [
        "text",
        "number",
        "date",
        "single_choice",
        "multi_choice"
      ]
    },
    "label": {
      "type": "string",
      "description": "label parameter"
    },
    "options": {
      "type": "array",
      "description": "Required for single_choice and multi_choice, ignored for the scalar types. Labels must be unique regardless of casing.",
      "items": {
        "type": "string",
        "description": "options parameter"
      }
    }
  },
  "required": [
    "profileUuid",
    "type",
    "label"
  ]
}
Annotations
{
  "title": "Create a contact field",
  "readOnlyHint": false,
  "destructiveHint": false
}
reach_createADraftCampaignV1Create a campaign in a profile. The campaign is created as a draft, so nothing is sent and no contact is touched. It has no audience yet either - targeting and scheduling are not part of this request, the draft is finished and sent from the Reach interface.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "sender_name": {
      "type": "string",
      "description": "From name shown to the recipients."
    },
    "sender_email": {
      "type": "string",
      "description": "From address of the campaign. Its domain has to be verified on the profile before\nthe campaign can be sent."
    },
    "title": {
      "type": "string",
      "description": "Name the campaign is listed under. Not shown to the recipients."
    },
    "subject": {
      "type": "string",
      "description": "Subject line of the email."
    },
    "template_uuid": {
      "type": "string",
      "description": "Template to send, as returned by the template endpoints. Can be left out and\nattached later, but the campaign cannot be sent without one."
    },
    "metadata": {
      "type": "object",
      "description": "Extra campaign fields. Any key outside the listed ones is rejected.",
      "properties": {
        "preheader": {
          "type": "string",
          "description": "Preview text shown after the subject line in the inbox."
        },
        "source": {
          "type": "string",
          "description": "Where the campaign was created from."
        }
      }
    }
  },
  "required": [
    "profileUuid",
    "sender_name",
    "sender_email"
  ]
}
Annotations
{
  "title": "Create a draft campaign",
  "readOnlyHint": false,
  "destructiveHint": false
}
reach_createAnEmailTemplateV1Create an email template in a profile. The template holds the HTML body a campaign reuses, so it can be created before any campaign exists. Only the template metadata comes back - keep the returned `uuid` to reference it as the `template_uuid` of a campaign.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "template_content": {
      "type": "string",
      "description": "The email body as HTML. It is sanitised before it is stored, so the saved template\ncan differ from what was sent - inline any styles the email clients need and keep\nthe markup self-contained."
    },
    "title": {
      "type": "string",
      "description": "Name the template is listed under. Not shown to the recipients."
    }
  },
  "required": [
    "profileUuid",
    "template_content"
  ]
}
Annotations
{
  "title": "Create an email template",
  "readOnlyHint": false,
  "destructiveHint": false
}
reach_createANewContactSegmentV1Create a new contact segment. This endpoint allows creating a new contact segment that can be used to organize contacts. The segment can be configured with specific criteria like email, name, subscription status, etc. **Deprecated.** This endpoint cannot target a profile, so it always falls back to the client's default profile and cannot create segments in any other profile. Use `POST /api/reach/v1/profiles/{profileUuid}/segmentation/segments` instead.
Input schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "name parameter"
    },
    "conditions": {
      "type": "array",
      "description": "conditions parameter",
      "items": {
        "type": "object",
        "description": "conditions parameter",
        "properties": {
          "operator": {
            "type": "string",
            "description": "operator parameter",
            "enum": [
              "equals",
              "not_equals",
              "contains",
              "not_contains",
              "gte",
              "lte",
              "exists",
              "within_last_days",
              "not_within_last_days",
              "older_than_days",
              "processed",
              "not_processed",
              "delivered",
              "not_delivered",
              "dropped",
              "not_dropped",
              "bounced",
              "not_bounced",
              "soft_bounced",
              "not_soft_bounced",
              "opened",
              "not_opened",
              "clicked",
              "not_clicked",
              "unsubscribed",
              "not_unsubscribed"
            ]
          },
          "value": {
            "type": "string",
            "description": "value parameter"
          },
          "attribute": {
            "type": "string",
            "description": "attribute parameter",
            "enum": [
              "note",
              "comment",
              "domain",
              "integration",
              "source",
              "name",
              "surname",
              "email",
              "subscribed_at",
              "unsubscribed_at",
              "subscription_status",
              "processed",
              "opened",
              "clicked",
              "delivered",
              "bounced",
              "unsubscribed",
              "dropped",
              "tag",
              "campaigns"
            ]
          }
        }
      }
    },
    "logic": {
      "type": "string",
      "description": "logic parameter",
      "enum": [
        "AND",
        "OR"
      ]
    }
  },
  "required": [
    "name",
    "conditions",
    "logic"
  ]
}
Annotations
{
  "title": "Create a new contact segment",
  "readOnlyHint": false,
  "destructiveHint": false
}
reach_createANewContactV1Create a new contact in the email marketing system. This endpoint allows you to create a new contact with basic information like name, email, and surname. If double opt-in is enabled, the contact will be created with a pending status and a confirmation email will be sent.
Input schema
{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "email parameter"
    },
    "name": {
      "type": "string",
      "description": "name parameter"
    },
    "surname": {
      "type": "string",
      "description": "surname parameter"
    },
    "phone": {
      "type": "string",
      "description": "Phone number in E.164 format (leading \"+\" then 7-15 digits)"
    },
    "note": {
      "type": "string",
      "description": "note parameter"
    },
    "tag_uuids": {
      "type": "array",
      "description": "Existing tags to attach to the created contact",
      "items": {
        "type": "string",
        "description": "tag_uuids parameter"
      }
    }
  },
  "required": [
    "email"
  ]
}
Annotations
{
  "title": "Create a new contact",
  "readOnlyHint": false,
  "destructiveHint": false
}
reach_createAProfileSegmentV1Create a segment in a profile. A segment is a saved set of conditions rather than a fixed list, so its membership changes as contacts change. Creating one does not modify any contact.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "name": {
      "type": "string",
      "description": "name parameter"
    },
    "conditions": {
      "type": "array",
      "description": "Conditions a contact must satisfy to fall into the segment",
      "items": {
        "type": "object",
        "description": "conditions parameter",
        "properties": {
          "attribute": {
            "type": "string",
            "description": "A built-in contact attribute, or `cf:{fieldUuid}` to target a custom\ncontact field. Custom fields are addressed by field UUID; their slug\nis not accepted.\n\nBuilt-in attributes: `email`, `note`, `domain`, `source`,\n`opt_in_method`, `subscription_status`, `subscribed_at`,\n`unsubscribed_at`, `created_at`, `tag`, `campaigns`, `processed`,\n`opened`, `clicked`, `delivered`, `bounced`, `soft_bounced`,\n`dropped`.\n\nWhich operators are accepted depends on the attribute."
          },
          "operator": {
            "type": "string",
            "description": "operator parameter",
            "enum": [
              "equals",
              "not_equals",
              "contains",
              "not_contains",
              "gte",
              "lte",
              "exists",
              "within_last_days",
              "not_within_last_days",
              "older_than_days",
              "processed",
              "not_processed",
              "delivered",
              "not_delivered",
              "dropped",
              "not_dropped",
              "bounced",
              "not_bounced",
              "soft_bounced",
              "not_soft_bounced",
              "opened",
              "not_opened",
              "clicked",
              "not_clicked",
              "unsubscribed",
              "not_unsubscribed"
            ]
          },
          "value": {
            "type": "string",
            "description": "Always a string, including for numeric and date comparisons"
          }
        },
        "required": [
          "attribute",
          "operator",
          "value"
        ]
      }
    },
    "logic": {
      "type": "string",
      "description": "How to combine multiple conditions",
      "enum": [
        "AND",
        "OR"
      ]
    }
  },
  "required": [
    "profileUuid",
    "name",
    "conditions",
    "logic"
  ]
}
Annotations
{
  "title": "Create a profile segment",
  "readOnlyHint": false,
  "destructiveHint": false
}
reach_createContactsInBulkV1Create many contacts in a profile in a single call. The contacts are imported in the background, so a success response means the import was accepted rather than finished. Contacts whose email already exists in the profile are left as they are. If double opt-in is enabled, new contacts start off pending and are sent a confirmation email.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "contacts": {
      "type": "array",
      "description": "contacts parameter",
      "items": {
        "type": "object",
        "description": "contacts parameter",
        "properties": {
          "email": {
            "type": "string",
            "description": "email parameter"
          },
          "name": {
            "type": "string",
            "description": "name parameter"
          },
          "surname": {
            "type": "string",
            "description": "surname parameter"
          },
          "phone": {
            "type": "string",
            "description": "Phone number in E.164 format (leading \"+\" then 7-15 digits)"
          }
        },
        "required": [
          "email"
        ]
      }
    },
    "tag_uuids": {
      "type": "array",
      "description": "Existing tags to attach to every created contact",
      "items": {
        "type": "string",
        "description": "tag_uuids parameter"
      }
    },
    "note": {
      "type": "string",
      "description": "Note applied to every created contact"
    }
  },
  "required": [
    "profileUuid",
    "contacts"
  ]
}
Annotations
{
  "title": "Create contacts in bulk",
  "readOnlyHint": false,
  "destructiveHint": false
}
reach_createNewContactsV1Create a new contact in the email marketing system. This endpoint allows you to create a new contact with basic information like name, email, and surname. If double opt-in is enabled, the contact will be created with a pending status and a confirmation email will be sent.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "email": {
      "type": "string",
      "description": "email parameter"
    },
    "name": {
      "type": "string",
      "description": "name parameter"
    },
    "surname": {
      "type": "string",
      "description": "surname parameter"
    },
    "phone": {
      "type": "string",
      "description": "Phone number in E.164 format (leading \"+\" then 7-15 digits)"
    },
    "note": {
      "type": "string",
      "description": "note parameter"
    },
    "tag_uuids": {
      "type": "array",
      "description": "Existing tags to attach to the created contact",
      "items": {
        "type": "string",
        "description": "tag_uuids parameter"
      }
    }
  },
  "required": [
    "profileUuid",
    "email"
  ]
}
Annotations
{
  "title": "Create new contacts",
  "readOnlyHint": false,
  "destructiveHint": false
}
reach_createOrFindTagsV1Create tags in a profile. Names that already exist in the profile are not duplicated: the existing tag is returned instead, so the call is safe to repeat. Every tag in the request is returned, whether it was created now or already existed.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "names": {
      "type": "array",
      "description": "names parameter",
      "items": {
        "type": "string",
        "description": "names parameter"
      }
    }
  },
  "required": [
    "profileUuid",
    "names"
  ]
}
Annotations
{
  "title": "Create or find tags",
  "readOnlyHint": false,
  "destructiveHint": false
}
reach_deleteAContactFieldV1Delete a custom contact field. Every value contacts hold for the field is deleted with it, and for the choice types so are its options. The contacts themselves are not affected.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "fieldUuid": {
      "type": "string",
      "description": "Contact field uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "fieldUuid"
  ]
}
Annotations
{
  "title": "Delete a contact field",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
reach_deleteAContactV1Delete a contact with the specified UUID. This endpoint permanently removes a contact from the email marketing system. **Deprecated.** This endpoint cannot target a profile, so it always falls back to the client's default profile and cannot delete contacts of any other profile. Use `DELETE /api/reach/v1/profiles/{profileUuid}/contacts/{contactUuid}` instead.
Input schema
{
  "type": "object",
  "properties": {
    "uuid": {
      "type": "string",
      "description": "UUID of the contact to delete"
    }
  },
  "required": [
    "uuid"
  ]
}
Annotations
{
  "title": "Delete a contact",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
reach_deleteAProfileContactV1Permanently delete a contact from a profile. The contact is removed together with its custom field values and tag assignments.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "contactUuid": {
      "type": "string",
      "description": "Contact uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "contactUuid"
  ]
}
Annotations
{
  "title": "Delete a profile contact",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
reach_deleteAProfileSegmentV1Delete a segment. Only the segment definition is removed. The contacts that matched it are left untouched.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "segmentUuid": {
      "type": "string",
      "description": "Segment uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "segmentUuid"
  ]
}
Annotations
{
  "title": "Delete a profile segment",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
reach_deleteATagV1Delete a tag and remove it from every contact carrying it. The contacts themselves are not deleted. This is idempotent: deleting a tag that does not exist in the profile still succeeds.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "tagUuid": {
      "type": "string",
      "description": "Tag uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "tagUuid"
  ]
}
Annotations
{
  "title": "Delete a tag",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
reach_deleteFormV1Permanently delete a form together with its template. A form that has already captured submissions cannot be deleted, so that the contacts it collected are never silently discarded - pause the form instead to stop it collecting new ones. Views alone do not block deletion.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "formUuid": {
      "type": "string",
      "description": "Form uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "formUuid"
  ]
}
Annotations
{
  "title": "Delete form",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
reach_getAutomationDetailsV1Get a single automation with the counts of contacts that entered it, are moving through it, finished it or failed on the way. This describes the automation itself. To see the workflow it runs, use the steps endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "automationUuid": {
      "type": "string",
      "description": "Automation uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "automationUuid"
  ]
}
Annotations
{
  "title": "Get automation details",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_getCampaignDetailsV1Get a single campaign with its sender, subject, template reference, targeting and delivery progress. This describes how the campaign was set up and how far it has got. For opens, clicks and unsubscribes use the campaign statistics endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "campaignUuid": {
      "type": "string",
      "description": "Campaign uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "campaignUuid"
  ]
}
Annotations
{
  "title": "Get campaign details",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_getCampaignPerformanceV1Get the performance of a campaign: delivery, opens, clicks and unsubscribes, with the matching rates. Every count is unique contacts rather than raw events, so a contact who opens the same email five times is counted once.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "campaignUuid": {
      "type": "string",
      "description": "Campaign uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "campaignUuid"
  ]
}
Annotations
{
  "title": "Get campaign performance",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_getConnectedSendingDomainV1Get the sending domain connected to the profile, its verification status and any suspended sender addresses. Campaigns only go out once a domain is connected and active, so this is the cheapest way to check that precondition before building one. A profile with no domain connected returns the same shape with every field set to `null`. For the individual MX, SPF, DKIM and DMARC records behind the status, use the DNS status endpoint.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    }
  },
  "required": [
    "profileUuid"
  ]
}
Annotations
{
  "title": "Get connected sending domain",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_getContactDetailsV1Get the full details of a single contact. Alongside the contact's own attributes this returns the tags assigned to it and the values it holds for the profile's custom contact fields.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "contactUuid": {
      "type": "string",
      "description": "Contact uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "contactUuid"
  ]
}
Annotations
{
  "title": "Get contact details",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_getFormDetailsV1Get a single form with the URL of its hosted template and the tags it applies to the contacts it captures. There is no ready-made embed snippet in the response - either serve the template HTML yourself or build your own embed around the form uuid.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "formUuid": {
      "type": "string",
      "description": "Form uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "formUuid"
  ]
}
Annotations
{
  "title": "Get form details",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_getProfileDomainDNSStatusV1Retrieve the DNS configuration status for a profile's domain. This endpoint reports the state of MX, SPF, DKIM and DMARC records, including the actual records found and the suggested records required for correct email delivery.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    }
  },
  "required": [
    "profileUuid"
  ]
}
Annotations
{
  "title": "Get profile domain DNS status",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_getProfileSegmentDetailsV1Get a single segment of a profile, including the conditions that define it. To retrieve the contacts currently matching those conditions, use the segment contacts endpoint instead.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "segmentUuid": {
      "type": "string",
      "description": "Segment uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "segmentUuid"
  ]
}
Annotations
{
  "title": "Get profile segment details",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_getRemainingPlanLimitsV1Get how much of the plan is left for the current period. Two things to keep in mind before you build alerting on this. The period is a calendar month rather than a billing anniversary, so the counters reset on the 1st no matter when the subscription started. And usage is tracked per order, so every profile on the same order shares one pool and reports the same numbers here. Only the current period is available, past usage is not kept.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    }
  },
  "required": [
    "profileUuid"
  ]
}
Annotations
{
  "title": "Get remaining plan limits",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_getSegmentDetailsV1Get details of a specific segment. This endpoint retrieves information about a single segment identified by UUID. Segments are used to organize and group contacts based on specific criteria. **Deprecated.** This endpoint cannot target a profile, so it always falls back to the client's default profile and cannot read segments of any other profile. Use `GET /api/reach/v1/profiles/{profileUuid}/segmentation/segments/{segmentUuid}` instead.
Input schema
{
  "type": "object",
  "properties": {
    "segmentUuid": {
      "type": "string",
      "description": "Segment uuid parameter"
    }
  },
  "required": [
    "segmentUuid"
  ]
}
Annotations
{
  "title": "Get segment details",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listAutomationStepsV1Get the workflow of an automation as a flat list of steps. The steps form a tree rather than a straight line: follow `parent_uuid` to reconstruct the branches, and use `step_order` to order the steps that share a parent. An automation with no steps yet returns an empty list.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "automationUuid": {
      "type": "string",
      "description": "Automation uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "automationUuid"
  ]
}
Annotations
{
  "title": "List automation steps",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listAutomationsV1Get a paginated list of the automations in a profile. Every automation comes with the counts of contacts that entered it, are moving through it, finished it or failed on the way. Those counts describe the contact journey and are not email engagement metrics - for opens, clicks and unsubscribes use the campaign statistics endpoint instead.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "status": {
      "type": "string",
      "description": "Filter automations by status.\n\nThere is no `completed` status. An automation that has finished for every contact still\nreports `active`.",
      "enum": [
        "active",
        "paused",
        "draft"
      ]
    },
    "sort_direction": {
      "type": "string",
      "description": "Order automations by creation date. Newest first unless set to `asc`.",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "profileUuid"
  ]
}
Annotations
{
  "title": "List automations",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listCampaignsV1Get a paginated list of the campaigns in a profile. Each campaign carries its headline engagement rates. Filter by status to find drafts, scheduled, sending or sent campaigns, keeping in mind that a fully sent campaign has the status `publish`. By default only regular campaigns are returned - pass `type` to get the emails sent by automations or the double opt-in confirmations instead.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "status": {
      "type": "string",
      "description": "Filter campaigns by status.\n\nA fully sent campaign has the status `publish`. There is no `sent` status, and campaigns can\nbe neither paused nor archived.",
      "enum": [
        "draft",
        "scheduled",
        "sending",
        "publish",
        "failed"
      ]
    },
    "type": {
      "type": "string",
      "description": "Filter campaigns by type.\n\nDefaults to `campaign`, which leaves out the emails sent by automations and the double\nopt-in confirmations.",
      "enum": [
        "campaign",
        "automation",
        "double_opt_in"
      ]
    },
    "sort_direction": {
      "type": "string",
      "description": "Order campaigns by creation date. Newest first unless set to `asc`.",
      "enum": [
        "asc",
        "desc"
      ]
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "profileUuid"
  ]
}
Annotations
{
  "title": "List campaigns",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listContactFieldsV1Get the custom contact fields defined in a profile. Custom fields let you store your own attributes on contacts. The returned uuids are what you pass to the contact update endpoint to set values, and choice fields also list the options available to pick from.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    }
  },
  "required": [
    "profileUuid"
  ]
}
Annotations
{
  "title": "List contact fields",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listContactGroupsV1Get a list of all contact groups. This endpoint returns a list of contact groups that can be used to organize contacts.
Input schema
{
  "type": "object",
  "properties": {},
  "required": []
}
Annotations
{
  "title": "List contact groups",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listContactsV1Get a list of contacts, optionally filtered by group and subscription status. This endpoint returns a paginated list of contacts with their basic information. You can filter contacts by group UUID and subscription status. **Deprecated.** This endpoint cannot target a profile, so it always falls back to the client's default profile and cannot list contacts of any other profile. Use `GET /api/reach/v1/profiles/{profileUuid}/contacts` instead, which also replaces the group filter with a tag filter.
Input schema
{
  "type": "object",
  "properties": {
    "group_uuid": {
      "type": "string",
      "description": "Filter contacts by group UUID"
    },
    "subscription_status": {
      "type": "string",
      "description": "Filter contacts by subscription status",
      "enum": [
        "subscribed",
        "unsubscribed",
        "confirmed",
        "pending"
      ]
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    }
  },
  "required": []
}
Annotations
{
  "title": "List contacts",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listEmailTemplatesV1Get a list of the email templates in a profile, most recently updated first. Templates are the reusable email bodies a campaign is built from. The list is not paginated and only the metadata is returned - the template content itself is not exposed. Use the `uuid` of a template as the `template_uuid` when creating a campaign.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    }
  },
  "required": [
    "profileUuid"
  ]
}
Annotations
{
  "title": "List email templates",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listFormsV1Get a paginated list of the signup forms in a profile. Each form carries a reference to the template that renders it. Get the form details for a directly usable template URL and for the tags the form puts on the contacts it captures.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "profileUuid"
  ]
}
Annotations
{
  "title": "List forms",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listPlanFeatureAccessV1List which plan features the profile can use. This is the feature lock matrix, not a usage quota. `available` means the feature can be used right now and `locked` means it is not part of the base plan, so an upgrade is needed. For remaining emails, recipients and AI credits use the limits endpoint instead. Worth checking before building something that cannot be activated afterwards, such as an automation on a plan without automation activation.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    }
  },
  "required": [
    "profileUuid"
  ]
}
Annotations
{
  "title": "List plan feature access",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listProfileContactsV1Get a paginated list of contacts belonging to a profile. Contacts can be filtered by subscription status, by tag, and by an email search term. The `meta.total` field of the response is the number of contacts matching the filters, so calling this endpoint without filters gives the profile's total contact count.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "subscription_status": {
      "type": "string",
      "description": "Filter contacts by subscription status",
      "enum": [
        "subscribed",
        "unsubscribed",
        "confirmed",
        "pending"
      ]
    },
    "tag_uuid": {
      "type": "string",
      "description": "Filter contacts by tag UUID"
    },
    "search": {
      "type": "string",
      "description": "Search contacts by email"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "profileUuid"
  ]
}
Annotations
{
  "title": "List profile contacts",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listProfileSegmentContactsV1Retrieve contacts associated with a specific segment for a given profile. This endpoint allows you to fetch and filter contacts that belong to a particular segment, identified by its UUID, scoped to a specific profile.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "segmentUuid": {
      "type": "string",
      "description": "Segment uuid parameter"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "profileUuid",
    "segmentUuid"
  ]
}
Annotations
{
  "title": "List profile segment contacts",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listProfileSegmentsV1Get a paginated list of the segments defined in a profile. Each entry carries the number of contacts currently matching it, which is recalculated on read rather than stored. Use `count_type` to count either every matching contact or only the subscribed ones.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "count_type": {
      "type": "string",
      "description": "Which matching contacts to count for each segment",
      "enum": [
        "all",
        "subscribed"
      ]
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "profileUuid"
  ]
}
Annotations
{
  "title": "List profile segments",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listProfilesV1This endpoint returns all profiles available to the client, including their basic information.
Input schema
{
  "type": "object",
  "properties": {},
  "required": []
}
Annotations
{
  "title": "List Profiles",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listProfileTagsV1Get all tags defined in a profile. Tags are the way contacts are grouped in Reach, and can be used to filter the contact list or to build segments.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    }
  },
  "required": [
    "profileUuid"
  ]
}
Annotations
{
  "title": "List profile tags",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listSegmentContactsV1Retrieve contacts associated with a specific segment. This endpoint allows you to fetch and filter contacts that belong to a particular segment, identified by its UUID. **Deprecated.** This endpoint cannot target a profile, so it always falls back to the client's default profile and cannot read segments of any other profile. Use `GET /api/reach/v1/profiles/{profileUuid}/segmentation/segments/{segmentUuid}/contacts` instead.
Input schema
{
  "type": "object",
  "properties": {
    "segmentUuid": {
      "type": "string",
      "description": "Segment uuid parameter"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    }
  },
  "required": [
    "segmentUuid"
  ]
}
Annotations
{
  "title": "List segment contacts",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listSegmentFilterAttributesV1List every attribute a segment condition can filter on, with the operators each attribute accepts, the value format they expect and, where the value is constrained, the allowed values. The list is profile specific: it includes the profile's custom contact fields, its tags and its 20 most recently published campaigns, so the valid attributes cannot be hardcoded. Read it before creating or updating a segment to discover the valid `attribute`, `operator` and `value` combinations.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    }
  },
  "required": [
    "profileUuid"
  ]
}
Annotations
{
  "title": "List segment filter attributes",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_listSegmentsV1Get a list of all contact segments. This endpoint returns a list of contact segments that can be used to organize contacts. **Deprecated.** This endpoint cannot target a profile, so it always falls back to the client's default profile and cannot list the segments of any other profile. Use `GET /api/reach/v1/profiles/{profileUuid}/segmentation/segments` instead.
Input schema
{
  "type": "object",
  "properties": {},
  "required": []
}
Annotations
{
  "title": "List segments",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_previewContactsMatchingConditionsV1Preview the contacts matching a set of conditions without saving a segment. The body is the same set of conditions accepted when creating or updating a segment, so this is how to check who a filter reaches, and how many, before persisting it. Nothing is stored and no contact is modified. Call the segment filter attributes endpoint first to discover the valid `attribute`, `operator` and `value` combinations.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "conditions": {
      "type": "array",
      "description": "Conditions a contact must satisfy to appear in the preview",
      "items": {
        "type": "object",
        "description": "conditions parameter",
        "properties": {
          "attribute": {
            "type": "string",
            "description": "A built-in contact attribute, or `cf:{fieldUuid}` to target a custom\ncontact field. Which operators are accepted depends on the attribute,\nso read the segment filter attributes endpoint for the authoritative\nlist."
          },
          "operator": {
            "type": "string",
            "description": "operator parameter",
            "enum": [
              "equals",
              "not_equals",
              "contains",
              "not_contains",
              "gte",
              "lte",
              "exists",
              "within_last_days",
              "not_within_last_days",
              "older_than_days",
              "processed",
              "not_processed",
              "delivered",
              "not_delivered",
              "dropped",
              "not_dropped",
              "bounced",
              "not_bounced",
              "soft_bounced",
              "not_soft_bounced",
              "opened",
              "not_opened",
              "clicked",
              "not_clicked",
              "unsubscribed",
              "not_unsubscribed"
            ]
          },
          "value": {
            "type": "string",
            "description": "Always a string, including for numeric and date comparisons"
          }
        },
        "required": [
          "attribute",
          "operator",
          "value"
        ]
      }
    },
    "logic": {
      "type": "string",
      "description": "How to combine multiple conditions",
      "enum": [
        "AND",
        "OR"
      ]
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    },
    "per_page": {
      "type": "integer",
      "description": "Number of items per page"
    },
    "search": {
      "type": "string",
      "description": "Narrow the preview to contacts whose email matches"
    },
    "sort_by": {
      "type": "string",
      "description": "sort_by parameter",
      "enum": [
        "email",
        "name",
        "surname",
        "phone",
        "subscription_status"
      ]
    },
    "sort_direction": {
      "type": "string",
      "description": "sort_direction parameter",
      "enum": [
        "asc",
        "desc"
      ]
    }
  },
  "required": [
    "profileUuid",
    "conditions",
    "logic"
  ]
}
Annotations
{
  "title": "Preview contacts matching conditions",
  "readOnlyHint": true,
  "destructiveHint": false
}
reach_removeAContactFromATagV1Remove a tag from a single contact. Unlike the bulk endpoint this is applied immediately rather than queued. Neither the tag nor the contact is deleted.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "tagUuid": {
      "type": "string",
      "description": "Tag uuid parameter"
    },
    "contactUuid": {
      "type": "string",
      "description": "Contact uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "tagUuid",
    "contactUuid"
  ]
}
Annotations
{
  "title": "Remove a contact from a tag",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
reach_removeContactsFromATagV1Remove a tag from many contacts at once. Pass `contact_uuids` to target specific contacts, or `all_contacts` to target every contact in the profile. The work is queued, so a success response means it was accepted rather than finished. The tag itself and the contacts are not deleted.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "tagUuid": {
      "type": "string",
      "description": "Tag uuid parameter"
    }
  },
  "required": [
    "profileUuid",
    "tagUuid"
  ]
}
Annotations
{
  "title": "Remove contacts from a tag",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
reach_renameATagV1Rename a tag. The contacts assigned to the tag are unaffected. Names are unique within a profile, so renaming a tag to a name that is already taken is rejected.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "tagUuid": {
      "type": "string",
      "description": "Tag uuid parameter"
    },
    "value": {
      "type": "string",
      "description": "New tag name"
    }
  },
  "required": [
    "profileUuid",
    "tagUuid",
    "value"
  ]
}
Annotations
{
  "title": "Rename a tag",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
reach_updateAContactFieldV1Rename a custom contact field and, for the choice types, replace its option set. Options carrying a uuid are kept and relabelled, options without one are created, and any existing option left out of the list is deleted along with the values contacts hold for it. The field type and slug cannot be changed.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "fieldUuid": {
      "type": "string",
      "description": "Contact field uuid parameter"
    },
    "label": {
      "type": "string",
      "description": "label parameter"
    },
    "options": {
      "type": "array",
      "description": "Replaces the option set when provided. Entries carrying a uuid are kept and relabelled, entries without one are created, and any existing option missing from the list is deleted along with the values contacts hold for it.",
      "items": {
        "type": "object",
        "description": "options parameter",
        "properties": {
          "uuid": {
            "type": "string",
            "description": "uuid parameter"
          },
          "label": {
            "type": "string",
            "description": "label parameter"
          }
        },
        "required": [
          "label"
        ]
      }
    }
  },
  "required": [
    "profileUuid",
    "fieldUuid",
    "label"
  ]
}
Annotations
{
  "title": "Update a contact field",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
reach_updateAContactV1Update a contact's attributes and custom field values. Only the properties present in the request body are changed, so a partial body is enough to change a single attribute. Sending a property as `null` clears it. The response carries the contact's core attributes. Read back its tags, custom field values, source and note with `GET /api/reach/v1/profiles/{profileUuid}/contacts/{contactUuid}`.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "contactUuid": {
      "type": "string",
      "description": "Contact uuid parameter"
    },
    "email": {
      "type": "string",
      "description": "email parameter"
    },
    "name": {
      "type": "string",
      "description": "name parameter"
    },
    "surname": {
      "type": "string",
      "description": "surname parameter"
    },
    "phone": {
      "type": "string",
      "description": "Phone number in E.164 format (leading \"+\" then 7-15 digits)"
    },
    "subscription_status": {
      "type": "string",
      "description": "subscription_status parameter",
      "enum": [
        "subscribed",
        "unsubscribed",
        "confirmed",
        "pending"
      ]
    },
    "note": {
      "type": "string",
      "description": "note parameter"
    },
    "fields": {
      "type": "array",
      "description": "Set custom field values. Omit to leave untouched, send an empty array to clear them all.",
      "items": {
        "type": "object",
        "description": "fields parameter",
        "properties": {
          "uuid": {
            "type": "string",
            "description": "uuid parameter"
          },
          "value": {
            "type": "string",
            "description": "For the scalar field types"
          },
          "selected_option_uuids": {
            "type": "array",
            "description": "For the choice field types",
            "items": {
              "type": "string",
              "description": "selected_option_uuids parameter"
            }
          }
        },
        "required": [
          "uuid"
        ]
      }
    }
  },
  "required": [
    "profileUuid",
    "contactUuid"
  ]
}
Annotations
{
  "title": "Update a contact",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
reach_updateAProfileSegmentV1Rename a segment and/or replace the conditions that define it. `name` is always required. Omit `conditions` to rename without touching the conditions; supply them and they replace the existing set entirely rather than being merged into it. Contacts are never modified, but which of them match the segment can change immediately.
Input schema
{
  "type": "object",
  "properties": {
    "profileUuid": {
      "type": "string",
      "description": "Profile uuid parameter"
    },
    "segmentUuid": {
      "type": "string",
      "description": "Segment uuid parameter"
    },
    "name": {
      "type": "string",
      "description": "name parameter"
    },
    "conditions": {
      "type": "array",
      "description": "Replaces the existing conditions entirely. Omit to keep the current ones.",
      "items": {
        "type": "object",
        "description": "conditions parameter",
        "properties": {
          "attribute": {
            "type": "string",
            "description": "A built-in contact attribute, or `cf:{fieldUuid}` to target a custom\ncontact field. Custom fields are addressed by field UUID; their slug\nis not accepted.\n\nBuilt-in attributes: `email`, `note`, `domain`, `source`,\n`opt_in_method`, `subscription_status`, `subscribed_at`,\n`unsubscribed_at`, `created_at`, `tag`, `campaigns`, `processed`,\n`opened`, `clicked`, `delivered`, `bounced`, `soft_bounced`,\n`dropped`.\n\nWhich operators are accepted depends on the attribute."
          },
          "operator": {
            "type": "string",
            "description": "operator parameter",
            "enum": [
              "equals",
              "not_equals",
              "contains",
              "not_contains",
              "gte",
              "lte",
              "exists",
              "within_last_days",
              "not_within_last_days",
              "older_than_days",
              "processed",
              "not_processed",
              "delivered",
              "not_delivered",
              "dropped",
              "not_dropped",
              "bounced",
              "not_bounced",
              "soft_bounced",
              "not_soft_bounced",
              "opened",
              "not_opened",
              "clicked",
              "not_clicked",
              "unsubscribed",
              "not_unsubscribed"
            ]
          },
          "value": {
            "type": "string",
            "description": "Always a string, including for numeric and date comparisons"
          }
        },
        "required": [
          "attribute",
          "operator",
          "value"
        ]
      }
    },
    "logic": {
      "type": "string",
      "description": "How to combine multiple conditions. Required when conditions are given.",
      "enum": [
        "AND",
        "OR"
      ]
    }
  },
  "required": [
    "profileUuid",
    "segmentUuid",
    "name"
  ]
}
Annotations
{
  "title": "Update a profile segment",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
v2_getDomainVerificationsDIRECTRetrieve a list of pending and completed domain verifications.
Input schema
{
  "type": "object",
  "properties": {},
  "required": []
}
Annotations
{
  "title": "Get domain verifications",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_activateFirewallV1Activate a firewall for a specified virtual machine. Only one firewall can be active for a virtual machine at a time. Use this endpoint to apply firewall rules to VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "firewallId": {
      "type": "integer",
      "description": "Firewall ID"
    },
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "firewallId",
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Activate firewall",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_attachPublicKeyV1Attach existing public keys from your account to a specified virtual machine. Multiple keys can be attached to a single virtual machine. Use this endpoint to enable SSH key authentication for VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "ids": {
      "type": "array",
      "description": "Public Key IDs to attach",
      "items": {
        "type": "integer",
        "description": "ids parameter"
      }
    }
  },
  "required": [
    "virtualMachineId",
    "ids"
  ]
}
Annotations
{
  "title": "Attach public key",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_createFirewallRuleV1Create new firewall rule for a specified firewall. By default, the firewall drops all incoming traffic, which means you must add accept rules for all ports you want to use. Any virtual machine that has this firewall activated will lose sync with the firewall and will have to be synced again manually. Use this endpoint to add new security rules to firewalls.
Input schema
{
  "type": "object",
  "properties": {
    "firewallId": {
      "type": "integer",
      "description": "Firewall ID"
    },
    "protocol": {
      "type": "string",
      "description": "protocol parameter",
      "enum": [
        "TCP",
        "UDP",
        "ICMP",
        "GRE",
        "any",
        "ESP",
        "AH",
        "ICMPv6",
        "SSH",
        "HTTP",
        "HTTPS",
        "MySQL",
        "PostgreSQL"
      ]
    },
    "port": {
      "type": "string",
      "description": "Port or port range, ex: 1024:2048"
    },
    "source": {
      "type": "string",
      "description": "source parameter",
      "enum": [
        "any",
        "custom"
      ]
    },
    "source_detail": {
      "type": "string",
      "description": "IP range, CIDR, single IP or `any`"
    }
  },
  "required": [
    "firewallId",
    "protocol",
    "port",
    "source",
    "source_detail"
  ]
}
Annotations
{
  "title": "Create firewall rule",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_createNewFirewallV1Create a new firewall. Use this endpoint to set up new firewall configurations for VPS security.
Input schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "name parameter"
    }
  },
  "required": [
    "name"
  ]
}
Annotations
{
  "title": "Create new firewall",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_createNewProjectV1Deploy new project from docker-compose.yaml contents or download contents from URL. URL can be Github repository url in format https://github.com/[user]/[repo] and it will be automatically resolved to docker-compose.yaml file in master branch. Any other URL provided must return docker-compose.yaml file contents. If project with the same name already exists, existing project will be replaced.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "project_name": {
      "type": "string",
      "description": "Docker Compose project name using alphanumeric characters, dashes, and underscores only"
    },
    "content": {
      "type": "string",
      "description": "URL pointing to docker-compose.yaml file, Github repository or raw YAML content of the compose file"
    },
    "environment": {
      "type": "string",
      "description": "Project environment variables"
    }
  },
  "required": [
    "virtualMachineId",
    "project_name",
    "content"
  ]
}
Annotations
{
  "title": "Create new project",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_createPostInstallScriptV1Add a new post-install script to your account, which can then be used after virtual machine installation. The script contents will be saved to the file `/post_install` with executable attribute set and will be executed once virtual machine is installed. The output of the script will be redirected to `/post_install.log`. Maximum script size is 48KB. Use this endpoint to create automation scripts for VPS setup tasks.
Input schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Name of the script"
    },
    "content": {
      "type": "string",
      "description": "Content of the script"
    }
  },
  "required": [
    "name",
    "content"
  ]
}
Annotations
{
  "title": "Create post-install script",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_createPTRRecordV1Create or update a PTR (Pointer) record for a specified virtual machine. Use this endpoint to configure reverse DNS lookup for VPS IP addresses.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "ipAddressId": {
      "type": "integer",
      "description": "IP Address ID"
    },
    "domain": {
      "type": "string",
      "description": "Pointer record domain"
    }
  },
  "required": [
    "virtualMachineId",
    "ipAddressId",
    "domain"
  ]
}
Annotations
{
  "title": "Create PTR record",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_createPublicKeyV1Add a new public key to your account. Use this endpoint to register SSH keys for VPS authentication.
Input schema
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "name parameter"
    },
    "key": {
      "type": "string",
      "description": "key parameter"
    }
  },
  "required": [
    "name",
    "key"
  ]
}
Annotations
{
  "title": "Create public key",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_createSnapshotV1Create a snapshot of a specified virtual machine. A snapshot captures the state and data of the virtual machine at a specific point in time, allowing users to restore the virtual machine to that state if needed. This operation is useful for backup purposes, system recovery, and testing changes without affecting the current state of the virtual machine. **Creating new snapshot will overwrite the existing snapshot!** Use this endpoint to capture VPS state for backup and recovery purposes.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Create snapshot",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_deactivateFirewallV1Deactivate a firewall for a specified virtual machine. Use this endpoint to remove firewall protection from VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "firewallId": {
      "type": "integer",
      "description": "Firewall ID"
    },
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "firewallId",
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Deactivate firewall",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_deleteFirewallRuleV1Delete a specific firewall rule from a specified firewall. Any virtual machine that has this firewall activated will lose sync with the firewall and will have to be synced again manually. Use this endpoint to remove specific firewall rules.
Input schema
{
  "type": "object",
  "properties": {
    "firewallId": {
      "type": "integer",
      "description": "Firewall ID"
    },
    "ruleId": {
      "type": "integer",
      "description": "Firewall Rule ID"
    }
  },
  "required": [
    "firewallId",
    "ruleId"
  ]
}
Annotations
{
  "title": "Delete firewall rule",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_deleteFirewallV1Delete a specified firewall. Any virtual machine that has this firewall activated will automatically have it deactivated. Use this endpoint to remove unused firewall configurations.
Input schema
{
  "type": "object",
  "properties": {
    "firewallId": {
      "type": "integer",
      "description": "Firewall ID"
    }
  },
  "required": [
    "firewallId"
  ]
}
Annotations
{
  "title": "Delete firewall",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_deletePostInstallScriptV1Delete a post-install script from your account. Use this endpoint to remove unused automation scripts.
Input schema
{
  "type": "object",
  "properties": {
    "postInstallScriptId": {
      "type": "integer",
      "description": "Post-install script ID"
    }
  },
  "required": [
    "postInstallScriptId"
  ]
}
Annotations
{
  "title": "Delete post-install script",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_deleteProjectV1Completely removes a Docker Compose project from the virtual machine, stopping all containers and cleaning up associated resources including networks, volumes, and images. This operation is irreversible and will delete all project data. Use this when you want to permanently remove a project and free up system resources.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "projectName": {
      "type": "string",
      "description": "Docker Compose project name using alphanumeric characters, dashes, and underscores only"
    }
  },
  "required": [
    "virtualMachineId",
    "projectName"
  ]
}
Annotations
{
  "title": "Delete project",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_deletePTRRecordV1Delete a PTR (Pointer) record for a specified virtual machine. Once deleted, reverse DNS lookups to the virtual machine's IP address will no longer return the previously configured hostname. Use this endpoint to remove reverse DNS configuration from VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "ipAddressId": {
      "type": "integer",
      "description": "IP Address ID"
    }
  },
  "required": [
    "virtualMachineId",
    "ipAddressId"
  ]
}
Annotations
{
  "title": "Delete PTR record",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_deletePublicKeyV1Delete a public key from your account. **Deleting public key from account does not remove it from virtual machine** Use this endpoint to remove unused SSH keys from account.
Input schema
{
  "type": "object",
  "properties": {
    "publicKeyId": {
      "type": "integer",
      "description": "Public Key ID"
    }
  },
  "required": [
    "publicKeyId"
  ]
}
Annotations
{
  "title": "Delete public key",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_deleteSnapshotV1Delete a snapshot of a specified virtual machine. Use this endpoint to remove VPS snapshots.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Delete snapshot",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_getActionDetailsV1Retrieve detailed information about a specific action performed on a specified virtual machine. Use this endpoint to monitor specific VPS operation status and details.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "actionId": {
      "type": "integer",
      "description": "Action ID"
    }
  },
  "required": [
    "virtualMachineId",
    "actionId"
  ]
}
Annotations
{
  "title": "Get action details",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getActionsV1Retrieve actions performed on a specified virtual machine. Actions are operations or events that have been executed on the virtual machine, such as starting, stopping, or modifying the machine. This endpoint allows you to view the history of these actions, providing details about each action, such as the action name, timestamp, and status. Use this endpoint to view VPS operation history and troubleshoot issues.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Get actions",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getAttachedPublicKeysV1Retrieve public keys attached to a specified virtual machine. Use this endpoint to view SSH keys configured for specific VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Get attached public keys",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getBackupsV1Retrieve backups for a specified virtual machine. Use this endpoint to view available backup points for VPS data recovery.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "page": {
      "type": "integer",
      "description": "Page number"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Get backups",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getDataCenterListV1Retrieve all available data centers. Use this endpoint to view location options before deploying VPS instances.
Input schema
{
  "type": "object",
  "properties": {},
  "required": []
}
Annotations
{
  "title": "Get data center list",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getFirewallDetailsV1Retrieve firewall by its ID and rules associated with it. Use this endpoint to view specific firewall configuration and rules.
Input schema
{
  "type": "object",
  "properties": {
    "firewallId": {
      "type": "integer",
      "description": "Firewall ID"
    }
  },
  "required": [
    "firewallId"
  ]
}
Annotations
{
  "title": "Get firewall details",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getFirewallListV1Retrieve all available firewalls. Use this endpoint to view existing firewall configurations.
Input schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "description": "Page number"
    }
  },
  "required": []
}
Annotations
{
  "title": "Get firewall list",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getMetricsV1Retrieve historical metrics for a specified virtual machine. It includes the following metrics: - CPU usage - Memory usage - Disk usage - Network usage - Uptime Use this endpoint to monitor VPS performance and resource utilization over time.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "date_from": {
      "type": "string",
      "description": "date_from parameter"
    },
    "date_to": {
      "type": "string",
      "description": "date_to parameter"
    }
  },
  "required": [
    "virtualMachineId",
    "date_from",
    "date_to"
  ]
}
Annotations
{
  "title": "Get metrics",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getPostInstallScriptsV1Retrieve post-install scripts associated with your account. Use this endpoint to view available automation scripts for VPS deployment.
Input schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "description": "Page number"
    }
  },
  "required": []
}
Annotations
{
  "title": "Get post-install scripts",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getPostInstallScriptV1Retrieve post-install script by its ID. Use this endpoint to view specific automation script details.
Input schema
{
  "type": "object",
  "properties": {
    "postInstallScriptId": {
      "type": "integer",
      "description": "Post-install script ID"
    }
  },
  "required": [
    "postInstallScriptId"
  ]
}
Annotations
{
  "title": "Get post-install script",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getProjectContainersV1Retrieves a list of all containers belonging to a specific Docker Compose project on the virtual machine. This endpoint returns detailed information about each container including their current status, port mappings, and runtime configuration. Use this to monitor the health and state of all services within your Docker Compose project.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "projectName": {
      "type": "string",
      "description": "Docker Compose project name using alphanumeric characters, dashes, and underscores only"
    }
  },
  "required": [
    "virtualMachineId",
    "projectName"
  ]
}
Annotations
{
  "title": "Get project containers",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getProjectContentsV1Retrieves the complete project information including the docker-compose.yml file contents, project metadata, and current deployment status. This endpoint provides the full configuration and state details of a specific Docker Compose project. Use this to inspect project settings, review the compose file, or check the overall project health.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "projectName": {
      "type": "string",
      "description": "Docker Compose project name using alphanumeric characters, dashes, and underscores only"
    }
  },
  "required": [
    "virtualMachineId",
    "projectName"
  ]
}
Annotations
{
  "title": "Get project contents",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getProjectListV1Retrieves a list of all Docker Compose projects currently deployed on the virtual machine. This endpoint returns basic information about each project including name, status, file path and list of containers with details about their names, image, status, health and ports. Container stats are omitted in this endpoint. If you need to get detailed information about container with stats included, use the `Get project containers` endpoint. Use this to get an overview of all Docker projects on your VPS instance.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Get project list",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getProjectLogsV1Retrieves aggregated log entries from all services within a Docker Compose project. This endpoint returns recent log output from each container, organized by service name with timestamps. The response contains the last 300 log entries across all services. Use this for debugging, monitoring application behavior, and troubleshooting issues across your entire project stack.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "projectName": {
      "type": "string",
      "description": "Docker Compose project name using alphanumeric characters, dashes, and underscores only"
    }
  },
  "required": [
    "virtualMachineId",
    "projectName"
  ]
}
Annotations
{
  "title": "Get project logs",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getPublicKeysV1Retrieve public keys associated with your account. Use this endpoint to view available SSH keys for VPS authentication.
Input schema
{
  "type": "object",
  "properties": {
    "page": {
      "type": "integer",
      "description": "Page number"
    }
  },
  "required": []
}
Annotations
{
  "title": "Get public keys",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getScanMetricsV1Retrieve scan metrics for the [Monarx](https://www.monarx.com/) malware scanner installed on a specified virtual machine. The scan metrics provide detailed information about malware scans performed by Monarx, including number of scans, detected threats, and other relevant statistics. This information is useful for monitoring security status of the virtual machine and assessing effectiveness of the malware scanner. Use this endpoint to monitor VPS security scan results and threat detection.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Get scan metrics",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getSnapshotV1Retrieve snapshot for a specified virtual machine. Use this endpoint to view current VPS snapshot information.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Get snapshot",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getTemplateDetailsV1Retrieve detailed information about a specific OS template for virtual machines. Use this endpoint to view specific template specifications before deployment.
Input schema
{
  "type": "object",
  "properties": {
    "templateId": {
      "type": "integer",
      "description": "Template ID"
    }
  },
  "required": [
    "templateId"
  ]
}
Annotations
{
  "title": "Get template details",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getTemplatesV1Retrieve available OS templates for virtual machines. Use this endpoint to view operating system options before creating or recreating VPS instances.
Input schema
{
  "type": "object",
  "properties": {},
  "required": []
}
Annotations
{
  "title": "Get templates",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getVirtualMachineDetailsV1Retrieve detailed information about a specified virtual machine. Use this endpoint to view comprehensive VPS configuration and status.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Get virtual machine details",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_getVirtualMachinesV1Retrieve all available virtual machines. Use this endpoint to view available VPS instances.
Input schema
{
  "type": "object",
  "properties": {},
  "required": []
}
Annotations
{
  "title": "Get virtual machines",
  "readOnlyHint": true,
  "destructiveHint": false
}
VPS_installMonarxV1Install the Monarx malware scanner on a specified virtual machine. [Monarx](https://www.monarx.com/) is a security tool designed to detect and prevent malware infections on virtual machines. By installing Monarx, users can enhance the security of their virtual machines, ensuring that they are protected against malicious software. Use this endpoint to enable malware protection on VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Install Monarx",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_purchaseNewVirtualMachineV1Purchase and setup a new virtual machine. If virtual machine setup fails for any reason, login to [hPanel](https://hpanel.hostinger.com/) and complete the setup manually. If no payment method is provided, your default payment method will be used automatically. Use this endpoint to create new VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "item_id": {
      "type": "string",
      "description": "Catalog price item ID"
    },
    "payment_method_id": {
      "type": "integer",
      "description": "Payment method ID, default will be used if not provided"
    },
    "setup": {
      "type": "string",
      "description": "setup parameter"
    },
    "coupons": {
      "type": "array",
      "description": "Discount coupon codes",
      "items": {
        "type": "string",
        "description": "coupons parameter"
      }
    }
  },
  "required": [
    "item_id",
    "setup"
  ]
}
Annotations
{
  "title": "Purchase new virtual machine",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_recreateVirtualMachineV1Recreate a virtual machine from scratch. The recreation process involves reinstalling the operating system and resetting the virtual machine to its initial state. Snapshots, if there are any, will be deleted. ## Password Requirements Password will be checked against leaked password databases. Requirements for the password are: - At least 12 characters long - At least one uppercase letter - At least one lowercase letter - At least one number - Is not leaked publicly **This operation is irreversible and will result in the loss of all data stored on the virtual machine!** Use this endpoint to completely rebuild VPS instances with fresh OS installation.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "template_id": {
      "type": "integer",
      "description": "Template ID"
    },
    "password": {
      "type": "string",
      "description": "Root password for the virtual machine. If not provided, random password will be generated.\nPassword will not be shown in the response."
    },
    "panel_password": {
      "type": "string",
      "description": "Panel password for the panel-based OS template. If not provided, random password will be generated.\nIf OS does not support panel_password this field will be ignored.\nPassword will not be shown in the response."
    },
    "post_install_script_id": {
      "type": "integer",
      "description": "Post-install script to execute after virtual machine was recreated"
    }
  },
  "required": [
    "virtualMachineId",
    "template_id"
  ]
}
Annotations
{
  "title": "Recreate virtual machine",
  "readOnlyHint": false,
  "destructiveHint": true
}
VPS_replaceAllFirewallRulesInGroupV1Replaces all firewall rules within a specified firewall group with the provided set of rules in a single atomic operation, instead of creating or deleting rules one by one. Any virtual machine using this firewall group will need to be synchronized after replacing rules; pass the "sync" parameter to trigger synchronization immediately.
Input schema
{
  "type": "object",
  "properties": {
    "firewallId": {
      "type": "integer",
      "description": "Firewall ID"
    },
    "rules": {
      "type": "array",
      "description": "The complete set of firewall rules that atomically replaces all existing rules in the group",
      "items": {
        "type": "string",
        "description": "rules parameter"
      }
    },
    "sync": {
      "type": "boolean",
      "description": "Synchronize the firewall group to all its virtual machines after replacing the rules"
    }
  },
  "required": [
    "firewallId",
    "rules"
  ]
}
Annotations
{
  "title": "Replace all firewall rules in group",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_resetHostnameV1Reset hostname and PTR record of a specified virtual machine to default value. Use this endpoint to restore default hostname configuration for VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Reset hostname",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_restartProjectV1Restarts all services in a Docker Compose project by stopping and starting containers in the correct dependency order. This operation preserves data volumes and network configurations while refreshing the running containers. Use this to apply configuration changes or recover from service failures.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "projectName": {
      "type": "string",
      "description": "Docker Compose project name using alphanumeric characters, dashes, and underscores only"
    }
  },
  "required": [
    "virtualMachineId",
    "projectName"
  ]
}
Annotations
{
  "title": "Restart project",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_restartVirtualMachineV1Restart a specified virtual machine by fully stopping and starting it. If the virtual machine was stopped, it will be started. Use this endpoint to reboot VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Restart virtual machine",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_restoreBackupV1Restore a backup for a specified virtual machine. The system will then initiate the restore process, which may take some time depending on the size of the backup. **All data on the virtual machine will be overwritten with the data from the backup.** Use this endpoint to recover VPS data from backup points.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "backupId": {
      "type": "integer",
      "description": "Backup ID"
    }
  },
  "required": [
    "virtualMachineId",
    "backupId"
  ]
}
Annotations
{
  "title": "Restore backup",
  "readOnlyHint": false,
  "destructiveHint": true
}
VPS_restoreSnapshotV1Restore a specified virtual machine to a previous state using a snapshot. Restoring from a snapshot allows users to revert the virtual machine to that state, which is useful for system recovery, undoing changes, or testing. Use this endpoint to revert VPS instances to previous saved states.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Restore snapshot",
  "readOnlyHint": false,
  "destructiveHint": true
}
VPS_setHostnameV1Set hostname for a specified virtual machine. Changing hostname does not update PTR record automatically. If you want your virtual machine to be reachable by a hostname, you need to point your domain A/AAAA records to virtual machine IP as well. Use this endpoint to configure custom hostnames for VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "hostname": {
      "type": "string",
      "description": "hostname parameter"
    }
  },
  "required": [
    "virtualMachineId",
    "hostname"
  ]
}
Annotations
{
  "title": "Set hostname",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_setNameserversV1Set nameservers for a specified virtual machine. Be aware, that improper nameserver configuration can lead to the virtual machine being unable to resolve domain names. Use this endpoint to configure custom DNS resolvers for VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "ns1": {
      "type": "string",
      "description": "ns1 parameter"
    },
    "ns2": {
      "type": "string",
      "description": "ns2 parameter"
    },
    "ns3": {
      "type": "string",
      "description": "ns3 parameter"
    }
  },
  "required": [
    "virtualMachineId",
    "ns1"
  ]
}
Annotations
{
  "title": "Set nameservers",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_setPanelPasswordV1Set panel password for a specified virtual machine. If virtual machine does not use panel OS, the request will still be processed without any effect. Requirements for password are same as in the [recreate virtual machine endpoint](/#tag/vps-virtual-machine/POST/api/vps/v1/virtual-machines/{virtualMachineId}/recreate). Use this endpoint to configure control panel access credentials for VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "password": {
      "type": "string",
      "description": "Panel password for the virtual machine"
    }
  },
  "required": [
    "virtualMachineId",
    "password"
  ]
}
Annotations
{
  "title": "Set panel password",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_setRootPasswordV1Set root password for a specified virtual machine. Requirements for password are same as in the [recreate virtual machine endpoint](/#tag/vps-virtual-machine/POST/api/vps/v1/virtual-machines/{virtualMachineId}/recreate). Use this endpoint to update administrator credentials for VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "password": {
      "type": "string",
      "description": "Root password for the virtual machine"
    }
  },
  "required": [
    "virtualMachineId",
    "password"
  ]
}
Annotations
{
  "title": "Set root password",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_setupPurchasedVirtualMachineV1Setup newly purchased virtual machine with `initial` state. Use this endpoint to configure and initialize purchased VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "template_id": {
      "type": "integer",
      "description": "Template ID"
    },
    "data_center_id": {
      "type": "integer",
      "description": "Data center ID"
    },
    "post_install_script_id": {
      "type": "integer",
      "description": "Post-install script ID"
    },
    "password": {
      "type": "string",
      "description": "Password for the virtual machine. If not provided, random password will be generated.\nPassword will not be shown in the response."
    },
    "hostname": {
      "type": "string",
      "description": "Override default hostname of the virtual machine"
    },
    "install_monarx": {
      "type": "boolean",
      "description": "Install Monarx malware scanner (if supported)"
    },
    "enable_backups": {
      "type": "boolean",
      "description": "Enable weekly backup schedule"
    },
    "ns1": {
      "type": "string",
      "description": "Name server 1"
    },
    "ns2": {
      "type": "string",
      "description": "Name server 2"
    },
    "public_key": {
      "type": "object",
      "description": "Use SSH key",
      "properties": {
        "name": {
          "type": "string",
          "description": "Name of the SSH key"
        },
        "key": {
          "type": "string",
          "description": "Contents of the SSH key"
        }
      }
    }
  },
  "required": [
    "virtualMachineId",
    "data_center_id",
    "template_id"
  ]
}
Annotations
{
  "title": "Setup purchased virtual machine",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_startProjectV1Starts all services in a Docker Compose project that are currently stopped. This operation brings up containers in the correct dependency order as defined in the compose file. Use this to resume a project that was previously stopped or to start services after a system reboot.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "projectName": {
      "type": "string",
      "description": "Docker Compose project name using alphanumeric characters, dashes, and underscores only"
    }
  },
  "required": [
    "virtualMachineId",
    "projectName"
  ]
}
Annotations
{
  "title": "Start project",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_startRecoveryModeV1Initiate recovery mode for a specified virtual machine. Recovery mode is a special state that allows users to perform system rescue operations, such as repairing file systems, recovering data, or troubleshooting issues that prevent the virtual machine from booting normally. Virtual machine will boot recovery disk image and original disk image will be mounted in `/mnt` directory. Use this endpoint to enable system rescue operations on VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "root_password": {
      "type": "string",
      "description": "Temporary root password for recovery mode"
    }
  },
  "required": [
    "virtualMachineId",
    "root_password"
  ]
}
Annotations
{
  "title": "Start recovery mode",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_startVirtualMachineV1Start a specified virtual machine. If the virtual machine is already running, the request will still be processed without any effect. Use this endpoint to power on stopped VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Start virtual machine",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_stopProjectV1Stops all running services in a Docker Compose project while preserving container configurations and data volumes. This operation gracefully shuts down containers in reverse dependency order. Use this to temporarily halt a project without removing data or configurations.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "projectName": {
      "type": "string",
      "description": "Docker Compose project name using alphanumeric characters, dashes, and underscores only"
    }
  },
  "required": [
    "virtualMachineId",
    "projectName"
  ]
}
Annotations
{
  "title": "Stop project",
  "readOnlyHint": false,
  "destructiveHint": true
}
VPS_stopRecoveryModeV1Stop recovery mode for a specified virtual machine. If virtual machine is not in recovery mode, this operation will fail. Use this endpoint to exit system rescue mode and return VPS to normal operation.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Stop recovery mode",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_stopVirtualMachineV1Stop a specified virtual machine. If the virtual machine is already stopped, the request will still be processed without any effect. This is a compute-only power state change and does not affect billing. To stop future charges, disable auto-renewal on the owning subscription. Use this endpoint to power off running VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Stop virtual machine",
  "readOnlyHint": false,
  "destructiveHint": true
}
VPS_syncFirewallToAllAssignedVMsV1Sync a firewall's rules to every virtual machine it's assigned to. Firewall can lose sync with a virtual machine if the firewall has new rules added, removed or updated. Use this endpoint to apply updated firewall rules to all VPS instances assigned to the firewall.
Input schema
{
  "type": "object",
  "properties": {
    "firewallId": {
      "type": "integer",
      "description": "Firewall ID"
    }
  },
  "required": [
    "firewallId"
  ]
}
Annotations
{
  "title": "Sync firewall to all assigned VMs",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_syncFirewallV1Deprecated: use `POST /api/vps/v1/firewall/{firewallId}/sync` instead, which syncs the firewall to all virtual machines assigned to it. Sync a firewall for a specified virtual machine. Firewall can lose sync with virtual machine if the firewall has new rules added, removed or updated. Use this endpoint to apply updated firewall rules to VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "firewallId": {
      "type": "integer",
      "description": "Firewall ID"
    },
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "firewallId",
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Sync firewall",
  "readOnlyHint": false,
  "destructiveHint": false
}
VPS_uninstallMonarxV1Uninstall the Monarx malware scanner on a specified virtual machine. If Monarx is not installed, the request will still be processed without any effect. Use this endpoint to remove malware scanner from VPS instances.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    }
  },
  "required": [
    "virtualMachineId"
  ]
}
Annotations
{
  "title": "Uninstall Monarx",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_updateFirewallRuleV1Update a specific firewall rule from a specified firewall. Any virtual machine that has this firewall activated will lose sync with the firewall and will have to be synced again manually. Use this endpoint to modify existing firewall rules.
Input schema
{
  "type": "object",
  "properties": {
    "firewallId": {
      "type": "integer",
      "description": "Firewall ID"
    },
    "ruleId": {
      "type": "integer",
      "description": "Firewall Rule ID"
    },
    "protocol": {
      "type": "string",
      "description": "protocol parameter",
      "enum": [
        "TCP",
        "UDP",
        "ICMP",
        "GRE",
        "any",
        "ESP",
        "AH",
        "ICMPv6",
        "SSH",
        "HTTP",
        "HTTPS",
        "MySQL",
        "PostgreSQL"
      ]
    },
    "port": {
      "type": "string",
      "description": "Port or port range, ex: 1024:2048"
    },
    "source": {
      "type": "string",
      "description": "source parameter",
      "enum": [
        "any",
        "custom"
      ]
    },
    "source_detail": {
      "type": "string",
      "description": "IP range, CIDR, single IP or `any`"
    }
  },
  "required": [
    "firewallId",
    "ruleId",
    "protocol",
    "port",
    "source",
    "source_detail"
  ]
}
Annotations
{
  "title": "Update firewall rule",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_updatePostInstallScriptV1Update a specific post-install script. Use this endpoint to modify existing automation scripts.
Input schema
{
  "type": "object",
  "properties": {
    "postInstallScriptId": {
      "type": "integer",
      "description": "Post-install script ID"
    },
    "name": {
      "type": "string",
      "description": "Name of the script"
    },
    "content": {
      "type": "string",
      "description": "Content of the script"
    }
  },
  "required": [
    "postInstallScriptId",
    "name",
    "content"
  ]
}
Annotations
{
  "title": "Update post-install script",
  "readOnlyHint": false,
  "destructiveHint": true,
  "idempotentHint": true
}
VPS_updateProjectV1Updates a Docker Compose project by pulling the latest image versions and recreating containers with new configurations. This operation preserves data volumes while applying changes from the compose file. Use this to deploy application updates, apply configuration changes, or refresh container images to their latest versions.
Input schema
{
  "type": "object",
  "properties": {
    "virtualMachineId": {
      "type": "integer",
      "description": "Virtual Machine ID"
    },
    "projectName": {
      "type": "string",
      "description": "Docker Compose project name using alphanumeric characters, dashes, and underscores only"
    }
  },
  "required": [
    "virtualMachineId",
    "projectName"
  ]
}
Annotations
{
  "title": "Update project",
  "readOnlyHint": false,
  "destructiveHint": false
}

Resources 0

Resource templates 0

Prompts 0

Changes from previous version

No completed comparison is available.

RiskChangeSubject
No material changes recorded.

Confirmed vulnerabilities

SeverityFindingAdvisory
No confirmed vulnerability is published for this version.

Provenance

Artifact SHA-256: 6e8719b65f822e144ad6ffb9872a33afff1f70cec628b4509eff29c4fde425b2

Scanner: mcp-proof-engine 0.1.0.

Let’s talk about MCP security.

Share your details and our security team will contact you.