Gigahost API documentation for clients. Integrate servers and services directly into your own system or panel.
Current API version: 0
Base URL: https://api.gigahost.no/api/v0
To communicate with our API you need to authenticate. To do this, use the /authenticate endpoint.
Add the received token to your header: Authorization: Bearer {token}
Its expected that all PUT/POST requests are json encoded.
Parameters
username (string)
password (string)
Optional parameters
code (numeric) - If you have 2FA enabled
Example return data
{
"success":true,
"meta":
{
"status": 200,
"status_message": "200 OK"
},
"data":
{
"token":"xxxxxxxx",
"token_expire": "unixtimestamp",
"customer_id": "xxxxxx"
}
}
As an alternative to Bearer tokens, you can authenticate using HTTP Basic Auth. This is required for the DynDNS endpoint and supported across all other endpoints.
Send your credentials in the Authorization header:
Authorization: Basic base64(username:password)
Important: The username is your email address. If it contains special characters (e.g. + or @), you must URL-encode it when passing it in a URL.
Example: [email protected] becomes user%2Btag%40example.com
Example with curl:
# Using --user (curl handles encoding):
curl --user "[email protected]:yourpassword" https://api.gigahost.no/api/v0/servers
# Using inline URL credentials (URL-encode the username):
curl "https://user%40example.com:[email protected]/api/v0/servers"
Parameters
{none}
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":{
"asn":[
{
"id":"1",
"asn":"212345",
"asn_name":"Example Network",
"asn_country":"NO",
"irr_v4":"AS-EXAMPLE",
"irr_v6":"AS-EXAMPLE",
"irr_updated":"1700000000",
"status":"active",
"rejected_reason":""
}
],
"prefix_lists":[
{
"id":"1",
"asn_id":"1",
"prefix":"192.0.2.0/24",
"prefix_type":"ipv4",
"status":"active",
"your_asn":"212345",
"asn_country":"NO"
}
],
"sessions":[
{
"id":"1",
"asn_id":"1",
"cust_id":"1111",
"router_id":"1",
"srv_id":"3523",
"ip_id":"7795",
"ip_type":"ipv4",
"defaultroute":"1",
"status":"active",
"neighbor_ipv4":"185.125.168.1",
"neighbor_ipv6":"2a03:94e0::1",
"multihop":"0",
"router_asn":"39029",
"your_asn":"212345",
"asn_country":"NO",
"ip_address":"185.181.63.24"
}
]
}
}
Maximum 3 ASNs per customer. Requires verification before activation. An email with verification instructions will be sent after submission.
Required parameters
asn (numeric or string - ASN number, e.g. "212345" or "AS212345")
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"ASN and LOA has been submitted for review."
}
}
Error responses
// Invalid ASN
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"ASN is not valid"
}
}
// Maximum ASNs reached
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"Only three ASNs can be configured at a time. Contact support to remove an ASN first."
}
}
// ASN already exists
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"The ASN already exists in the database."
}
}
ASN must be in 'active' status. Sessions are created on available routers in the server's datacenter. Both IPv4 and IPv6 sessions can be created simultaneously.
Required parameters
asn_id (numeric - inurl - ASN database ID, not the ASN number)
redundant (numeric - 0 or 1 for redundant sessions)
defaultroute (numeric - 0 or 1 to receive default route)
Optional parameters
ip_id_v4 (numeric - IP ID for IPv4 session)
ip_id_v6 (numeric - IP ID for IPv6 session)
At least one of ip_id_v4 or ip_id_v6 must be provided
Example request body
{
"redundant":1,
"defaultroute":1,
"ip_id_v4":"7795",
"ip_id_v6":"7796"
}
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"BGP sessions has been created."
}
}
Error responses
// Session already exists
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"IPv4 session exists already."
}
}
// No routers available
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"Unable to find available BGP routers."
}
}
Session must be in 'active' status and belong to the customer. Actual deletion is processed asynchronously.
Parameters
session_id (numeric - inurl - BGP session ID)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"BGP sessions have been marked for deletion."
}
}
Parameters
org_number (numeric - 9 digits - inurl)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"Company lookup successful"
},
"data":{
"company_name":"Example AS",
"address":"Exampleveien 1",
"zip_code":"0123",
"city":"Oslo"
}
}
Parameters
domain (string - inurl, e.g. example.no)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"Domain availability checked"
},
"data":{
"domain":"example.no",
"available":true,
"reason":""
}
}
Parameters
{none}
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":[
{
"zone_id":"123",
"cust_id":"1111",
"zone_name":"example.no",
"zone_name_display":"example.no",
"zone_type":"NATIVE",
"zone_active":"1",
"zone_protected":"1",
"zone_is_registered":"1",
"domain_registrar":"norid",
"domain_status":"active",
"domain_expiry_date":"2025-12-31 23:59:59",
"domain_auto_renew":"1",
"external_dns":"0",
"record_count":5,
"zone_updated":1700000000
}
]
}
Parameters
zone_id (numeric - inurl)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":[
{
"record_id":"abc123",
"record_name":"@",
"record_type":"A",
"record_value":"185.125.168.166",
"record_ttl":3600,
"record_priority":null
},
{
"record_id":"def456",
"record_name":"www",
"record_type":"A",
"record_value":"185.125.168.166",
"record_ttl":3600,
"record_priority":null
},
{
"record_id":"ghi789",
"record_name":"@",
"record_type":"MX",
"record_value":"mail.example.no",
"record_ttl":3600,
"record_priority":10
}
]
}
Only available for registered .no domains
Parameters
zone_id (numeric - inurl)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":{
"contact_id":"ABC123P",
"name":"Ola Nordmann",
"organization":"Example AS",
"email":"[email protected]",
"address":"Exampleveien 1",
"city":"Oslo",
"postal_code":"NO-0123",
"country_code":"NO",
"identity":null,
"identity_type":null,
"type":"organization"
}
}
Required parameters
domain_name (string - domain to register)
registrant_type (string - "organization" or "person")
email (string - valid email address)
applicant_name (string - name of applicant, max 255 characters)
zip_code (string - postal code)
city (string - city name)
For organization registrants:
org_number (string - 9 digit organization number)
company_name (string - company name, max 255 characters)
For person registrants:
pid (string - format: N.PRI.12345678)
first_name (string)
last_name (string)
Optional parameters
use_gigahost_ns (boolean - default: true)
nameservers (array - required if use_gigahost_ns is false, minimum 2)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"Domain registered successfully! You will receive a confirmation email shortly."
},
"data":{
"zone_id":"123",
"domain_name":"example.no",
"expires_at":"2025-11-17",
"status":"active"
}
}
Supports both JSON and multipart/form-data (for zone file import)
Required parameters (JSON)
zone_name (string - domain name)
Optional parameters (JSON)
zone_type (string - "NATIVE", "MASTER", or "SLAVE", default: "NATIVE")
create_default_records (boolean - default: false)
transfer_domain (boolean - initiate .no domain transfer, default: false)
auth_code (string - required if transfer_domain is true)
use_existing_ns (boolean - keep existing nameservers, default: false)
For zone file import (multipart/form-data):
zone_name (string)
zone_file (file - BIND zone file, max 2MB)
Example return data
{
"meta":{
"status":201,
"status_message":"201 Created",
"message":"Zone created successfully."
},
"data":{
"zone_id":"123"
}
}
Required parameters
zone_id (numeric - inurl)
record_value (string - record content)
Optional parameters
record_name (string - default: "@")
record_type (string - A, AAAA, CNAME, MX, TXT, NS, etc., default: "A")
record_ttl (numeric - default: 3600)
record_priority (numeric - required for MX records)
Example return data
{
"meta":{
"status":201,
"status_message":"201 Created",
"message":"Record created successfully."
}
}
Validates IPv4 addresses for A records, IPv6 for AAAA records, and requires priority for MX records
Required parameters
zone_id (numeric - inurl)
record_id (string - inurl)
record_value (string - record content)
Optional parameters
record_name (string - default: "@")
record_type (string - default: "A")
record_ttl (numeric - default: 3600)
record_priority (numeric - for MX records)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"Record updated successfully."
}
}
Requires Norid Applicant Declaration acceptance. Creates new order and extends domain by 1 year.
Required parameters
zone_id (numeric - inurl)
registrant_type (string - "organization" or "person")
email (string - valid email address)
applicant_name (string - name of applicant, max 255 characters)
zip_code (string - postal code)
city (string - city name)
agree_to_terms (boolean - must be true)
For organization registrants:
org_number (string - 9 digit organization number)
company_name (string - company name, max 255 characters)
For person registrants:
pid (string - format: N.PRI.XXXXXXXX)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"Registrant changed successfully."
}
}
Only available for registered .no domains
Required parameters
zone_id (numeric - inurl)
auto_renew (numeric - 0 or 1)
Example request body
{
"auto_renew":1
}
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"Auto-renewal updated successfully."
}
}
Only available for protected zones (registered domains). Verifies nameservers are authoritative before applying changes. Automatically updates external_dns flag.
Required parameters
zone_id (numeric - inurl)
nameservers (array - minimum 2 nameservers)
Example request body
{
"nameservers":[
"ns1.example.com",
"ns2.example.com"
]
}
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"Nameservers updated successfully."
}
}
Protected zones (registered domains) cannot be deleted
Parameters
zone_id (numeric - inurl)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"Zone deleted successfully."
}
}
Required parameters
zone_id (numeric - inurl)
record_id (string - inurl)
name (string - query parameter)
type (string - query parameter)
Example: DELETE /dns/zones/123/records/abc123?name=www&type=A
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"Record deleted successfully."
}
}
For domains using Gigahost nameservers, returns DS records from Gigahost DNS. For externally hosted domains, returns configuration instructions.
Parameters
zone_id (numeric - inurl)
Example return data (Gigahost nameservers)
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":{
"ds_records":"12345 13 2 1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890AB"
}
}
Error responses
// DNSSEC not enabled
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"DNSSEC is not enabled for this domain."
}
}
Only available for domains using external nameservers
Parameters
zone_id (numeric - inurl)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":{
"ds_records":[
{
"keyTag":12345,
"alg":13,
"digestType":2,
"digest":"1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890AB"
}
]
}
}
Error responses
// Not externally hosted
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"This endpoint is only for externally hosted domains."
}
}
Required parameters
prefix (string - IP prefix, e.g. "185.181.63" or "2a03:94e0::")
ip_version (string - "ipv4" or "ipv6")
zone_name (string - PTR zone name, e.g. "63.181.185.in-addr.arpa" or "0.e.4.9.3.0.a.2.ip6.arpa")
Example request body (IPv4)
{
"prefix":"185.181.63",
"ip_version":"ipv4",
"zone_name":"63.181.185.in-addr.arpa"
}
Example request body (IPv6)
{
"prefix":"2a03:94e0::",
"ip_version":"ipv6",
"zone_name":"0.e.4.9.3.0.a.2.ip6.arpa"
}
Example return data
{
"meta":{
"status":201,
"status_message":"201 Created",
"message":"PTR zone created successfully."
},
"data":{
"zone_id":"456"
}
}
Error responses
// Invalid zone name format
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"Invalid IPv4 PTR zone name format."
}
}
// Zone already exists
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"PTR zone already exists."
}
}
Only for domains using external nameservers. Replaces any existing DS records.
Required parameters
zone_id (numeric - inurl)
ds_records (array - array of DS record objects)
DS record object fields:
keyTag (numeric - 0-65535)
alg (numeric - algorithm: 5, 7, 8, 10, 13, 14, 15, or 16)
digestType (numeric - 1 for SHA-1, 2 for SHA-256, 4 for SHA-384)
digest (string - hexadecimal digest)
Example request body
{
"ds_records":[
{
"keyTag":12345,
"alg":13,
"digestType":2,
"digest":"1234567890ABCDEF1234567890ABCDEF1234567890ABCDEF1234567890AB"
}
]
}
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"DS records submitted to Norid successfully"
}
}
Error responses
// Invalid key tag
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"Invalid Key Tag: must be between 0-65535"
}
}
// Invalid algorithm
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"Invalid algorithm: 99"
}
}
// Not externally hosted
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"This endpoint is only for externally hosted domains."
}
}
For domains using Gigahost nameservers, automatically creates cryptokeys and submits DS records to Norid. For externally hosted domains, enables the DNSSEC flag (DS records must be submitted separately).
Required parameters
zone_id (numeric - inurl)
enable (numeric - 0 to disable, 1 to enable)
Example request body
{
"enable":1
}
Example return data (Gigahost nameservers)
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"DNSSEC enabled successfully and DS records submitted to registry"
}
}
Example return data (external nameservers)
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"DNSSEC flag enabled. Please configure DNSSEC on your nameservers."
}
}
Example return data (disable)
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"DNSSEC disabled successfully"
}
}
Error responses
// Not a registered domain
{
"meta":{
"status":403,
"status_message":"403 Forbidden",
"message":"DNSSEC can only be enabled for registered domains."
}
}
Not available for externally hosted domains
Parameters
zone_id (numeric - inurl)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":[
{
"domain":"example.no",
"source":"@",
"target_url":"https://www.target-site.no",
"enabled":1,
"created_at":"2024-01-15 12:00:00"
},
{
"domain":"blog.example.no",
"source":"blog",
"target_url":"https://blog.target-site.no",
"enabled":1,
"created_at":"2024-02-20 14:30:00"
}
]
}
Error responses
// Externally hosted domain
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"Redirects are not available for externally hosted domains."
}
}
Automatically creates the necessary A records pointing to the redirect server. Checks for conflicting DNS records before creating the redirect. For root (@) redirects, a www redirect is also configured.
Required parameters
zone_id (numeric - inurl)
target_url (string - valid URL, e.g. "https://example.com")
Optional parameters
source (string - subdomain or "@" for root, default: "@")
Example request body
{
"source":"@",
"target_url":"https://www.target-site.no"
}
Example return data
{
"meta":{
"status":201,
"status_message":"201 Created",
"message":"Redirect created successfully."
},
"data":{
"domain":"example.no",
"source":"@",
"target_url":"https://www.target-site.no"
}
}
Error responses
// DNS conflict
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"DNS conflict: '@' has an existing A record (185.125.168.166). Please remove it before adding a redirect."
}
}
// Redirect already exists
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"A redirect already exists for example.no. Delete it first or update instead."
}
}
// External DNS
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"This domain uses external nameservers. Redirects cannot be configured."
}
}
// Invalid URL
{
"meta":{
"status":400,
"status_message":"400 Bad Request",
"message":"Invalid target URL format. Must be a valid URL (e.g. https://example.com)."
}
}
Required parameters
zone_id (numeric - inurl)
source (string - subdomain or "@" for root)
target_url (string - valid URL)
Example request body
{
"source":"@",
"target_url":"https://www.new-target.no"
}
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"Redirect updated successfully."
}
}
For root (@) redirects, the www A record pointing to the redirect server is also removed.
Required parameters
zone_id (numeric - inurl)
source (string - query parameter, subdomain or "@" for root)
Example: DELETE /dns/zones/123/redirect?source=@
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"Redirect deleted successfully."
}
}
Supports optional WHOIS email protection via whoisbeskyttelse.no forwarding. When protection is enabled, a random alias is generated and forwarding is set up to the real email address.
Required parameters
zone_id (numeric - inurl)
email (string - valid email address)
Optional parameters
enable_protection (boolean - enable WHOIS email protection, default: false)
Example request body (without protection)
{
"email":"[email protected]",
"enable_protection":false
}
Example request body (with protection)
{
"email":"[email protected]",
"enable_protection":true
}
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"Email updated successfully"
},
"data":{
"protected":true,
"email":"[email protected]"
}
}
Error responses
// Not a registered domain
{
"meta":{
"status":403,
"status_message":"403 Forbidden",
"message":"Email can only be updated for registered domains."
}
}
The hostname must belong to a DNS zone on your account. The zone is resolved automatically from the hostname — no zone ID is needed. Records are set with a 60-second TTL for fast propagation.
Authentication: HTTP Basic Auth (see /authenticate above).
Required parameters
hostname (string - query parameter. FQDN to update, e.g. home.example.no. Comma-separated for multiple.)
Optional parameters
myip (string - query parameter. IPv4 address to set. If omitted, the client's source IP is used.)
myipv6 (string - query parameter. IPv6 address to set.)
Response codes (plain text, not JSON)
good 1.2.3.4 # IP updated successfully
nochg 1.2.3.4 # No change, IP already correct
nohost # Hostname not found on your account
notfqdn # Invalid or missing hostname
badauth # Authentication failed
dnserr # DNS server error
badagent # Invalid IP address provided
When updating multiple hostnames, one response code is returned per line.
Examples with curl
# Update with a specific IP
curl --user "[email protected]:password" \
"https://api.gigahost.no/api/v0/dns/dyndns?hostname=home.example.no&myip=1.2.3.4"
# Let the server detect your IP automatically
curl --user "[email protected]:password" \
"https://api.gigahost.no/api/v0/dns/dyndns?hostname=home.example.no"
# Update with IPv6
curl --user "[email protected]:password" \
"https://api.gigahost.no/api/v0/dns/dyndns?hostname=home.example.no&myipv6=2a03:94e0::1234"
# Update both IPv4 and IPv6
curl --user "[email protected]:password" \
"https://api.gigahost.no/api/v0/dns/dyndns?hostname=home.example.no&myip=1.2.3.4&myipv6=2a03:94e0::1234"
# Update multiple hostnames at once
curl --user "[email protected]:password" \
"https://api.gigahost.no/api/v0/dns/dyndns?hostname=home.example.no,vpn.example.no&myip=1.2.3.4"
ddclient (/etc/ddclient.conf)
protocol=dyndns2
ssl=yes
server=api.gigahost.no/api/v0/dns
[email protected]
password='your-password'
home.example.no
Synology NAS
Go to Control Panel > External Access > DDNS. Select «Customized» provider and configure:
Query URL: https://api.gigahost.no/api/v0/dns/dyndns?hostname=__HOSTNAME__&myip=__MYIP__
Username: your Gigahost email (e.g. [email protected])
Password: your Gigahost password
Hostname: home.example.no
QNAP NAS
Go to Network & Virtual Switch > DDNS. Select «Customized» and configure:
URL: https://api.gigahost.no/api/v0/dns/dyndns?hostname=%HOST%&myip=%IP%
Username: your Gigahost email
Password: your Gigahost password
Hostname: home.example.no
Generic router
Select «Custom» or «User-defined» as the Dynamic DNS provider and enter:
Server / Update URL: api.gigahost.no
Path: /api/v0/dns/dyndns
Protocol: dyndns2
Username: your Gigahost email
Password: your Gigahost password
Hostname: home.example.no
OPNsense / pfSense
Go to Services > Dynamic DNS and add a new entry:
Service type: Custom
Update URL: https://api.gigahost.no/api/v0/dns/dyndns?hostname=%h&myip=%i
Username: your Gigahost email
Password: your Gigahost password
Hostname: home.example.no
MiNOKoTik RouterOS
/ip cloud set ddns-enabled=no
/system script add name=dyndns source={
/tool fetch url="https://api.gigahost.no/api/v0/dns/dyndns\
?hostname=home.example.no&myip=$ipaddr" \
user="[email protected]" password="your-password" \
mode=https dst-path=dyndns.txt
}
/system scheduler add name=dyndns-update interval=5m on-event=dyndns
This plugin automates the process of completing a dns-01 challenge by creating, and subsequently removing, TXT records using the Gigahost API. It supports single-domain, multi-domain, and wildcard certificates.
Installation: pypi.org/project/certbot-dns-gigahost
pip install certbot-dns-gigahost
Create a credentials file (e.g. ~/.secrets/certbot/gigahost.ini) containing your Gigahost account credentials:
[email protected]
dns_gigahost_password=yourpassword
Important: Protect your credentials file with restricted permissions:
chmod 600 ~/.secrets/certbot/gigahost.ini
--dns-gigahost-credentials (required) — Path to the credentials INI file.
--dns-gigahost-propagation-seconds (optional) — Seconds to wait for DNS propagation. Default: 120.
certbot certonly \
--authenticator dns-gigahost \
--dns-gigahost-credentials ~/.secrets/certbot/gigahost.ini \
-d example.com \
-d www.example.com
certbot certonly \
--authenticator dns-gigahost \
--dns-gigahost-credentials ~/.secrets/certbot/gigahost.ini \
-d example.com \
-d "*.example.com"
docker run --rm \
-v /etc/letsencrypt:/etc/letsencrypt \
-v /var/lib/letsencrypt:/var/lib/letsencrypt \
certbot-dns-gigahost \
certonly \
--authenticator dns-gigahost \
--dns-gigahost-credentials /etc/letsencrypt/gigahost.ini \
--agree-tos \
--email "[email protected]" \
-d example.com
1. The plugin authenticates with the Gigahost API using HTTP Basic Auth.
2. It looks up the DNS zone for the domain being validated.
3. It creates a _acme-challenge TXT record with the validation token.
4. After verification, the plugin removes the TXT record automatically.
Renewal is automatic — no additional configuration is needed after the initial certificate issuance. Test with:
certbot renew --dry-run
Parameters
{none}
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":[
{
"srv_id":"111",
"srv_tag":"0",
"product_id":"0",
"cust_id":"111",
"node_id":"0",
"pmx_id":"111",
"os_id":"111",
"nic_id":"111",
"iso_id":"0",
"bwpool_id":"0",
"srv_name":"srv111.gigahost.no",
"srv_status":true,
"srv_status_rescue":false,
"srv_status_install":false,
"srv_status_snapshot":false,
"srv_status_mount":false,
"srv_status_method":"icmp",
"srv_status_reboot":"0",
"srv_label":"srv111.gigahost.no",
"srv_manufacturer":"",
"srv_model":"",
"srv_motherboard":"",
"srv_date_created":"1530609706",
"srv_vps_type":"kvm",
"srv_hostname":"srv111.gigahost.no",
"srv_bw":"1000",
"srv_feature_reinstall":true,
"srv_feature_mgmt":true,
"srv_feature_preconf":"0",
"srv_mgmt_type":"kvm",
"srv_formfactor":"",
"srv_cores":"2",
"srv_ram":"2",
"srv_ram_type":"",
"srv_ram_sticks":"0",
"srv_ram_vendor":"",
"srv_vnc_port":"0",
"srv_vnc_password":"",
"srv_vnc_token":"",
"srv_suspended":false,
"srv_custom_partition":"1",
"srv_new":false,
"srv_location":"DC2",
"srv_type":"vps",
"srv_primary_ip":"185.181.63.xx",
"os":{
"os_id":"72",
"os_name":"Ubuntu 18.04 LTS 64-bit",
"os_release":"ubuntu",
"os_dedicated_only":"0",
"os_minram":"0",
"os_custom_partition":"1",
"os_single_disk_only":"1"
},
"ips":[
{
"ip_id":"7795",
"sub_id":"405",
"ip_v4v6":"ipv4",
"ip_address":"185.181.63.xx",
"ip_reverse":"static.185.181.63.xx.customers.gigahost.no",
"ip_traffic_sum":"0",
"ip_pkts_sum":"0",
"ip_nullroute":"0",
"ip_routed_to":"0",
"ip_type":"primary",
"ip_netmask":"255.255.255.0",
"ip_gateway":"185.181.63.1"
},
{
"ip_id":"7538",
"sub_id":"404",
"ip_v4v6":"ipv4",
"ip_address":"185.181.62.xx",
"ip_reverse":"static.185.181.62.xx.gigahost.no",
"ip_traffic_sum":"0",
"ip_pkts_sum":"0",
"ip_nullroute":"0",
"ip_routed_to":"7795",
"ip_type":"extra",
"ip_netmask":"255.255.255.0",
"ip_gateway":"185.181.62.1"
}
]
"cancelled":null
}
}
Parameters
server_id (numeric - inurl)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":[
{
"srv_id":"3523",
"srv_tag":"0",
"product_id":"0",
"cust_id":"19998",
"node_id":"0",
"pmx_id":"4",
"os_id":"72",
"nic_id":"1422",
"iso_id":"0",
"bwpool_id":"0",
"srv_name":"srv3523.gigahost.no",
"srv_status":true,
"srv_status_rescue":false,
"srv_status_install":false,
"srv_status_snapshot":false,
"srv_status_mount":false,
"srv_label":"srv3523.gigahost.no",
"srv_manufacturer":"",
"srv_model":"",
"srv_motherboard":"",
"srv_date_created":"1530609706",
"srv_vps_type":"kvm",
"srv_hostname":"srv3523.gigahost.no",
"srv_bw":"1000",
"srv_feature_reinstall":true,
"srv_feature_mgmt":true,
"srv_feature_preconf":false,
"srv_mgmt_type":"kvm",
"srv_formfactor":"",
"srv_cores":"2",
"srv_ram":"2",
"srv_ram_type":"",
"srv_ram_sticks":"0",
"srv_ram_vendor":"",
"srv_vnc_port":"0",
"srv_vnc_password":"",
"srv_vnc_token":"",
"srv_vmware_id":"0",
"srv_suspended":false,
"srv_deleted":"0",
"srv_deleted_date":"0",
"srv_bw_notice":"0",
"srv_migration_state":"2",
"srv_custom_partition":"1",
"srv_new":false,
"srv_location":"DC2",
"srv_type":"vps",
"ipmi_session":null,
"os":{
"os_id":"72",
"os_name":"Ubuntu 18.04 LTS 64-bit",
"os_release":"ubuntu",
"os_dedicated_only":"0",
"os_minram":"0",
"os_custom_partition":"1",
"os_single_disk_only":"1",
"dist_logo":"/images/os/ubuntu.png"
},
"cpus":[
],
"hdds":[
{
"hdd_id":"1622",
"srv_id":"3523",
"datastore_id":"0",
"hdd_manufacturer":"Proxmox",
"hdd_model":"",
"hdd_type":"SSD",
"hdd_size":"20",
"hdd_space_used":"0",
"hdd_serial_number":""
}
],
"ips":[
{
"ip_id":"7795",
"sub_id":"405",
"ip_v4v6":"ipv4",
"ip_address":"185.181.63.24",
"ip_reverse":"static.185.181.63.24.customers.gigahost.no",
"ip_traffic_sum":"0",
"ip_pkts_sum":"0",
"ip_nullroute":"0",
"ip_routed_to":"0",
"ip_type":"primary",
"ip_netmask":"255.255.255.0",
"ip_gateway":"185.181.63.1"
},
{
"ip_id":"7538",
"sub_id":"404",
"ip_v4v6":"ipv4",
"ip_address":"185.181.62.21",
"ip_reverse":"static.185.181.62.21.gigahost.no",
"ip_traffic_sum":"0",
"ip_pkts_sum":"0",
"ip_nullroute":"0",
"ip_routed_to":"7795",
"ip_type":"extra",
"ip_netmask":"255.255.255.0",
"ip_gateway":"185.181.62.1"
}
],
"subnets":[
{
"sub_id":"2236",
"sub_parent_id":"675",
"srv_id":"3523",
"device_id":"0",
"sub_type":"ipv6",
"sub_ipv6_type":"",
"sub_network":"2a03:94e0:190e::",
"sub_netmask":"48",
"sub_broadcast":"",
"sub_gateway":"2a03:94e0:19ff::1",
"sub_cidr":"2a03:94e0:190e::/48",
"sub_vlan":"1510",
"sub_vrf":"1",
"sub_description":"",
"sub_location":"DC2",
"sub_duid":"",
"sub_ns":""
},
{
"sub_id":"2237",
"sub_parent_id":"675",
"srv_id":"3523",
"device_id":"0",
"sub_type":"ipv6",
"sub_ipv6_type":"",
"sub_network":"2a03:94e0:190f::",
"sub_netmask":"48",
"sub_broadcast":"",
"sub_gateway":"2a03:94e0:19ff::1",
"sub_cidr":"2a03:94e0:190f::/48",
"sub_vlan":"1510",
"sub_vrf":"1",
"sub_description":"",
"sub_location":"DC2",
"sub_duid":"",
"sub_ns":""
}
],
"order":{
"order_id":"3081",
"payment_id":"4",
"order_number":"3976",
"order_date":"1528244467",
"order_billing_type":"recurring",
"order_billing_date":"06.07.2018",
"order_billing_cycle":"1",
"order_billing_days":"10",
"order_status":"cancelled",
"order_payment_status":"0",
"order_total":"199.00",
"order_cancel_reason":""
},
"attacklogs":[
],
"cancelled":null,
"node":"pmx4dc2",
"bw_used":0,
"bw_used_in":0,
"bw_used_out":0,
"location":[
],
"ipmi_session":{
"kvm_id":"12",
"srv_id":"xxx",
"kvm_ip_address":"185.125.168.xxx",
"kvm_username":"xxx",
"kvm_password":"xxx",
"kvm_userid":"5",
"kvm_expires":"1530717076",
"kvm_in_use":"1"
}
}
]
}
Parameters
server_id (numeric - inurl)
name (string)
Sessions are valid for 3 hours at a time.
Parameters
server_id (numeric - inurl)
acl (string - semi-colon separated list of ips and/or subnets)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":{
"kvm_ip_address":"185.125.168.xx",
"username":"xxxx",
"password":"xxxx"
}
}
Parameters
server_id (numeric - inurl)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"powerstate":true,
"timestamp":1530706429
}
}
Parameters
server_id (numeric - inurl)
Parameters
server_id (numeric - inurl)
Parameters
server_id (numeric - inurl)
Parameters
server_id (numeric - inurl)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":[{
"snap_id": 123,
"srv_id": 999,
"snap_name":"Asdf1234",
"snap_display_name":"my-snapshot",
"snap_time": 1234567890,
"snap_state": "pending" or "completed"
}
}
Required parameters
server_id (numeric - inurl)
name (string - descriptive name of snapshot)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"Snapshot is currently being created.",
}
}
Required parameters
server_id (numeric - inurl)
snap_id (numeric - inurl)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"Snapshot has been deleted.",
}
}
Parameters
server_id (numeric - inurl)
Format is base64 image data.
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":{
"graph_day":"img-data (base64)",
"graph_week":"img-data (base64)",
"graph_month":"img-data (base64)",
"graph_year":"img-data (base64)",
}
}
Parameters
server_id (numeric - inurl)
Format is base64 image data.
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":{
"graph_day":"img-data (base64)",
"graph_week":"img-data (base64)",
"graph_month":"img-data (base64)",
"graph_year":"img-data (base64)",
}
}
Parameters
none
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":[
{
"dist_id":"1",
"type_id":"1",
"dist_name":"CentOS",
"dist_value":"centos",
"dist_logo":"/images/os/centos.png",
"dist_description":"",
"dist_active":"1"
}
}
Parameters
none
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":[
{
"os_id":"47",
"dist_id":"1",
"os_name":"CentOS 6 64-bit",
"os_release":"centos",
"os_dist":"6",
"os_arch":"amd64",
"os_custom_partition":"1",
"os_single_disk_only":"0",
"os_support_raid":"1",
"os_dedicated_only":"0",
"os_minram":"0"
}
}
Required parameters
server_id (numeric - inurl)
os_id (numeric - operating system id)
language (string - OS language, e.g. en_US, nb_NO)
keyboard (string - keyboard, e.g. no, en)
timezone (string - timezone, e.g. Europe/Oslo)
hostname (string - servers hostname)
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK",
"message":"Server install has been initiated.",
"reboot":true,
"root_passwd":"xxxxxx"
}
}
Parameters
server_id (numeric - inurl)
For IPv4:
ip_id (numeric)
dns (string, e.g. server.mydomain.com)
For IPv6 (whole subnet, NS delegation):
sub_id (numeric - subnets id)
dns (string, e.g. ns1.gigahost.no)
Parameters
none
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":[
{
"iso_id":"xxx",
"cust_id":"xxxx",
"iso_url":"http://xxxxx/debian-9.4.0-amd64-netinst.iso",
"iso_name":"debian-9.4.0-amd64-netinst.iso",
"iso_hash":"",
"iso_size":"0",
"iso_state":"uploading",
"iso_mounted":"0"
}
]
}
Parameters
server_id (numeric - inurl)
iso_id (string - iso_id)
Parameters
none
Example return data
{
"meta":{
"status":200,
"status_message":"200 OK"
},
"data":[
{
"pkg_id":"3",
"product_id":"2058",
"pkg_name":"kvm2048.2018.gigahost",
"pkg_cores":"2",
"pkg_ram":"2048",
"pkg_disk":"40",
"product_name":"KVM 2048",
"product_price":"199.00"
},
{
"pkg_id":"4",
"product_id":"2059",
"pkg_name":"kvm4096.2018.gigahost",
"pkg_cores":"4",
"pkg_ram":"4096",
"pkg_disk":"50",
"product_name":"KVM 4096",
"product_price":"299.00"
}
]
}
Parameters
server_id (numeric - inurl)
pkg_id (numeric - package id)
Parameters
server_id (numeric - inurl)
ip_type (string - "l2" or "l3")
Pass "l2" to receive a layer 2, non routed IP. Pass "l3" to receive a routed layer 3 IP.
Parameters
None
Example return data
{
"success":true,
"cust_id":"1111",
"cust_name":"name",
"cust_company_no":"",
"cust_address":"address",
"cust_address2":"address2",
"cust_province":"province",
"cust_zipcode":"1111",
"cust_city":"city",
"cust_country":"country",
"cust_phone":"number",
"cust_email":"email",
"cust_billing_email":"billing email",
"cust_contacts":[
{
"contact_id":"1",
"contact_name":"name",
"contact_email":"email",
"contact_phone":"number",
"contact_address":"address",
"contact_zip":"1111",
"contact_city":"city",
"contact_username":"username",
"contact_admin":"1"
},
{
"contact_id":"2",
"contact_name":"name",
"contact_email":"email",
"contact_phone":"number",
"contact_address":"address",
"contact_zip":"1111",
"contact_city":"city",
"contact_username":"username",
"contact_admin":"1"
}
]
}
Parameters
None
Example return data
{
"success":true,
"invoices":[
{
"inv_id":"xxxx",
"order_id":"xxxx",
"order_number":"xxxx",
"inv_md5":"xxx",
"inv_filename":"Invoice_xxxx.pdf",
"inv_number":"xxxx",
"inv_date":"1463004000",
"inv_duedate":"1463868000",
"inv_paid":"1",
"inv_total":"3240.00",
"inv_vat":810,
"inv_total_vat":4050
}
]
}