PHP code example of derrickob / hostinger-php-sdk

1. Go to this page and download the library: Download derrickob/hostinger-php-sdk library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

derrickob / hostinger-php-sdk example snippets


use DerrickOb\HostingerApi\Hostinger;

// Initialize with just an API token
$hostinger = new Hostinger('your-api-token');

// Or with additional options
$hostinger = new Hostinger('your-api-token', [
    'timeout' => 30,                                 // Request timeout in seconds
    'base_url' => 'https://developers.hostinger.com', // API base URL
    'api_version' => 'v1',                           // API version
]);

use DerrickOb\HostingerApi\Exceptions\ApiException;
use DerrickOb\HostingerApi\Exceptions\AuthenticationException;
use DerrickOb\HostingerApi\Exceptions\ValidationException;
use DerrickOb\HostingerApi\Exceptions\RateLimitException;

try {
    $catalogs = $hostinger->billing()->catalog()->list();
} catch (AuthenticationException $e) {
    // Handle authentication errors (401)
    $message = $e->getMessage();
} catch (ValidationException $e) {
    // Handle validation errors (422)
    $message = $e->getMessage();
    // Get detailed validation errors
    $errors = $e->getErrors(); // ['field_1' => ['Error message 1', ...], ...]
} catch (RateLimitException $e) {
    // Handle rate limit errors (429)
    $message = $e->getMessage();
} catch (ApiException $e) {
    // Handle any other API errors (4xx, 5xx)
    $message = $e->getMessage();
    $code = $e->getCode();

    // Get correlation ID for support
    $correlationId = $e->getCorrelationId();
}

$data = [
    'domain' => 'mydomain',
    'tlds' => ['com', 'net', 'org'],
    'with_alternatives' => false, // optional
];

$results = $hostinger->domains()->availability()->check($data);

foreach ($results as $result) {
    $result->domain; // mydomain.tld
    $result->is_available; // true
    $result->is_alternative; // false
    $result->restriction; // null

    $result->toArray(); // ['domain' => 'mydomain.com', 'is_available' => true, ...]
}

$domains = $hostinger->domains()->portfolio()->list();

foreach ($domains as $domain) {
    $domain->id; // 13632
    $domain->name; // mydomain.tld
    $domain->type->value; // domain"
    $domain->status->value; // active
    $domain->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:22
    $domain->expires_at ? $domain->expires_at->format('Y-m-d H:i:s') : null; // 2025-03-27 11:54:22

    $domain->toArray(); // ['id' => 13632, 'name' => 'mydomain.tld', 'type' => 'domain', 'status' => 'active', ...]
}

$domainName = "mydomain.tld";
$snapshotId = 53513053;
$snapshot = $hostinger->dns()->snapshots()->get($domainName, $snapshotId);

$snapshot->id; // 53513053
$snapshot->reason; // Zone records update request
$snapshot->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:22

foreach ($snapshot->snapshot as $recordGroup) {
    $recordGroup->name; // www
    $recordGroup->type; // A
    $recordGroup->ttl; // 14400
    foreach ($recordGroup->records as $recordValue) {
         $recordValue->content; // mydomain.tld.
         $recordValue->is_disabled; // false
    }
}

$snapshot->toArray(); // ['id' => 53513053, 'reason' => '...', 'snapshot' => [[...], ...], 'created_at' => ...]

$domainName = "mydomain.tld";
$snapshotId = 53513053;
$response = $hostinger->dns()->snapshots()->restore($domainName, $snapshotId);

$response->message; // Request accepted

$response->toArray(); // ['message' => 'Request accepted']

$domainName = "mydomain.tld";
$snapshots = $hostinger->dns()->snapshots()->list($domainName);

foreach ($snapshots as $snapshot) {
    $snapshot->id; // 5341
    $snapshot->reason; // Zone records update request
    $snapshot->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:22

    $snapshot->toArray(); // ['id' => 5341, 'reason' => '...', 'created_at' => ...]
}

$domainName = "mydomain.tld";
$recordGroups = $hostinger->dns()->zones()->getRecords($domainName);

foreach ($recordGroups as $group) {
    $group->name; // www
    $group->type; // A
    $group->ttl; // 14400

    foreach ($group->records as $recordValue) {
        $recordValue->content; // mydomain.tld
        $recordValue->is_disabled; // false

        $recordValue->toArray(); // ['content' => '...', 'is_disabled' => false]
    }

    $group->toArray(); // ['name' => 'www', 'records' => [[...], ...], 'ttl' => 14400, 'type' => 'A']
}

$domainName = "mydomain.tld";
$data = [
    'overwrite' => true, // Optional
    'zone' => [
        [
            'name' => 'www',
            'records' => [['content' => '192.0.2.1']],
            'ttl' => 3600, // Optional
            'type' => 'A',
        ],
        [
            'name' => 'www',
            'records' => [['content' => 'example.com.']],
            'type' => 'CNAME',
        ],
    ],
];

$response = $hostinger->dns()->zones()->update($domainName, $data);

$response->message; // Request accepted
$response->toArray(); // ['message' => 'Request accepted']

$domainName = "mydomain.tld";
$data = [
    'filters' => [
        ['name' => '@', 'type' => 'A']
    ],
];

$response = $hostinger->dns()->zones()->delete($domainName, $data);

$response->message; // Request accepted
$response->toArray(); // ['message' => 'Request accepted']

$domainName = "mydomain.tld";
$data = [
    'zone' => [
        [
            'name' => 'valid',
            'records' => [['content' => '192.0.2.10']],
            'type' => 'A',
        ]
    ],
];

try {
    $response = $hostinger->dns()->zones()->validate($domainName, $data);
    $response->message;
    $response->toArray(); // ['message' => '...']
} catch (\DerrickOb\HostingerApi\Exceptions\ValidationException $e) {
    // Handle validation failure
    echo "Validation failed: " . $e->getMessage();
    print_r($e->getErrors());
}

$domainName = "mydomain.tld";

// Reset with defaults
$response = $hostinger->dns()->zones()->reset($domainName);
$response->message; // Request accepted
$response->toArray(); // ['message' => 'Request accepted']


// Reset with options
$data = [
    'sync' => true, // Optional
    'reset_email_records' => false, // Optional
    'whitelisted_record_types' => ['MX', 'TXT'], // Optional
];

$response = $hostinger->dns()->zones()->reset($domainName, $data);

$response->message; // Request accepted
$response->toArray(); // ['message' => 'Request accepted']

$catalogs = $hostinger->billing()->catalog()->list();

foreach ($catalogs as $catalog) {
    $catalog->id; // hostingercom-vps-kvm2
    $catalog->name; // KVM 2
    $catalog->category; // VPS

    foreach ($catalog->prices as $price) {
        $price->id; // hostingercom-vps-kvm2-usd-1m
        $price->name; // KVM 2 (billed every month)
        $price->currency; // USD
        $price->price; // 1799
        $price->first_period_price; // 899
        $price->period; // 1
        $price->period_unit->value; // day

        $price->toArray(); // ['id' => '...', 'name' => '...', 'currency' => 'USD', ...]
    }

    $catalog->toArray(); // ['id' => '...', 'name' => 'KVM 2', 'category' => 'VPS', 'prices' => [[...], ...]]
}

$data = [
    'payment_method_id' => 517244,
    'items' => [
        [
            'item_id' => 'hostingercom-vps-kvm2-usd-1m', // des
];

$order = $hostinger->billing()->orders()->create($data);

$order->id; // 2957086
$order->subscription_id; // Azz353Uhl1xC54pR0
$order->status->value; // completed
$order->currency; // USD
$order->subtotal; // 899
$order->total; // 1088

$order->billing_address->first_name; // John
$order->billing_address->last_name; // Doe
$order->billing_address->company; // null
$order->billing_address->address_1; // null
$order->billing_address->address_2; // null
$order->billing_address->city; // null
$order->billing_address->state; // null
$order->billing_address->zip; // null
$order->billing_address->country; // NL
$order->billing_address->phone; // null
$order->billing_address->email; // [email protected]

$order->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:22
$order->updated_at->format('Y-m-d H:i:s'); // 2025-03-27 11:54:22

$order->toArray(); // ['id' => 2957086, 'subscription_id' => '...', 'status' => 'completed', 'billing_address' => [...], ...]

$paymentMethodId = 9693613;
$response = $hostinger->billing()->paymentMethods()->setDefault($paymentMethodId);

$response->message; // Request accepted

$response->toArray(); // ['message' => 'Request accepted']

$paymentMethodId = 9693613;
$response = $hostinger->billing()->paymentMethods()->delete($paymentMethodId);

$response->message; // Request accepted

$response->toArray(); // ['message' => 'Request accepted']

$paymentMethods = $hostinger->billing()->paymentMethods()->list();

foreach ($paymentMethods as $paymentMethod) {
    $paymentMethod->id; // 6523
    $paymentMethod->name; // Credit Card
    $paymentMethod->identifier; // 1234*****6464
    $paymentMethod->payment_method->value; // card
    $paymentMethod->is_default; // true
    $paymentMethod->is_expired; // false
    $paymentMethod->is_suspended; // false
    $paymentMethod->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:22
    $paymentMethod->expires_at ? $paymentMethod->expires_at->format('Y-m-d H:i:s') : null; // 2025-03-27 11:54:22

    $paymentMethod->toArray(); // ['id' => 6523, 'name' => 'Credit Card', 'identifier' => '...', 'payment_method' => 'card', ...]
}

$subscriptionId = "Cxy353Uhl1xC54pG6";

// Cancel immediately with a reason
$data = [
    'reason_code' => 'other',
    'cancel_option' => 'immediately',
];

$response = $hostinger->billing()->subscriptions()->cancel($subscriptionId, $data);

$response->message; // Request accepted
$response->toArray(); // ['message' => 'Request accepted']


// Cancel at the end of the term
$response = $hostinger->billing()->subscriptions()->cancel($subscriptionId);
$response->message; // Request accepted
$response->toArray(); // ['message' => 'Request accepted']

$subscriptions = $hostinger->billing()->subscriptions()->list();

foreach ($subscriptions as $subscription) {
    $subscription->id; // Azz36nUfKX1S1MSF
    $subscription->name; // KVM 1
    $subscription->status->value; // active
    $subscription->billing_period; // 1
    $subscription->billing_period_unit->value; // day
    $subscription->currency_code; // USD
    $subscription->total_price; // 1799
    $subscription->renewal_price; // 1799
    $subscription->is_auto_renewed; // true
    $subscription->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:22
    $subscription->expires_at->format('Y-m-d H:i:s'); // 2025-03-27 11:54:22
    $subscription->next_billing_at ? $subscription->next_billing_at->format('Y-m-d H:i:s') : null; // 2025-02-28 11:54:22

    $subscription->toArray(); // ['id' => '...', 'name' => 'KVM 1', 'status' => 'active', 'is_auto_renewed' => true, ...]
}

$virtualMachineId = 1268054;
$actionId = 8123712;
$action = $hostinger->vps()->actions()->get($virtualMachineId, $actionId);

$action->id; // 8123712
$action->name; // action_name
$action->state->value; // success
$action->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$action->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$action->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$actions = $hostinger->vps()->actions()->list($virtualMachineId, ['page' => 1]);

// Access pagination metadata
$actions->getCurrentPage(); // 1
$actions->getPerPage(); // 15
$actions->getTotal(); // 100

foreach ($actions->getData() as $action) {
    $action->id; // 8123712
    $action->name; // action_name
    $action->state->value; // success
    $action->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
    $action->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

    $action->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]
}

$actions->toArray(); // ['data' => [[...], ...], 'meta' => ['current_page' => 1, ...]]

$virtualMachineId = 1268054;
$backupId = 8676502;
$response = $hostinger->vps()->backups()->delete($virtualMachineId, $backupId);

$response->message; // Request accepted

$response->toArray(); // ['message' => 'Request accepted']

$virtualMachineId = 1268054;
$backups = $hostinger->vps()->backups()->list($virtualMachineId, ['page' => 1]);

// Access pagination metadata
$backups->getCurrentPage(); // 1
$backups->getPerPage(); // 15
$backups->getTotal(); // 100

foreach ($backups->getData() as $backup) {
    $backup->id; // 325
    $backup->location; // nl-srv-openvzbackups
    $backup->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:22

    $backup->toArray(); // ['id' => 325, 'location' => 'nl-srv-openvzbackups', 'created_at' => ...]
}

$backups->toArray(); // ['data' => [[...], ...], 'meta' => ['current_page' => 1, ...]]

$virtualMachineId = 1268054;
$backupId = 8676502;
$action = $hostinger->vps()->backups()->restore($virtualMachineId, $backupId);

$action->id; // 8123712
$action->name; // action_name
$action->state->value; // success
$action->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$action->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$action->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$dataCenters = $hostinger->vps()->dataCenters()->list();

foreach ($dataCenters as $dataCenter) {
    $dataCenter->id; // 29
    $dataCenter->name; // phx
    $dataCenter->location; // us
    $dataCenter->city; // Phoenix
    $dataCenter->continent; // North America

    $dataCenter->toArray(); // ['id' => 29, 'name' => 'phx', 'location' => 'us', 'city' => 'Phoenix', 'continent' => 'North America']
}

$virtualMachineId = 1268054;
$response = $hostinger->vps()->ptrRecords()->create($virtualMachineId);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$response->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$response->toArray(); // ['id' => 8123728, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$response = $hostinger->vps()->ptrRecords()->delete($virtualMachineId);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$response->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$response->toArray(); // ['id' => 8123729, 'name' => 'action_name', 'state' => 'success', ...]

$firewallId = 9449049;
$virtualMachineId = 1268054;
$response = $hostinger->vps()->firewalls()->activate($firewallId, $virtualMachineId);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$response->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$response->toArray(); // ['id' => 8123715, 'name' => 'action_name', 'state' => 'sent', ...]

$firewallId = 9449049;
$virtualMachineId = 1268054;
$response = $hostinger->vps()->firewalls()->deactivate($firewallId, $virtualMachineId);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$response->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$response->toArray(); // ['id' => 8123716, 'name' => 'action_name', 'state' => 'success', ...]

$firewallId = 9449049;
$firewall = $hostinger->vps()->firewalls()->get($firewallId);

$firewall->id; // 65224
$firewall->name; // HTTP and SSH only
$firewall->is_synced; // false
$firewall->created_at->format('Y-m-d H:i:s'); // 2021-09-01 12:00:00
$firewall->updated_at->format('Y-m-d H:i:s'); // 2021-09-01 12:00:00

foreach ($firewall->rules as $rule) {
    $rule->id; // 24541
    $rule->action->value; // accept
    $rule->protocol->value; // TCP
    $rule->port; // 1024:2048
    $rule->source->value; // any
    $rule->source_detail; // any

    $rule->toArray(); // ['id' => 24541, 'action' => 'accept', 'protocol' => 'TCP', ...]
}

$firewall->toArray(); // ['id' => 65224, 'name' => '...', 'is_synced' => ..., 'rules' => [...], ...]

$firewallId = 9449049;
$response = $hostinger->vps()->firewalls()->delete($firewallId);

$response->message; // Request accepted

$response->toArray(); // ['message' => 'Request accepted']

$firewalls = $hostinger->vps()->firewalls()->list(['page' => 1]);

// Access pagination metadata
$firewalls->getCurrentPage(); // 1
$firewalls->getPerPage(); // 15
$firewalls->getTotal(); // 100

foreach ($firewalls->getData() as $firewall) {
    $firewall->id; // 65224
    $firewall->name; // HTTP and SSH only
    $firewall->is_synced; // false
    $firewall->created_at->format('Y-m-d H:i:s'); // 2021-09-01 12:00:00
    $firewall->updated_at->format('Y-m-d H:i:s'); // 2021-09-01 12:00:00

    foreach ($firewall->rules as $rule) {
        $rule->id; // 24541
        $rule->action->value; // accept
        $rule->protocol->value; // TCP
        $rule->port; // 1024:2048
        $rule->source->value; // any
        $rule->source_detail; // any

        $rule->toArray(); // ['id' => 24541, 'action' => 'accept', 'protocol' => 'TCP', ...]
    }

    $firewall->toArray(); // ['id' => 65224, 'name' => '...', 'is_synced' => false, 'rules' => [[...], ...], ...]
}

$firewalls->toArray(); // ['data' => [[...], ...], 'meta' => ['current_page' => 1, ...]]

$data = [
    'name' => 'My Firewall Group',
];

$firewall = $hostinger->vps()->firewalls()->create($data);

$firewall->id; // 65224
$firewall->name; // HTTP and SSH only
$firewall->is_synced; // false
$firewall->rules; // empty array []
$firewall->created_at->format('Y-m-d H:i:s'); // 2021-09-01 12:00:00
$firewall->updated_at->format('Y-m-d H:i:s'); // 2021-09-01 12:00:00

$firewall->toArray(); // ['id' => 65224, 'name' => 'HTTP and SSH only', 'is_synced' => false, 'rules' => [], ...]

$firewallId = 9449049;
$ruleId = 8941182;
$data = [
    'protocol' => 'UDP',
    'port' => '443',
    'source' => 'any',
    'source_detail' => '351.15.24.0/24',
    'action' => 'accept',
];

$rule = $hostinger->vps()->firewalls()->updateRule($firewallId, $ruleId, $data);

$rule->id; // 24541
$rule->action->value; // accept
$rule->protocol->value; // UDP
$rule->port; // 1024:2048
$rule->source->value; // any
$rule->source_detail; // any

$rule->toArray(); // ['id' => 24541, 'action' => 'accept', 'protocol' => 'UDP', ...]

$firewallId = 9449049;
$ruleId = 8941182;
$response = $hostinger->vps()->firewalls()->deleteRule($firewallId, $ruleId);

$response->message; // Request accepted

$response->toArray(); // ['message' => 'Request accepted']

$firewallId = 9449049;
$data = [
    'protocol' => 'TCP',
    'port' => '443',
    'source' => 'any',
    'source_detail' => '351.15.24.0/24',
    'action' => 'accept',
];

$rule = $hostinger->vps()->firewalls()->createRule($firewallId, $data);

$rule->id; // 8941183
$rule->action->value; // accept
$rule->protocol->value; // TCP
$rule->port; // 1024:2048
$rule->source->value; // any
$rule->source_detail; // any

$rule->toArray(); // ['id' => 8941183, 'action' => 'accept', 'protocol' => 'TCP', ...]

$firewallId = 9449049;
$virtualMachineId = 1268054;
$response = $hostinger->vps()->firewalls()->sync($firewallId, $virtualMachineId);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$response->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$response->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$metrics = $hostinger->vps()->malwareScanner()->getMetrics($virtualMachineId);

$metrics->records; // 1
$metrics->malicious; // 2
$metrics->compromised; // 3
$metrics->scanned_files; // 193218
$metrics->scan_started_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:22
$metrics->scan_ended_at ? $metrics->scan_ended_at->format('Y-m-d H:i:s'); // 2025-03-27 11:54:22

$metrics->toArray(); // ['records' => 1, 'malicious' => 2, 'compromised' => 3, ...]

$virtualMachineId = 1268054;
$response = $hostinger->vps()->malwareScanner()->install($virtualMachineId);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$response->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$response->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$response = $hostinger->vps()->malwareScanner()->uninstall($virtualMachineId);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$response->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$response->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$templateId = 2868928;
$template = $hostinger->vps()->templates()->get($templateId);

$template->id; // 2868928
$template->name; // Ubuntu 20.04 LTS
$template->description; // Ubuntu 20.04 LTS
$template->documentation; // https://docs.ubuntu.com

$template->toArray(); // ['id' => 2868928, 'name' => '...', 'description' => '...', 'documentation' => null]

$templates = $hostinger->vps()->templates()->list();

foreach ($templates as $template) {
    $template->id; // 6523
    $template->name; // Ubuntu 20.04 LTS
    $template->description; // Ubuntu 20.04 LTS
    $template->documentation; // https://docs.ubuntu.com

    $template->toArray(); // ['id' => 6523, 'name' => 'Ubuntu 20.04 LTS', 'description' => '...', 'documentation' => '...']
}

$postInstallScriptId = 9568314;
$script = $hostinger->vps()->postInstallScripts()->get($postInstallScriptId);

$script->id; // 325
$script->name; // My Setup Script
$script->content; // #!/bin/bash\\napt-get update\\napt-get install -y nginx
$script->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:22
$script->updated_at->format('Y-m-d H:i:s'); // 2025-03-19 11:54:22

$script->toArray(); // ['id' => 325, 'name' => '...', 'content' => '...', ...]

$postInstallScriptId = 9568314;
$data = [
    'name' => 'My Script',
    'content' => "#!/bin/bash\n\necho 'Hello, World!'",
];

$script = $hostinger->vps()->postInstallScripts()->update($postInstallScriptId, $data);

$script->id; // 325
$script->name; // My Setup Script
$script->content; // #!/bin/bash\\napt-get update\\napt-get install -y nginx
$script->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:22
$script->updated_at->format('Y-m-d H:i:s'); // 2025-03-19 11:54:22

$script->toArray(); // ['id' => 325, 'name' => 'My Setup Script', 'content' => '...', ...]

$postInstallScriptId = 9568314;
$response = $hostinger->vps()->postInstallScripts()->delete($postInstallScriptId);

$response->message; // Request accepted

$response->toArray(); // ['message' => 'Request accepted']

$postInstallScripts = $hostinger->vps()->postInstallScripts()->list(['page' => 1]);

// Access pagination metadata
$postInstallScripts->getCurrentPage(); // 1
$postInstallScripts->getPerPage(); // 15
$postInstallScripts->getTotal(); // 100

foreach ($postInstallScripts->getData() as $script) {
    $script->id; // 325
    $script->name; // "My Setup Script"
    $script->content; // "#!/bin/bash\napt-get update\napt-get install -y nginx"
    $script->created_at->format('Y-m-d H:i:s'); // "2025-02-27 11:54:22"
    $script->updated_at->format('Y-m-d H:i:s'); // "2025-03-19 11:54:22"

    $script->toArray(); // ['id' => 325, 'name' => 'My Setup Script', 'content' => '...', ...]
}

$postInstallScripts->toArray(); // ['data' => [[...], ...], 'meta' => ['current_page' => 1, ...]]

$data = [
    'name' => 'My Script',
    'content' => "#!/bin/bash\n\necho 'Hello, World!'",
];
$script = $hostinger->vps()->postInstallScripts()->create($data);

$script->id; // 325
$script->name; // My Setup Script
$script->content; // "#!/bin/bash\necho 'Hello, World!'"
$script->created_at->format('Y-m-d H:i:s');
$script->updated_at->format('Y-m-d H:i:s');

$script->toArray(); // ['id' => 325, 'name' => 'My Setup Script', 'content' => '...', ...]

$virtualMachineId = 1268054;
$data = [
    'ids' => [18232, 10230230],
];

$response = $hostinger->vps()->publicKeys()->attach($virtualMachineId, $data);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$response->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$response->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$publicKeyId = 6672861;
$response = $hostinger->vps()->publicKeys()->delete($publicKeyId);

$response->message; // Request accepted

$response->toArray(); // ['message' => 'Request accepted']

$publicKeys = $hostinger->vps()->publicKeys()->list(['page' => 1]);

// Access pagination metadata
$publicKeys->getCurrentPage(); // 1
$publicKeys->getPerPage(); // 15
$publicKeys->getTotal(); // 100

foreach ($publicKeys->getData() as $key) {
    $key->id; // 325
    $key->name; // My public key
    $key->key; // ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD...

    $key->toArray(); // ['id' => 325, 'name' => 'My public key', 'key' => 'ssh-rsa...']
}

$publicKeys->toArray(); // ['data' => [[...], ...], 'meta' => ['current_page' => 1, ...]]

$data = [
    'name' => 'My Public Key',
    'key' => 'ssh-rsa AAAAB3NzaC1yc2EAAA...',
];

$publicKey = $hostinger->vps()->publicKeys()->create($data);

$publicKey->id; // 325
$publicKey->name; // My Public Key
$publicKey->key; // ssh-rsa AAAAB3NzaC1yc2EAAA...

$publicKey->toArray(); // ['id' => 325, 'name' => 'My Public Key', 'key' => 'ssh-rsa...']

$virtualMachineId = 1268054;
$data = [
    'root_password' => 'oMeNRustosIO',
];

$response = $hostinger->vps()->recovery()->start($virtualMachineId, $data);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$response->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$response->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$response = $hostinger->vps()->recovery()->stop($virtualMachineId);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$response->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$response->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$snapshot = $hostinger->vps()->snapshots()->get($virtualMachineId);

$snapshot->id; // 325
$snapshot->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:22
$snapshot->expires_at->format('Y-m-d H:i:s'); // 2025-03-19 11:54:22

$snapshot->toArray(); // ['id' => 325, 'created_at' => ..., 'expires_at' => ...]

$virtualMachineId = 1268054;
$snapshot = $hostinger->vps()->snapshots()->create($virtualMachineId);

$snapshot->id; // 8123712
$snapshot->name; // action_name
$snapshot->state->value; // success
$snapshot->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$snapshot->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$snapshot->toArray(); // ['id' => 8123732, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$snapshot = $hostinger->vps()->snapshots()->delete($virtualMachineId);

$snapshot->id; // 8123712
$snapshot->name; // action_name
$snapshot->state->value; // success
$snapshot->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$snapshot->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$snapshot->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$snapshot = $hostinger->vps()->snapshots()->restore($virtualMachineId);

$snapshot->id; // 8123712
$snapshot->name; // action_name
$snapshot->state->value; // success
$snapshot->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$snapshot->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$snapshot->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$attachedPublicKeys = $hostinger->vps()->virtualMachines()->getAttachedPublicKeys($virtualMachineId, ['page' => 1]);

// Access pagination metadata
$attachedPublicKeys->getCurrentPage(); // 1
$attachedPublicKeys->getPerPage(); // 15
$attachedPublicKeys->getTotal(); // 100

foreach ($attachedPublicKeys->getData() as $key) {
    $key->id; // 325
    $key->name; // My public key
    $key->key; // ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD...

    $key->toArray(); // ['id' => 325, 'name' => 'My public key', 'key' => 'ssh-rsa...']
}

$attachedPublicKeys->toArray(); // ['data' => [[...], ...], 'meta' => ['current_page' => 1, ...]]

$virtualMachineId = 1268054;
$data = [
    'hostname' => 'my.server.tld',
];
$host = $hostinger->vps()->virtualMachines()->setHostName($virtualMachineId, $data['hostname']);

$host->id; // 8123712
$host->name; // action_name
$host->state->value; // success
$host->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$host->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$host->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$host = $hostinger->vps()->virtualMachines()->resetHostName($virtualMachineId);

$host->id; // 8123712
$host->name; // action_name
$host->state->value; // success
$host->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$host->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$host->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$virtualMachine = $hostinger->vps()->virtualMachines()->get($virtualMachineId);

$virtualMachine->id; // 17923
$virtualMachine->firewall_group_id; // null
$virtualMachine->subscription_id; // Azz353Uhl1xC54pR0
$virtualMachine->plan; // KVM 4
$virtualMachine->hostname; // srv17923.hstgr.cloud
$virtualMachine->state->value; // running
$virtualMachine->actions_lock->value; // unlocked
$virtualMachine->cpus; // 4
$virtualMachine->memory; // 8192
$virtualMachine->disk; // 51200
$virtualMachine->bandwidth; // 1073741824
$virtualMachine->ns1; // 1.1.1.1
$virtualMachine->ns2; // 8.8.8.8
$virtualMachine->created_at->format('Y-m-d H:i:s'); // 2024-09-05 07:25:36

if ($virtualMachine->ipv4) {
    foreach ($virtualMachine->ipv4 as $ip4) {
        $ip4->id; // 52347
        $ip4->address; // 213.331.273.15
        $ip4->ptr; // something.domain.tld
        $ip4->toArray(); // ['id' => 52347, 'address' => '...', 'ptr' => '...']
    }
}

if ($virtualMachine->ipv6) {
     foreach ($virtualMachine->ipv6 as $ip6) {
         $ip6->id; // 52347
         $ip6->address; // 2a00:4000:f:eaee::1
         $ip6->ptr; // something.domain.tld
         $ip6->toArray(); // ['id' => 52347, 'address' => '...', 'ptr' => '...']
     }
}

if ($virtualMachine->template) {
    $virtualMachine->template->id; // 6523
    $virtualMachine->template->name; // Ubuntu 20.04 LTS
    $virtualMachine->template->description; // Ubuntu 20.04 LTS
    $virtualMachine->template->documentation; // https://docs.ubuntu.com
    $virtualMachine->template->toArray(); // ['id' => 6523, 'name' => '...', ...]
}

$virtualMachine->toArray(); // ['id' => 17923, 'firewall_group_id' => null, 'hostname' => '...', 'state' => 'running', ...]

$virtualMachines = $hostinger->vps()->virtualMachines()->list();

foreach ($virtualMachines as $virtualMachine) {
    $virtualMachine->id; // 17923
    $virtualMachine->firewall_group_id; // null
    $virtualMachine->subscription_id; // Azz353Uhl1xC54pR0
    $virtualMachine->plan; // KVM 4
    $virtualMachine->hostname; // srv17923.hstgr.cloud
    $virtualMachine->state->value; // running
    $virtualMachine->actions_lock->value; // unlocked
    $virtualMachine->cpus; // 4
    $virtualMachine->memory; // 8192
    $virtualMachine->disk; // 51200
    $virtualMachine->bandwidth; // 1073741824
    $virtualMachine->ns1; // 1.1.1.1
    $virtualMachine->ns2; // 8.8.8.8
    $virtualMachine->created_at->format('Y-m-d H:i:s'); // 2024-09-05 07:25:36

    if ($virtualMachine->ipv4) {
        foreach ($virtualMachine->ipv4 as $ip4) {
            $ip4->id; // 52347
            $ip4->address; // 213.331.273.15
            $ip4->ptr; // something.domain.tld
            $ip4->toArray(); // ['id' => 52347, 'address' => '...', 'ptr' => '...']
        }
    }

    if ($virtualMachine->ipv6) {
         foreach ($virtualMachine->ipv6 as $ip6) {
             $ip6->id; // 52347
             $ip6->address; // 2a00:4000:f:eaee::1
             $ip6->ptr; // something.domain.tld
             $ip6->toArray(); // ['id' => 52347, 'address' => '...', 'ptr' => '...']
         }
    }

    if ($virtualMachine->template) {
        $virtualMachine->template->id; // 6523
        $virtualMachine->template->name; // Ubuntu 20.04 LTS
        $virtualMachine->template->description; // Ubuntu 20.04 LTS
        $virtualMachine->template->documentation; // https://docs.ubuntu.com
        $virtualMachine->template->toArray(); // ['id' => 6523, 'name' => '...', ...]
    }

    $virtualMachine->toArray(); // ['id' => 17923, 'firewall_group_id' => null, 'hostname' => '...', 'state' => 'running', ...]
}

$virtualMachineId = 1268054;
$dateFrom = '2025-05-01T00:00:00Z';
$dateTo = '2025-06-01T00:00:00Z';
$metrics = $hostinger->vps()->virtualMachines()->getMetrics($virtualMachineId, $dateFrom, $dateTo);

if ($metrics->cpu_usage) {
    $metrics->cpu_usage->unit; // %
    $metrics->cpu_usage->usage; // {"1742269632": 1.45, ...} (Timestamp => Value)
    $metrics->cpu_usage->toArray(); // ['unit' => '%', 'usage' => [...]]
}
if ($metrics->ram_usage) {
    $metrics->ram_usage->unit; // bytes
    $metrics->ram_usage->usage; // {"1742269632": 554176512, ...}
    $metrics->ram_usage->toArray(); // ['unit' => 'bytes', 'usage' => [...]]
}
if ($metrics->disk_space) {
    $metrics->disk_space->unit; // "bytes"
    $metrics->disk_space->usage; // {"1742269632": 2620018688, ...}
    $metrics->disk_space->toArray(); // ['unit' => 'bytes', 'usage' => [...]]
}
if ($metrics->outgoing_traffic) {
    $metrics->outgoing_traffic->unit; // "bytes"
    $metrics->outgoing_traffic->usage; // {"1742269632": 784800, ...}
    $metrics->outgoing_traffic->toArray(); // ['unit' => 'bytes', 'usage' => [...]]
}
if ($metrics->incoming_traffic) {
    $metrics->incoming_traffic->unit; // "bytes"
    $metrics->incoming_traffic->usage; // {"1742269632": 8978400, ...}
    $metrics->incoming_traffic->toArray(); // ['unit' => 'bytes', 'usage' => [...]]
}
if ($metrics->uptime) {
    $metrics->uptime->unit; // "milliseconds"
    $metrics->uptime->usage; // {"1742269632": 455248, ...}
    $metrics->uptime->toArray(); // ['unit' => 'milliseconds', 'usage' => [...]]
}

$metrics->toArray(); // ['cpu_usage' => [...], 'ram_usage' => [...], ...]

$virtualMachineId = 1268054;
$data = [
    'ns1' => '4.3.2.1',
    'ns2' => '1.2.3.4',
];
$nameServer = $hostinger->vps()->virtualMachines()->setNameServers($virtualMachineId, $data);

$nameServer->id; // 8123712
$nameServer->name; // action_name
$nameServer->state->value; // success
$nameServer->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$nameServer->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$nameServer->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$data = [
    'password' => 'oMeNRustosIO',
];

$response = $hostinger->vps()->virtualMachines()->setPanelPassword($virtualMachineId, $data['password']);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$response->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$response->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$data = [
    'template_id' => 1130,
    'password' => 'oMeNRustosIO',
    'post_install_script_id' => 6324,
];

$response = $hostinger->vps()->virtualMachines()->recreate($virtualMachineId, $data);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s');
$response->updated_at->format('Y-m-d H:i:s');

$response->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$response = $hostinger->vps()->virtualMachines()->restart($virtualMachineId);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$response->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$response->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$data = [
    'password' => 'oMeNRustosIO',
];

$response = $hostinger->vps()->virtualMachines()->setRootPassword($virtualMachineId, $data['password']);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$response->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$response->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$data = [
    'template_id' => 1130,
    'data_center_id' => 19,
    'password' => 'oMeNRustosIO', // Optional
    'hostname' => 'my.server.tld', // Optional
    'install_monarx' => false, // Optional
    'enable_backups' => true, // Optional
    'ns1' => '4.3.2.1', // Optional
    'ns2' => '1.2.3.4', // Optional
    'post_install_script_id' => 6324, // Optional
    'public_key' => [
        'name' => 'my-key',
        'key' => 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC2X...',
    ]
];

$virtualMachine = $hostinger->vps()->virtualMachines()->setup($virtualMachineId, $data);

$virtualMachine->id; // 17923
$virtualMachine->firewall_group_id; // null
$virtualMachine->subscription_id; // Azz353Uhl1xC54pR0
$virtualMachine->plan; // KVM 4
$virtualMachine->hostname; // my.server.tld
$virtualMachine->state->value; // creating
$virtualMachine->actions_lock->value; // unlocked
$virtualMachine->cpus; // 4
$virtualMachine->memory; // 8192
$virtualMachine->disk; // 51200
$virtualMachine->bandwidth; // 1073741824
$virtualMachine->ns1; // 4.3.2.1
$virtualMachine->ns2; // 1.2.3.4
$virtualMachine->created_at->format('Y-m-d H:i:s'); // 2024-09-05 07:25:36

if ($virtualMachine->ipv4) {
    foreach ($virtualMachine->ipv4 as $ip4) {
        $ip4->id; // 52347
        $ip4->address; // 213.331.273.15
        $ip4->ptr; // something.domain.tld
        $ip4->toArray(); // ['id' => 52347, 'address' => '...', 'ptr' => '...']
    }
}

if ($virtualMachine->ipv6) {
     foreach ($virtualMachine->ipv6 as $ip6) {
         $ip6->id; // 52347
         $ip6->address; // 2a00:4000:f:eaee::1
         $ip6->ptr; // something.domain.tld
         $ip6->toArray(); // ['id' => 52347, 'address' => '...', 'ptr' => '...']
     }
}

if ($virtualMachine->template) {
    $virtualMachine->template->id; // 6523
    $virtualMachine->template->name; // Ubuntu 20.04 LTS
    $virtualMachine->template->description; // Ubuntu 20.04 LTS
    $virtualMachine->template->documentation; // https://docs.ubuntu.com
    $virtualMachine->template->toArray(); // ['id' => 6523, 'name' => '...', ...]
}

$virtualMachine->toArray(); // ['id' => 17923, 'firewall_group_id' => null, 'hostname' => '...', 'state' => 'running', ...]

$virtualMachineId = 1268054;
$response = $hostinger->vps()->virtualMachines()->start($virtualMachineId);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$response->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$response->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]

$virtualMachineId = 1268054;
$response = $hostinger->vps()->virtualMachines()->stop($virtualMachineId);

$response->id; // 8123712
$response->name; // action_name
$response->state->value; // success
$response->created_at->format('Y-m-d H:i:s'); // 2025-02-27 11:54:00
$response->updated_at->format('Y-m-d H:i:s'); // 2025-02-27 11:58:00

$response->toArray(); // ['id' => 8123712, 'name' => 'action_name', 'state' => 'success', ...]
bash
composer