PHPackages                             nomadicsoft/simplecloud-php - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [API Development](/categories/api)
4. /
5. nomadicsoft/simplecloud-php

ActiveLibrary[API Development](/categories/api)

nomadicsoft/simplecloud-php
===========================

PHP API client for SimpleCloud.ru VPS hosting (v3 API)

0560↓44.4%PHP

Since Apr 12Pushed 3mo agoCompare

[ Source](https://github.com/nomadicsoft/simplecloud-php)[ Packagist](https://packagist.org/packages/nomadicsoft/simplecloud-php)[ RSS](/packages/nomadicsoft-simplecloud-php/feed)WikiDiscussions master Synced 3w ago

READMEChangelogDependenciesVersions (1)Used By (0)

SimpleCloud PHP
===============

[](#simplecloud-php)

A clean PHP API client for [SimpleCloud.ru](https://simplecloud.ru) VPS hosting (v3 API).

Requirements
------------

[](#requirements)

- PHP 8.1+
- Guzzle HTTP 7.x

Installation
------------

[](#installation)

```
composer require nomadicsoft/simplecloud-php
```

Quick Start
-----------

[](#quick-start)

```
use CloudCompute\SimpleCloud\SimpleCloud;

$client = new SimpleCloud('your-api-token');

// List all VPS
$result = $client->vps->list();
foreach ($result['vps'] as $server) {
    echo $server['name'] . ' — ' . $server['status'] . PHP_EOL;
}

// Create a VPS
$vps = $client->vps->create(
    size: '1',
    image: 221,
    region: 'ixcellerate',
    paymentPeriod: '1m',
    name: 'my-server',
);

// Wait for it to become active
$vps = $client->vps->waitForStatus($vps['vps']['id'], 'active', maxSeconds: 120);
echo $vps['vps']['networks']['v4'][0]['ip_address'];
```

Configuration
-------------

[](#configuration)

```
$client = new SimpleCloud('your-token', [
    'timeout' => 60,
    'guzzle' => [
        // Any additional Guzzle client options
    ],
]);
```

Error Handling
--------------

[](#error-handling)

The client throws typed exceptions for API errors:

```
use CloudCompute\SimpleCloud\Exceptions\AuthenticationException;
use CloudCompute\SimpleCloud\Exceptions\NotFoundException;
use CloudCompute\SimpleCloud\Exceptions\ValidationException;
use CloudCompute\SimpleCloud\Exceptions\SimpleCloudException;

try {
    $client->vps->get(999999);
} catch (AuthenticationException $e) {
    // 401 — invalid or expired token
} catch (NotFoundException $e) {
    // 404 — resource not found
} catch (ValidationException $e) {
    // 422 — invalid parameters
} catch (SimpleCloudException $e) {
    // Any other API error
    echo $e->getHttpStatusCode();
    echo $e->getErrorBody();
}
```

Resources
---------

[](#resources)

All resources are accessed as properties on the main `SimpleCloud` client instance. They are lazy-initialized on first access.

### Account

[](#account)

```
$client->account->getInfo();                  // GET /account
$client->account->update([...]);              // POST /account
$client->account->getDetails();               // GET /account/details
$client->account->updateDetails([...]);       // POST /account/details
$client->account->getContacts();              // GET /account/contacts
$client->account->updateContacts([...]);      // POST /account/contacts
$client->account->getAuthLog($page, $perPage); // GET /account/authLog
```

### Auth

[](#auth)

```
$client->auth->login($login, $password);      // POST /auth/login
```

### Finance

[](#finance)

```
$client->finance->getLog(['since' => '...', 'till' => '...', 'direction' => 'incoming']);
$client->finance->getPaymentMethods();
$client->finance->recharge('AC', 1500.0, rebillingOn: false);
```

### Notifications

[](#notifications)

```
$client->notifications->list($page, $perPage);
$client->notifications->list(announces: true);  // Announcements only
```

### Subaccounts

[](#subaccounts)

```
$client->subaccounts->isEnabled();
$client->subaccounts->setEnabled(true);
$client->subaccounts->list($page, $perPage);
$client->subaccounts->get($id);
$client->subaccounts->create([...]);
$client->subaccounts->update($id, [...]);
$client->subaccounts->delete($id);
$client->subaccounts->getSessionKey($id);
```

### Projects

[](#projects)

```
$client->projects->list($page, $perPage);
$client->projects->get($id);
$client->projects->create([...]);
$client->projects->update($id, [...]);
$client->projects->delete($id);
```

### Actions

[](#actions)

```
$client->actions->list($page, $perPage);      // GET /actions
$client->actions->get($actionId);              // GET /actions/$id
```

### Domains

[](#domains)

```
$client->domains->list($page, $perPage);
$client->domains->get($domainId);
$client->domains->create('example.com', '1.2.3.4');
$client->domains->delete($domainId);
```

### Domain Records

[](#domain-records)

```
$client->domainRecords->list($domainId, $page, $perPage);
$client->domainRecords->get($domainId, $recordId);
$client->domainRecords->create($domainId, [
    'type' => 'A',
    'name' => 'sub',
    'data' => '1.2.3.4',
]);
$client->domainRecords->update($domainId, $recordId, ['name' => 'new-name']);
$client->domainRecords->delete($domainId, $recordId);
```

### Reverse DNS

[](#reverse-dns)

```
$client->reverseDns->list();
$client->reverseDns->get($recordId);
$client->reverseDns->update($recordId, 'new.domain.com.');
$client->reverseDns->reset($recordId);          // Reset to default
$client->reverseDns->createIpv6($vpsId);         // Create IPv6 reverse zone
$client->reverseDns->deleteIpv6($recordV6Id);    // Delete IPv6 reverse zone
```

### VPS

[](#vps)

#### CRUD

[](#crud)

```
$client->vps->list($page, $perPage);
$client->vps->get($vpsId);
$client->vps->create(
    size: '1',
    image: 221,
    region: 'ixcellerate',
    paymentPeriod: '1m',   // '1h' or '1m'
    name: 'my-server',
    password: '',           // Auto-generated if empty
    mbit200: false,         // 200 Mbit/s upgrade
);
$client->vps->update($vpsId, [
    'size' => '2',
    'payment_period' => '1h',
    'mbit200' => true,
]);
$client->vps->delete($vpsId);
```

#### Actions

[](#actions-1)

All actions use `POST /vps/$id/actions` with a `type` parameter:

```
$client->vps->reboot($vpsId);
$client->vps->reboot($vpsId, rescue: true);    // Rescue mode
$client->vps->powerCycle($vpsId);
$client->vps->shutdown($vpsId);
$client->vps->powerOff($vpsId);
$client->vps->powerOn($vpsId);
$client->vps->passwordReset($vpsId);
$client->vps->resize($vpsId, '2');              // New plan ID
$client->vps->rebuild($vpsId, 221);             // New image ID
$client->vps->rename($vpsId, 'new-name');
$client->vps->restore($vpsId, $backupImageId);
$client->vps->snapshot($vpsId, 'my-snapshot');
```

#### Action History, Backups, Statistics

[](#action-history-backups-statistics)

```
$client->vps->getActions($vpsId, $page, $perPage);
$client->vps->getAction($vpsId, $actionId);

$client->vps->getBackups($vpsId, $page, $perPage);

// Statistics: type = CPU|RAM|disk|traffic (null = all), period = 1h|6h|12h|1d|7d|1m
$client->vps->getStatistics($vpsId);
$client->vps->getStatistics($vpsId, type: 'CPU', period: '1d');
```

#### Polling

[](#polling)

```
$vps = $client->vps->waitForStatus(
    vpsId: $id,
    expectedStatus: 'active',
    maxSeconds: 120,
    intervalSeconds: 5,
);
```

### Images

[](#images)

```
$client->images->list($page, $perPage);              // All images
$client->images->listDistributions($page, $perPage);  // OS distributions
$client->images->listApplications($page, $perPage);   // Application images
$client->images->get(7555620);                         // By ID
$client->images->get('ubuntu-14-04-x64');              // By slug
```

### SSH Keys

[](#ssh-keys)

```
$client->sshKeys->list($page, $perPage);
$client->sshKeys->get(512190);                          // By ID
$client->sshKeys->get('3b:16:bf:e4:...');               // By fingerprint
$client->sshKeys->create('My Key', 'ssh-rsa AAAA...');
$client->sshKeys->update(512190, 'Renamed Key');
$client->sshKeys->delete(512190);
```

### Sizes (Plans)

[](#sizes-plans)

```
$client->sizes->list();
```

### Regions

[](#regions)

```
$client->regions->list();
```

Pagination
----------

[](#pagination)

List endpoints support pagination with `page` and `perPage` parameters. Responses include `links.pages` and `meta.total`:

```
$result = $client->vps->list(page: 2, perPage: 10);

$servers = $result['vps'];
$total = $result['meta']['total'];
$nextPage = $result['links']['pages']['next'] ?? null;
```

License
-------

[](#license)

MIT

###  Health Score

23

—

LowBetter than 25% of packages

Maintenance54

Moderate activity, may be stable

Popularity18

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/68226343?v=4)[NomadicSoft](/maintainers/nomadicsoft)[@nomadicsoft](https://github.com/nomadicsoft)

---

Top Contributors

[![kurumbus](https://avatars.githubusercontent.com/u/13556916?v=4)](https://github.com/kurumbus "kurumbus (1 commits)")

### Embed Badge

![Health badge](/badges/nomadicsoft-simplecloud-php/health.svg)

```
[![Health](https://phpackages.com/badges/nomadicsoft-simplecloud-php/health.svg)](https://phpackages.com/packages/nomadicsoft-simplecloud-php)
```

###  Alternatives

[exsyst/swagger

A php library to manipulate Swagger specifications

35916.4M7](/packages/exsyst-swagger)[hubspot/api-client

Hubspot API client

24016.2M20](/packages/hubspot-api-client)[pocketmine/bedrock-protocol

An implementation of the Minecraft: Bedrock Edition protocol in PHP

172445.0k18](/packages/pocketmine-bedrock-protocol)[botman/driver-telegram

Telegram driver for BotMan

93459.5k6](/packages/botman-driver-telegram)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
