Delete DNS records

Delete 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.

Domain name

Delete DNS records

Get DNS records

Retrieve DNS zone records for a specific domain.

Use this endpoint to view current DNS configuration for domain management.

Domain name

Get DNS records

Get DNS snapshot list

Retrieve DNS snapshots for a domain.

Use this endpoint to view available DNS backup points for restoration.

Domain name

Get DNS snapshot list

Get DNS snapshot

Retrieve particular DNS snapshot with contents of DNS zone records.

Use this endpoint to view historical DNS configurations for domains.

Domain name

Snapshot ID

Get DNS snapshot

Reset DNS records

Reset DNS zone to the default records.

Use this endpoint to restore domain DNS to original configuration.

Domain name

Determines if email records should be reset

Determines if operation should be run synchronously

Specifies which record types to not reset

whitelisted_record_types parameter

Reset DNS records

Restore DNS snapshot

Restore DNS zone to the selected snapshot.

Use this endpoint to revert domain DNS to a previous configuration.

Domain name

Snapshot ID

Restore DNS snapshot

Update DNS records

Update 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.

Domain name

If `true`, resource records (RRs) matching name and type will be deleted and new RRs will be created,
otherwise resource records' ttl's are updated and new records are appended.
If no matching RRs are found, they are created.

zone parameter

zone parameter

Name of the record (use `@` for wildcard name)

Records assigned to the name

records parameter

Content of the name record

TTL (Time-To-Live) of the record

Type of the record

A AAAA CNAME ALIAS MX TXT NS SOA SRV CAA

Update DNS records

Validate DNS records

Validate 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.

Domain name

zone parameter

zone parameter

Records assigned to the name

records parameter

Content of the name record

TTL (Time-To-Live) of the record

Type of the record

Validate DNS records

Activate firewall

Activate 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.

Firewall ID

Virtual Machine ID

Activate firewall

Attach public key

Attach 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.

Public Key IDs to attach

ids parameter

Virtual Machine ID

Attach public key

Create firewall rule

Create 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.

Firewall ID

Port or port range, ex: 1024:2048

protocol parameter

TCP UDP ICMP GRE any ESP AH ICMPv6 SSH HTTP HTTPS MySQL PostgreSQL

source parameter

IP range, CIDR, single IP or `any`

firewallId protocol port source source_detail

Create firewall rule

Create new firewall

Create a new firewall.

Use this endpoint to set up new firewall configurations for VPS security.

name parameter

Create new firewall

Create new project

Deploy 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.

URL pointing to docker-compose.yaml file, Github repository or raw YAML content of the compose file

Project environment variables

Docker Compose project name using alphanumeric characters, dashes, and underscores only

Virtual Machine ID

Create new project

Create PTR record

Create or update a PTR (Pointer) record for a specified virtual machine.

Use this endpoint to configure reverse DNS lookup for VPS IP addresses.

Pointer record domain

IP Address ID

Virtual Machine ID

Create PTR record

Create post-install script

Add 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.

Content of the script

Name of the script

Create post-install script

Create public key

Add a new public key to your account.

Use this endpoint to register SSH keys for VPS authentication.

key parameter

name parameter

Create public key

Create snapshot

Create 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.

Virtual Machine ID

Create snapshot

Deactivate firewall

Deactivate a firewall for a specified virtual machine.

Use this endpoint to remove firewall protection from VPS instances.

Firewall ID

Virtual Machine ID

Deactivate firewall

Delete firewall rule

Delete 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.

Firewall ID

Firewall Rule ID

Delete firewall rule

Delete firewall

Delete a specified firewall.

Any virtual machine that has this firewall activated will automatically have it deactivated.

Use this endpoint to remove unused firewall configurations.

Firewall ID

Delete firewall

Delete PTR record

Delete 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.

IP Address ID

Virtual Machine ID

Delete PTR record

Delete post-install script

Delete a post-install script from your account.

Use this endpoint to remove unused automation scripts.

Post-install script ID

Delete post-install script

Delete project

Completely 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.

Virtual Machine ID

Delete project

Delete public key

Delete 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.

Public Key ID

Delete public key

Delete snapshot

Delete a snapshot of a specified virtual machine.

Use this endpoint to remove VPS snapshots.

Virtual Machine ID

Delete snapshot

Get action details

Retrieve detailed information about a specific action performed on a specified virtual machine.

Use this endpoint to monitor specific VPS operation status and details.

Action ID

Virtual Machine ID

Get action details

Get actions

Retrieve 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.

Page number

Virtual Machine ID

Get actions

Get attached public keys

Retrieve public keys attached to a specified virtual machine.

Use this endpoint to view SSH keys configured for specific VPS instances.

Page number

Virtual Machine ID

Get attached public keys

Get backups

Retrieve backups for a specified virtual machine.

Use this endpoint to view available backup points for VPS data recovery.

Page number

Virtual Machine ID

Get backups

Get data center list

Retrieve all available data centers.

Use this endpoint to view location options before deploying VPS instances.

Get data center list

Get firewall details

Retrieve firewall by its ID and rules associated with it.

Use this endpoint to view specific firewall configuration and rules.

Firewall ID

Get firewall details

Get firewall list

Retrieve all available firewalls.

Use this endpoint to view existing firewall configurations.

Page number

Get firewall list

Get metrics

Retrieve 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.

date_from parameter

date_to parameter

Virtual Machine ID

Get metrics

Get post-install script

Retrieve post-install script by its ID.

Use this endpoint to view specific automation script details.

Post-install script ID

Get post-install script

Get post-install scripts

Retrieve post-install scripts associated with your account.

Use this endpoint to view available automation scripts for VPS deployment.

Page number

Get post-install scripts

Get project containers

Retrieves 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.

Docker Compose project name using alphanumeric characters, dashes, and underscores only

Virtual Machine ID

Get project containers

Get project contents

Retrieves 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.

Virtual Machine ID

Get project contents

Get project list

Retrieves 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.

Virtual Machine ID

Get project list

Get project logs

Retrieves 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.

Virtual Machine ID

Get project logs

Get public keys

Retrieve public keys associated with your account.

Use this endpoint to view available SSH keys for VPS authentication.

Page number

Get public keys

Get scan metrics

Retrieve 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.

Virtual Machine ID

Get scan metrics

Get snapshot

Retrieve snapshot for a specified virtual machine.

Use this endpoint to view current VPS snapshot information.

Virtual Machine ID

Get snapshot

Get template details

Retrieve detailed information about a specific OS template for virtual machines.

Use this endpoint to view specific template specifications before deployment.

Template ID

Get template details

Get templates

Retrieve available OS templates for virtual machines.

Use this endpoint to view operating system options before creating or recreating VPS instances.

Get templates

Get virtual machine details

Retrieve detailed information about a specified virtual machine.

Use this endpoint to view comprehensive VPS configuration and status.

Virtual Machine ID

Get virtual machine details

Get virtual machines

Retrieve all available virtual machines.

Use this endpoint to view available VPS instances.

Get virtual machines

Install Monarx

Install 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.

Virtual Machine ID

Install Monarx

Purchase new virtual machine

Purchase 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.

Discount coupon codes

coupons parameter

Catalog price item ID

Payment method ID, default will be used if not provided

setup parameter

Purchase new virtual machine

Recreate virtual machine

Recreate 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.

Panel password for the panel-based OS template. If not provided, random password will be generated.
If OS does not support panel_password this field will be ignored.
Password will not be shown in the response.

Root password for the virtual machine. If not provided, random password will be generated.
Password will not be shown in the response.

Post-install script to execute after virtual machine was recreated

Template ID

Virtual Machine ID

Recreate virtual machine

Replace all firewall rules in group

Replaces 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.

Firewall ID

The complete set of firewall rules that atomically replaces all existing rules in the group

rules parameter

Synchronize the firewall group to all its virtual machines after replacing the rules

Replace all firewall rules in group

Reset hostname

Reset hostname and PTR record of a specified virtual machine to default value.

Use this endpoint to restore default hostname configuration for VPS instances.

Virtual Machine ID

Reset hostname

Restart project

Restarts 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.

Docker Compose project name using alphanumeric characters, dashes, and underscores only

Virtual Machine ID

Restart project

Restart virtual machine

Restart 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.

Virtual Machine ID

Restart virtual machine

Restore backup

Restore 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.

Backup ID

Virtual Machine ID

Restore backup

Restore snapshot

Restore 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.

Virtual Machine ID

Restore snapshot

Set hostname

Set 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.

hostname parameter

Virtual Machine ID

Set hostname

Set nameservers

Set 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.

ns1 parameter

ns2 parameter

ns3 parameter

Virtual Machine ID

Set nameservers

Set panel password

Set 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.

Panel password for the virtual machine

Virtual Machine ID

Set panel password

Set root password

Set 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.

Root password for the virtual machine

Virtual Machine ID

Set root password

Setup purchased virtual machine

Setup newly purchased virtual machine with `initial` state.

Use this endpoint to configure and initialize purchased VPS instances.

Data center ID

Enable weekly backup schedule

Override default hostname of the virtual machine

Install Monarx malware scanner (if supported)

Name server 1

Name server 2

Password for the virtual machine. If not provided, random password will be generated.
Password will not be shown in the response.

Post-install script ID

Use SSH key

Contents of the SSH key

Name of the SSH key

Template ID

Virtual Machine ID

Setup purchased virtual machine

Start project

Starts 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.

Virtual Machine ID

Start project

Start recovery mode

Initiate 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.

Temporary root password for recovery mode

Virtual Machine ID

Start recovery mode

Start virtual machine

Start 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.

Virtual Machine ID

Start virtual machine

Stop project

Stops 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.

Docker Compose project name using alphanumeric characters, dashes, and underscores only

Virtual Machine ID

Stop project

Stop recovery mode

Stop 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.

Virtual Machine ID

Stop recovery mode

Stop virtual machine

Stop 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.

Virtual Machine ID

Stop virtual machine

Sync firewall

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.

Firewall ID

Virtual Machine ID

Sync firewall

Uninstall Monarx

Uninstall 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.

Virtual Machine ID

Uninstall Monarx

Update firewall rule

Update 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.

Firewall ID

Port or port range, ex: 1024:2048

protocol parameter

Firewall Rule ID

source parameter

IP range, CIDR, single IP or `any`

firewallId ruleId protocol port source source_detail

Update firewall rule

Update post-install script

Update a specific post-install script.

Use this endpoint to modify existing automation scripts.

Content of the script

Name of the script

Post-install script ID

Update post-install script

Update project

Updates 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.

Virtual Machine ID

Update project

Build website NodeJS assets

Builds 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.

Directory, relative to the website document root, where the uploaded site archive currently lives. Most commonly this is simply `public_html`.

Agency Plan website UID

Build website NodeJS assets

Change website domain

Changes 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.

New domain to assign to the website. Set to null to revert to the temporary domain.

Current domain name to change from

Agency Plan website UID

Change website domain

Change WordPress version

Changes the installed WordPress core version on an Agency Plan website to one of the versions available for installation.

Target WordPress core version to install. Must be one of the available versions.

Agency Plan website UID

Change WordPress version

Clear website cache

Clears cache for all domains associated with an Agency Plan website, including its preview domain.

This operation clears all cache types for the website.

Agency Plan website UID

Clear website cache

Create a new website

Provisions 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.

Clone the new website from an existing website

website_uid parameter

Datacenter code where the website should be provisioned. Available codes depend on live capacity and are not a fixed set.

Derive the domain from an existing vhost

from_vhost parameter

username parameter

vhost parameter

Primary domain to attach to the website. Omit or set to null to get a free auto-generated *.hostingersite.com subdomain instead.

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.

Agency Plan order ID

Website settings

php parameter

PHP version

Website type

WordPress installation options

admin parameter

email parameter

password parameter

user parameter

language parameter

title parameter

Create a new website

Create website cron job

Creates 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.

Command to run on the schedule. Must not contain pipe (|) or redirection (<, >) characters.

Cron schedule expression (standard 5-field crontab syntax).

Agency Plan website UID

Create website cron job

Create website database user

Creates 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.

Full database name as returned by the list databases endpoint.

Database username to create (alphanumeric and underscores).

Host the user connects from (IPv4, IPv6, % wildcard, or localhost). Defaults to localhost.

Password for the database user (requires mixed case, letters, and numbers).

Agency Plan website UID

Create website database user

Create website database

Creates 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.

Database name to create (alphanumeric characters).

Database username to create alongside the database (alphanumeric characters).

Agency Plan website UID

Create website database

Delete website cron job

Permanently 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.

Unique identifier of the cron job as returned by the list cron jobs endpoint.

Agency Plan website UID

Delete website cron job

Delete website database user

Permanently 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.

Database username as returned by the list databases endpoint.

Agency Plan website UID

Delete website database user

Delete website database

Permanently 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.

Agency Plan website UID

Delete website database

Delete website

Permanently 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.

Agency Plan website UID

Delete website

Deploy node-static website

Deploy a node-static Agency Plan (h5g) website from an archive file. WARNING: this overwrites the website's existing contents and cannot be undone — always confirm with the user before proceeding. Use this for Agency Plan websites of type node-static (a Node.js-built static site that requires a build step or a plain simple static site). The tool resolves the website from its domain, uploads the archive to the website's file browser over TUS, and triggers the build-assets process which builds the site and deploys the result to public_html. This operation is synchronous: the build and deployment complete before the tool returns, so the website is live as soon as the tool finishes successfully — there is no separate asynchronous build to wait for or poll. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the archive yourself, this tool does it end-to-end. For plain PHP applications that should be extracted as-is, use agencyHosting_deployPhpApplication instead. The website UID is automatically resolved from the domain.

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)

Domain name of the Agency Plan website (e.g., example.com)

Whether to remove the local archive file after successful deployment (default: true)

Deploy node-static website

Deploy PHP application

Deploy a PHP (or other non-build) Agency Plan (h5g) website from an archive file. WARNING: this overwrites the website's existing contents and cannot be undone — always confirm with the user before proceeding. Use this for Agency Plan websites where the archive contents should be extracted and served as-is with no build step (e.g., PHP applications). The tool resolves the website from its domain, uploads the archive to the website's file browser over TUS, and triggers the import-archive process which overwrites the website contents with the archive contents. This operation is synchronous: the archive is extracted and deployed before the tool returns, so the website is live as soon as the tool finishes successfully — there is no separate asynchronous build to wait for or poll. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the archive yourself, this tool does it end-to-end. For node-static websites that require a build step, use agencyHosting_deployNodeStaticWebsite instead. The website UID is automatically resolved from the domain.

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)

Deploy PHP application

Generate upload URL

Generate 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
```

Agency Plan website UID

Generate upload URL

Get website details

Retrieves detailed information about a specific Agency Plan website, including configuration,
status, metadata, hosting plan details, and resource quotas.

Agency Plan website UID

Get website details

Get website setup status

Returns 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.

Agency Plan order ID

Website setup UUID

Get website setup status

Get WordPress settings

Returns the current WordPress settings for an Agency Plan website: installed core version,
LiteSpeed Cache plugin status, object cache status, and maintenance mode status.

Agency Plan website UID

Get WordPress settings

Import website from archive

Imports 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.

Archive filename (e.g., archive.zip). The file must already be uploaded to the website's .h5g/ directory.

Agency Plan website UID

Import website from archive

Link domain to website

Links a domain to the specified Agency Plan website so it can serve traffic for that domain.

Fully qualified domain name to link to the website

Agency Plan website UID

Link domain to website

List Agency Plan order disk usage metrics

Returns 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.

Agency Plan order ID

Length of the window in days, ending now. Bucket size grows with the window.

List Agency Plan websites

Retrieve 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.

Filter by domain name (case-insensitive substring match)

Filter by order IDs. Accepts a comma-separated list.

order_ids parameter

Page number

Number of items per page

Filter by website state. Accepts a comma-separated list.

states parameter

active locked suspended deleting deleted

Filter by detected website type, e.g. wordpress,nodejs. Accepts a comma-separated list.

website_types parameter

List Agency Plan websites

List available datacenters

Lists 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.

Agency Plan order ID

List available datacenters

List available PHP versions for a website

Lists the PHP versions an Agency Plan website can be switched to. The version the website is currently running is returned as settings.php.version by the website details endpoint.

Agency Plan website UID

List available PHP versions for an order

Lists the PHP versions available to websites created under an Agency Plan order, determined by the server the order is hosted on. Use this before creating a website; for a website that already exists, call the website-scoped versions endpoint instead.

Agency Plan order ID

List available WordPress versions

Lists the WordPress core versions available for installation on an Agency Plan website.

Agency Plan website UID

List available WordPress versions

List domains

Returns 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.

Page number

Number of items per page

Filter by website UIDs

website_uuids parameter

List domains

List order resource usage metrics

Returns 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.

Agency Plan order ID

Length of the window in hours, ending now. Bucket size grows with the window.

List order resource usage metrics

List orders

Returns a paginated list of Agency Plan orders accessible to the authenticated client.

Page number

Number of items per page

List orders

List PHP extensions for a website

Lists every PHP extension available to an Agency Plan website and whether it is currently enabled.

Agency Plan website UID

List PHP extensions for a website

List PHP options for a website

Lists the php.ini directives that can be configured for an Agency Plan website, each with its default, the value currently in effect, and the values it accepts.

Agency Plan website UID

List PHP options for a website

List website cron jobs

Returns 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.

Page number

Number of items per page

Agency Plan website UID

List website cron jobs

List website databases

Returns a paginated list of MySQL databases created for an Agency Plan website.

Each entry includes the database's non-system users.

Page number

Number of items per page

Agency Plan website UID

List website databases

List website processes

Lists 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.

Agency Plan website UID

List website processes

Replace website PHP extensions

Replaces the set of PHP extensions enabled on an Agency Plan website with the ones provided. Any toggleable extension not in the request is disabled, so call the extensions endpoint first and send the full desired set. Extensions compiled into PHP, reported with the "built-in" state, are always active and are unaffected.

Extension names, exactly as returned by the extensions endpoint.

extensions parameter

Agency Plan website UID

Replace website PHP extensions

Replace website PHP options

Replaces the custom php.ini values on an Agency Plan website with the ones provided. Any option not in the request is reset to its default, so call the options endpoint first and send the full desired set. Sending an empty array resets every option to its default.

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.

options parameter

php.ini directive name.

Value to apply.

Agency Plan website UID

Replace website PHP options

Unlink domain from website

Unlinks 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.

Domain name

Agency Plan website UID

Unlink domain from website

Update website PHP version

Switches an Agency Plan website to a different PHP version. Call the available versions endpoint first to see which versions can be selected. The website restarts on the new version, so requests served during the switch may fail and code that is incompatible with the target version will break.

PHP version to switch the website to, as major.minor. Must be one of the versions returned by the available versions endpoint.

Agency Plan website UID

Update website PHP version

Create purchase order

Create 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.

Discount coupon codes

coupons parameter

Catalog price items to purchase

items parameter

Catalog price item ID

Quantity to purchase

Payment method ID, default will be used if not provided

Create purchase order

Delete payment method

Delete a payment method from your account.

Use this endpoint to remove unused payment methods from user accounts.

Payment method ID

Delete payment method

Disable auto-renewal

Disable auto-renewal for a subscription.

Use this endpoint when disable auto-renewal for a subscription.

Subscription ID

Disable auto-renewal

Enable auto-renewal

Enable auto-renewal for a subscription.

Use this endpoint when enable auto-renewal for a subscription.

Subscription ID

Enable auto-renewal

Get catalog item list

Retrieve 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.

Filter catalog items by category

Filter catalog items by name. Use `*` for wildcard search, e.g. `.COM*` to find .com domain

Get catalog item list

Get payment method list

Retrieve 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.

Get payment method list

Get subscription list

Retrieve a list of all subscriptions associated with your account.

Use this endpoint to monitor active services and billing status.

Get subscription list

Renew subscription

Create 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.

Discount coupon codes

coupons parameter

Subscription ID

Renew subscription

Set default payment method

Set the default payment method for your account.

Use this endpoint to configure the primary payment method for future orders.

Payment method ID

Set default payment method

Accept incoming domain move

Accept 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.

Domain name

WHOIS profiles of the accepting account. Only the contact types required by the TLD are applied, but all four IDs must be provided.

Administrative contact WHOIS record ID

Billing contact WHOIS record ID

Owner contact WHOIS record ID

Technical contact WHOIS record ID

Accept incoming domain move

Cancel outgoing domain move

Cancel 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.

Domain name

Cancel outgoing domain move

Cancel pending IRTP verification

Cancel 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.

Domain name

Cancel pending IRTP verification

Change WHOIS profile for domain

Change 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.

Contact roles to repoint to the new WHOIS profile

change_for parameter

Domain name

WHOIS profile ID to assign to the domain

Change WHOIS profile for domain

Check domain availability

Check 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.

Domain name (without TLD)

TLDs list

TLD without leading dot

Should response include alternatives

Check domain availability

Claim free domain transfer

Claim 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.

Authorization code from the current registrar

Domain name

Domain contact information

Administrative contact WHOIS record ID

Billing contact WHOIS record ID

Owner contact WHOIS record ID

Technical contact WHOIS record ID

Keep the existing nameservers of the domain

Claim free domain transfer

Claim free domain

Claim 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.

Additional registration data, possible values depends on TLD

Domain name

Domain contact information

Administrative contact WHOIS record ID

Billing contact WHOIS record ID

Owner contact WHOIS record ID

Technical contact WHOIS record ID

Claim free domain

Create domain forwarding

Create domain forwarding configuration.

Use this endpoint to set up domain redirects to other URLs.

Domain name

Redirect type

URL to forward domain to

Create domain forwarding

Create WHOIS profile

Create WHOIS contact profile.

Use this endpoint to add new contact information for domain registration.

ISO 3166 2-letter country code

Legal entity type

TLD of the domain (without leading dot)

TLD details

WHOIS details

Create WHOIS profile

Delete domain forwarding

Delete domain forwarding data.

Use this endpoint to remove redirect configuration from domains.

Domain name

Delete domain forwarding

Delete WHOIS profile

Delete WHOIS contact profile.

Use this endpoint to remove unused contact profiles from account.

WHOIS ID

Delete WHOIS profile

Disable domain lock

Disable 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.

Domain name

Disable domain lock

Disable privacy protection

Disable 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.

Domain name

Disable privacy protection

Enable domain lock

Enable 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.

Domain name

Enable domain lock

Enable privacy protection

Enable 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.

Domain name

Enable privacy protection

Get domain authorization code

Retrieve 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.

Domain name

Get domain authorization code

Get domain details

Retrieve detailed information for specified domain.

Use this endpoint to view comprehensive domain configuration and status.

Domain name

Get domain details

Get domain forwarding

Retrieve domain forwarding data.

Use this endpoint to view current redirect configuration for domains.

Domain name

Get domain forwarding

Get domain list

Retrieve all domains associated with your account.

Use this endpoint to view user's domain portfolio.

Get domain list

Get domain renewal information

Retrieve 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.

Domain name

Get domain renewal information

Get incoming domain move list

Retrieve 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.

Get incoming domain move list

Get incoming domain move

Retrieve 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.

Domain name

Re-check the move against the registry before responding. Only has an effect while the move is in the `activating` status.

Get incoming domain move

Get outgoing domain move list

Retrieve 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.

Get outgoing domain move list

Get outgoing domain move

Retrieve 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.

Domain name

Get outgoing domain move

Get pending IRTP verification

Retrieve 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.

Domain name

Get pending IRTP verification

Get transfer list

Retrieve all domain transfers in your portfolio.

Use this endpoint to monitor incoming and outgoing registrar transfers across your domains.

Get transfer list

Get transfer

Retrieve the transfer for a specified domain.

Use this endpoint to track an incoming or outgoing registrar transfer and its status.

Domain name

Get transfer

Get WHOIS profile list

Retrieve WHOIS contact profiles.

Use this endpoint to view available contact profiles for domain registration.

Filter by TLD (without leading dot)

Get WHOIS profile list

Get WHOIS profile usage

Retrieve domain list where provided WHOIS contact profile is used.

Use this endpoint to view which domains use specific contact profiles.

WHOIS ID

Get WHOIS profile usage

Get WHOIS profile

Retrieve a WHOIS contact profile.

Use this endpoint to view domain registration contact information.

WHOIS ID

Get WHOIS profile

Purchase new domain

Purchase 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.

Additional registration data, possible values depends on TLD

Discount coupon codes

coupons parameter

Domain name

Domain contact information

Administrative contact WHOIS record ID

Billing contact WHOIS record ID

Owner contact WHOIS record ID

Technical contact WHOIS record ID

Catalog price item ID

Payment method ID, default will be used if not provided

Purchase new domain

Reject incoming domain move

Reject 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.

Domain name

Reject incoming domain move

Set WHOIS profile as default

Set 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.

WHOIS ID

Set WHOIS profile as default

Start outgoing domain move

Initiate 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.

Domain name

Email address of the Hostinger account receiving the domain

Start outgoing domain move

Suggest domain names from a description

Suggest 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.

Free-text description of the project the domain is needed for

Amount of domain names to suggest

Suggest domain names from a description

Suggest domain names from a domain

Suggest 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.

Domain name to base the suggestions on

Amount of domain names to suggest

Suggest domain names from a domain

Unset default WHOIS profile

Unset 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.

WHOIS ID

Unset default WHOIS profile

Update domain forwarding

Update domain forwarding configuration.

Use this endpoint to modify existing redirect configuration for domains.

Domain name

Redirect type

URL to forward domain to

Update domain forwarding

Update domain nameservers

Set 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.

Domain name

First name server

Second name server

Third name server

Fourth name server

Update domain nameservers

Cancel an order

Cancel the order and optionally email the customer. Returns the updated order summary.

Whether to email the customer about the cancellation. Defaults to true.

The ID of the order to cancel.

The ID of the store that owns the order.

Cancel an order

Create a discount

Create 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.

Whether the discount applies to the cart total or to each eligible item.

The discount code customers enter at checkout.

When the discount expires. A bare date runs to the end of that day in time_zone. Never expires when omitted.

Minimum cart value in the smallest currency unit required for the discount to apply.

A human-friendly discount name.

When the discount becomes active. A bare date (2026-11-27) anchors to time_zone. Defaults to now when omitted.

The ID of the store to create the discount for.

IANA time zone used to interpret starts_at and ends_at.

The discount type.

Maximum number of times the discount can be redeemed.

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.

Create a discount

Create a payment provider connect link

Create 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.

The ID of the payment gateway to connect, e.g. stripe.

The ID of the store to connect the payment provider to.

Create a payment provider connect link

Create a product image upload URL

Returns 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.

The ID of the product the image will be attached to.

The ID of the store the product belongs to.

Create a product image upload URL

Create a product variant

Add 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.

Units in stock. Defaults to 0.

Whether stock is tracked for this variant. Defaults to false.

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.

options parameter

Option name, e.g. Size.

Option value for this variant, e.g. M.

Prices per currency. Amounts are integers in the smallest currency unit. A free item is amount: 0.

prices parameter

Price in the smallest currency unit (e.g. cents).

ISO 4217 currency code. Defaults to the store's default currency when omitted.

Optional sale price in the smallest currency unit; must be lower than amount.

The ID of the product to add the variant to.

The variant SKU.

The ID of the store that owns the product.

The variant title. Defaults to the option values joined with ' / ' (e.g. 'Red / L').

Create a product variant

Create a sales channel

Create 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.

Merchant-facing custom name. Required for custom channels; not supported for quick-link.

The ID of the store to create the sales channel for.

Sales channel type. "custom" is a headless channel: it requires a name and takes an optional public url.
"quick-link" is a one-page store whose handle is auto-generated; it supports neither name nor url.

Optional public url for the channel. Custom channels only; not supported for quick-link.

Create a sales channel

Create digital product

Create a published digital product with a single variant and an optional external download link.

The product description.

Optional external download link delivered to the customer after purchase.

The product name.

Price in the smallest currency unit (e.g. cents). Must be positive.

The ID of the store to create the product in.

Create digital product

Create physical product

Create a published physical product with a single variant priced in the store currency.

The product description.

The product name.

Create physical product

Create store

Create a new store for your account.

A primary sales channel is created alongside the store.

company_email parameter

company_name parameter

ISO 3166-1 alpha-2 country code.

ISO 639-1 language code.

name parameter

sales_channel parameter

External identifier for the sales channel.

Sales channel type. Only "custom" channels can be created via the API.

Create store

Delete a product

Delete a product and its variants from the store. A subscription product with active
subscribers is archived instead of deleted so its data stays available.

The ID of the product to delete.

Delete a product

Delete a product variant

Delete a single variant from the product.

The ID of the product that owns the variant.

The ID of the store that owns the product.

The ID of the variant to delete.

Delete a product variant

Delete store

Soft-delete a store owned by your account.

The underlying store data is preserved; only the store is marked as deleted.

The ID of the store to delete.

Delete store

Enable manual payment method

Enable a manual payment method so the store can accept orders without an online payment provider.

The ID of the store to enable manual payment for.

Optional display name shown to customers at checkout.

Enable manual payment method

Fulfil an order

Create a fulfilment for the order and attach tracking in one call. Omit items to fulfil
every remaining unfulfilled item. Returns the updated order summary.

Line items to fulfil. Omit to fulfil every remaining unfulfilled item.

items parameter

The line item to fulfil, from the order detail items[].id.

Quantity of the line item to fulfil.

Whether to email the customer about the fulfilment. Defaults to true.

The ID of the order to fulfil.

The ID of the store that owns the order.

Carrier tracking number for the shipment.

Public tracking URL for the shipment. Requires tracking_number.

Fulfil an order

Get custom storefront setup instructions

Retrieve 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.

Get store metadata

Get a store's readiness metadata: whether payment methods and shipping are configured,
plus its default currency. Useful to verify prerequisites before building a storefront.

The ID of the store to read metadata for.

Get store metadata

Get stores

Retrieve the stores associated with your account.

Page number

Get stores

List discounts

List 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.

Filter by disabled state.

Page number

Free-text search over discount code and name.

The ID of the store to list discounts for.

List discounts

List product variants

List 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.

Page number

The ID of the product to list variants for.

The ID of the store that owns the product.

List product variants

List products

List 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.

Opt-in heavy data: "variants" embeds each product's variants; "media" embeds its media.

include parameter

Page number

Restrict to these product ids. Doubles as a single-product lookup. Up to 200 ids.

product_ids parameter

Free-text search over product title and SKU.

Product statuses to include.

status parameter

draft proposed published rejected archived

The ID of the store to list products for.

List products

List sales channels

List a store's active sales channels with their full metadata.

The ID of the store to list sales channels for.

List sales channels

List store orders

List 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.

Earliest creation time to include, inclusive. Accepts a date or ISO date-time (UTC).

Latest creation time to include, inclusive. A bare date covers that whole day.

The order number the merchant and customer see.

Customer email, matched exactly.

Fulfilment statuses to include.

fulfillment_status parameter

Page number

Payment statuses to include. A paid order is "captured".

payment_status parameter

Free-text search over customer name, email, order number and line items.

Order statuses to include.

status parameter

pending completed archived canceled requires_action

The ID of the store to list orders for.

List store orders

List store payment providers

List 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.

Include gateways that do not support the store currency in the available list.

The ID of the store to list payment providers for.

List store payment providers

Retrieve an order

Retrieve 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.

The ID of the order to retrieve.

The ID of the store that owns the order.

Retrieve an order

Set store shipping

Set the flat-rate shipping price for a store, creating the shipping zone if it does not exist yet.

Flat shipping rate in the smallest currency unit (e.g. cents). Use 0 for free shipping.

The ID of the store to configure shipping for.

Set store shipping

Update a product

Update 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.

The product description.

The product name.

The ID of the product to update.

Set "published" to make the product buyable, "draft" to hide it, or "archived" to retire it.

The ID of the store that owns the product.

Update a product

Update product variants in batch

Update 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.

The ID of the product whose variants are being updated.

Variants to update in place by id, up to 100. Variants omitted from the list are left untouched.

variants parameter

Units in stock.

Whether stock is tracked for this variant.

The full list of prices for the variant, replacing the existing ones. A free item is amount: 0.

prices parameter

Price in the smallest currency unit (e.g. cents).

ISO 4217 currency code. Defaults to the store's default currency.

Optional sale price in the smallest currency unit; must be lower than amount.

The variant title.

The id of the variant to update.

Update product variants in batch

Update sales channel

Update 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.

Merchant-facing custom name shown in the sales channels list. Pass null to clear it.

The ID of the sales channel to update.

The ID of the store that owns the sales channel.

Public address where the custom sales channel lives. Pass null to clear it.

Update sales channel

Upload and attach a product image

Fetch 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.

Publicly reachable URL of the raster image (JPEG, PNG, GIF or WebP), maximum 15MB. The image is
fetched, virus-scanned and validated by content, then stored on the CDN. SVG is not accepted.
Provide either this or object_name.

When true, the image becomes the product's thumbnail (primary image). When omitted, it becomes the
thumbnail only if the product does not have one yet.

Key returned by the upload-url endpoint. Provide this instead of image_url to attach an uploaded image.

The ID of the product to attach the image to.

The ID of the store the product belongs to.

Upload and attach a product image

Create website

Create 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

message parameter

message parameter

Detailed project specification.
Include purpose, key features, user flows, data models, and design preferences.
The specification should be detailed and comprehensive, covering all aspects of the project.

type parameter

Create website

Get website

Get 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.

The website ID

Get website

Activate WordPress plugin

Activate 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.

Slug of the installed plugin to activate.

WordPress installation (software) identifier

username parameter

Activate WordPress plugin

Activate WordPress theme

Activate 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.

Slug of the installed theme to activate.

username parameter

Activate WordPress theme

Change database password

Changes 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.

Full database name as returned by the list databases endpoint.

New database user password.

username parameter

Change database password

Check if WooCommerce is installed

Check whether WooCommerce is installed on any WordPress installation of a
domain. Optionally filter by domain to scope the check.

Filter by domain name (case-insensitive substring match)

Check if WooCommerce is installed

Check if WordPress installations are valid

Check 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).

Force fresh validation without cache. Preferable for troubleshooting purposes.

WordPress installation (software) identifiers to validate.

Software identifier

username parameter

Clear website cache

Permanently 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.

Directory of the website installation to clear, relative to the website root.
Defaults to the website root.

Domain name

username parameter

Clear website cache

Create account cron job

Creates 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.

Command to execute on the schedule.

Cron schedule expression (for example "0 2 * * *" runs daily at 02:00).

username parameter

Create account cron job

Create account database

Creates 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.

Database name. If the account username prefix is omitted, it is added automatically.

Database user password.

Database user. If the account username prefix is omitted, it is added automatically.

username parameter

Website domain assigned to the database.

username name user password website_domain

Create account database

Create database remote connection

Allows 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.

Remote host to allow: an IPv4/IPv6 address, or "%" for any host.

username parameter

Create database remote connection

Create login links

Create 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).

WordPress installation (software) identifier

username parameter

Create login links

Create website parked domain

Create 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.

Domain name

Domain name or IP address to park on the selected website

username parameter

Create website parked domain

Create website redirect

Creates a redirect from a URL on the selected website to another URL or IP address.

Domain name

Source URL on the selected website

Destination URL or IP address

username parameter

Create website redirect

Create website subdomain

Create 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.

Directory name for the subdomain relative to the website root

Domain name

Use the website public directory as the subdomain root directory

Subdomain prefix to create under the selected website

username parameter

Create website subdomain

Create website

Create 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.

Datacenter code. This parameter is required when creating the first website on a new hosting plan.

Domain name for the website. Cannot start with "www."

ID of the associated order

Create website

Deactivate WordPress plugin

Deactivate 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.

Slug of the installed plugin to deactivate.

username parameter

Deactivate WordPress plugin

Delete account cron job

Permanently deletes the cron job identified by its uid.

The uid is returned by the list cron jobs endpoint.

Unique identifier of the cron job as returned by the list cron jobs endpoint.

username parameter

Delete account cron job

Delete account database

Permanently deletes a database and its remote connections.

The database name must be the full name returned by the list databases endpoint.

Full database name as returned by the list databases endpoint.

username parameter

Delete account database

Delete database remote connection

Permanently 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.

Remote host to revoke: the IPv4/IPv6 address, or "%",
exactly as returned by the list remote connections endpoint.

username parameter

Delete database remote connection

Delete website parked domain

Delete an existing parked or alias domain from the selected website.

Use this endpoint to remove parked domains that are no longer needed.

Domain name

parkedDomain parameter

username parameter

Delete website parked domain

Delete website redirect

Permanently deletes the redirect identified by its source URL.

Pass the `from` value exactly as returned by the list redirects endpoint.

Domain name

Source URL returned by the list redirects endpoint.

username parameter

Delete website redirect

Delete website subdomain

Delete an existing subdomain from the selected website.

Use this endpoint to remove subdomains that are no longer needed.

Domain name

subdomain parameter

username parameter

Delete website subdomain

Delete website

This 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.

Domain name

Delete website

Delete WordPress installation

Delete 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).

WordPress installation (software) identifier

username parameter

Delete WordPress installation

Deploy JavaScript application

Deploy a JavaScript application from an archive file to a hosting server. IMPORTANT: the archive must ONLY contain application source files, not the build output, skip node_modules directory; also exclude all files matched by .gitignore if the ignore file exists. The build process will be triggered automatically on the server after the archive is uploaded. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the archive yourself, this tool does it end-to-end. After deployment, use the hosting_listJsDeployments tool to check deployment status and track build progress.

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.

Domain name associated with the hosting account (e.g., example.com)

Whether to remove the archive file after successful deployment (default: false)

Deploy JavaScript application

Deploy static site archive

Deploy 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`.

Relative path to the archive file from website root directory

Domain name

username parameter

Deploy static site archive

Deploy static website

Deploy a static website from an archive file to a hosting server. IMPORTANT: This tool only works for static websites with no build process. The archive must contain pre-built static files (HTML, CSS, JavaScript, images, etc.) ready to be served. If the website has a package.json file or requires a build command, use hosting_deployJsApplication instead. The tool uploads the archive to the website's file browser over TUS and triggers deployment; the archive is extracted and deployed directly without any build steps. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the archive yourself, this tool does it end-to-end. The username will be automatically resolved from the domain.

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)

Deploy static website

Deploy WordPress plugin

Deploy 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.

Domain name

Relative path to the plugin directory from wp-content/plugins

Slug of the plugin

username parameter

Deploy WordPress plugin

Deploy WordPress theme

Deploy 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.

Domain name

Whether to activate the theme after deployment

Slug of the theme

Relative path to the theme directory from wp-content/themes

username parameter

Deploy WordPress theme

Deploy WordPress plugin

Deploy a WordPress plugin from a directory to a hosting server. This tool uploads all plugin files and triggers plugin deployment. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the files yourself, this tool does it end-to-end.

Absolute or relative path to the plugin directory containing all plugin files

WordPress plugin slug (e.g., omnisend)

Deploy WordPress plugin

Deploy WordPress theme

Deploy a WordPress theme from a directory to a hosting server. This tool uploads all theme files and triggers theme deployment. The uploaded theme can optionally be activated after deployment. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the files yourself, this tool does it end-to-end.

Whether to activate the theme after deployment (default: false)

WordPress theme slug (e.g., twentytwentyfive)

Absolute or relative path to the theme directory containing all theme files

Deploy WordPress theme

Detect WordPress installations

Trigger 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.

username parameter

Detect WordPress installations

Generate a free subdomain

Generate 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.

Generate a free subdomain

Generate upload URL

Generate 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
```

Website domain

Account username

Generate upload URL

Get cron job output

Returns 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.

Unique identifier of the cron job as returned by the list cron jobs endpoint.

username parameter

Get cron job output

Get installation JWT token

Return 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).

WordPress installation (software) identifier

username parameter

Get installation JWT token

Get NodeJS build logs

Retrieve 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).

Domain name

Line from which to start retrieving logs

username parameter

Build UUID

Get NodeJS build logs

Get Node.js build settings from archive

Auto-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.

The path to the archive file relative to the document root of the vhost

Domain name

username parameter

Get Node.js build settings from archive

Get PHP details

Returns 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.

Domain name

username parameter

Get PHP details

Get PHP info

Returns the full phpinfo page (HTML) for the website.

Use it to debug PHP issues or inspect the complete PHP environment of the website.

Domain name

username parameter

Get PHP info

Get phpMyAdmin link

Returns 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.

Full database name as returned by the list databases endpoint.

username parameter

Get phpMyAdmin link

Get website file content

Get 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.

Domain name

Line offset to start reading from.

Max number of lines to return.

File path, relative to the document root.

username parameter

Get website file content

Import WordPress website

Import 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.

Path to the WordPress archive file (relative to website root)

Domain name

Path to the database SQL file (relative to website root)

username parameter

Import WordPress website

Import WordPress website

Import a WordPress website from an archive file to a hosting server. This tool uploads a website archive (zip, tar, tar.gz, etc.) and a database dump (.sql file) to deploy a complete WordPress website. The archive will be extracted on the server automatically. Note: This process may take a while for larger sites. After upload completion, files are being extracted and the site will be available in a few minutes. Upload credentials are generated and used internally — do not call a separate upload-url endpoint or upload the files yourself, this tool does it end-to-end. The username will be automatically resolved from the domain.

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)

Absolute or relative path to a database dump file (.sql)

Domain name associated with the hosting account (e.g., example.com)

Import WordPress website

Install WordPress plugins

Install 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.

Plugin slugs to install. Use GET /api/hosting/v1/wordpress/plugins to discover available slugs.

Plugin slug

WordPress installation (software) identifier

username parameter

Install WordPress plugins

Install WordPress theme

Install 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.

Font identifier. Only applied when the theme is a Hostinger theme; the default is used when omitted.

professional modern elegant creative dynamic default

Layout identifier. Only applied when the theme is a Hostinger theme; the default is used when omitted.

Palette identifier. Only applied when the theme is a Hostinger theme; the default is used when omitted.

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.

username parameter

Install WordPress theme

Install WordPress

Install 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.

WordPress core auto-update policy

WordPress admin credentials

email parameter

WordPress admin username

password parameter

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.

Database name (username prefix added if missing)

password parameter

Relative directory to install WordPress into. Defaults to the website root when omitted.

Domain of the existing website where WordPress will be installed

WordPress locale. Defaults to en_US when omitted.

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.

Title of the WordPress site

username parameter

WordPress core version to install. If omitted, the latest core version compatible with the account vhost PHP version is selected.

Install WordPress

List account cron jobs

Returns the list of cron jobs configured for the specified account, including their schedule and command.

username parameter

List account cron jobs

List account databases

Returns a paginated list of databases for the specified account.

Use the domain and is_assigned filters to find databases assigned to a specific domain.

Filter by domain name (case-insensitive substring match)

When used with domain, return only databases assigned to that domain.

Page number

Number of items per page

Search databases by name, user, or creation date.

username parameter

List account databases

List available datacenters

Retrieve 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.

Order ID

List available datacenters

List available WordPress core updates

List 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).

WordPress installation (software) identifier

username parameter

List available WordPress core updates

List available WordPress plugins

List 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).

username parameter

List available WordPress plugins

List database remote connections

Returns 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.

Filter remote connections by the domain the database is assigned to.
Rules for databases not assigned to any domain are always included.

username parameter

List database remote connections

List installed WordPress plugins

List 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).

Filter installed plugins by category.

username parameter

List installed WordPress plugins

List installed WordPress themes

List 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).

username parameter

List installed WordPress themes

List JavaScript deployments

List javascript application deployments for checking their status. Use this tool when customer asks for the status of the deployment. This tool retrieves a paginated list of Node.js application deployments for a domain with optional filtering by deployment states.

Domain name associated with the hosting account (e.g., example.com)

Page number for pagination (optional)

Number of items per page (optional)

Filter by deployment states (optional). Valid values: pending, completed, running, failed

List JavaScript deployments

List NodeJS builds

Retrieve 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.

Domain name

Page number

Number of items per page

Build states to filter by

states parameter

username parameter

List NodeJS builds

List Node.js environment variables

Lists 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.

Domain name

username parameter

List Node.js environment variables

List Node.js vulnerabilities

Lists 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.

Domain name

Severities to filter by

severities parameter

username parameter

List Node.js vulnerabilities

List orders

Retrieve 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.

Filter by specific order IDs

order_ids parameter

Page number

Number of items per page

Filter by order statuses

statuses parameter

List orders

List suggested WordPress plugins

List curated plugin suggestions grouped by website type.

Use the returned `slug` values with
POST /api/hosting/v1/accounts/{username}/wordpress/{software}/plugins/install.

Optionally scope suggestions to a specific order.

List suggested WordPress plugins

List website files and directories

List 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.

Directory path to check

Domain name

Filter by entry type, e.g. file,directory. Omit for all types.

file_types parameter

How many directory levels deep to recurse.

Max number of entries to return in this page.

Number of entries to skip. Page with offset + item count until reaching total_items.

username parameter

List website files and directories

List website parked domains

Retrieve 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.

Domain name

username parameter

List website parked domains

List website redirects

Returns a paginated list of redirects configured for the selected website.

Domain name

Page number

Number of items per page

username parameter

List website redirects

List website subdomains

Retrieve 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.

Domain name

username parameter

List website subdomains

List websites

Retrieve 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.

Filter by domain name (case-insensitive substring match)

Filter by enabled status

Order ID

Page number

Number of items per page

Filter by specific username

Filter by detected website type, e.g. wordpress,nodejs. Accepts a comma-separated list.

website_types parameter

List websites

List WordPress installations

List 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.

Filter by ownership type. Defaults to "owned". Use "all" to include both owned and managed installations.

Filter by specific username

List WordPress installations

List WordPress themes

List WordPress themes available to install.

Use the returned `slug` values with
POST /api/hosting/v1/accounts/{username}/wordpress/{software}/themes/install.

Optionally scope themes to a specific order.

Search term to match against theme names.

List WordPress themes

Patch Node.js vulnerabilities

Patches 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.

Domain name

username parameter

List of vulnerability IDs to patch, as returned by the list vulnerabilities endpoint.

vulnerability_ids parameter

Patch Node.js vulnerabilities

Purge LiteSpeed Cache

Purge 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).

WordPress installation (software) identifier

username parameter

Purge LiteSpeed Cache

Repair database

Repairs 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.

Full database name as returned by the list databases endpoint.

username parameter

Repair database

Replace Node.js environment variables

Replaces 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.

Domain name

Environment variables to set. This is the full desired set: any variable not in
this list is deleted, and an empty array deletes every variable.

env_vars parameter

Environment variable name. Must start with an uppercase letter or
underscore, followed by uppercase letters, digits or underscores.

Environment variable value.

username parameter

Replace Node.js environment variables

Reset PHP extensions

Resets all PHP extensions of the website to their default state.

Use it to recover from extension conflicts or restore the original configuration.

Domain name

username parameter

Reset PHP extensions

Restart Node.js application

Restarts 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.

Domain name

username parameter

Restart Node.js application

Search WordPress plugins

Search 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.

Search term to match against plugin names. Minimum 3 characters.

Search WordPress plugins

Set AI option status

Enable 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).

Enable (true) or disable (false) the AI option.

AI option name

username parameter

Set AI option status

Show AI option status

Show 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).

Filter the status by a single AI option.

username parameter

Show AI option status

Show JavaScript deployment logs

Retrieve logs for a specified JavaScript application deployment for debugging purposes in case of failure.

UUID of the JavaScript deployment build

Domain name associated with the hosting account (e.g., example.com)

Line from which to retrieve logs (optional, default 0)

Show JavaScript deployment logs

Show LiteSpeed Cache status

Show 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).

WordPress installation (software) identifier

username parameter

Show LiteSpeed Cache status

Show maintenance status

Show 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).

username parameter

Show maintenance status

Show Memcached object cache status

Show 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).

username parameter

Show Memcached object cache status

Show WordPress core version

Show 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).

username parameter

Show WordPress core version

Start Node.js build

Start 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.

Node.js application type

create-react-app gatsby vite angular react vue parcel next nuxt nest express fastify astro svelte svelte-kit hono react-router nitro other

Build script that will be ran to build the application

Domain name

The main entry point file for the application

Node.js version

Build output directory relative to the root directory

Package manager

Application root directory (where package.json is located) relative to public_html

Source-specific options

The path to the archive file relative to the document root of the vhost (required if source is "archive")

The source type of the files

username parameter

Start Node.js build

Toggle cacheless mode

Turns 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.

Domain name

Turn development (cacheless) mode on (true) or off (false) for the website.

username parameter

Toggle cacheless mode

Toggle maintenance mode

Enable 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).

Enable (true) or disable (false) maintenance mode for the WordPress installation.

username parameter

Toggle maintenance mode

Toggle Memcached object cache

Activate 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).

Activate (true) or deactivate (false) the Memcached object cache for the WordPress installation.

username parameter

Toggle Memcached object cache

Toggle website cache

Turns 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.

Domain name

Turn server-side caching on (true) or off (false) for the website.

username parameter

Toggle website cache

Uninstall WordPress plugins

Uninstall 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.

Slugs of the installed plugins to uninstall.

Plugin slug

WordPress installation (software) identifier

username parameter

Uninstall WordPress plugins

Uninstall WordPress themes

Uninstall 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.

Slugs of the installed themes to uninstall.

Theme slug

username parameter

Uninstall WordPress themes

Update Hostinger WordPress plugin

Update 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.

Slug of the Hostinger plugin to update to its latest version.

hostinger hostinger-ai-assistant hostinger-affiliate-plugin hostinger-easy-onboarding hostinger-reach

username parameter

Update Hostinger WordPress plugin

Update PHP extensions

Enables or disables PHP extensions (modules) for the website.

Use the Get PHP details endpoint to check the current extension states before changing them.

PHP extensions to disable.

disable parameter

Domain name

PHP extensions to enable.

enable parameter

username parameter

Update PHP extensions

Update PHP options

Updates 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.

Domain name

Map of PHP options to update, keyed by option name. Only include options you want to change.

username parameter

Update PHP options

Update PHP version

Changes the PHP version of the website.

Use the Get PHP details endpoint to see the versions available for the website.

Domain name

username parameter

PHP version to switch the website to.

Update PHP version

Update WordPress core

Update 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.

Update the minor version only.

username parameter

Update to a specific WordPress core version.

Update WordPress core

Update WordPress plugins

Update 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.

Slugs of the installed plugins to update to their latest version.

Plugin slug

username parameter

Update WordPress plugins

Update WordPress themes

Update 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.

Slugs of the installed themes to update to their latest version.

Theme slug

username parameter

Update WordPress themes

Verify domain ownership

Verify 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).

Domain to verify ownership for

Verify domain ownership

Change mailbox password

Change the password of a mailbox.

Mailbox resource ID

New mailbox password. Minimum 8 characters with uppercase, lowercase, number and special character; must not be a commonly used password.

Change mailbox password

Create API token

Create 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`.

Human-readable label for this token

Order resource ID

Mailbox scope this token can access

Grant access to all current and future mailboxes of the order

Required when `has_all_mailboxes` is false. Mailbox resource IDs of this order.

mailbox_ids parameter

Create API token

Create alias

Create 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.

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.

Mailbox resource ID

Create alias

Create autoreply

Create 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.

Body of the automatic reply

Sender display name used for the reply

When the autoreply stops. Omit for an indefinite autoreply.

Mailbox resource ID

When the autoreply becomes active. Defaults to now.

Subject of the automatic reply

Create autoreply

Create catch-all

Create 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.

Mailbox resource ID

Create catch-all

Create forwarder

Create 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.

Email address the messages will be forwarded to

Whether to keep a copy of forwarded messages in the mailbox. Defaults to false.

Mailbox resource ID

Create forwarder

Create mailbox

Create a mailbox under the given mail order. The full email address is
composed from the given local part and the domain of the order.

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.

Order resource ID

Mailbox password. Minimum 8 characters with uppercase, lowercase, number and special character.

Create mailbox

Create webhook

Create 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.

Optional description of the webhook's purpose

Events that trigger this webhook

events parameter

Mailbox resource ID

Human-readable name for this webhook

Initial status of the webhook

Publicly reachable URL that receives the webhook POST requests

Create webhook

Delete alias

Delete an alias. Messages sent to the alias address are no longer
delivered to the mailbox.

Alias resource ID

Delete alias

Delete autoreply

Delete the autoreply of a mailbox. The mailbox stops sending
automatic replies immediately.

Autoreply resource ID

Delete autoreply

Delete catch-all

Delete a catch-all. Messages sent to unknown addresses of the domain
are no longer routed to the mailbox.

Catch-all resource ID

Delete catch-all

Delete forwarder

Delete a forwarder. The mailbox stops forwarding messages to the
destination address immediately.

Forwarder resource ID

Delete forwarder

Delete mailbox

Delete a mailbox. The mailbox is soft-deleted and stays restorable
for a limited period before it is permanently removed.

Mailbox resource ID

Delete mailbox

Delete webhook

Permanently delete a webhook. This action cannot be undone. After
deletion the URL no longer receives event notifications.

Webhook ID (returned when the webhook was created)

Delete webhook

Get order plan

Retrieve the plan the given mail order was purchased with, including
domain-level and mailbox-level quotas, limits, and protocol
availability.

Order resource ID

Get order plan

Get webhook

Retrieve 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.

Get webhook

List API tokens

Retrieve 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.

Filter tokens by order resource ID. Single value or comma-separated list.

Page number

Number of items per page

List API tokens

List access logs

Retrieve 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.

Filter log entries by a specific email account

Exact date filter (YYYY-MM-DD). Takes precedence over `from_date`/`to_date` when both are given.

Date range start (RFC 3339)

Filter access log entries by whether the session had deletions

Order resource ID

Page number

Number of items per page

Filter access log entries by protocol

Filter log entries by status

Date range end (RFC 3339)

List access logs

List action logs

Retrieve 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.

Date range start (RFC 3339)

Order resource ID

Page number

Number of items per page

Filter log entries by status

Date range end (RFC 3339)

List action logs

List aliases

Retrieve a paginated list of aliases across all mailboxes of a mail
order.

Order resource ID

Page number

Number of items per page

List aliases

List autoreplies

Retrieve a paginated list of autoreplies across all mailboxes of a
mail order.

Order resource ID

Page number

Number of items per page

List autoreplies

List catch-alls

Retrieve a paginated list of catch-alls across all mailboxes of a
mail order.

Order resource ID

Page number

Number of items per page

List catch-alls

List forwarders

Retrieve a paginated list of forwarders across all mailboxes of a
mail order.

Order resource ID

Page number

Number of items per page

List forwarders

List inbound logs

Retrieve 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.

Date range start (RFC 3339)

Order resource ID

Page number

Number of items per page

Filter log entries by recipient. Accepts a full email address or a domain.

Filter log entries by sender. Accepts a full email address or a domain.

Filter log entries by status

Date range end (RFC 3339)

List inbound logs

List mailbox action logs

Retrieve 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.

Mailbox email address. Must belong to the order's domain.

Filter mailbox action log entries by event type

MessageNew MessageRead MessageAppend MessageExpunge MailboxCreate MailboxDelete MailboxRename

Date range start (RFC 3339)

Order resource ID

Page number

Number of items per page

Date range end (RFC 3339)

List mailbox action logs

List mailboxes

Retrieve 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).

Order resource ID

Page number

Number of items per page

Filter mailboxes whose email address contains the given string

Sort mailboxes by field. Prefix with `-` for descending order.

List mailboxes

List orders

Retrieve 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.

Filter orders by domain name (exact match)

Filter orders by trial state

Page number

Number of items per page

Sort orders by field. Prefix with `-` for descending order.

Filter orders by status

List orders

List outbound logs

Retrieve 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.

Filter log entries by a specific email account

Exact date filter (YYYY-MM-DD). Takes precedence over `from_date`/`to_date` when both are given.

Date range start (RFC 3339)

Order resource ID

Page number

Number of items per page

Filter log entries by status

Date range end (RFC 3339)

List outbound logs

List webhook delivery logs

Retrieve a paginated list of webhook delivery logs for the given mail
order, including delivery outcome, duration, and retry counts.
Supports filtering by mailbox.

Filter by the mailbox resource ID the webhooks are attached to

Order resource ID

Page number

Number of items per page

List webhook delivery logs

List webhooks

Retrieve 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.

Order resource ID

Page number

Number of items per page

Filter webhooks by status

List webhooks

Regenerate webhook secret

Regenerate 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.

Webhook ID (returned when the webhook was created)

Regenerate webhook secret

Resend catch-all confirmation

Resend the confirmation email to the mailbox address of an
unconfirmed catch-all.

Catch-all resource ID

Resend catch-all confirmation

Resend forwarder confirmation

Resend the confirmation email to the destination address of an
unconfirmed forwarder.

Forwarder resource ID

Resend forwarder confirmation

Revoke API token

Revoke an API token. The token immediately loses access to the
[Hostinger Email API](https://api.mail.hostinger.com/). This action
cannot be undone.

API token ID (returned when the token was created)

Revoke API token

Test webhook

Send a test delivery to the webhook URL and return the result. Test
requests are rate limited upstream.

Test webhook

Update autoreply

Replace 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.

Autoreply resource ID

Body of the automatic reply

Sender display name used for the reply

When the autoreply stops. Omit for an indefinite autoreply.

When the autoreply becomes active. Defaults to now.

Subject of the automatic reply

Update autoreply

Update forwarder keep-copy setting

Enable or disable keeping a copy of forwarded messages in the
mailbox.

Forwarder resource ID

Whether to keep a copy of forwarded messages in the mailbox

Update forwarder keep-copy setting

Update webhook

Partially 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.

New description, or null to clear it

Replaces the full list of subscribed events

events parameter

New human-readable name for the webhook

New status for the webhook

New URL to deliver events to

Update webhook

Assign a contact to a tag

Assign 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.

Contact uuid parameter

Profile uuid parameter

Tag uuid parameter

Assign a contact to a tag

Assign contacts to a tag

Assign 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.

Apply to every contact in the profile

Contacts to apply the change to. Required unless all_contacts is true.

contact_uuids parameter

Profile uuid parameter

Tag uuid parameter

Assign contacts to a tag

Count profile segment contacts

Count the contacts currently matching a segment without listing them.

Cheaper than paging through the segment contacts endpoint when only the size is needed.

Profile uuid parameter

Segment uuid parameter

Count profile segment contacts

Create a contact field

Define 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.

label parameter

Required for single_choice and multi_choice, ignored for the scalar types. Labels must be unique regardless of casing.

options parameter

Profile uuid parameter

Immutable once the field exists

Create a contact field

Create a new contact segment

Create 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.

conditions parameter

conditions parameter

attribute parameter

note comment domain integration source name surname email subscribed_at unsubscribed_at subscription_status processed opened clicked delivered bounced unsubscribed dropped tag campaigns

operator parameter

value parameter

logic parameter

name parameter

Create a new contact segment

Create a new contact

Create 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.

email parameter

name parameter

note parameter

Phone number in E.164 format (leading "+" then 7-15 digits)

surname parameter

Existing tags to attach to the created contact

tag_uuids parameter

Create a new contact

Create a profile segment

Create 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.

Conditions a contact must satisfy to fall into the segment

conditions parameter

A built-in contact attribute, or `cf:{fieldUuid}` to target a custom
contact field. Custom fields are addressed by field UUID; their slug
is not accepted.

Built-in attributes: `email`, `note`, `domain`, `source`,
`opt_in_method`, `subscription_status`, `subscribed_at`,
`unsubscribed_at`, `created_at`, `tag`, `campaigns`, `processed`,
`opened`, `clicked`, `delivered`, `bounced`, `soft_bounced`,
`dropped`.

Which operators are accepted depends on the attribute.

operator parameter

Always a string, including for numeric and date comparisons

How to combine multiple conditions

name parameter

Profile uuid parameter

Create a profile segment

Create contacts in bulk

Create 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.

contacts parameter

contacts parameter

email parameter

name parameter

surname parameter

Note applied to every created contact

Profile uuid parameter

Existing tags to attach to every created contact

tag_uuids parameter

Create contacts in bulk

Create new contacts

Create 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.

email parameter

name parameter

note parameter

Profile uuid parameter

surname parameter

tag_uuids parameter

Create new contacts

Create or find tags

Create 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.

names parameter

names parameter

Profile uuid parameter

Create or find tags

Delete a contact field

Delete 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.

Contact field uuid parameter

Profile uuid parameter

Delete a contact field

Delete a contact

Delete 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.

UUID of the contact to delete

Delete a contact

Delete a profile contact

Permanently delete a contact from a profile.

The contact is removed together with its custom field values and tag assignments.

Contact uuid parameter

Profile uuid parameter

Delete a profile contact

Delete a profile segment

Delete a segment.

Only the segment definition is removed. The contacts that matched it are left untouched.

Profile uuid parameter

Segment uuid parameter

Delete a profile segment

Delete a tag

Delete 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.

Profile uuid parameter

Tag uuid parameter

Delete a tag

Delete form

Permanently 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.

Form uuid parameter

Profile uuid parameter

Delete form

Get automation details

Get 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.

Automation uuid parameter

Profile uuid parameter

Get automation details

Get campaign details

Get 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.

Campaign uuid parameter

Profile uuid parameter

Get campaign details

Get campaign performance

Get 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.

Campaign uuid parameter

Profile uuid parameter

Get campaign performance

Get connected sending domain

Get 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.

Profile uuid parameter

Get connected sending domain

Get contact details

Get 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.

Contact uuid parameter

Profile uuid parameter

Get contact details

Get form details

Get 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.

Form uuid parameter

Profile uuid parameter

Get form details

Get profile domain DNS status

Retrieve 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.

Profile uuid parameter

Get profile domain DNS status

Get profile segment details

Get 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.

Profile uuid parameter

Segment uuid parameter

Get profile segment details

Get remaining plan limits

Get 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.

Profile uuid parameter

Get remaining plan limits

Get segment details

Get 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.

Segment uuid parameter

Get segment details

List automation steps

Get 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.

Automation uuid parameter

Profile uuid parameter

List automation steps

List automations

Get 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.

Page number

Number of items per page

Profile uuid parameter

Order automations by creation date. Newest first unless set to `asc`.

Filter automations by status.

There is no `completed` status. An automation that has finished for every contact still
reports `active`.

List automations

List campaigns

Get 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.

Page number

Number of items per page

Profile uuid parameter

Order campaigns by creation date. Newest first unless set to `asc`.

Filter campaigns by status.

A fully sent campaign has the status `publish`. There is no `sent` status, and campaigns can
be neither paused nor archived.

Filter campaigns by type.

Defaults to `campaign`, which leaves out the emails sent by automations and the double
opt-in confirmations.

List campaigns

List contact fields

Get 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.

Profile uuid parameter

List contact fields

List contact groups

Get a list of all contact groups.

This endpoint returns a list of contact groups that can be used to organize contacts.

List contact groups

List contacts

Get 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.

Filter contacts by group UUID

Page number

Filter contacts by subscription status

subscribed unsubscribed confirmed pending

List contacts

List forms

Get 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.

Page number

Number of items per page

Profile uuid parameter

List forms

List plan feature access

List 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.

Profile uuid parameter

List plan feature access

List profile contacts

Get 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.

Page number

Number of items per page

Profile uuid parameter

Search contacts by email

Filter contacts by subscription status

Filter contacts by tag UUID

List profile contacts

List profile segment contacts

Retrieve 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.

Page number

Number of items per page

Profile uuid parameter

Segment uuid parameter

List profile segment contacts

List profile segments

Get 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.

Which matching contacts to count for each segment

Page number

Number of items per page

Profile uuid parameter

List profile segments

List profile tags

Get 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.

Profile uuid parameter

List profile tags

List Profiles

This endpoint returns all profiles available to the client, including their basic information.

List Profiles

List segment contacts

Retrieve 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.

Page number

Number of items per page

Segment uuid parameter

List segment contacts

List segment filter attributes

List 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.

Profile uuid parameter

List segment filter attributes

List segments

Get 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.

List segments

Preview contacts matching conditions

Preview 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.

Conditions a contact must satisfy to appear in the preview

conditions parameter

A built-in contact attribute, or `cf:{fieldUuid}` to target a custom
contact field. Which operators are accepted depends on the attribute,
so read the segment filter attributes endpoint for the authoritative
list.

operator parameter

Always a string, including for numeric and date comparisons

How to combine multiple conditions

Page number

Number of items per page

Profile uuid parameter

Narrow the preview to contacts whose email matches

sort_by parameter

email name surname phone subscription_status

sort_direction parameter

Preview contacts matching conditions

Remove a contact from a tag

Remove 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.

Contact uuid parameter

Profile uuid parameter

Tag uuid parameter

Remove a contact from a tag

Remove contacts from a tag

Remove 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.

Profile uuid parameter

Tag uuid parameter

Remove contacts from a tag

Rename a tag

Rename 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.

Profile uuid parameter

Tag uuid parameter

New tag name

Rename a tag

Update a contact field

Rename 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.

Contact field uuid parameter

label parameter

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.

options parameter

label parameter

uuid parameter

Profile uuid parameter

Update a contact field

Update a contact

Update 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}`.

Contact uuid parameter

email parameter

Set custom field values. Omit to leave untouched, send an empty array to clear them all.

fields parameter

For the choice field types

selected_option_uuids parameter

uuid parameter

For the scalar field types

name parameter

note parameter

Phone number in E.164 format (leading "+" then 7-15 digits)

Profile uuid parameter

subscription_status parameter

surname parameter

Update a contact

Update a profile segment

Rename 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.

Replaces the existing conditions entirely. Omit to keep the current ones.

conditions parameter

operator parameter

How to combine multiple conditions. Required when conditions are given.

name parameter

Profile uuid parameter

Segment uuid parameter

Update a profile segment

Get domain verifications

Retrieve a list of pending and completed domain verifications.

Get domain verifications