NAV
Time4VPS
bash php python

Introduction

Our HTTP REST API allows you to manage vital details of your account and services in client portal. JSON is used for all API returns

Use left menu to browse trough available methods, use right menu to check required parameters, data to post and code samples in various languages.

Swagger Doc: You can download or display the JSON to generate documentation in Swagger.

Authentication

Basic Authentication

# pass the correct header with each request (-u option)
curl 'https://billing.time4vps.com/api/details' \
    -u "username:password"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);

$resp = $client->get('/details');
# python requests module handles basic authentication if provided with auth parameter
payload = username
req = requests.get('https://billing.time4vps.com/api/details', auth=('username', 'password'))
print(req.json())

Make sure to replace username and password with your client area details.

This authentication method requires that you send your client area username (email address) and password with each request.

API calls that require authentication expect a header in the form of Authorization: Basic <credentials>, where credentials is the Base64 encoding of username and password joined by a single colon :.

For example:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

You can find more info on this authentication method here: Basic HTTP Authentication

Clientarea

User Details

Return registration details for my account

curl -X GET "https://billing.time4vps.com/api/details" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/details');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/details', auth=auth)
print(req.json())
Example Response:
{
    "client": {
        "id": "26",
        "email": "api@example.com",
        "lastlogin": "2016-12-30 12:24:28",
        "ip": "172.100.2.1",
        "host": "hostname",
        "firstname": "Joe",
        "lastname": "Doe",
        "companyname": "",
        "address1": "Pretty View Lane",
        "address2": "3294",
        "city": "Santa Rosa",
        "state": "California",
        "postcode": "95401",
        "country": "US",
        "phonenumber": "+1.24123123"
    }
}

HTTP Request

GET /details

Update User Details

Update registration details under my account

curl -X PUT "https://billing.time4vps.com/api/details" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"type\": \"typeValue\",
    \"companyname\": \"companynameValue\",
    \"companyregistrationnumber\": \"companyregistrationnumberValue\",
    \"vateu\": \"vateuValue\",
    \"email\": \"emailValue\",
    \"firstname\": \"firstnameValue\",
    \"lastname\": \"lastnameValue\",
    \"country\": \"countryValue\",
    \"address1\": \"address1Value\",
    \"city\": \"cityValue\",
    \"state\": \"stateValue\",
    \"postcode\": \"postcodeValue\",
    \"phonenumber\": \"phonenumberValue\",
    \"emarketing\": \"emarketingValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->put('/details', [
    'json' => [
        "type" => "typeValue",
        "companyname" => "companynameValue",
        "companyregistrationnumber" => "companyregistrationnumberValue",
        "vateu" => "vateuValue",
        "email" => "emailValue",
        "firstname" => "firstnameValue",
        "lastname" => "lastnameValue",
        "country" => "countryValue",
        "address1" => "address1Value",
        "city" => "cityValue",
        "state" => "stateValue",
        "postcode" => "postcodeValue",
        "phonenumber" => "phonenumberValue",
        "emarketing" => "emarketingValue"
    ]
]);

echo $resp->getBody();
payload = {
    'type': "typeValue",
    'companyname': "companynameValue",
    'companyregistrationnumber': "companyregistrationnumberValue",
    'vateu': "vateuValue",
    'email': "emailValue",
    'firstname': "firstnameValue",
    'lastname': "lastnameValue",
    'country': "countryValue",
    'address1': "address1Value",
    'city': "cityValue",
    'state': "stateValue",
    'postcode': "postcodeValue",
    'phonenumber': "phonenumberValue",
    'emarketing': "emarketingValue"
}
auth=('username', 'password')

req = requests.put('https://billing.time4vps.com/api/details', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "client": {
        "id": "26",
        "email": "api@example.com",
        "lastlogin": "2016-12-30 12:34:20",
        "ip": "172.100.2.1",
        "host": "hostname",
        "firstname": "Joe",
        "lastname": "Doe",
        "companyname": "",
        "address1": "Pretty View Lane",
        "address2": "3194",
        "city": "Santa Rosa",
        "state": "California",
        "postcode": "95401",
        "country": "US",
        "phonenumber": "+1.24123123"
    },
    "info": [
        "client_info_updated"
    ]
}

HTTP Request

PUT /details

Query Parameters

Parameter Type Description
type string

Account Type

Available values: Private, Company.

companyname string

Organization

companyregistrationnumber string

Organization Registration Number

vateu string

VAT Number - If you have valid VAT-EU registered number please provide it here

email string

Email Address

firstname string

First Name

Value pattern: ^[a-zA-Z0-9\- \x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

lastname string

Last Name

Value pattern: ^[a-zA-Z0-9\- \x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

country string

Country

address1 string

Address 1

Value pattern: ^[a-zA-Z0-9\- .\x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

city string

City

Value pattern: ^[a-zA-Z0-9\- \x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

state string

State - Maximum 20 characters.

Value pattern: ^.{1,20}$

postcode string

Post code

phonenumber string

Phone

emarketing string[]

News and Updates - You will be subscribed to our newsletter list and will receive updates and news regarding Time4VPS services.

Available values: Subscribed.

Sign up

Create new account

curl -X POST "https://billing.time4vps.com/api/signup" \
   -H "Content-Type: application/json" \
   -d "{
    \"type\": \"typeValue\",
    \"companyname\": \"companynameValue\",
    \"companyregistrationnumber\": \"companyregistrationnumberValue\",
    \"vateu\": \"vateuValue\",
    \"email\": \"emailValue\",
    \"password\": \"passwordValue\",
    \"firstname\": \"firstnameValue\",
    \"lastname\": \"lastnameValue\",
    \"country\": \"countryValue\",
    \"address1\": \"address1Value\",
    \"city\": \"cityValue\",
    \"postcode\": \"postcodeValue\",
    \"phonenumber\": \"phonenumberValue\",
    \"emarketing\": \"emarketingValue\",
    \"2faenable\": \"2faenableValue\",
    \"2fasecret\": \"2fasecretValue\",
    \"currency\": \"currencyValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
]);


$resp = $client->post('/signup', [
    'json' => [
        "type" => "typeValue",
        "companyname" => "companynameValue",
        "companyregistrationnumber" => "companyregistrationnumberValue",
        "vateu" => "vateuValue",
        "email" => "emailValue",
        "password" => "passwordValue",
        "firstname" => "firstnameValue",
        "lastname" => "lastnameValue",
        "country" => "countryValue",
        "address1" => "address1Value",
        "city" => "cityValue",
        "postcode" => "postcodeValue",
        "phonenumber" => "phonenumberValue",
        "emarketing" => "emarketingValue",
        "2faenable" => "2faenableValue",
        "2fasecret" => "2fasecretValue",
        "currency" => "currencyValue"
    ]
]);

echo $resp->getBody();
payload = {
    'type': "typeValue",
    'companyname': "companynameValue",
    'companyregistrationnumber': "companyregistrationnumberValue",
    'vateu': "vateuValue",
    'email': "emailValue",
    'password': "passwordValue",
    'firstname': "firstnameValue",
    'lastname': "lastnameValue",
    'country': "countryValue",
    'address1': "address1Value",
    'city': "cityValue",
    'postcode': "postcodeValue",
    'phonenumber': "phonenumberValue",
    'emarketing': "emarketingValue",
    '2faenable': "2faenableValue",
    '2fasecret': "2fasecretValue",
    'currency': "currencyValue"
}

req = requests.post('https://billing.time4vps.com/api/signup', json=payload)
print(req.json())
Example Response:
{
    "info": [
        "client_registered"
    ]
}

HTTP Request

POST /signup

Query Parameters

Parameter Type Description
type string

Account Type

Available values: Private, Company.

Required
companyname string

Organization

Required for organization account
companyregistrationnumber string

Organization Registration Number

vateu string

VAT Number - If you have valid VAT-EU registered number please provide it here

email string

Email Address

Required
password string

Password - Password should consist of minimum 12 characters and at least one number and one uppercase character.

Value pattern: ^(?=.*\d)(?=.*[A-Z])(?=.*[a-z]).{12,}$

Required
firstname string

First Name

Value pattern: ^[a-zA-Z0-9\- \x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

Required
lastname string

Last Name

Value pattern: ^[a-zA-Z0-9\- \x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

Required
country string

Country

Required
address1 string

Address 1

Value pattern: ^[a-zA-Z0-9\- .\x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

Required
city string

City

Value pattern: ^[a-zA-Z0-9\- \x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

Required
postcode string

Post code

phonenumber string

Phone

emarketing string[]

News and Updates - You will be subscribed to our newsletter list and will receive updates and news regarding Time4VPS services.

Available values: Subscribed.

2faenable string[]

Two-Factor Authentication

Available values: Enable.

2fasecret string

Two-Factor Secret - If Two-Factor is enabled, enter 16-chars (letters/digits) secret code to use in Google Authenticator App.

currency string

Currency

Available values: EUR.

Password Reset

Request password reset email for account

curl -X POST "https://billing.time4vps.com/api/passwordreset" \
   -H "Content-Type: application/json" \
   -d "{
    \"email\": \"emailValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
]);


$resp = $client->post('/passwordreset', [
    'json' => [
        "email" => "emailValue"
    ]
]);

echo $resp->getBody();
payload = {
    'email': "emailValue"
}

req = requests.post('https://billing.time4vps.com/api/passwordreset', json=payload)
print(req.json())
Example Response:
{
    "info": [
        "generated_reset_request"
    ]
}

HTTP Request

POST /passwordreset

Query Parameters

Parameter Type Description
email string

EMail address

List contacts

Return a list of contacts on this account

curl -X GET "https://billing.time4vps.com/api/contact" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/contact');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/contact', auth=auth)
print(req.json())
Example Response:
{
    "contacts": [
        {
            "email": "mary@example.com",
            "id": "49",
            "firstname": "Mary",
            "lastname": "Sue",
            "companyname": "",
            "company": "0",
            "lastlogin": "0000-00-00 00:00:00"
        }
    ]
}

HTTP Request

GET /contact

Add contact

Create new contact account, if password is provided you can use provided email addres to login as that contact.

curl -X POST "https://billing.time4vps.com/api/contact" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"password\": \"passwordValue\",
    \"privileges\": \"privilegesValue\",
    \"type\": \"typeValue\",
    \"companyname\": \"companynameValue\",
    \"companyregistrationnumber\": \"companyregistrationnumberValue\",
    \"vateu\": \"vateuValue\",
    \"email\": \"emailValue\",
    \"firstname\": \"firstnameValue\",
    \"lastname\": \"lastnameValue\",
    \"country\": \"countryValue\",
    \"address1\": \"address1Value\",
    \"city\": \"cityValue\",
    \"state\": \"stateValue\",
    \"postcode\": \"postcodeValue\",
    \"phonenumber\": \"phonenumberValue\",
    \"emarketing\": \"emarketingValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/contact', [
    'json' => [
        "password" => "passwordValue",
        "privileges" => "privilegesValue",
        "type" => "typeValue",
        "companyname" => "companynameValue",
        "companyregistrationnumber" => "companyregistrationnumberValue",
        "vateu" => "vateuValue",
        "email" => "emailValue",
        "firstname" => "firstnameValue",
        "lastname" => "lastnameValue",
        "country" => "countryValue",
        "address1" => "address1Value",
        "city" => "cityValue",
        "state" => "stateValue",
        "postcode" => "postcodeValue",
        "phonenumber" => "phonenumberValue",
        "emarketing" => "emarketingValue"
    ]
]);

echo $resp->getBody();
payload = {
    'password': "passwordValue",
    'privileges': "privilegesValue",
    'type': "typeValue",
    'companyname': "companynameValue",
    'companyregistrationnumber': "companyregistrationnumberValue",
    'vateu': "vateuValue",
    'email': "emailValue",
    'firstname': "firstnameValue",
    'lastname': "lastnameValue",
    'country': "countryValue",
    'address1': "address1Value",
    'city': "cityValue",
    'state': "stateValue",
    'postcode': "postcodeValue",
    'phonenumber': "phonenumberValue",
    'emarketing': "emarketingValue"
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/contact', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "contact_id": "1",        
    "info": [
        "profile_added"
    ]
}

HTTP Request

POST /contact

Query Parameters

Parameter Type Description
password string

Optional, allows you to login as contact

privileges array

Array with privileges that you want to enable. Formatted the same way as output from GET /contact/privileges

type string

Account Type

Available values: Private, Company.

companyname string

Organization

companyregistrationnumber string

Organization Registration Number

vateu string

VAT Number - If you have valid VAT-EU registered number please provide it here

email string

Email Address

firstname string

First Name

Value pattern: ^[a-zA-Z0-9\- \x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

lastname string

Last Name

Value pattern: ^[a-zA-Z0-9\- \x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

country string

Country

address1 string

Address 1

Value pattern: ^[a-zA-Z0-9\- .\x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

city string

City

Value pattern: ^[a-zA-Z0-9\- \x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

state string

State - Maximum 20 characters.

Value pattern: ^.{1,20}$

postcode string

Post code

phonenumber string

Phone

emarketing string[]

News and Updates - You will be subscribed to our newsletter list and will receive updates and news regarding Time4VPS services.

Available values: Subscribed.

Contact privileges

List possible contact privileges. Each domain and service may list additional privileges, depending on available features.

curl -X GET "https://billing.time4vps.com/api/contact/privileges" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/contact/privileges');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/contact/privileges', auth=auth)
print(req.json())
Example Response:
{
    "privileges": {
        "billing": [
            "emails", // Receive billing notifications
            "payinvoice", // Allow to view/pay invoices
            "orders", // Allow to place new orders
            "balance", // View account balance
            "addfunds", // Add account funds
            "creditcard" // Edit Credit Card details
        ],
        "support": [
            "newticket", // Open new tickets
            "tickets", // View all tickets
            "closeticket", // Close tickets
            "emails" // Receive email notifications from support
        ],
        "misc": [
            "editmain", // Modify main profile details
            "emails", // View emails history
            "editipaccess", // Edit allowed IP access
            "manageprofiles", // Add / Edit contacts
            "affiliates" // Access affiliates section
        ],
        "services": {
            "full": 1, // Full control over services
            "332": [
                "basic", // View basic details
                "billing", // View billing info
                "cancelation", // Request cancellation
                "upgrade", // Upgrade / Downgrade
                "notify", // Receive related email notifications	
                (...)
                "logindetails"
            ]
        },
        "domains": {
            "full": 1, // Full control over domains
            "523": [
                "basic", // View basic details
                "renew", // Renew domain
                "notify", // Receive related email notifications	
                "contactinfo", // Contact Information
                (...)
                "nameservers" // Manage Nameservers
            ]
        }
    }
}

HTTP Request

GET /contact/privileges

Get contacts details

Return array with contact details

curl -X GET "https://billing.time4vps.com/api/contact/@id" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/contact/@id');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/contact/@id', auth=auth)
print(req.json())
Example Response:
{
    "contact": {
        "id": "49",
        "email": "mary@example.com",
        "firstname": "Mary",
        "lastname": "Sue",
        "companyname": "",
        "address1": "Pretty View Lane",
        "address2": "3194",
        "city": "Santa Rosa",
        "state": "California",
        "postcode": "95401",
        "country": "US",
        "phonenumber": "+1.24123123",
        "type": "Private",
        "privileges" : {
            "support" : ["tickets", "newticket"]
        }
    }
}

HTTP Request

GET /contact/@id

Query Parameters

Parameter Type Description
id int

Contact ID

Edit contact

Change contact details`

curl -X PUT "https://billing.time4vps.com/api/contact/@id" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"privileges\": \"privilegesValue\",
    \"type\": \"typeValue\",
    \"companyname\": \"companynameValue\",
    \"companyregistrationnumber\": \"companyregistrationnumberValue\",
    \"vateu\": \"vateuValue\",
    \"email\": \"emailValue\",
    \"firstname\": \"firstnameValue\",
    \"lastname\": \"lastnameValue\",
    \"country\": \"countryValue\",
    \"address1\": \"address1Value\",
    \"city\": \"cityValue\",
    \"state\": \"stateValue\",
    \"postcode\": \"postcodeValue\",
    \"phonenumber\": \"phonenumberValue\",
    \"emarketing\": \"emarketingValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->put('/contact/@id', [
    'json' => [
        "privileges" => "privilegesValue",
        "type" => "typeValue",
        "companyname" => "companynameValue",
        "companyregistrationnumber" => "companyregistrationnumberValue",
        "vateu" => "vateuValue",
        "email" => "emailValue",
        "firstname" => "firstnameValue",
        "lastname" => "lastnameValue",
        "country" => "countryValue",
        "address1" => "address1Value",
        "city" => "cityValue",
        "state" => "stateValue",
        "postcode" => "postcodeValue",
        "phonenumber" => "phonenumberValue",
        "emarketing" => "emarketingValue"
    ]
]);

echo $resp->getBody();
payload = {
    'privileges': "privilegesValue",
    'type': "typeValue",
    'companyname': "companynameValue",
    'companyregistrationnumber': "companyregistrationnumberValue",
    'vateu': "vateuValue",
    'email': "emailValue",
    'firstname': "firstnameValue",
    'lastname': "lastnameValue",
    'country': "countryValue",
    'address1': "address1Value",
    'city': "cityValue",
    'state': "stateValue",
    'postcode': "postcodeValue",
    'phonenumber': "phonenumberValue",
    'emarketing': "emarketingValue"
}
auth=('username', 'password')

req = requests.put('https://billing.time4vps.com/api/contact/@id', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "info": [
        "profile_updated"
    ]
}

HTTP Request

PUT /contact/@id

Query Parameters

Parameter Type Description
id int
privileges array

Array with privileges that you want to enable. Formatted the same way as output from GET /contact/privileges

type string

Account Type

Available values: Private, Company.

companyname string

Organization

companyregistrationnumber string

Organization Registration Number

vateu string

VAT Number - If you have valid VAT-EU registered number please provide it here

email string

Email Address

firstname string

First Name

Value pattern: ^[a-zA-Z0-9\- \x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

lastname string

Last Name

Value pattern: ^[a-zA-Z0-9\- \x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

country string

Country

address1 string

Address 1

Value pattern: ^[a-zA-Z0-9\- .\x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

city string

City

Value pattern: ^[a-zA-Z0-9\- \x{00C0}-\x{1FFF}\x{2800}-\x{FFFD}]+$/u

state string

State - Maximum 20 characters.

Value pattern: ^.{1,20}$

postcode string

Post code

phonenumber string

Phone

emarketing string[]

News and Updates - You will be subscribed to our newsletter list and will receive updates and news regarding Time4VPS services.

Available values: Subscribed.

List all portal notifications

Return a list of all portal notifications.

curl -X GET "https://billing.time4vps.com/api/notifications" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/notifications');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/notifications', auth=auth)
print(req.json())

HTTP Request

GET /notifications

Query Parameters

Parameter Type Description
rel_type string

Optional, return only by relation type

rel_id string

Optional, return only by relation id

List new portal notifications

Return only new portal notifications.

curl -X GET "https://billing.time4vps.com/api/notifications/new" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/notifications/new');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/notifications/new', auth=auth)
print(req.json())

HTTP Request

GET /notifications/new

Query Parameters

Parameter Type Description
rel_type string

Optional, return only by relation type

rel_id string

Optional, return only by relation id

Acknowledge notification

Marks the notification as read

curl -X PUT "https://billing.time4vps.com/api/notifications/@id/ack" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->put('/notifications/@id/ack');

echo $resp->getBody();
auth=('username', 'password')

req = requests.put('https://billing.time4vps.com/api/notifications/@id/ack', auth=auth)
print(req.json())

HTTP Request

PUT /notifications/@id/ack

Query Parameters

Parameter Type Description
id int

Billing

Account balance

Get current account balance(unpaid invoices total), account credit

curl -X GET "https://billing.time4vps.com/api/balance" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/balance');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/balance', auth=auth)
print(req.json())
Example Response:
{
    {
        "success": true,
        "details": {
            "currency": "USD",
            "acc_balance": "123456.55",
            "acc_credit": "0.00"
        }
    }
}

HTTP Request

GET /balance

List Invoices

List all invoices under my account

curl -X GET "https://billing.time4vps.com/api/invoice" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/invoice');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/invoice', auth=auth)
print(req.json())
Example Response:
{
    "invoices": [
        {
            "id": "308976",
            "date": "2016-12-30",
            "dateorig": "2016-12-30",
            "duedate": "2017-01-06",
            "paybefore": "2017-01-06",
            "total": "19.65",
            "datepaid": "2016-12-30 12:40:47",
            "status": "Paid",
            "merge_id": null,
            "number": "2016\/12\/1",
            "currency": "USD"
        }
    ]
}

HTTP Request

GET /invoice

Invoice Details

Get invoice details

curl -X GET "https://billing.time4vps.com/api/invoice/@id" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/invoice/@id');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/invoice/@id', auth=auth)
print(req.json())
Example Response:
{
    "invoice": {
        "id": "308976",
        "status": "Paid",
        "date": "2016-12-30",
        "duedate": "2017-01-06",
        "paybefore": "2017-01-06",
        "datepaid": "2016-12-30 12:40:47",
        "subtotal": 16.24,
        "credit": 0,
        "tax": 3.41,
        "taxrate": 21,
        "tax2": 0,
        "taxrate2": 0,
        "taxexempt": "0",
        "total": 19.65,
        "rate": 1,
        "rate2": 0,
        "rate3": 1,
        "notes": "",
        "items": [
            {
                "id": "12305",
                "invoice_id": "308976",
                "type": "Other",
                "item_id": "0",
                "description": "Example Service",
                "amount": "15.00",
                "taxed": "1",
                "qty": "1.00",
                "linetotal": "15.00"
            },
            {
                "id": "12309",
                "invoice_id": "308976",
                "type": "Other",
                "item_id": "-2",
                "description": "PayPal Payment Fee",
                "amount": "1.24",
                "taxed": "1",
                "qty": "1.00",
                "linetotal": "1.24"
            }
        ],
        "client": {
            "id": "26",
            "email": "api@example.com",
            "firstname": "Joe",
            "lastname": "Doe",
            "companyname": "",
            "address1": "Pretty View Lane",
            "address2": "3194",
            "city": "Santa Rosa",
            "state": "California",
            "postcode": "95401",
            "country": "US",
            "phonenumber": "+1.24123123"
        },
        "number": "2016\/12\/1",
        "currency": "USD"
    }
}

HTTP Request

GET /invoice/@id

Query Parameters

Parameter Type Description
id int

Payment Methods

List available payment methods

curl -X GET "https://billing.time4vps.com/api/payment" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/payment');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/payment', auth=auth)
print(req.json())
Example Response:
{
    "payments": {
        "10": "BankTransfer",
        "9": "PayPal"
    }
}

HTTP Request

GET /payment

Payment Methods Fees

List available payment methods with fees

curl -X GET "https://billing.time4vps.com/api/payment/fees" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/payment/fees');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/payment/fees', auth=auth)
print(req.json())
Example Response:
{
    "payments": [
        {
            "id": 1,
            "name": "Bank Transfer",
            "fixed_fee": "0.0",
            "percent_fee": "0.0",
        },
        {
            "id": 2,
            "name": "Stripe",
            "fixed_fee": "0.5",
            "percent_fee": "2.9",
        },
        {
            "id": 4,
            "name": "Credit Card",
            "fixed_fee": "0.1",
            "percent_fee": "2.4"
        },
        {
            "id": 5,
            "name": "PayPal",
            "fixed_fee": "0.3",
            "percent_fee": "2.9"
        }
    ]
}

HTTP Request

GET /payment/fees

Services

List services

List all services under your account

curl -X GET "https://billing.time4vps.com/api/service" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/service');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/service', auth=auth)
print(req.json())
Example Response:
{
    "services": [
        {
            "id": "301",
            "domain": "examplename.com",
            "total": "9.99",
            "status": "Pending",
            "billingcycle": "Monthly",
            "next_due": "2017-12-30",
            "category": "Hosting",
            "category_url": "hosting",
            "name": "Starter Hosting"
        }
    ]
}

HTTP Request

GET /service

List service methods

List methods available for service

curl -X GET "https://billing.time4vps.com/api/service/@id/methods" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/service/@id/methods');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/service/@id/methods', auth=auth)
print(req.json())
Example Response:
{
    "methods": [
        {
            "name": "Upgrade Request",
            "method": "POST",
            "route": "\/service\/@id\/upgrade"
        },
        {
            "name": "Upgrade Options",
            "method": "GET",
            "route": "\/service\/@id\/upgrade"
        },
        {
            "name": "Change service label",
            "method": "POST",
            "route": "\/service\/@id\/label"
        },
        {
            "name": "Service label",
            "method": "GET",
            "route": "\/service\/@id\/label"
        },
        {
            "name": "Cancel Service",
            "method": "POST",
            "route": "\/service\/@id\/cancel"
        }
    ]
}

HTTP Request

GET /service/@id/methods

Query Parameters

Parameter Type Description
id int

Upgrade Options

List upgrade options

curl -X GET "https://billing.time4vps.com/api/service/@id/upgrade" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/service/@id/upgrade');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/service/@id/upgrade', auth=auth)
print(req.json())
Example Response:
{
    "resources": [
        {
            "id": 1557,
            "name": "Bandwidth",
            "type": "select",
            "items": [
                {
                    "id": "9953",
                    "name": "100 GB",
                    "price": 1,
                    "setup_price": 0,
                    "selected": true
                },
                {
                    "id": "10103",
                    "name": "500 GB",
                    "price": 5,
                    "setup_price": 0,
                    "selected": false
                },
                {
                    "id": "10104",
                    "name": "1 TB",
                    "price": 10,
                    "setup_price": 0,
                    "selected": false
                }
            ]
        }
    ],
    "package": []
}

HTTP Request

GET /service/@id/upgrade

Query Parameters

Parameter Type Description
id int

Cancel Service

Request service cancellation

curl -X POST "https://billing.time4vps.com/api/service/@id/cancel" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"immediate\": \"immediateValue\",
    \"reason\": \"reasonValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/service/@id/cancel', [
    'json' => [
        "immediate" => "immediateValue",
        "reason" => "reasonValue"
    ]
]);

echo $resp->getBody();
payload = {
    'immediate': "immediateValue",
    'reason': "reasonValue"
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/service/@id/cancel', json=payload, auth=auth)
print(req.json())
Example Response:
{
  "info": [
    "cancell_sent"
  ]
}

HTTP Request

POST /service/@id/cancel

Query Parameters

Parameter Type Description
id int

Service id

immediate string

set to false to terminate service at the end of billing date, true - terminate immediately

reason string

Reason for this request

Service label

Show current service label

curl -X GET "https://billing.time4vps.com/api/service/@id/label" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/service/@id/label');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/service/@id/label', auth=auth)
print(req.json())
Example Response:
{
    "label": "example"
}

HTTP Request

GET /service/@id/label

Query Parameters

Parameter Type Description
id int

Service id

Change service label

Set new custom label to identify this service

curl -X POST "https://billing.time4vps.com/api/service/@id/label" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"label\": \"labelValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/service/@id/label', [
    'json' => [
        "label" => "labelValue"
    ]
]);

echo $resp->getBody();
payload = {
    'label': "labelValue"
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/service/@id/label', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "success": true,
    "info": [
        "label_updated"
    ]
}

HTTP Request

POST /service/@id/label

Query Parameters

Parameter Type Description
id int

Service id

label string

New label

Service details

Return details for service @id

curl -X GET "https://billing.time4vps.com/api/service/@id" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/service/@id');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/service/@id', auth=auth)
print(req.json())
Example Response:
{
    "service": {
        "id": "301",
        "date_created": "2016-12-30",
        "domain": "examplename.com",
        "firstpayment": "9.99",
        "total": "9.99",
        "billingcycle": "Monthly",
        "next_due": "2017-12-30",
        "next_invoice": "2017-01-27",
        "status": "Active",
        "label": "",
        "username": "examplen",
        "name": "Starter Hosting"
    }
}

HTTP Request

GET /service/@id

Query Parameters

Parameter Type Description
id int

Service id

Upgrade Request

Estimate or request upgrade

// Format of ''resources'' paremeter
{
    "resource_id" : "qty_value", // sliders & qty fields
    "resource_id" : "item_id", // dropdown & radio fields
    "resource_id" : {
        "item_id": "qty_value" // dropdown with qty field
    }
}
curl -X POST "https://billing.time4vps.com/api/service/@id/upgrade" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"resources\": \"resourcesValue\",
    \"package\": \"packageValue\",
    \"cycle\": \"cycleValue\",
    \"send\": \"sendValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/service/@id/upgrade', [
    'json' => [
        "resources" => "resourcesValue",
        "package" => "packageValue",
        "cycle" => "cycleValue",
        "send" => "sendValue"
    ]
]);

echo $resp->getBody();
payload = {
    'resources': "resourcesValue",
    'package': "packageValue",
    'cycle': "cycleValue",
    'send': "sendValue"
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/service/@id/upgrade', json=payload, auth=auth)
print(req.json())

HTTP Request

POST /service/@id/upgrade

Query Parameters

Parameter Type Description
id int

Service id

resources array

array with resource values

package int

New package id, optonal when upgrading resources

cycle string

New billing cycle, optonal when upgrading resources

send boolean

Set to true when you want to send your upgrade request

Get service ID from Order Number

curl -X GET "https://billing.time4vps.com/api/service/order/@order_num" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/service/order/@order_num');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/service/order/@order_num', auth=auth)
print(req.json())
Example Response:
{
    "account_id": 1302
}

HTTP Request

GET /service/order/@order_num

Query Parameters

Parameter Type Description
order_num int

Order Number

Cart

Most of API methods found here will require service @id, you can lookup your service ids with /service method

List product categories

Return a list of product categories.

curl -X GET "https://billing.time4vps.com/api/category" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/category');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/category', auth=auth)
print(req.json())
Example Response:
{
    "categories": [
        {
            "id": "10",
            "name": "Hosting",
            "description": "",
            "slug": "hosting"
        },
        {
            "id": "6",
            "name": "Domains",
            "description": "",
            "slug": "domains"
        },
        {
            "id": "16",
            "name": "Dedicated",
            "description": "",
            "slug": "dedicated"
        }
    ]
}

HTTP Request

GET /category

List products in category

Return a list of product available for purchase under requested category

curl -X GET "https://billing.time4vps.com/api/category/@category_id/product" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/category/@category_id/product');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/category/@category_id/product', auth=auth)
print(req.json())
Example Response:
{
    "products": [
        {
            "id": "333",
            "type": "1",
            "name": "Starter Hosting",
            "stock": false,
            "paytype": "Regular",
            "description": "Disk:10GB
Memory:2GB
MySql:10 DB
Email:100 Users
", "qty": "0", "tags": [ ], "periods": [ { "title": "m", "value": "m", "price": 9.99, "setup": 0, "selected": true }, { "title": "a", "value": "a", "price": 109.89, "setup": 0, "selected": false }, { "title": "b", "value": "b", "price": 199.8, "setup": 0, "selected": false }, { "title": "t", "value": "t", "price": 299.7, "setup": 0, "selected": false } ] }, (...) ] }

HTTP Request

GET /category/@category_id/product

Query Parameters

Parameter Type Description
category_id int

Category ID

Get product configuration details

Return product details with form configuration, addons and subproducts if available.

curl -X GET "https://billing.time4vps.com/api/order/@product_id" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/order/@product_id');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/order/@product_id', auth=auth)
print(req.json())
Example Response:
{
    "product": {
        "id": "333",
        "category_name": "Hosting",
        "category_id": "49",
        "name": "Starter Hosting",
        "price": 9.99,
        "recurring": "m",
        "setup": 0,
        "config": {
            "product": [
                {
                    "type": "select",
                    "title": "pickcycle",
                    "id": "cycle",
                    "name": "cycle",
                    "items": [
                        {
                            "title": "m",
                            "value": "m",
                            "price": 9.99,
                            "setup": 0,
                            "selected": true
                        },
                        {
                            "title": "a",
                            "value": "a",
                            "price": 109.89,
                            "setup": 0,
                            "selected": false
                        },
                        {
                            "title": "b",
                            "value": "b",
                            "price": 199.8,
                            "setup": 0,
                            "selected": false
                        },
                        {
                            "title": "t",
                            "value": "t",
                            "price": 299.7,
                            "setup": 0,
                            "selected": false
                        }
                    ],
                    "value": "m",
                    "price": 9.99,
                    "setup": 0
                },
                {
                    "type": "input",
                    "title": "domain",
                    "id": "domain",
                    "name": "domain",
                    "value": null
                }
            ],
            "forms": [
                {
                    "type": "select",
                    "title": "Disk Size",
                    "id": "1618",
                    "firstItemId": 10330,
                    "description": "",
                    "name": "custom[1618]",
                    "required": false,
                    "multiple": false,
                    "config": {
                        "conditionals": []
                    },
                    "value": [],
                    "textvalue": [],
                    "price": 0,
                    "recurring_price": 0,
                    "setup": 0,
                    "prorata_date": null,
                    "items": [
                        {
                            "title": "512MB",
                            "value": 1,
                            "id": 10330,
                            "price": 0,
                            "setup": 0,
                            "selected": false
                        },
                        {
                            "title": "1GB",
                            "value": 1,
                            "id": 10331,
                            "price": 0,
                            "setup": 0,
                            "selected": false
                        },
                        {
                            "title": "2GB",
                            "value": 1,
                            "id": 10332,
                            "price": 0,
                            "setup": 0,
                            "selected": false
                        }
                    ]
                },
                (...)
            ],
            "addons": [
                {
                    "type": "subitem",
                    "title": "Cpanel2: Add Extra IP",
                    "id": "31",
                    "value": null,
                    "description": "Automatically adds IP address to account",
                    "config": [
                        {
                            "type": "checkbox",
                            "title": "add",
                            "name": "addon[31]",
                            "checked": false
                        },
                        {
                            "type": "select",
                            "title": "billingcycle",
                            "name": "addon_cycles[31]",
                            "items": [
                                {
                                    "title": "m",
                                    "value": "m",
                                    "price": 5,
                                    "setup": 0,
                                    "selected": true
                                },
                                {
                                    "title": "q",
                                    "value": "q",
                                    "price": 20,
                                    "setup": 0,
                                    "selected": false
                                },
                                {
                                    "title": "a",
                                    "value": "a",
                                    "price": 50,
                                    "setup": 0,
                                    "selected": false
                                }
                            ]
                        }
                    ],
                    "price": 0,
                    "recurring_price": 0,
                    "setup": 0,
                    "prorata_date": null
                },
                (...)
            ],
            "subproducts": []
        },
        "recurring_price": 9.99,
        "prorata_date": null
    }
}

HTTP Request

GET /order/@product_id

Query Parameters

Parameter Type Description
product_id int

Product ID

Order multiple services

Create and submit new order for multiple services

Each item in the items array needs to include order type and parameters used by one of the method listed below:
POST /order/$product_id - use product for item type
POST /certificate/order - use certificate for item type

curl -X POST "https://billing.time4vps.com/api/order" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"pay_method\": 1,
    \"items\": [
        {
            \"type\": \"product\",
            \"product_id\": 1080,
            \"domain\": \"hosting.com\",
            \"cycle\": \"a\"
        },
        {
            \"type\": \"certificate\",
            \"product_id\": 840,
            \"csr\": \"-----BEGIN CERTIFICATE REQUEST----- (...)\",
            \"years\": 1,
            \"approver_email\": \"admin@hosting.com\"
        }
    ]
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/order', [
    'json' => [
        "pay_method" => 1,
        "items" => [
            [
                "type" => "product",
                "product_id" => 1080,
                "domain" => "hosting.com",
                "cycle" => "a"
            ],
            [
                "type" => "certificate",
                "product_id" => 840,
                "csr" => "-----BEGIN CERTIFICATE REQUEST----- (...)",
                "years" => 1,
                "approver_email" => "admin@hosting.com"
            ]
        ]
    ]
]);

echo $resp->getBody();
payload = {
    'pay_method': 1,
    'items': [
        {
            'type': "product",
            'product_id': 1080,
            'domain': "hosting.com",
            'cycle': "a"
        },
        {
            'type': "certificate",
            'product_id': 840,
            'csr': "-----BEGIN CERTIFICATE REQUEST----- (...)",
            'years': 1,
            'approver_email': "admin@hosting.com"
        }
    ]
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/order', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "order_num_list": [
        179534732,
        179534732,
        179534732
    ],
    "invoice_id": "503425",
    "total": "94.40",
    "items": [
        {
            "type": "Hosting",
            "id": "1025",
            "name": "hosting.com",
            "product_id": "1080"
        },
        {
            "type": "Hosting",
            "id": "1026",
            "name": "hosting.com",
            "product_id": "840"
        },
        {
            "type": "Domain Register",
            "id": "354",
            "name": "hosting.com",
            "product_id": "6"
        }
    ]
}

HTTP Request

POST /order

Query Parameters

Parameter Type Description
pay_method int

Payment method ID

items array

list with order items

Get order quote

Calculate order cost and recuring prices for selected items. Use the same parameters as for POST /order

curl -X POST "https://billing.time4vps.com/api/quote" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"pay_method\": \"pay_methodValue\",
    \"items\": \"itemsValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/quote', [
    'json' => [
        "pay_method" => "pay_methodValue",
        "items" => "itemsValue"
    ]
]);

echo $resp->getBody();
payload = {
    'pay_method': "pay_methodValue",
    'items': "itemsValue"
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/quote', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "summary": {
        "subtotal": 72.2,
        "total": 88.81,
        "credit": 0,
        "discount": 0,
        "cost": 72.2,
        "recurring": [
            {
                "title": "Annually",
                "price": 81.18,
                "value": "a"
            },
            {
                "title": "Monthly",
                "price": 1.48,
                "value": "m"
            }
        ],
        "tax": [
            {
                "name": "VAT",
                "tax": 16.61,
                "value": 23
            }
        ]
    },
    "items": [
        {
            "product": {
                "id": 1080,
                "category_name": "SSL",
                "category_id": 69,
                "name": "GeoTrust QuickSSL Premium",
                "domain": "test.api",
                (...)
            },
            "domains": {
                (...)
            },
            "coupon": {},
            "index": 0,
            "valid": true,
            "info": [],
            "error": []
        },
        {
            "product": {
                "id": 840,
                "category_name": "Proxmox",
                "category_id": 19,
                "name": "VPS",
                "domain": "user.test.api",
                (...)
            },
            "domains": {
                (...)
            },
            "coupon": {},
            "index": 1,
            "valid": true,
            "info": [],
            "error": []
        },
        {
            "product": null,
            "domains": {
                "hosting.com": {
                    "id": 6,
                    "index": 0,
                    "category_id": "6",
                    "category_name": "Domains",
                    "name": "hosting.com",
                    "tld": ".com",
                    "period": 1,
                    "price": "12.00",
                    (...) 
                }
            },
            "coupon": {},
            "index": 2,
            "valid": true,
            "info": [],
            "error": []
        }
    ]
}

HTTP Request

POST /quote

Query Parameters

Parameter Type Description
pay_method int

Payment method ID

items array

list with items to order

Order new service

Create and submit new order for selected product.

To get available cycle and configuration options lookup product details using GET /order/@product_id

For whitelabel server use 'serverhost.name' for a domain parameter.

curl -X POST "https://billing.time4vps.com/api/order/@product_id" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"domain\": \"domainValue\",
    \"cycle\": \"cycleValue\",
    \"pay_method\": \"pay_methodValue\",
    \"custom\": \"customValue\",
    \"promocode\": \"promocodeValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/order/@product_id', [
    'json' => [
        "domain" => "domainValue",
        "cycle" => "cycleValue",
        "pay_method" => "pay_methodValue",
        "custom" => "customValue",
        "promocode" => "promocodeValue"
    ]
]);

echo $resp->getBody();
payload = {
    'domain': "domainValue",
    'cycle': "cycleValue",
    'pay_method': "pay_methodValue",
    'custom': "customValue",
    'promocode': "promocodeValue"
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/order/@product_id', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "order_num": 873340995,
    "invoice_id": "308979",
    "total": "9.99"
}

HTTP Request

POST /order/@product_id

Query Parameters

Parameter Type Description
product_id int

Product ID

domain string

Domain name, ie. example.com, may be optional

cycle string

Billing period symbol

pay_method int

Payment method ID

custom array

Additional options data available for sop products

promocode string

Promotion code

Get available VPS products

List all available virtual private server products

curl -X GET "https://billing.time4vps.com/api/category/available/vps" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/category/available/vps');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/category/available/vps', auth=auth)
print(req.json())
Example Response:
[
    {
        "id": 0,
        "name": "Linux",
        "description": "
  • CPU: ...<\/li><\/ul>", "prices": [ "aaa" ], "components": [ "aaa" ], "addons": [ "aaa" ], "upgrades": [ "70", "50", "34" ] } ]

HTTP Request

GET /category/available/vps

Order addon

Place order for addon to existing service

curl -X POST "https://billing.time4vps.com/api/service/@id/addon" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"addon_id\": \"addon_idValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/service/@id/addon', [
    'json' => [
        "addon_id" => "addon_idValue"
    ]
]);

echo $resp->getBody();
payload = {
    'addon_id': "addon_idValue"
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/service/@id/addon', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "id": 83
}

HTTP Request

POST /service/@id/addon

Query Parameters

Parameter Type Description
id int

Service id

addon_id int

Addon id

List all addons

List all ordered addons for existing service

curl -X GET "https://billing.time4vps.com/api/service/@id/addon" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/service/@id/addon');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/service/@id/addon', auth=auth)
print(req.json())
Example Response:
{
    "id": 4,
    "name": "Additional IP",
    "status": "Pending"
}

HTTP Request

GET /service/@id/addon

Query Parameters

Parameter Type Description
id int

Service id

DNS

List DNS

Returns a list of all DNS

curl -X GET "https://billing.time4vps.com/api/dns" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/dns');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/dns', auth=auth)
print(req.json())
Example Response:
{
    "service_ids": [
        "10",
        "20"
    ],
    "zones": [
        {
            "domain_id": "60",
            "name": "booble.com",
            "service_id": "10"
        },
        {
            "domain_id": "61",
            "name": "bgg12ooble.com",
            "service_id": "20"
        }
    ]
}

HTTP Request

GET /dns

Add DNS Zone

Creates a new DNS zone

curl -X POST "https://billing.time4vps.com/api/service/@service_id/dns" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"name\": \"nameValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/service/@service_id/dns', [
    'json' => [
        "name" => "nameValue"
    ]
]);

echo $resp->getBody();
payload = {
    'name': "nameValue"
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/service/@service_id/dns', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "info": [
        "Domain zone testzone.com was created successfully."
    ]
}

HTTP Request

POST /service/@service_id/dns

Query Parameters

Parameter Type Description
service_id int

Service ID

name string

Zone name (example: testzone.com)

Get DNS details

Returns details of the DNS zone

curl -X GET "https://billing.time4vps.com/api/service/@service_id/dns/@zone_id" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/service/@service_id/dns/@zone_id');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/service/@service_id/dns/@zone_id', auth=auth)
print(req.json())
Example Response:
{
    "service_id": 10,
 	"name": "booble.com",
 	"records": [
 		{
 			"id":"10",
 			"name":"qwerty",
 			"ttl":1800,
 			"priority":0,
 			"content":"127.0.0.1"
 			"type":"A"
 		},
 		{
 			"id":"11",
 			"name":"qwerty",
 			"ttl":1800,
 			"priority":0,
 			"content":"ns1.qwerty.com"
 			"type":"NS"
 		}
 	]
}

HTTP Request

GET /service/@service_id/dns/@zone_id

Query Parameters

Parameter Type Description
service_id int

Service ID

zone_id int

Zone ID

Remove DNS zone

Deletes the selected DNS zone

curl -X DELETE "https://billing.time4vps.com/api/service/@service_id/dns/@zone_id" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->delete('/service/@service_id/dns/@zone_id');

echo $resp->getBody();
auth=('username', 'password')

req = requests.delete('https://billing.time4vps.com/api/service/@service_id/dns/@zone_id', auth=auth)
print(req.json())
Example Response:
{
 	"info": [
 		"Domain zone testzone.com was deleted successfully."
 	]
}

HTTP Request

DELETE /service/@service_id/dns/@zone_id

Query Parameters

Parameter Type Description
service_id int

Service ID

zone_id int

Zone ID

Add DNS Record

Creates a new record in the DNS zone

curl -X POST "https://billing.time4vps.com/api/service/@service_id/dns/@zone_id/records" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"name\": \"nameValue\",
    \"ttl\": \"ttlValue\",
    \"priority\": \"priorityValue\",
    \"type\": \"typeValue\",
    \"content\": \"contentValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/service/@service_id/dns/@zone_id/records', [
    'json' => [
        "name" => "nameValue",
        "ttl" => "ttlValue",
        "priority" => "priorityValue",
        "type" => "typeValue",
        "content" => "contentValue"
    ]
]);

echo $resp->getBody();
payload = {
    'name': "nameValue",
    'ttl': "ttlValue",
    'priority': "priorityValue",
    'type': "typeValue",
    'content': "contentValue"
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/service/@service_id/dns/@zone_id/records', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "info": [
        "Domain zone testzone.com was created successfully."
    ]
}

HTTP Request

POST /service/@service_id/dns/@zone_id/records

Query Parameters

Parameter Type Description
service_id int

Service ID

zone_id int

Zone ID

name string

Record name

ttl int

Record ttl (example: 3600)

priority int

Priority of the record

type string

Record type (example: A)

content string

Contents of the record (example: 192.168.1.2)

Edit DNS Record

Edits the selected DNS zone record

curl -X PUT "https://billing.time4vps.com/api/service/@service_id/dns/@zone_id/records/@record_id" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"name\": \"nameValue\",
    \"ttl\": \"ttlValue\",
    \"priority\": \"priorityValue\",
    \"type\": \"typeValue\",
    \"content\": \"contentValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->put('/service/@service_id/dns/@zone_id/records/@record_id', [
    'json' => [
        "name" => "nameValue",
        "ttl" => "ttlValue",
        "priority" => "priorityValue",
        "type" => "typeValue",
        "content" => "contentValue"
    ]
]);

echo $resp->getBody();
payload = {
    'name': "nameValue",
    'ttl': "ttlValue",
    'priority': "priorityValue",
    'type': "typeValue",
    'content': "contentValue"
}
auth=('username', 'password')

req = requests.put('https://billing.time4vps.com/api/service/@service_id/dns/@zone_id/records/@record_id', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "record": {
        "id": "55",
        "type": "A",
        "ttl": "3600",
        "name": "test",
        "priority": 0,
        "content": "192.168.1.2"
    },
    "info": [
        "The record was updated successfully."
    ]
}

HTTP Request

PUT /service/@service_id/dns/@zone_id/records/@record_id

Query Parameters

Parameter Type Description
service_id int

Service ID

zone_id int

Zone ID

record_id int

Record ID

name string

Record name

ttl int

Record ttl (example: 3600)

priority int

Priority of the record

type string

Record type (example: A)

content string

Contents of the record (example: 192.168.1.2)

Remove DNS Record

Removes the selected DNS zone record

curl -X DELETE "https://billing.time4vps.com/api/service/@service_id/dns/@zone_id/records/@record_id" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->delete('/service/@service_id/dns/@zone_id/records/@record_id');

echo $resp->getBody();
auth=('username', 'password')

req = requests.delete('https://billing.time4vps.com/api/service/@service_id/dns/@zone_id/records/@record_id', auth=auth)
print(req.json())

HTTP Request

DELETE /service/@service_id/dns/@zone_id/records/@record_id

Query Parameters

Parameter Type Description
service_id int

Service ID

zone_id int

Zone ID

record_id int

Record ID

SSL Certificates

List SSL Certificates

List all ssl services under your account

curl -X GET "https://billing.time4vps.com/api/certificate" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/certificate');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/certificate', auth=auth)
print(req.json())
Example Response:
{
    "sslservices": [
        {
            "id": "300",
            "domain": "examplename.com",
            "total": "27.85",
            "status": "Pending",
            "billingcycle": "Annually",
            "next_due": "2017-12-30",
            "category": "GoGetSSL",
            "category_url": "gogetssl",
            "name": "Comodo InstantSSL",
            "cert_email": "admin@example.com",
            "cert_status": "",
            "cert_expires": "2017-12-30 13:43:12"
        }
    ]
}

HTTP Request

GET /certificate

Certificate details

Return details for certificate @id

curl -X GET "https://billing.time4vps.com/api/certificate/@id" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/certificate/@id');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/certificate/@id', auth=auth)
print(req.json())
Example Response:
{
    "service": {
        "id": "300",
        "date_created": "2016-12-30",
        "domain": "examplename.com",
        "firstpayment": "27.85",
        "total": "27.85",
        "billingcycle": "Annually",
        "next_due": "2017-12-30",
        "next_invoice": "2017-10-31",
        "status": "Pending",
        "label": "",
        "name": "Comodo InstantSSL",
        "cert_status": "",
        "cert_expires": "2017-12-30 13:43:12",
        "csr": "-----BEGIN CERTIFICATE REQUEST----- ...",
        "contacts": {
            "admin": {
                "FName": "Mary",
                "LName": "Sue",
                "City": "Santa Rosa",
                "State": "California",
                "PostalCode": "95401",
                "EmailAddress": "mary@example.com",
                "Country": "US",
                "Address1": "Pretty View Lane",
                "Address2": "3194",
                "Phone": 24123223,
                "OrgName": "n\/a",
                "PreFix": 1,
                "JobTitle": "n\/a"
            },
            "billing": {
                (...)
            },
            "tech": {
                (...)
            }
        },
        "organization": {
            "state": "Texas",
            "country": "US",
            "name": "My Org name",
            "unit": "Dev",
            "locality": "SanAntonio",
            "postalcode": "n\/a",
            "address2": "n\/a",
            "address1": "n\/a",
        },
        "cert_email": "admin@example.com",
        "software": "1"
    }
}

HTTP Request

GET /certificate/@id

Query Parameters

Parameter Type Description
id int

Service id

Download certificate

Return X.509 certificate data

curl -X GET "https://billing.time4vps.com/api/certificate/@id/crt" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/certificate/@id/crt');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/certificate/@id/crt', auth=auth)
print(req.json())

HTTP Request

GET /certificate/@id/crt

Query Parameters

Parameter Type Description
id int

Service id

List available certificates

Return a list with certificate available for purchase

curl -X GET "https://billing.time4vps.com/api/certificate/order" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/certificate/order');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/certificate/order', auth=auth)
print(req.json())
Example Response:
{
    "products": [
        {
            "id": "25",
            "name": "InstantSSL",
            "description": "",
            "periods": [
                {
                    "years": 1,
                    "price": 27.85,
                    "renew": 27.85
                },
                {
                    "years": 2,
                    "price": 48.75,
                    "renew": 48.75
                }
            ],
            "category": "SSL Certificates",
            "category_url": "sslcertificates"
        },
        (...)
    ]
}

HTTP Request

GET /certificate/order

List server software for certificates

Return a list with software IDs required or certificate

curl -X GET "https://billing.time4vps.com/api/certificate/order/@product_id/software" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/certificate/order/@product_id/software');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/certificate/order/@product_id/software', auth=auth)
print(req.json())
Example Response:
{
    "software": [
        {
            "id": 0,
            "name": "AOL"
        },
        {
            "id": 1,
            "name": "Apache-SSL (Ben-SSL, not Stronghold)"
        },
        (...)
    ]
}

HTTP Request

GET /certificate/order/@product_id/software

Query Parameters

Parameter Type Description
product_id int

Certificate product ID

Order new certificates

Create new order for a certificate

curl -X POST "https://billing.time4vps.com/api/certificate/order" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"product_id\": \"product_idValue\",
    \"csr\": \"csrValue\",
    \"years\": \"yearsValue\",
    \"pay_method\": \"pay_methodValue\",
    \"approver_email\": \"approver_emailValue\",
    \"admin\": \"adminValue\",
    \"tech\": \"techValue\",
    \"billing\": \"billingValue\",
    \"organization\": \"organizationValue\",
    \"software\": \"softwareValue\",
    \"data\": \"dataValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/certificate/order', [
    'json' => [
        "product_id" => "product_idValue",
        "csr" => "csrValue",
        "years" => "yearsValue",
        "pay_method" => "pay_methodValue",
        "approver_email" => "approver_emailValue",
        "admin" => "adminValue",
        "tech" => "techValue",
        "billing" => "billingValue",
        "organization" => "organizationValue",
        "software" => "softwareValue",
        "data" => "dataValue"
    ]
]);

echo $resp->getBody();
payload = {
    'product_id': "product_idValue",
    'csr': "csrValue",
    'years': "yearsValue",
    'pay_method': "pay_methodValue",
    'approver_email': "approver_emailValue",
    'admin': "adminValue",
    'tech': "techValue",
    'billing': "billingValue",
    'organization': "organizationValue",
    'software': "softwareValue",
    'data': "dataValue"
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/certificate/order', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "order_num": 873340994,
    "invoice_id": "308978",
    "total": "27.85"
}

HTTP Request

POST /certificate/order

Query Parameters

Parameter Type Description
product_id int

Certificate product ID

csr string

Domain name, ie. example.com

years int

Number of years

pay_method int

Payment method ID

approver_email string

Email addres used in domain validation

admin int

Admin contact ID

tech int

Tech contact ID

billing int

Billing contact ID

organization array

Organization details

software int

Server/Software ID

data array

Addditional data required for some products

Server Management

Server management API lets you retrieve your active server information and manage them. All management tasks are asynchronous. This means called method will only initiate task and will return result of task initiation. If task initiation was unsuccessfull, error message will be returned. Task id is used to query Task Result method to retrieve task result. For more info see documentation of Task Result method.

For example to reboot server, you must initiate task by calling POST /server/@id/reboot. If task initiated successfully, you'll receive task_id parameter, which must be provided in GET /server/@server_id/task/@task_id call, to receive task results.

You can run one task per server at a time.

List All Servers

Lists all active servers. Results includes only the brief information about the server.

Call is synchronous - result returned immediately.

curl -X GET "https://billing.time4vps.com/api/server" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/server');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/server', auth=auth)
print(req.json())
Example Response:
{
    "server_id": 110,
    "domain": "server.domain.name",
    "ip": "1.2.3.4",
    "date_created": "2017-01-31",
    "synch_date": "2017-01-31 15:35:00",
    "label": "Data Server",
    "type": "OpenVZ"
}

HTTP Request

GET /server

Server Details

Particular server details: configuration, installed OS, resource usage and etc.

Call is synchronous - result returned immediately.

curl -X GET "https://billing.time4vps.com/api/server/@server_id" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/server/@server_id');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/server/@server_id', auth=auth)
print(req.json())
Example Response:
{
    "synch_date": "2018-07-18T14:04:34+00:00",
    "package_id": 11,
    "domain": "server.domain.name",
    "label": "Data Server",
    "status": "Active",
    "cpu_frequency": 2333,
    "cpu_cores": 1,
    "ram_limit": 462,
    "ram_used": 56,
    "disk_limit": 12107,
    "disk_usage": 859,
    "bw_limit": 4938,
    "bw_in": 372,
    "bw_out": 336,
    "os": "ubuntu-16.04-x86_64",
    "ip": "123.123.123.123",
    "additional_ip": [
        "124.124.124.124",
        "125.125.125.125"
    ],
    "dns_servers": null,
    "components": [
        {
            "id": 123,
            "name": "Daily and weekly backups",
            "selected": false
        }
    ],
    "active_task": null,
    "last_tasks": null
}

HTTP Request

GET /server/@server_id

Query Parameters

Parameter Type Description
server_id int

Server ID

Task Result

Returns task result by given task ID, all dates are in ISO 8601 format:

Call is synchronous - result returned immediately.

curl -X GET "https://billing.time4vps.com/api/server/@server_id/task/@task_id" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/server/@server_id/task/@task_id');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/server/@server_id/task/@task_id', auth=auth)
print(req.json())
Example Response:
{
    "name": "server_reboot",
    "activated": "2018-05-31T10:25:24+00:00",
    "assigned": "2018-05-31T10:26:24+00:00",
    "completed": "2018-05-31T10:27:24+00:00",
    "results": "VM rebooted successfully"
}

HTTP Request

GET /server/@server_id/task/@task_id

Query Parameters

Parameter Type Description
server_id int

Server ID

task_id int

Task ID

Reboot

Call is asynchronous - task ID is returned.

curl -X POST "https://billing.time4vps.com/api/server/@server_id/reboot" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/server/@server_id/reboot');

echo $resp->getBody();
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/server/@server_id/reboot', auth=auth)
print(req.json())
Example Response:
{
    "task_id": 9367
}

HTTP Request

POST /server/@server_id/reboot

Query Parameters

Parameter Type Description
server_id int

Server ID

Reinstall

Available OS'es can be obtained with GET /server/@server_id/oses call.

All data in the server will be lost! All of backups of your server will be deleted from our storages!

Call is asynchronous - task ID is returned.

curl -X POST "https://billing.time4vps.com/api/server/@server_id/reinstall" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"os\": \"osValue\",
    \"script\": \"scriptValue\",
    \"ssh_key\": \"ssh_keyValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/server/@server_id/reinstall', [
    'json' => [
        "os" => "osValue",
        "script" => "scriptValue",
        "ssh_key" => "ssh_keyValue"
    ]
]);

echo $resp->getBody();
payload = {
    'os': "osValue",
    'script': "scriptValue",
    'ssh_key': "ssh_keyValue"
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/server/@server_id/reinstall', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "task_id": 100390
}

HTTP Request

POST /server/@server_id/reinstall

Query Parameters

Parameter Type Description
server_id int

Server ID

os string

Operating System (required)

script int

Init Script ID (optional)

ssh_key string

SSH Key (optional)

Reset Password

Resets privileged user password

Call is asynchronous - task ID is returned.

curl -X POST "https://billing.time4vps.com/api/server/@server_id/resetpassword" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/server/@server_id/resetpassword');

echo $resp->getBody();
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/server/@server_id/resetpassword', auth=auth)
print(req.json())
Example Response:
{
    "task_id": 42425
}

HTTP Request

POST /server/@server_id/resetpassword

Query Parameters

Parameter Type Description
server_id int

Server ID

Launch Web Console

Web Console should be used for emergency access only!

Call is asynchronous - task ID is returned.

curl -X POST "https://billing.time4vps.com/api/server/@server_id/webconsole" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"timeout\": \"timeoutValue\",
    \"whitelabel\": \"whitelabelValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/server/@server_id/webconsole', [
    'json' => [
        "timeout" => "timeoutValue",
        "whitelabel" => "whitelabelValue"
    ]
]);

echo $resp->getBody();
payload = {
    'timeout': "timeoutValue",
    'whitelabel': "whitelabelValue"
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/server/@server_id/webconsole', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "task_id": 70346
}

HTTP Request

POST /server/@server_id/webconsole

Query Parameters

Parameter Type Description
server_id int

Server ID

timeout string

Timeout in hours (required, valid values: '1h', '3h', '6h', '12h', '24h')

whitelabel bool

Should result return white-labeled VNC host (required, valid values: 'true', 'false')

Change Hostname

Changes the hostname of your server. Hostname must pointed to your server main IP address.

Note: Full DNS record propagation can take up to 48 hours.

Call is asynchronous - task ID is returned.

curl -X POST "https://billing.time4vps.com/api/server/@server_id/rename" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"hostname\": \"hostnameValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/server/@server_id/rename', [
    'json' => [
        "hostname" => "hostnameValue"
    ]
]);

echo $resp->getBody();
payload = {
    'hostname': "hostnameValue"
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/server/@server_id/rename', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "task_id": 67226
}

HTTP Request

POST /server/@server_id/rename

Query Parameters

Parameter Type Description
server_id int

Server ID

hostname string

New hostname (required, must be pointed to server IP)

Change PTR Record

Changes PTR record for the additional IP (if server has more than one IPv4 address).

Call is asynchronous - task ID is returned.

curl -X POST "https://billing.time4vps.com/api/server/@server_id/changeptr" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"ip_address\": \"ip_addressValue\",
    \"hostname\": \"hostnameValue\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/server/@server_id/changeptr', [
    'json' => [
        "ip_address" => "ip_addressValue",
        "hostname" => "hostnameValue"
    ]
]);

echo $resp->getBody();
payload = {
    'ip_address': "ip_addressValue",
    'hostname': "hostnameValue"
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/server/@server_id/changeptr', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "task_id": 71901
}

HTTP Request

POST /server/@server_id/changeptr

Query Parameters

Parameter Type Description
server_id int

Server ID

ip_address string

IP Address to change PTR (required)

hostname string

Hostname (required)

Flush IPTables / Firewall

Restores to defaults your server`s firewall settings.

Call is asynchronous - task ID is returned.

curl -X POST "https://billing.time4vps.com/api/server/@server_id/flushfirewall" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/server/@server_id/flushfirewall');

echo $resp->getBody();
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/server/@server_id/flushfirewall', auth=auth)
print(req.json())
Example Response:
{
    "task_id": 103267
}

HTTP Request

POST /server/@server_id/flushfirewall

Query Parameters

Parameter Type Description
server_id int

Server ID

Change DNS Servers

Changes the DNS servers for your server.

At least 1 DNS servers muste be provided.

Call is asynchronous - task ID is returned.

curl -X POST "https://billing.time4vps.com/api/server/@server_id/changedns" \
   -u user:pass \
   -H "Content-Type: application/json" \
   -d "{
    \"ns1\": \"ns1Value\",
    \"ns2\": \"ns2Value\",
    \"ns3\": \"ns3Value\",
    \"ns4\": \"ns4Value\"
}"
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/server/@server_id/changedns', [
    'json' => [
        "ns1" => "ns1Value",
        "ns2" => "ns2Value",
        "ns3" => "ns3Value",
        "ns4" => "ns4Value"
    ]
]);

echo $resp->getBody();
payload = {
    'ns1': "ns1Value",
    'ns2': "ns2Value",
    'ns3': "ns3Value",
    'ns4': "ns4Value"
}
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/server/@server_id/changedns', json=payload, auth=auth)
print(req.json())
Example Response:
{
    "task_id": 105277
}

HTTP Request

POST /server/@server_id/changedns

Query Parameters

Parameter Type Description
server_id int

Server ID

ns1 string

Nameserver 1 IP address (required)

ns2 string

Nameserver 2 IP address (recommended)

ns3 string

Nameserver 3 IP address (optional)

ns4 string

Nameserver 4 IP address (optional)

Available OS List

List of available OS templates for a server.

Call is synchronous - result returned immediately.

curl -X GET "https://billing.time4vps.com/api/server/@server_id/oses" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/server/@server_id/oses');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/server/@server_id/oses', auth=auth)
print(req.json())
Example Response:
[
    {
        "os": "centos-7-x86_64",
        "title": "Centos 7"
    }
]

HTTP Request

GET /server/@server_id/oses

Query Parameters

Parameter Type Description
server_id int

Server ID

Get additional IPs

List of additional IPs

Call is synchronous - result returned immediately.

curl -X GET "https://billing.time4vps.com/api/server/@server_id/ips" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/server/@server_id/ips');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/server/@server_id/ips', auth=auth)
print(req.json())
Example Response:
[
    {
        "ips": [
            "123.123.123.123",
            "124.124.124.124"
        ]
    }
]

HTTP Request

GET /server/@server_id/ips

Query Parameters

Parameter Type Description
server_id int

Server ID

Get Usage Graphs

Image link is valid only for short period of time, around 5-10 minutes.

Images shows the graphics of the main resource usage (Daily, Weekly, Monthly..)

Call is synchronous - result returned immediately.

curl -X GET "https://billing.time4vps.com/api/server/@server_id/graphs/@width" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/server/@server_id/graphs/@width');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/server/@server_id/graphs/@width', auth=auth)
print(req.json())
Example Response:
[
    {
        "type": "cpu_daily",
        "url": "\/\/...\/graph.php?...VrBFovT0mOE0OZFwNrUf"
    }
]

HTTP Request

GET /server/@server_id/graphs/@width

Query Parameters

Parameter Type Description
server_id int

Server ID

width int

Image Width (min 200px, max 768px)

Get Usage History

Displays the bandwidth usage of a server.

Call is synchronous - result returned immediately.

curl -X GET "https://billing.time4vps.com/api/server/@server_id/history" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/server/@server_id/history');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/server/@server_id/history', auth=auth)
print(req.json())
Example Response:
[
    {
        "year": 0,
        "month": 0,
        "bw_in": 51952,
        "bw_out": 10975,
        "quota_usage": 55899,
        "quota_limit": 96406,
        "inode_usage": 64717,
        "inode_limit": 22861
    }
]

HTTP Request

GET /server/@server_id/history

Query Parameters

Parameter Type Description
server_id int

Server ID

Init Script Management

Get available init scripts

Script content is not included

curl -X GET "https://billing.time4vps.com/api/scripts" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/scripts');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/scripts', auth=auth)
print(req.json())
Example Response:
{
    "id": 403,
    "name": "My Init Script",
    "syntax": "python"
}

HTTP Request

GET /scripts

Get init script by ID

Script content is included

curl -X GET "https://billing.time4vps.com/api/scripts/@id" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/scripts/@id');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/scripts/@id', auth=auth)
print(req.json())
Example Response:
{
    "id": 504,
    "name": "My Init Script",
    "syntax": "python",
    "content": "import os..."
}

HTTP Request

GET /scripts/@id

Query Parameters

Parameter Type Description
id int

Init Script ID

VPN Management

List VPN Servers

Returns all available (including servers in maintenance) VPN servers.

curl -X GET "https://billing.time4vps.com/api/vpn/servers" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/vpn/servers');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/vpn/servers', auth=auth)
print(req.json())
Example Response:
{
    "id": 13,
    "name": "LT#1",
    "city": "Vilnius",
    "region": "Europe",
    "ip": "1.2.3.4",
    "lat": 56,
    "lng": 24,
    "load": 44,
    "available": true
}

HTTP Request

GET /vpn/servers

List VPN Clients

curl -X GET "https://billing.time4vps.com/api/vpn/clients" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/vpn/clients');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/vpn/clients', auth=auth)
print(req.json())
Example Response:
{
    "name": "AndroidVPN",
    "version": "1.0.6",
    "url": "https:\/\/downloads.time4vps.com\/clients\/..."
}

HTTP Request

GET /vpn/clients

VPN Config template

Returns base64-encoded config for prefered server.
Templates available:

curl -X GET "https://billing.time4vps.com/api/vpn/servers/@id/config/@template" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/vpn/servers/@id/config/@template');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/vpn/servers/@id/config/@template', auth=auth)
print(req.json())
Example Response:
{
    "template": "m5hdGVPbkZhaWw9MQ=="
}

HTTP Request

GET /vpn/servers/@id/config/@template

Query Parameters

Parameter Type Description
id int

Server ID

template string

Template name

VPN login details

Returns oldest VPN plan login details, such as username, password, pre-shared key.

curl -X  "https://billing.time4vps.com/api/vpn/logindetails" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->('/vpn/logindetails');

echo $resp->getBody();
auth=('username', 'password')

req = requests.('https://billing.time4vps.com/api/vpn/logindetails', auth=auth)
print(req.json())

HTTP Request

/vpn/logindetails

Login details

Returns login details, such as username, password, pre-shared key.

curl -X GET "https://billing.time4vps.com/api/vpn/@id/details" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/vpn/@id/details');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/vpn/@id/details', auth=auth)
print(req.json())
Example Response:
{
    "username": "foo12",
    "password": "qerty982",
    "shared_key": "my-super-secret-key"
}

HTTP Request

GET /vpn/@id/details

Query Parameters

Parameter Type Description
id int

Service ID

Reset Password

Resets VPN user password

curl -X POST "https://billing.time4vps.com/api/vpn/@id/resetpassword" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->post('/vpn/@id/resetpassword');

echo $resp->getBody();
auth=('username', 'password')

req = requests.post('https://billing.time4vps.com/api/vpn/@id/resetpassword', auth=auth)
print(req.json())
Example Response:
{
    "password": "uBWQ8Hf$j&$*FA6p"
}

HTTP Request

POST /vpn/@id/resetpassword

Query Parameters

Parameter Type Description
id int

Service ID

Get Usage History

Displays the bandwidth usage of a VPN service.

curl -X GET "https://billing.time4vps.com/api/vpn/@id/history" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/vpn/@id/history');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/vpn/@id/history', auth=auth)
print(req.json())
Example Response:
[
    {
        "period": "2020-04-10",
        "received": 37111240,
        "sent": 3781959,
        "quota": 507145582
    }
]

HTTP Request

GET /vpn/@id/history

Query Parameters

Parameter Type Description
id int

Service ID

Get active VPN sessions

curl -X GET "https://billing.time4vps.com/api/vpn/@id/sessions" \
   -u user:pass 
use GuzzleHttp\Client;

$client = new Client([
    'base_uri' => 'https://billing.time4vps.com/api',
    'auth' => ['username', 'password']
]);


$resp = $client->get('/vpn/@id/sessions');

echo $resp->getBody();
auth=('username', 'password')

req = requests.get('https://billing.time4vps.com/api/vpn/@id/sessions', auth=auth)
print(req.json())
Example Response:
[
    {
        "remote_ip": "1.2.3.4",
        "local_ip": "2.3.4.5",
        "received": 25131568,
        "sent": 3195368,
        "duration": 155,
        "doomed": true,
        "type": "OpenVPN",
        "serverID": 3,
        "serverName": "DE#1",
        "serverCity": "Frankfurt",
        "serverRegion": "Europe"
    }
]

HTTP Request

GET /vpn/@id/sessions

Query Parameters

Parameter Type Description
id int

Service ID