API v6.53

API Endpoint
https://api.transip.nl/v6

/ Introduction

Welcome to the API documentation.

REST API V6

With the new REST API, you can manage all of your products in a RESTful way, this means that for most products we allow simple create, update, delete HTTP requests to manage this product collection. This API provides a number of products or actions on sub-products, which we will call resources, an example of such a resource could be the Vps Backup resource, accessible at the following endpoint: /v6/vps/{vpsName}/backups

Each resource can host a number of different actions which are accessible by different HTTP methods. Every resource action has documentation in which you can find using the panel on the left.

All requests and responses use JSON objects and arrays as data format.

Requests

Every API call can be made using HTTP request to the resource URL and the desired HTTP method. All requests should be made using the HTTPS protocol.

Methods

Method Description
GET Used for retrieving one or more resources, the response attributes can be used to modify the resource.
POST Used for creating new resources, see the documentation for the required and optional attributes.
PUT Used for updating a resource with new data, all existing data will be removed.
PATCH Used for partially updating a resource or calling a resource action like reverting a backup.
DELETE Used for deleting resources.

If a GET action specifies request attributes, these could be put behind the URL using the http query syntax like: ?tags=test

Responses

Every response uses an HTTP status code, indicating the success or failure of your request.

HTTP statuses

In general, when a request succeeds, a 2xx HTTP status code is returned.

Code Reason Description
200 OK GET request succeeded.
201 Created Resource is created using a POST request. The response contains an empty body.
204 No content PUT, PATCH or DELETE request succeeded. The response contains an empty body.

In case of an error, the following status codes could be returned.

Code Reason Description
400 Bad Request The API version or URL is invalid.
401 Unauthorized There is something wrong with your authentication
403 Forbidden You don’t have the necessary permissions to perform an operation.
404 Not Found A resource was not found.
405 Method Not Allowed You’re using an HTTP method on a resource which does not support it.
406 Not Acceptable One or more required parameters are missing in the request.
408 Request Timeout The request gets a timeout.
409 Conflict Modification is not permitted at the moment. E.g. when a VPS is locked.
422 Unprocessable Entity The input attributes are invalid, e.g. malformed JSON.
429 Too Many Request The rate limit is exceeded.
500 Internal Server Error There is a server error.
501 Not Implemented The endpoint is not implemented.

GET requests may include additional links that can be used to navigate to related resources or pages.

Pages

Some resources allow pagination on their list requests. These would be GET request without a resource identifier, like /vps or /domains.

The default page size is unlimited. On the resources that support pagination, you can override this by setting using the pageSize parameter. For example: /vps?pageSize=100

When pagination is used, the following links will be shown:

  • first: The first page of the result set.

  • previous: The previous page of the result set.

  • next: The next page of the result set.

  • last: The last page of the result set.

These links will only be set when applicable. E.g. when the current page is the last, no ‘next’ and ‘last’ links will be present.

For example, the links section in a response for the first page could look like this:

{
  "_links": {
    "pages": [
      {
        "rel": "next",
        "link": "https://api.transip.nl/v6/domains?pageSize=25&page=2"
      },
      {
        "rel": "last",
        "link": "https://api.transip.nl/v6/domains?pageSize=25&page=9"
      }
    ]
  }
}

Responses of GET requests with an identifier may return additional links to related resources.

For example, when retrieving info about a domain, the following links will be rendered:

{
  "_links": [
    {
      "rel": "self",
      "link": "https://api.transip.nl/v6/domains/example.com"
    },
    {
      "rel": "branding",
      "link": "https://api.transip.nl/v6/domains/example.com/branding"
    },
    {
      "rel": "contacts",
      "link": "https://api.transip.nl/v6/domains/example.com/contacts"
    },
    {
      "rel": "dns",
      "link": "https://api.transip.nl/v6/domains/example.com/dns"
    },
    {
      "rel": "nameservers",
      "link": "https://api.transip.nl/v6/domains/example.com/nameservers"
    },
    {
      "rel": "actions",
      "link": "https://api.transip.nl/v6/domains/example.com/actions"
    }
  ]
}

Authentication

In order to authenticate a request we make use of access tokens. These access tokens make use of the JSON Web Token standard.

To get an access token, you should first generate a key pair using the control panel. Then download the PHP authentication class, and put in your login username and private key.

You can also do this process manually by sending an HTTP POST request to ’https://api.transip.nl/v6/auth’ with a body containing your login and a nonce (any random string), and a signature header. The signature header should consist of a sha512 asn.1 hash of the full request body, sign using a private key that was generated in the control panel and base64 encode the generated signature.

Steps to create a signature

  1. json encode the request body (example request body below)

  2. sign the json encoded request body (openssl dgst -sha512 -sign)

  3. base64 encode the signature that openssl generated

  4. make a request to ’https://api.transip.nl/v6/auth’ with the header and body like the examples below

Example signature header

Signature: W+alqMNFaKxNjRpRzGcjrk5q1PXf50usve85PMHqXDPcDZTmZksVkqAFyR30XtJAXELbg2bukUrckPe7fBR10LvMY55cCHLfKf4sA6tpC8Ck5HcT7uLN27XGiJH3i2oDe/Kb93pU2q9kP+vDIQYJX28xFEHWOibXYgcMksHSH3YiyCWcBiQFS65Jsg5M/XhyU3qMISD7icHmk7/WPw1tSYGiMqJZVjaovIqzskXQcu5iC22wZA+5evj3rlSPj9UGZsDjg+TdP69gGJ2y4nrG3qbM2BhMpUs4E3FDHJW1ZZ3VUko0rwfBBoltAT94NQrA5LCP6pXLyA9eszyouBs8ywQ==

Example request body

{
    "login": "test-user",
    "nonce": "98475920834",
    "read_only": false,
    "expiration_time": "30 minutes",
    "label": "add description",
    "global_key": true
}

Setting the property global_key to false will generate a token that can only be used by whitelisted IP’s

Access tokens have a default expiration time of 30 minutes. You can override this by setting the expiration_time property. This has a maximum of 1 month.

The following example values are valid for the expiration_time property:

  • 3600 seconds

  • 120 minutes

  • 1 hour

  • 48 hours

  • 1 day

  • 15 days

  • 1 week

  • 4 weeks

You can add a custom name to your access tokens by setting the label property.

All your active access tokens can be managed in the control panel. You can revoke your tokens and generate new ones.

Use a header containing your access token in every request:

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImN3MiFSbDU2eDNoUnkjelM4YmdOIn0.eyJpc3MiOiJhcGkudHJhbnNpcC5ubCIsImF1ZCI6ImFwaS50cmFuc2lwLm5sIiwianRpIjoiY3cyIVJsNTZ4M2hSeSN6UzhiZ04iLCJpYXQiOjE1ODIyMDE1NTAsIm5iZiI6MTU4MjIwMTU1MCwiZXhwIjoyMTE4NzQ1NTUwLCJjaWQiOiI2MDQ0OSIsInJvIjpmYWxzZSwiZ2siOmZhbHNlLCJrdiI6dHJ1ZX0.fYBWV4O5WPXxGuWG-vcrFWqmRHBm9yp0PHiYh_oAWxWxCaZX2Rf6WJfc13AxEeZ67-lY0TA2kSaOCp0PggBb_MGj73t4cH8gdwDJzANVxkiPL1Saqiw2NgZ3IHASJnisUWNnZp8HnrhLLe5ficvb1D9WOUOItmFC2ZgfGObNhlL2y-AMNLT4X7oNgrNTGm-mespo0jD_qH9dK5_evSzS3K8o03gu6p19jxfsnIh8TIVRvNdluYC2wo4qDl5EW5BEZ8OSuJ121ncOT1oRpzXB0cVZ9e5_UVAEr9X3f26_Eomg52-PjrgcRJ_jPIUYbrlo06KjjX2h0fzMr21ZE023Gw

Rate limit

The rate limit for this API uses a sliding window of 15 minutes. Within this window, a maximum of 1000 requests can be made per user.

Every request returns the following headers, indicating the number of requests made within this window, the amount of requests remaining and the reset timestamp.

X-Rate-Limit-Limit: 1000
X-Rate-Limit-Remaining: 650
X-Rate-Limit-Reset: 1485875578

When this rate limit is exceeded, the response contains an error with HTTP status code: 429: Too many requests.

Test mode

In test mode every GET request is allowed, but all modification requests are fake, they are validated, but the actual modification is skipped. This means that you are able to test your api calls without doing any modification to your production environment. There are two different ways to test the api, you could use our test mode token or you could provide a test parameter using your own token (and thus play with your own data).

Demo token

If you use the following authorization header, you authenticate yourself as the demo user in test mode.

Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImp0aSI6ImN3MiFSbDU2eDNoUnkjelM4YmdOIn0.eyJpc3MiOiJhcGkudHJhbnNpcC5ubCIsImF1ZCI6ImFwaS50cmFuc2lwLm5sIiwianRpIjoiY3cyIVJsNTZ4M2hSeSN6UzhiZ04iLCJpYXQiOjE1ODIyMDE1NTAsIm5iZiI6MTU4MjIwMTU1MCwiZXhwIjoyMTE4NzQ1NTUwLCJjaWQiOiI2MDQ0OSIsInJvIjpmYWxzZSwiZ2siOmZhbHNlLCJrdiI6dHJ1ZX0.fYBWV4O5WPXxGuWG-vcrFWqmRHBm9yp0PHiYh_oAWxWxCaZX2Rf6WJfc13AxEeZ67-lY0TA2kSaOCp0PggBb_MGj73t4cH8gdwDJzANVxkiPL1Saqiw2NgZ3IHASJnisUWNnZp8HnrhLLe5ficvb1D9WOUOItmFC2ZgfGObNhlL2y-AMNLT4X7oNgrNTGm-mespo0jD_qH9dK5_evSzS3K8o03gu6p19jxfsnIh8TIVRvNdluYC2wo4qDl5EW5BEZ8OSuJ121ncOT1oRpzXB0cVZ9e5_UVAEr9X3f26_Eomg52-PjrgcRJ_jPIUYbrlo06KjjX2h0fzMr21ZE023Gw

Test parameter

By providing the test parameter on any of your requests you can use the test mode while you are authenticated as your own user. To give you an example, when you request a DELETE on a vps with the following url /v6/vps/test-vps2?test=1 the actual delete is skipped. The same goes for any other type of modification.

Order requests

Some API calls, as the pre-generated would automatically be accepted, will generate an invoice. In case direct debit is activated on the customer account associated with the API key, payment will occur at a later stage. This is mostly the case with products and add-ons with automatic provisioning. In order to prevent accidental orders, each API call that generates an invoice has a warning outlined below its description in this API documentation.

Api specification

This documentation was generated from a api blueprint file. Download the raw APIB or OpenAPI specification

/ General

Products

This is the API endpoint for products.

GET /products
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/products"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "products": {
    "vps": [
      {
        "name": "example-product-name",
        "description": "This is an example product",
        "price": 499,
        "recurringPrice": 799
      }
    ],
    "vpsAddon": [
      {
        "name": "example-product-name",
        "description": "This is an example product",
        "price": 499,
        "recurringPrice": 799
      }
    ],
    "haip": [
      {
        "name": "example-product-name",
        "description": "This is an example product",
        "price": 499,
        "recurringPrice": 799
      }
    ],
    "bigStorage": [
      {
        "name": "example-product-name",
        "description": "This is an example product",
        "price": 499,
        "recurringPrice": 799
      }
    ],
    "privateNetworks": [
      {
        "name": "example-product-name",
        "description": "This is an example product",
        "price": 499,
        "recurringPrice": 799
      }
    ]
  }
}

List all products

GET/products

This endpoint returns a list of products with their name, description and price.

These product names can be used upon creating certain resources as it specifies which type of that resource you would like, for example, a certain type of HA-IP or Vps.

Response Attributes
products
Products

Hide child attributesShow child attributes
vps
Array (Product)

A list of vps products

name
string

Name of the product

description
string

Describes this product

price
number

Price in cents

recurringPrice
number

The recurring price for the product in cents

vpsAddon
Array (Product)

A list of vps addons

name
string

Name of the product

description
string

Describes this product

price
number

Price in cents

recurringPrice
number

The recurring price for the product in cents

haip
Array (Product)

A list of haip products

name
string

Name of the product

description
string

Describes this product

price
number

Price in cents

recurringPrice
number

The recurring price for the product in cents

bigStorage
Array (Product)

A list of big storage products

name
string

Name of the product

description
string

Describes this product

price
number

Price in cents

recurringPrice
number

The recurring price for the product in cents

privateNetworks
Array (Product)

A list of private network products

name
string

Name of the product

description
string

Describes this product

price
number

Price in cents

recurringPrice
number

The recurring price for the product in cents

Elements

This is the API endpoint for productsElements.

GET /products/vps-bladevps-x4/elements
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/products/vps-bladevps-x4/elements"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "productElements": [
    {
      "name": "ipv4Addresses",
      "description": "amount of ipv4Addresses for a vps",
      "amount": 1
    }
  ]
}

List specifications for product

GET/products/{productName}/elements

Get the specifications for a product.

This will list all the different elements for a product with the amount that it comes with. e.g. a vps-bladevps-x4 has 2 CPU-core elements.

URI Parameters
HideShow
productName
string (required) Example: vps-bladevps-x4

Product

Response Attributes
productElements
Array (ProductElement)

Hide child attributesShow child attributes
name
string

Name of the product element

description
string

Describes this product element

amount
number

Amount

AvailabilityZone

GET /availability-zones
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/availability-zones"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "availabilityZones": [
    {
      "name": "ams0",
      "country": "nl",
      "isDefault": true
    }
  ]
}

List available AvailabilityZones

GET/availability-zones

Lists the available AvailabilityZones.

Response Attributes
availabilityZones
Array (AvailabilityZone)

Hide child attributesShow child attributes
name
string

Name of AvailabilityZone

country
string

The 2 letter code for the country the AvailabilityZone is in

isDefault
boolean

If true this is the default zone new VPSes and clones are created in

ApiTest

This is the API endpoint to do a simple token or application test

GET /api-test
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/api-test"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "ping": "pong"
}

API Test

GET/api-test

Returns pong. A simple test resource to make sure everything is working

Response Attributes
ping
string

/ Account

Invoices

This is the API endpoint for invoices.

GET /invoices
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/invoices"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "invoices": [
    {
      "invoiceNumber": "F0000.1911.0000.0004",
      "creationDate": "2020-01-01",
      "payDate": "2020-01-01",
      "dueDate": "2020-02-01",
      "invoiceStatus": "waitsforpayment",
      "currency": "EUR",
      "totalAmount": 1000,
      "totalAmountInclVat": 1240
    }
  ]
}

List all invoices

GET/invoices

Returns a list of all invoices attached to your account.

This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.

Response Attributes
invoices
Array (Invoice)

Hide child attributesShow child attributes
invoiceNumber
string

Invoice number

creationDate
string

Invoice creation date

payDate
string

Invoice paid date

dueDate
string

Invoice deadline

invoiceStatus
string

Invoice status

currency
string

Currency used for this invoice

totalAmount
number

Invoice total (displayed in cents)

totalAmountInclVat
number

Invoice total including VAT (displayed in cents)

GET /invoices/F0000.1911.0000.0004
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/invoices/F0000.1911.0000.0004"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404
Response headers
Content-Type: application/json
Response body
{
  "invoice": {
    "invoiceNumber": "F0000.1911.0000.0004",
    "creationDate": "2020-01-01",
    "payDate": "2020-01-01",
    "dueDate": "2020-02-01",
    "invoiceStatus": "waitsforpayment",
    "currency": "EUR",
    "totalAmount": 1000,
    "totalAmountInclVat": 1240
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Invoice with number 'F0000.1911.0000.0004' not found"
}

List a single invoice

GET/invoices/{invoiceNumber}

Returns only the requested invoice.

URI Parameters
HideShow
invoiceNumber
string (required) Example: F0000.1911.0000.0004

The Invoice number

Response Attributes
invoice
Invoice

Hide child attributesShow child attributes
invoiceNumber
string

Invoice number

creationDate
string

Invoice creation date

payDate
string

Invoice paid date

dueDate
string

Invoice deadline

invoiceStatus
string

Invoice status

currency
string

Currency used for this invoice

totalAmount
number

Invoice total (displayed in cents)

totalAmountInclVat
number

Invoice total including VAT (displayed in cents)

InvoiceItems

This is the API endpoint for InvoiceItems

GET /invoices/F0000.1911.0000.0004/invoice-items
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/invoices/F0000.1911.0000.0004/invoice-items"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404
Response headers
Content-Type: application/json
Response body
{
  "invoiceItems": [
    {
      "product": "Big Storage Disk 2000 GB",
      "description": "Big Storage Disk 2000 GB (example-bigstorage)",
      "isRecurring": false,
      "date": "2020-01-01",
      "quantity": 1,
      "price": 1000,
      "priceInclVat": 1210,
      "vat": 210,
      "vatPercentage": 21,
      "discounts": [
        {
          "description": "Korting (20% Black Friday)",
          "amount": -500,
          "discountedPrice": -500,
          "discountedPriceInclVat": -605,
          "discountedVat": 105
        }
      ]
    }
  ]
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Invoice with number 'F0000.1911.0000.0004' not found"
}

List invoice items by InvoiceNumber

GET/invoices/{invoiceNumber}/invoice-items

Each invoice consists of one or multiple invoice items, detailing what specific products or services are on this invoice.

An invoiceItem can optionally contain one or multiple discounts.

URI Parameters
HideShow
invoiceNumber
string (required) Example: F0000.1911.0000.0004

The Invoice number

Response Attributes
invoiceItems
Array (InvoiceItem)

Hide child attributesShow child attributes
product
string

Product name

description
string

Product description

isRecurring
boolean

Payment is recurring

date
string

Date when the order line item was up for invoicing

quantity
number

Quantity

price
number

Price excluding VAT (displayed in cents)

priceInclVat
number

Price including VAT (displayed in cents)

vat
number

Amount of VAT charged

vatPercentage
number

Percentage used to calculate the VAT

discounts
Array (InvoiceItemDiscount)

Applied discounts

description
string

Applied discount description

amount
number

Discounted amount (in cents)

discountedPrice
number

Discount amount excluding VAT (in cents)

discountedPriceInclVat
number

Discount amount including VAT (in cents)

discountedVat
number

Vat amount (in cents)

Pdf

This is the API endpoint for PDF invoices.

GET /invoices/F0000.1911.0000.0004/pdf
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/invoices/F0000.1911.0000.0004/pdf"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404
Response headers
Content-Type: application/json
Response body
{
  "pdf": "Y205elpYTWdZWEpsSUhKbFpDd2dabXh2ZDJWeWN5QmhjbVVnWW14MVpTd2dkR2hsY21VZ2MyaHZkV3hrSUdKbElHRWdjR1JtSUdobGNtVWdZblYwSUdsMElHbHpJR2RzZFdVdQ==="
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Invoice with number 'F0000.1911.0000.0004' not found"
}

Retrieve an invoice as PDF file

GET/invoices/{invoiceNumber}/pdf

Retrieve the PDF data of an invoice with the given invoice number.

The response returns a string that is Base64 encoded. Decode this string before saving to a PDF file.

URI Parameters
HideShow
invoiceNumber
string (required) Example: F0000.1911.0000.0004

The Invoice number

Response Attributes
pdf
string

SSH Keys

Manage the SSH Keys in your account, these can be used to embed into your VPS at the time of its creation.

GET /ssh-keys
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/ssh-keys"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "sshKeys": [
    {
      "id": 123,
      "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf2pxWX/yhUBDyk2LPhvRtI0LnVO8PyR5Zt6AHrnhtLGqK+8YG9EMlWbCCWrASR+Q1hFQG example",
      "description": "Jim key",
      "creationDate": "2020-12-01 15:25:01",
      "fingerprint": "bb:22:43:69:2b:0d:3e:16:58:91:27:8a:62:29:97:d1",
      "isDefault": true
    }
  ]
}

List all SSH keys

GET/ssh-keys

List all SSH keys in your account.

This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.

Response Attributes
sshKeys
Array (SshKey)

Hide child attributesShow child attributes
id
number

SSH key identifier

key
string

SSH key

description
string

SSH key description (max 255 chars)

creationDate
string

Date when this SSH key was added (TimeZone: Europe/Amsterdam)

fingerprint
string

MD5 fingerprint of SSH key

isDefault
boolean

Whether or not the key is flagged as default

GET /ssh-keys/123
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/ssh-keys/123"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404
Response headers
Content-Type: application/json
Response body
{
  "sshKey": {
    "id": 123,
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf2pxWX/yhUBDyk2LPhvRtI0LnVO8PyR5Zt6AHrnhtLGqK+8YG9EMlWbCCWrASR+Q1hFQG example",
    "description": "Jim key",
    "creationDate": "2020-12-01 15:25:01",
    "fingerprint": "bb:22:43:69:2b:0d:3e:16:58:91:27:8a:62:29:97:d1",
    "isDefault": true
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "SSH Key with id '123' not found"
}

Get SSH key by id

GET/ssh-keys/{id}

Request information about an existing SSH key from your account.

URI Parameters
HideShow
id
string (required) Example: 123

SSH key identifier

Response Attributes
sshKey
SshKey

Hide child attributesShow child attributes
id
number

SSH key identifier

key
string

SSH key

description
string

SSH key description (max 255 chars)

creationDate
string

Date when this SSH key was added (TimeZone: Europe/Amsterdam)

fingerprint
string

MD5 fingerprint of SSH key

isDefault
boolean

Whether or not the key is flagged as default

POST /ssh-keys
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"sshKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf2pxWX/yhUBDyk2LPhvRtI0LnVO8PyR5Zt6AHrnhtLGqK+8YG9EMlWbCCWrASR+Q1hFQG example",
"description": "Jim key",
"isDefault": true
}
' \
"https://api.transip.nl/v6/ssh-keys"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "sshKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf2pxWX/yhUBDyk2LPhvRtI0LnVO8PyR5Zt6AHrnhtLGqK+8YG9EMlWbCCWrASR+Q1hFQG example",
  "description": "Jim key",
  "isDefault": true
}
Response201403406406
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided SSH key already exists"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided SSH key 'ssh-rsa AAAAB3NzaC_INVALIDKEY_1yc2EAAAADAQA' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided parameter 'description' can be 255 characters maximum"
}

Add a new SSH key

POST/ssh-keys

Add a new SSH key to your account.

Request Attributes
sshKey
string, required

SSH key

description
string, optional

SSH key description

isDefault
boolean, optional

SSH key isDefault

PUT /ssh-keys/123
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"sshKey": {
"id": 123,
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf2pxWX/yhUBDyk2LPhvRtI0LnVO8PyR5Zt6AHrnhtLGqK+8YG9EMlWbCCWrASR+Q1hFQG example",
"description": "Jim key",
"creationDate": "2020-12-01 15:25:01",
"fingerprint": "bb:22:43:69:2b:0d:3e:16:58:91:27:8a:62:29:97:d1",
"isDefault": true
}
}
' \
"https://api.transip.nl/v6/ssh-keys/123"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "sshKey": {
    "id": 123,
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf2pxWX/yhUBDyk2LPhvRtI0LnVO8PyR5Zt6AHrnhtLGqK+8YG9EMlWbCCWrASR+Q1hFQG example",
    "description": "Jim key",
    "creationDate": "2020-12-01 15:25:01",
    "fingerprint": "bb:22:43:69:2b:0d:3e:16:58:91:27:8a:62:29:97:d1",
    "isDefault": true
  }
}
Response204404406
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "SSH Key with id '123' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided parameter 'description' can be 255 characters maximum"
}

Update an SSH key

PUT/ssh-keys/{id}

Rename the description or change the isDefault attribute for an SSH key.

In this request you need to specify values for the isDefault and description attribute, you cannot leave them empty.

Except for the description and isDefault, all attributes are read only.

URI Parameters
HideShow
id
string (required) Example: 123

SSH key identifier

Request Attributes
sshKey
SshKey, required

id
number

SSH key identifier

key
string

SSH key

description
string

SSH key description (max 255 chars)

creationDate
string

Date when this SSH key was added (TimeZone: Europe/Amsterdam)

fingerprint
string

MD5 fingerprint of SSH key

isDefault
boolean

Whether or not the key is flagged as default

DELETE /ssh-keys/123
Request
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/ssh-keys/123"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response204404
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "SSH Key with id '123' not found"
}

Delete an SSH key

DELETE/ssh-keys/{id}

Delete an existing SSH key from your account.

URI Parameters
HideShow
id
string (required) Example: 123

SSH key identifier

ContactKey

GET /contact-key
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/contact-key"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "key": "123456"
}

Contact key

GET/contact-key

List the current contact key.

Response Attributes
key
string

/ Domains

Domains

This is the API endpoint for domain services.

This endpoint can be used to manage domains

GET /domains
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"tags": "/domains?tags=customTag,anotherTag",
"include": "/domains?include=nameservers,contacts,goneDomains"
}
' \
"https://api.transip.nl/v6/domains"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "tags": "/domains?tags=customTag,anotherTag",
  "include": "/domains?include=nameservers,contacts,goneDomains"
}
Response200
Response headers
Content-Type: application/json
Response body
{
  "domains": [
    {
      "name": "example.com",
      "nameservers": [
        {
          "hostname": "ns0.transip.nl",
          "ipv4": "",
          "ipv6": ""
        }
      ],
      "contacts": [
        {
          "type": "registrant",
          "firstName": "John",
          "lastName": "Doe",
          "companyName": "Example B.V.",
          "companyKvk": "83057825",
          "companyType": "BV",
          "street": "Easy street",
          "number": "12",
          "postalCode": "1337 XD",
          "city": "Leiden",
          "phoneNumber": "+31 715241919",
          "faxNumber": "+31 715241919",
          "email": "example@example.com",
          "country": "nl"
        }
      ],
      "authCode": "kJqfuOXNOYQKqh/jO4bYSn54YDqgAt1ksCe+ZG4Ud4nfpzw8qBsfR2JqAj7Ce12SxKcGD09v+yXd6lrm",
      "isTransferLocked": false,
      "registrationDate": "2016-01-01",
      "renewalDate": "2020-01-01",
      "isWhitelabel": false,
      "cancellationDate": "2020-01-01 12:00:00",
      "cancellationStatus": "signed",
      "isDnsOnly": false,
      "tags": [
        "customTag",
        "anotherTag"
      ],
      "canEditDns": true,
      "hasAutoDns": true,
      "hasDnsSec": true,
      "status": "registered"
    }
  ]
}

List all domains

GET/domains

This API call allows you to list all domain names in your TransIP account.

Should you want to filter the domains list by a custom tag, set the tag parameter and only domains with the tag will be returned like https://api.transip.nl/v6/domains?tag=customTag,anotherTag

This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.

Request Attributes
tags
string, optional

Tags to filter by, separated by a comma.

include
string, optional

Extra Data to include, separated by a comma. (Can be nameservers,contacts,goneDomains)

Response Attributes
domains
Array (Domain)

Hide child attributesShow child attributes
name
string

The name, including the tld of this domain

nameservers
Array (Nameserver)

The list of nameservers (with optional gluerecords) for this domain (Only included if asked for via the relevant call)

hostname
string

The hostname of this nameserver

ipv4
string,null

Optional ipv4 glue record for this nameserver

ipv6
string,null

Optional ipv6 glue record for this nameserver

contacts
Array (WhoisContact)

The list of WhoisContacts for this domain (Only included if asked for via the relevant call)

type
string

The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’

firstName
string

The firstName of this Contact

lastName
string

The lastName of this Contact

companyName
string

The companyName of this Contact, in case of a company

companyKvk
string

The kvk number of this Contact, in case of a company

companyType
string

The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’

street
string

The street of the address of this Contact

number
string

The number part of the address of this Contact

postalCode
string

The postalCode part of the address of this Contact

city
string

The city part of the address of this Contact

phoneNumber
string

The phoneNumber of this Contact

faxNumber
string,null

The faxNumber of this Contact

email
string

The email address of this Contact

country
string

The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.

authCode
string,null

The authcode for this domain as generated by the registry.

isTransferLocked
boolean

If this domain supports transfer locking, this flag is true when the domains ability to transfer is locked at the registry.

registrationDate
string

Registration date of the domain, in YYYY-mm-dd format.

renewalDate
string

Next renewal date of the domain, in YYYY-mm-dd format.

isWhitelabel
boolean

If this domain is added to your whitelabel.

cancellationDate
string,null

Cancellation data, in YYYY-mm-dd h:i:s format, null if the domain is active.

cancellationStatus
string,null

Cancellation status, null if the domain is active, ‘cancelled’ when the domain is cancelled.

isDnsOnly
boolean

Whether this domain is DNS only

tags
Array (string)

The custom tags added to this domain.

canEditDns
boolean

Whether dns changes propagate to the nameservers.

hasAutoDns
boolean

Whether autoDNS is enabled for this domain. Dns entries will be automatically updated when for example a webhosting packages is ordered.

hasDnsSec
boolean

Whether DNSSEC is active for this domain.

status
string

The status of a domain (Can be one of: registered, gone, dnsonly, inprogress, dropinprogress)

GET /domains/example.com
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404
Response headers
Content-Type: application/json
Response body
{
  "domain": {
    "name": "example.com",
    "nameservers": [
      {
        "hostname": "ns0.transip.nl",
        "ipv4": "",
        "ipv6": ""
      }
    ],
    "contacts": [
      {
        "type": "registrant",
        "firstName": "John",
        "lastName": "Doe",
        "companyName": "Example B.V.",
        "companyKvk": "83057825",
        "companyType": "BV",
        "street": "Easy street",
        "number": "12",
        "postalCode": "1337 XD",
        "city": "Leiden",
        "phoneNumber": "+31 715241919",
        "faxNumber": "+31 715241919",
        "email": "example@example.com",
        "country": "nl"
      }
    ],
    "authCode": "kJqfuOXNOYQKqh/jO4bYSn54YDqgAt1ksCe+ZG4Ud4nfpzw8qBsfR2JqAj7Ce12SxKcGD09v+yXd6lrm",
    "isTransferLocked": false,
    "registrationDate": "2016-01-01",
    "renewalDate": "2020-01-01",
    "isWhitelabel": false,
    "cancellationDate": "2020-01-01 12:00:00",
    "cancellationStatus": "signed",
    "isDnsOnly": false,
    "tags": [
      "customTag",
      "anotherTag"
    ],
    "canEditDns": true,
    "hasAutoDns": true,
    "hasDnsSec": true,
    "status": "registered"
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}

Retrieve an existing domain

GET/domains/{domainName}

Show information about a specific domain name.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

include
string (optional) 

Comma seperated list of data to include (nameservers,contacts)

Response Attributes
domain
Domain

Hide child attributesShow child attributes
name
string

The name, including the tld of this domain

nameservers
Array (Nameserver)

The list of nameservers (with optional gluerecords) for this domain (Only included if asked for via the relevant call)

hostname
string

The hostname of this nameserver

ipv4
string,null

Optional ipv4 glue record for this nameserver

ipv6
string,null

Optional ipv6 glue record for this nameserver

contacts
Array (WhoisContact)

The list of WhoisContacts for this domain (Only included if asked for via the relevant call)

type
string

The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’

firstName
string

The firstName of this Contact

lastName
string

The lastName of this Contact

companyName
string

The companyName of this Contact, in case of a company

companyKvk
string

The kvk number of this Contact, in case of a company

companyType
string

The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’

street
string

The street of the address of this Contact

number
string

The number part of the address of this Contact

postalCode
string

The postalCode part of the address of this Contact

city
string

The city part of the address of this Contact

phoneNumber
string

The phoneNumber of this Contact

faxNumber
string,null

The faxNumber of this Contact

email
string

The email address of this Contact

country
string

The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.

authCode
string,null

The authcode for this domain as generated by the registry.

isTransferLocked
boolean

If this domain supports transfer locking, this flag is true when the domains ability to transfer is locked at the registry.

registrationDate
string

Registration date of the domain, in YYYY-mm-dd format.

renewalDate
string

Next renewal date of the domain, in YYYY-mm-dd format.

isWhitelabel
boolean

If this domain is added to your whitelabel.

cancellationDate
string,null

Cancellation data, in YYYY-mm-dd h:i:s format, null if the domain is active.

cancellationStatus
string,null

Cancellation status, null if the domain is active, ‘cancelled’ when the domain is cancelled.

isDnsOnly
boolean

Whether this domain is DNS only

tags
Array (string)

The custom tags added to this domain.

canEditDns
boolean

Whether dns changes propagate to the nameservers.

hasAutoDns
boolean

Whether autoDNS is enabled for this domain. Dns entries will be automatically updated when for example a webhosting packages is ordered.

hasDnsSec
boolean

Whether DNSSEC is active for this domain.

status
string

The status of a domain (Can be one of: registered, gone, dnsonly, inprogress, dropinprogress)

POST /domains
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"domainName": "example.com",
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
],
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
],
"dnsEntries": [
{
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
]
}
' \
"https://api.transip.nl/v6/domains"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "domainName": "example.com",
  "contacts": [
    {
      "type": "registrant",
      "firstName": "John",
      "lastName": "Doe",
      "companyName": "Example B.V.",
      "companyKvk": "83057825",
      "companyType": "BV",
      "street": "Easy street",
      "number": "12",
      "postalCode": "1337 XD",
      "city": "Leiden",
      "phoneNumber": "+31 715241919",
      "faxNumber": "+31 715241919",
      "email": "example@example.com",
      "country": "nl"
    }
  ],
  "nameservers": [
    {
      "hostname": "ns0.transip.nl",
      "ipv4": "",
      "ipv6": ""
    }
  ],
  "dnsEntries": [
    {
      "name": "www",
      "expire": 86400,
      "type": "A",
      "content": "127.0.0.1"
    }
  ]
}
Response201406
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "The domain 'example.com' is not free and thus cannot be registered"
}

Register a new domain

POST/domains

Register a new domain. Note that in most cases, promotions or discounts do not apply to registrations through the TransIP API.

You can set the contacts, nameservers and DNS entries immediately, but it’s not mandatory for registration.

Warning: This API call will create an invoice!

Request Attributes
domainName
string, required

contacts
Array (WhoisContact), optional

type
string

The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’

firstName
string

The firstName of this Contact

lastName
string

The lastName of this Contact

companyName
string

The companyName of this Contact, in case of a company

companyKvk
string

The kvk number of this Contact, in case of a company

companyType
string

The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’

street
string

The street of the address of this Contact

number
string

The number part of the address of this Contact

postalCode
string

The postalCode part of the address of this Contact

city
string

The city part of the address of this Contact

phoneNumber
string

The phoneNumber of this Contact

faxNumber
string,null

The faxNumber of this Contact

email
string

The email address of this Contact

country
string

The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.

nameservers
Array (Nameserver), optional

hostname
string

The hostname of this nameserver

ipv4
string,null

Optional ipv4 glue record for this nameserver

ipv6
string,null

Optional ipv6 glue record for this nameserver

dnsEntries
Array (DnsEntry), optional

name
string

The name of the dns entry, for example ‘@’ or ‘www’

expire
number

The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration

type
string

The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’

content
string

The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’

POST /domains
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"domainName": "example.com",
"authCode": "CYPMaVH+9MRjXGBc3InzHs7vNSUBPOjwpZm3GO+iDLHnFLtiP7sOKqW5JD1WeUpevZM6q1qS5YH9dGSp",
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
],
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
],
"dnsEntries": [
{
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
]
}
' \
"https://api.transip.nl/v6/domains"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "domainName": "example.com",
  "authCode": "CYPMaVH+9MRjXGBc3InzHs7vNSUBPOjwpZm3GO+iDLHnFLtiP7sOKqW5JD1WeUpevZM6q1qS5YH9dGSp",
  "contacts": [
    {
      "type": "registrant",
      "firstName": "John",
      "lastName": "Doe",
      "companyName": "Example B.V.",
      "companyKvk": "83057825",
      "companyType": "BV",
      "street": "Easy street",
      "number": "12",
      "postalCode": "1337 XD",
      "city": "Leiden",
      "phoneNumber": "+31 715241919",
      "faxNumber": "+31 715241919",
      "email": "example@example.com",
      "country": "nl"
    }
  ],
  "nameservers": [
    {
      "hostname": "ns0.transip.nl",
      "ipv4": "",
      "ipv6": ""
    }
  ],
  "dnsEntries": [
    {
      "name": "www",
      "expire": 86400,
      "type": "A",
      "content": "127.0.0.1"
    }
  ]
}
Response201409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "The domain 'example.com' is already available in your account, thus cannot be transferred"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The domain 'example.com' is not registered and thus cannot be transferred"
}

Transfer a domain

POST/domains

Transfer a domain to TransIP using its transfer key (or ‘EPP code’) by specifying it in the authCode parameter.

You can override the contacts, nameservers and DNS entries immediately, but is not mandatory.

Warning: This API call will create an invoice!

Request Attributes
domainName
string, required

authCode
string, required

The auth code of the domain.

contacts
Array (WhoisContact), optional

type
string

The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’

firstName
string

The firstName of this Contact

lastName
string

The lastName of this Contact

companyName
string

The companyName of this Contact, in case of a company

companyKvk
string

The kvk number of this Contact, in case of a company

companyType
string

The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’

street
string

The street of the address of this Contact

number
string

The number part of the address of this Contact

postalCode
string

The postalCode part of the address of this Contact

city
string

The city part of the address of this Contact

phoneNumber
string

The phoneNumber of this Contact

faxNumber
string,null

The faxNumber of this Contact

email
string

The email address of this Contact

country
string

The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.

nameservers
Array (Nameserver), optional

hostname
string

The hostname of this nameserver

ipv4
string,null

Optional ipv4 glue record for this nameserver

ipv6
string,null

Optional ipv6 glue record for this nameserver

dnsEntries
Array (DnsEntry), optional

name
string

The name of the dns entry, for example ‘@’ or ‘www’

expire
number

The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration

type
string

The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’

content
string

The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’

PUT /domains/example.com
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"domain": {
"name": "example.com",
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
],
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
],
"authCode": "kJqfuOXNOYQKqh/jO4bYSn54YDqgAt1ksCe+ZG4Ud4nfpzw8qBsfR2JqAj7Ce12SxKcGD09v+yXd6lrm",
"isTransferLocked": false,
"registrationDate": "2016-01-01",
"renewalDate": "2020-01-01",
"isWhitelabel": false,
"cancellationDate": "2020-01-01 12:00:00",
"cancellationStatus": "signed",
"isDnsOnly": false,
"tags": [
"customTag",
"anotherTag"
],
"canEditDns": true,
"hasAutoDns": true,
"hasDnsSec": true,
"status": "registered"
}
}
' \
"https://api.transip.nl/v6/domains/example.com"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "domain": {
    "name": "example.com",
    "nameservers": [
      {
        "hostname": "ns0.transip.nl",
        "ipv4": "",
        "ipv6": ""
      }
    ],
    "contacts": [
      {
        "type": "registrant",
        "firstName": "John",
        "lastName": "Doe",
        "companyName": "Example B.V.",
        "companyKvk": "83057825",
        "companyType": "BV",
        "street": "Easy street",
        "number": "12",
        "postalCode": "1337 XD",
        "city": "Leiden",
        "phoneNumber": "+31 715241919",
        "faxNumber": "+31 715241919",
        "email": "example@example.com",
        "country": "nl"
      }
    ],
    "authCode": "kJqfuOXNOYQKqh/jO4bYSn54YDqgAt1ksCe+ZG4Ud4nfpzw8qBsfR2JqAj7Ce12SxKcGD09v+yXd6lrm",
    "isTransferLocked": false,
    "registrationDate": "2016-01-01",
    "renewalDate": "2020-01-01",
    "isWhitelabel": false,
    "cancellationDate": "2020-01-01 12:00:00",
    "cancellationStatus": "signed",
    "isDnsOnly": false,
    "tags": [
      "customTag",
      "anotherTag"
    ],
    "canEditDns": true,
    "hasAutoDns": true,
    "hasDnsSec": true,
    "status": "registered"
  }
}
Response204403404409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "You do not have a whitelabel account yet, please order one first"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain 'example.com' has action 'changeNameservers' running, no modification is allowed"
}

Update a domain

PUT/domains/{domainName}

Update an existing domain. To apply or release a lock, change the isTransferLocked attribute. To change tags, update the tags attribute. To enable or disable AutoDNS, change the hasAutoDns attribute.

You’re able to add the domain name under a whitelabel account. Note this whitelabel functionality is available only for .nl domains. Furthermore, the whitelabel account must be activated first at regular charge. Upon activating, newly registered domains with the isWhitelabel attribute set to ‘true’ will be shown under a whitelabel registrar name.

For more information about whitelabel domain name registration at TransIP, please see the documentation regarding whitelabel.

Warning: When adding the domain to your whitelabel, it cannot be reverted!

Warning: Can Only be done when status is registered

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Request Attributes
domain
Domain, required

name
string

The name, including the tld of this domain

nameservers
Array (Nameserver)

The list of nameservers (with optional gluerecords) for this domain (Only included if asked for via the relevant call)

hostname
string

The hostname of this nameserver

ipv4
string,null

Optional ipv4 glue record for this nameserver

ipv6
string,null

Optional ipv6 glue record for this nameserver

contacts
Array (WhoisContact)

The list of WhoisContacts for this domain (Only included if asked for via the relevant call)

type
string

The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’

firstName
string

The firstName of this Contact

lastName
string

The lastName of this Contact

companyName
string

The companyName of this Contact, in case of a company

companyKvk
string

The kvk number of this Contact, in case of a company

companyType
string

The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’

street
string

The street of the address of this Contact

number
string

The number part of the address of this Contact

postalCode
string

The postalCode part of the address of this Contact

city
string

The city part of the address of this Contact

phoneNumber
string

The phoneNumber of this Contact

faxNumber
string,null

The faxNumber of this Contact

email
string

The email address of this Contact

country
string

The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.

authCode
string,null

The authcode for this domain as generated by the registry.

isTransferLocked
boolean

If this domain supports transfer locking, this flag is true when the domains ability to transfer is locked at the registry.

registrationDate
string

Registration date of the domain, in YYYY-mm-dd format.

renewalDate
string

Next renewal date of the domain, in YYYY-mm-dd format.

isWhitelabel
boolean

If this domain is added to your whitelabel.

cancellationDate
string,null

Cancellation data, in YYYY-mm-dd h:i:s format, null if the domain is active.

cancellationStatus
string,null

Cancellation status, null if the domain is active, ‘cancelled’ when the domain is cancelled.

isDnsOnly
boolean

Whether this domain is DNS only

tags
Array (string)

The custom tags added to this domain.

canEditDns
boolean

Whether dns changes propagate to the nameservers.

hasAutoDns
boolean

Whether autoDNS is enabled for this domain. Dns entries will be automatically updated when for example a webhosting packages is ordered.

hasDnsSec
boolean

Whether DNSSEC is active for this domain.

status
string

The status of a domain (Can be one of: registered, gone, dnsonly, inprogress, dropinprogress)

DELETE /domains/example.com
Request
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"endTime": "end"
}
' \
"https://api.transip.nl/v6/domains/example.com"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "endTime": "end"
}
Response204403404406409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "The domain 'example.com' has additional products attached, and thus can't be cancelled"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid cancellation time: 'now', please use either 'end' or 'immediately'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The domain 'example.com' is inactive, and thus can't be cancelled"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "A domain add-on for 'example.com' is inactive, and thus the domain itself can't be cancelled"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The domain 'example.com' already has a cancellation pending"
}

Cancel a domain

DELETE/domains/{domainName}

Cancels the specified domain. Depending on the time you want to cancel the domain, specify ‘end’ or ‘immediately’ for the endTime attribute.

Upon canceling a domain name (or any other product) it will be shown under cancellations in the TransIP control panel. By using the API method outlined above (Retrieve an existing domain) you’ll be able to see if the domain name has been canceled yet.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Request Attributes
endTime
string, optional

Cancellation time, either ‘end’ or ‘immediately’

PATCH /domains/example.com
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "handover",
"targetCustomerName": "example2"
}
' \
"https://api.transip.nl/v6/domains/example.com"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "action": "handover",
  "targetCustomerName": "example2"
}
Response204404409409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "domain 'example.com' has a transfer lock and thus cannot be transferred"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on domain 'example.com' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Error Processing Handover, One or more items are already being handovered"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Target user 'example2' is not capable of receiving handover"
}

Handover a domain

PATCH/domains/{domainName}

Handover a domain to another TransIP Account. This call will initiate the handover process. the actual handover will be done when the target customer accepts the handover.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Request Attributes
action
string, required

targetCustomerName
string, required

Branding

TransIP allows for multiple ways to whitelabel domains. Among others, this includes changing ‘banners’ shown in the WHOIS. For example, for some TLDs, the company name and URL can be specified.

Aside from this, you can place your .nl domain names in a whitelabel account so the registrar for .nl domain names is changed to a neutral name.

GET /domains/example.com/branding
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/branding"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404406
Response headers
Content-Type: application/json
Response body
{
  "branding": {
    "companyName": "Example B.V.",
    "supportEmail": "admin@example.com",
    "companyUrl": "www.example.com",
    "termsOfUsageUrl": "www.example.com/tou",
    "bannerLine1": "Example B.V.",
    "bannerLine2": "Example",
    "bannerLine3": "http://www.example.com/products"
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}

Get domain branding

GET/domains/{domainName}/branding

Get domain branding information for a given domain name.

Please note this API call does not return the whitelabel account status (just the branding).

Branding options can be altered from the TransIP control panel or by using the API call outlined below.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Response Attributes
branding
DomainBranding

Hide child attributesShow child attributes
companyName
string

The company name displayed in transfer-branded e-mails

supportEmail
string

The support email used for transfer-branded e-mails

companyUrl
string

The company url displayed in transfer-branded e-mails

termsOfUsageUrl
string,null

The terms of usage url as displayed in transfer-branded e-mails

bannerLine1
string

The first generic bannerLine displayed in whois-branded whois output.

bannerLine2
string

The second generic bannerLine displayed in whois-branded whois output.

bannerLine3
string

The third generic bannerLine displayed in whois-branded whois output.

PUT /domains/example.com/branding
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"branding": {
"companyName": "Example B.V.",
"supportEmail": "admin@example.com",
"companyUrl": "www.example.com",
"termsOfUsageUrl": "www.example.com/tou",
"bannerLine1": "Example B.V.",
"bannerLine2": "Example",
"bannerLine3": "http://www.example.com/products"
}
}
' \
"https://api.transip.nl/v6/domains/example.com/branding"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "branding": {
    "companyName": "Example B.V.",
    "supportEmail": "admin@example.com",
    "companyUrl": "www.example.com",
    "termsOfUsageUrl": "www.example.com/tou",
    "bannerLine1": "Example B.V.",
    "bannerLine2": "Example",
    "bannerLine3": "http://www.example.com/products"
  }
}
Response204404406406409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain TLD doesn't support branding"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain 'example.com' has action 'changeNameservers' running, no modification is allowed"
}

Update domain branding

PUT/domains/{domainName}/branding

Domain name branding can be set or altered using this API call. Among others, you can set your own company name and company URL, replacing the default values which are usually TransIP contact details.

Changes will not apply to previously registered domain names. The new settings will, in most cases, only show up for newly registered domain names after the changes were made.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Request Attributes
branding
DomainBranding, required

companyName
string

The company name displayed in transfer-branded e-mails

supportEmail
string

The support email used for transfer-branded e-mails

companyUrl
string

The company url displayed in transfer-branded e-mails

termsOfUsageUrl
string,null

The terms of usage url as displayed in transfer-branded e-mails

bannerLine1
string

The first generic bannerLine displayed in whois-branded whois output.

bannerLine2
string

The second generic bannerLine displayed in whois-branded whois output.

bannerLine3
string

The third generic bannerLine displayed in whois-branded whois output.

Contacts

Domain names are registered using multiple contacts, each fulfilling a role related to the domain name and its underlying infrastructure. Contacts can be one of the following: owner, administrative contact and technical contact. These can be the same.

GET /domains/example.com/contacts
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/contacts"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404406
Response headers
Content-Type: application/json
Response body
{
  "contacts": [
    {
      "type": "registrant",
      "firstName": "John",
      "lastName": "Doe",
      "companyName": "Example B.V.",
      "companyKvk": "83057825",
      "companyType": "BV",
      "street": "Easy street",
      "number": "12",
      "postalCode": "1337 XD",
      "city": "Leiden",
      "phoneNumber": "+31 715241919",
      "faxNumber": "+31 715241919",
      "email": "example@example.com",
      "country": "nl"
    }
  ]
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}

List all contacts for a domain

GET/domains/{domainName}/contacts

Returns a list of all contacts for a domain. One or multiple of the following contacts will be shown:

  • Domain name owner;

  • Administrative contact;

  • Technical contact.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Response Attributes
contacts
Array (WhoisContact)

Hide child attributesShow child attributes
type
string

The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’

firstName
string

The firstName of this Contact

lastName
string

The lastName of this Contact

companyName
string

The companyName of this Contact, in case of a company

companyKvk
string

The kvk number of this Contact, in case of a company

companyType
string

The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’

street
string

The street of the address of this Contact

number
string

The number part of the address of this Contact

postalCode
string

The postalCode part of the address of this Contact

city
string

The city part of the address of this Contact

phoneNumber
string

The phoneNumber of this Contact

faxNumber
string,null

The faxNumber of this Contact

email
string

The email address of this Contact

country
string

The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.

PUT /domains/example.com/contacts
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
]
}
' \
"https://api.transip.nl/v6/domains/example.com/contacts"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "contacts": [
    {
      "type": "registrant",
      "firstName": "John",
      "lastName": "Doe",
      "companyName": "Example B.V.",
      "companyKvk": "83057825",
      "companyType": "BV",
      "street": "Easy street",
      "number": "12",
      "postalCode": "1337 XD",
      "city": "Leiden",
      "phoneNumber": "+31 715241919",
      "faxNumber": "+31 715241919",
      "email": "example@example.com",
      "country": "nl"
    }
  ]
}
Response204404406406409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain TLD doesn't support 'x' capability"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain 'example.com' is locked, no modification is allowed"
}

Update contacts for a domain

PUT/domains/{domainName}/contacts

Use this API call in case you want to alter domain name contacts after the registration of a domain name.

  • Some TLD do not support changing all the fields like the AddressData. This will throw an error with a 406 http status code.
URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Request Attributes
contacts
Array (WhoisContact), required

type
string

The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’

firstName
string

The firstName of this Contact

lastName
string

The lastName of this Contact

companyName
string

The companyName of this Contact, in case of a company

companyKvk
string

The kvk number of this Contact, in case of a company

companyType
string

The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’

street
string

The street of the address of this Contact

number
string

The number part of the address of this Contact

postalCode
string

The postalCode part of the address of this Contact

city
string

The city part of the address of this Contact

phoneNumber
string

The phoneNumber of this Contact

faxNumber
string,null

The faxNumber of this Contact

email
string

The email address of this Contact

country
string

The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.

Default Contacts

This is the API endpoint for default domain contacts.

GET /domain-defaults/contacts
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domain-defaults/contacts"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404
Response headers
Content-Type: application/json
Response body
{
  "contacts": [
    {
      "type": "registrant",
      "firstName": "John",
      "lastName": "Doe",
      "companyName": "Example B.V.",
      "companyKvk": "83057825",
      "companyType": "BV",
      "street": "Easy street",
      "number": "12",
      "postalCode": "1337 XD",
      "city": "Leiden",
      "phoneNumber": "+31 715241919",
      "faxNumber": "+31 715241919",
      "email": "example@example.com",
      "country": "nl"
    }
  ]
}
Response headers
Content-Type: application/json
Response body
{
  "error": "No default domain contacts were found for this account"
}

List all default domain contacts for your account

GET/domain-defaults/contacts

Returns a list of all contacts for an account. One or multiple of the following contacts will be shown:

  • Registrant contact;

  • Administrative contact;

  • Technical contact.

Response Attributes
contacts
Array (WhoisContact)

Hide child attributesShow child attributes
type
string

The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’

firstName
string

The firstName of this Contact

lastName
string

The lastName of this Contact

companyName
string

The companyName of this Contact, in case of a company

companyKvk
string

The kvk number of this Contact, in case of a company

companyType
string

The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’

street
string

The street of the address of this Contact

number
string

The number part of the address of this Contact

postalCode
string

The postalCode part of the address of this Contact

city
string

The city part of the address of this Contact

phoneNumber
string

The phoneNumber of this Contact

faxNumber
string,null

The faxNumber of this Contact

email
string

The email address of this Contact

country
string

The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.

PUT /domain-defaults/contacts
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
]
}
' \
"https://api.transip.nl/v6/domain-defaults/contacts"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "contacts": [
    {
      "type": "registrant",
      "firstName": "John",
      "lastName": "Doe",
      "companyName": "Example B.V.",
      "companyKvk": "83057825",
      "companyType": "BV",
      "street": "Easy street",
      "number": "12",
      "postalCode": "1337 XD",
      "city": "Leiden",
      "phoneNumber": "+31 715241919",
      "faxNumber": "+31 715241919",
      "email": "example@example.com",
      "country": "nl"
    }
  ]
}
Response204404
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "No default domain contacts were found for this account"
}

Update contacts for a account

PUT/domain-defaults/contacts

Use this API call in case you want to alter default domain contacts for your account.

Request Attributes
contacts
Array (WhoisContact), required

type
string

The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’

firstName
string

The firstName of this Contact

lastName
string

The lastName of this Contact

companyName
string

The companyName of this Contact, in case of a company

companyKvk
string

The kvk number of this Contact, in case of a company

companyType
string

The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’

street
string

The street of the address of this Contact

number
string

The number part of the address of this Contact

postalCode
string

The postalCode part of the address of this Contact

city
string

The city part of the address of this Contact

phoneNumber
string

The phoneNumber of this Contact

faxNumber
string,null

The faxNumber of this Contact

email
string

The email address of this Contact

country
string

The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.

DNS

This is the API endpoint for changing DNS records. Any changes made here will be pushed to the TransIP nameservers.

DNS entries altered, added or removed here will only be propagated when the nameservers for a domain name are set to TransIP’s.

GET /domains/example.com/dns
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/dns"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404406
Response headers
Content-Type: application/json
Response body
{
  "dnsEntries": [
    {
      "name": "www",
      "expire": 86400,
      "type": "A",
      "content": "127.0.0.1"
    }
  ]
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}

List all DNS entries for a domain

GET/domains/{domainName}/dns

List all DNS entries for a domain

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Response Attributes
dnsEntries
Array (DnsEntry)

Hide child attributesShow child attributes
name
string

The name of the dns entry, for example ‘@’ or ‘www’

expire
number

The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration

type
string

The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’

content
string

The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’

POST /domains/example.com/dns
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"dnsEntry": {
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
}
' \
"https://api.transip.nl/v6/domains/example.com/dns"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "dnsEntry": {
    "name": "www",
    "expire": 86400,
    "type": "A",
    "content": "127.0.0.1"
  }
}
Response201403404406406409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "DNS Entry changes have temporarily been disabled"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Invalid DNS entry type 'B'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Error fetching Dns Entries: DNS Entries are currently being saved"
}

Add a new single DNS entry to a domain

POST/domains/{domainName}/dns

Add a single DNS entry to the existing zone file.

In case you want to overwrite the entire zone, please use the method below.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Request Attributes
dnsEntry
DnsEntry, required

name
string

The name of the dns entry, for example ‘@’ or ‘www’

expire
number

The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration

type
string

The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’

content
string

The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’

PATCH /domains/example.com/dns
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"dnsEntry": {
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
}
' \
"https://api.transip.nl/v6/domains/example.com/dns"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "dnsEntry": {
    "name": "www",
    "expire": 86400,
    "type": "A",
    "content": "127.0.0.1"
  }
}
Response204403404406406406406409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "DNS Entry changes have temporarily been disabled"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'mieperm@ns.nl'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Invalid DNS entry type 'B'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Could not find match for DNS entry 'test 300 A'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Multiple matches found for DNS entry 'test 300 A'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Error fetching Dns Entries: DNS Entries are currently being saved"
}

Update single DNS entry

PATCH/domains/{domainName}/dns

Update the content of a single DNS entry, identified by the name, expire and type attributes.

When multiple or none of the current DNS entries matches, the response will be an error with http status code 406.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Request Attributes
dnsEntry
DnsEntry, required

name
string

The name of the dns entry, for example ‘@’ or ‘www’

expire
number

The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration

type
string

The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’

content
string

The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’

PUT /domains/example.com/dns
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"dnsEntries": [
{
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
]
}
' \
"https://api.transip.nl/v6/domains/example.com/dns"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "dnsEntries": [
    {
      "name": "www",
      "expire": 86400,
      "type": "A",
      "content": "127.0.0.1"
    }
  ]
}
Response204403404406409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "DNS Entry changes have temporarily been disabled"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Error setting Dns Entries"
}

Update all DNS entries for a domain

PUT/domains/{domainName}/dns

This method will wipe the entire DNS zone file and replace it with the given records. Please note that data is not recoverable using an integrated method in the API, so make sure to use this with care.

There is no hard limit as to the amount of DNS entries that can be added at once.

Warning: all current entries will be replaced!

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Request Attributes
dnsEntries
Array (DnsEntry), required

name
string

The name of the dns entry, for example ‘@’ or ‘www’

expire
number

The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration

type
string

The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’

content
string

The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’

DELETE /domains/example.com/dns
Request
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"dnsEntry": {
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
}
' \
"https://api.transip.nl/v6/domains/example.com/dns"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "dnsEntry": {
    "name": "www",
    "expire": 86400,
    "type": "A",
    "content": "127.0.0.1"
  }
}
Response204403404404409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "DNS Entry changes have temporarily been disabled."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "DNS Entry not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Error fetching Dns Entries: DNS Entries are currently being saved"
}

Remove a DNS entry from a domain

DELETE/domains/{domainName}/dns

Remove a single DNS entry from a domain specified by the dnsEntry parameter.

If there are duplicate DNS entries found then a single entry will be removed when performing this action.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Request Attributes
dnsEntry
DnsEntry, required

name
string

The name of the dns entry, for example ‘@’ or ‘www’

expire
number

The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration

type
string

The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’

content
string

The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’

DNSSEC

By utilizing DNSSEC, DNS resolvers ask for authentication first. Notably, DNSSEC is based on the use of DNSSEC keys registered at the registry.

For DNSSEC to work, the appropriate information must be set at the registrar; in this case TransIP.

GET /domains/example.com/dnssec
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/dnssec"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404406
Response headers
Content-Type: application/json
Response body
{
  "dnsSecEntries": [
    {
      "keyTag": 67239,
      "flags": 1,
      "algorithm": 8,
      "publicKey": "AwEAAc31XDE3QWphFz6CR77Hp3ZjDRx7zqe1AXx1QMvqFKzrEKrX4oj2nv8zDquCotbQ1ObHI4KGLRf3ycaq0fYslXFJ1JxLxJUl/lpGvE8OkqdhGW3vj3YS9Mlbf0yYC2bNUY875UgDNRLqWtVSEXO/PCcqr3RIzpngu+6JF/1bfQB7ituFHxoanhAiWOpc24ZAnrhmyIsDwyy1k0iyvVTSyPugnYD/bF7CR7ObQCiuucjwCkSBHJ4gcihHvyPDU/DlsSJeEO/G31zFxzXwHjr3h3mdJE4mQuceS11e5/c9hht6rUL0PEGve1Ygknz+0ruAinlhFYnny2uxES5M9r0FIM="
    }
  ]
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}

List DNSSEC entries

GET/domains/{domainName}/dnssec

This API call lists all DNSSEC entries for a domain once set. This includes the key tag, flags, algorithm and public key.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Response Attributes
dnsSecEntries
Array (DnsSecEntry)

Hide child attributesShow child attributes
keyTag
number

A 5-digit key of the Zonesigner

flags
number

The signing key number, either 256 (Zone Signing Key) or 257 (Key Signing Key)

algorithm
number

The algorithm type that is used, click here to see the possible options.

publicKey
string

The public key

PUT /domains/example.com/dnssec
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"dnsSecEntries": [
{
"keyTag": 67239,
"flags": 1,
"algorithm": 8,
"publicKey": "AwEAAc31XDE3QWphFz6CR77Hp3ZjDRx7zqe1AXx1QMvqFKzrEKrX4oj2nv8zDquCotbQ1ObHI4KGLRf3ycaq0fYslXFJ1JxLxJUl/lpGvE8OkqdhGW3vj3YS9Mlbf0yYC2bNUY875UgDNRLqWtVSEXO/PCcqr3RIzpngu+6JF/1bfQB7ituFHxoanhAiWOpc24ZAnrhmyIsDwyy1k0iyvVTSyPugnYD/bF7CR7ObQCiuucjwCkSBHJ4gcihHvyPDU/DlsSJeEO/G31zFxzXwHjr3h3mdJE4mQuceS11e5/c9hht6rUL0PEGve1Ygknz+0ruAinlhFYnny2uxES5M9r0FIM="
}
]
}
' \
"https://api.transip.nl/v6/domains/example.com/dnssec"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "dnsSecEntries": [
    {
      "keyTag": 67239,
      "flags": 1,
      "algorithm": 8,
      "publicKey": "AwEAAc31XDE3QWphFz6CR77Hp3ZjDRx7zqe1AXx1QMvqFKzrEKrX4oj2nv8zDquCotbQ1ObHI4KGLRf3ycaq0fYslXFJ1JxLxJUl/lpGvE8OkqdhGW3vj3YS9Mlbf0yYC2bNUY875UgDNRLqWtVSEXO/PCcqr3RIzpngu+6JF/1bfQB7ituFHxoanhAiWOpc24ZAnrhmyIsDwyy1k0iyvVTSyPugnYD/bF7CR7ObQCiuucjwCkSBHJ4gcihHvyPDU/DlsSJeEO/G31zFxzXwHjr3h3mdJE4mQuceS11e5/c9hht6rUL0PEGve1Ygknz+0ruAinlhFYnny2uxES5M9r0FIM="
    }
  ]
}
Response204404406406406406406409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Key tag '0906' is invalid, please supply a number containing 5 digits"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Invalid algorithm 'CYBER', please supply one of the following algorithm: ..."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Invalid flag '255', please supply one of the following flags: ..."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "DNSSEC Entries for domain 'example.com' cannot be edited."
}

Update all DNSSEC entries

PUT/domains/{domainName}/dnssec

This method will replace all DNSSEC entries with the ones that are provided via the dnsSecEntries parameter.

Warning: all current entries will be replaced!

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Request Attributes
dnsSecEntries
Array (DnsSecEntry), required

keyTag
number

A 5-digit key of the Zonesigner

flags
number

The signing key number, either 256 (Zone Signing Key) or 257 (Key Signing Key)

algorithm
number

The algorithm type that is used, click here to see the possible options.

publicKey
string

The public key

Nameservers

This is the API endpoint for changing nameservers. The default nameservers can be set through the API or via the TransIP control panel.

In case the nameservers have not specifically been set, the whitelabel TransIP nameservers will be used for a whitelabel domain name registration and the non-whitelabeled TransIP nameservers will be used by default.

The TransIP nameservers (non-whitelabeled) are as follows:

GET /domains/example.com/nameservers
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/nameservers"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404406
Response headers
Content-Type: application/json
Response body
{
  "nameservers": [
    {
      "hostname": "ns0.transip.nl",
      "ipv4": "",
      "ipv6": ""
    }
  ]
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}

List nameservers for a domain

GET/domains/{domainName}/nameservers

This method will list all nameservers currently set for a domain.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Response Attributes
nameservers
Array (Nameserver)

Hide child attributesShow child attributes
hostname
string

The hostname of this nameserver

ipv4
string,null

Optional ipv4 glue record for this nameserver

ipv6
string,null

Optional ipv6 glue record for this nameserver

PUT /domains/example.com/nameservers
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
]
}
' \
"https://api.transip.nl/v6/domains/example.com/nameservers"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "nameservers": [
    {
      "hostname": "ns0.transip.nl",
      "ipv4": "",
      "ipv6": ""
    }
  ]
}
Response204404406
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}

Update nameservers for a domain

PUT/domains/{domainName}/nameservers

Change the nameservers for a domain.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Request Attributes
nameservers
Array (Nameserver), required

hostname
string

The hostname of this nameserver

ipv4
string,null

Optional ipv4 glue record for this nameserver

ipv6
string,null

Optional ipv6 glue record for this nameserver

Actions

This is the API endpoint for managing domain actions.

GET /domains/example.com/actions
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/actions"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404406
Response headers
Content-Type: application/json
Response body
{
  "action": {
    "name": "changeNameservers",
    "message": "success",
    "hasFailed": false
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}

Get current domain action

GET/domains/{domainName}/actions

Domain actions are kept track of by TransIP. Domain actions include, for example, changing nameservers.

When no action is running the action’s name parameter will be null.

The action message will contain a failure message, please provide the information to fix this using the method below.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Response Attributes
action
DomainAction

Hide child attributesShow child attributes
name
string

The name of this DomainAction.

message
string

If this action has failed, this field will contain an descriptive message.

hasFailed
boolean

If this action has failed, this field will be true.

PATCH /domains/example.com/actions
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"authCode": "",
"dnsEntries": [
{
"name": "www",
"expire": 86400,
"type": "A",
"content": "127.0.0.1"
}
],
"nameservers": [
{
"hostname": "ns0.transip.nl",
"ipv4": "",
"ipv6": ""
}
],
"contacts": [
{
"type": "registrant",
"firstName": "John",
"lastName": "Doe",
"companyName": "Example B.V.",
"companyKvk": "83057825",
"companyType": "BV",
"street": "Easy street",
"number": "12",
"postalCode": "1337 XD",
"city": "Leiden",
"phoneNumber": "+31 715241919",
"faxNumber": "+31 715241919",
"email": "example@example.com",
"country": "nl"
}
]
}
' \
"https://api.transip.nl/v6/domains/example.com/actions"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "authCode": "",
  "dnsEntries": [
    {
      "name": "www",
      "expire": 86400,
      "type": "A",
      "content": "127.0.0.1"
    }
  ],
  "nameservers": [
    {
      "hostname": "ns0.transip.nl",
      "ipv4": "",
      "ipv6": ""
    }
  ],
  "contacts": [
    {
      "type": "registrant",
      "firstName": "John",
      "lastName": "Doe",
      "companyName": "Example B.V.",
      "companyKvk": "83057825",
      "companyType": "BV",
      "street": "Easy street",
      "number": "12",
      "postalCode": "1337 XD",
      "city": "Leiden",
      "phoneNumber": "+31 715241919",
      "faxNumber": "+31 715241919",
      "email": "example@example.com",
      "country": "nl"
    }
  ]
}
Response204404406409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain 'example.com' has action 'changeNameservers' running, no modification is allowed."
}

Retry domain action

PATCH/domains/{domainName}/actions

Domain actions can fail due to wrong information, this method allows you to retry an action. You only have to specify information that is required for the action.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Request Attributes
authCode
string, optional

dnsEntries
Array (DnsEntry), optional

name
string

The name of the dns entry, for example ‘@’ or ‘www’

expire
number

The expiration period of the dns entry, in seconds. For example 86400 for a day of expiration

type
string

The type of dns entry. Possbible types are ‘A’, ‘AAAA’, ‘CNAME’, ‘MX’, ‘NS’, ‘TXT’, ‘SRV’, ‘SSHFP’, ‘TLSA’, ‘CAA’ and ‘NAPTR’

content
string

The content of of the dns entry, for example ‘10 mail’, ‘127.0.0.1’ or ‘www’

nameservers
Array (Nameserver), optional

hostname
string

The hostname of this nameserver

ipv4
string,null

Optional ipv4 glue record for this nameserver

ipv6
string,null

Optional ipv6 glue record for this nameserver

contacts
Array (WhoisContact), optional

type
string

The type of this Contact, ‘registrant’, ‘administrative’ or ‘technical’

firstName
string

The firstName of this Contact

lastName
string

The lastName of this Contact

companyName
string

The companyName of this Contact, in case of a company

companyKvk
string

The kvk number of this Contact, in case of a company

companyType
string

The type number of this Contact, in case of a company. Possible types are: ‘BV’, ‘BVI/O’, ‘COOP’, ‘CV’, ‘EENMANSZAAK’, ‘KERK’, ‘NV’, ‘OWM’, ‘REDR’, ‘STICHTING’, ‘VERENIGING’, ‘VOF’, ‘BEG’, ‘BRO’, ‘EESV’ and ‘ANDERS’

street
string

The street of the address of this Contact

number
string

The number part of the address of this Contact

postalCode
string

The postalCode part of the address of this Contact

city
string

The city part of the address of this Contact

phoneNumber
string

The phoneNumber of this Contact

faxNumber
string,null

The faxNumber of this Contact

email
string

The email address of this Contact

country
string

The country of this Contact, one of the ISO 3166-1 2 letter country codes, must be lowercase.

DELETE /domains/example.com/actions
Request
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/actions"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response204404406409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Unable to cancel the running action for 'example.com' at this time"
}

Cancel domain action

DELETE/domains/{domainName}/actions

With this method you are able to cancel a domain action while it is still pending or being processed.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Ssl

This is the API endpoint for SSL services on a domain.

GET /domains/example.com/ssl
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/ssl"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404406
Response headers
Content-Type: application/json
Response body
{
  "certificates": [
    {
      "certificateId": 12358,
      "commonName": "example.com",
      "expirationDate": "2019-10-24 12:59:59",
      "status": "active",
      "canReissue": "true"
    }
  ]
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}

List all SSL certificates

GET/domains/{domainName}/ssl

Retrieves a list of all SSL certificates for a domain.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Response Attributes
certificates
Array (SslCertificate)

Hide child attributesShow child attributes
certificateId
number

The id of the certificate, can be used to retrieve additional info

commonName
string

The domain name that the SSL certificate is added to. Start with ‘*.’ when the certificate is a wildcard.

expirationDate
string

Expiration date

status
string

The current status, either ‘active’, ‘inactive’, ‘busy’ or ‘expired’

Active: Certificate is not expired and can be used
Inactive: Certificate is being processed
Busy: Order is in progress
Expired: Certificate is malformed or gone.

canReissue
string

Whether the certificate can be reissued

GET /domains/example.com/ssl/12358
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/ssl/12358"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404406
Response headers
Content-Type: application/json
Response body
{
  "certificate": {
    "certificateId": 12358,
    "commonName": "example.com",
    "expirationDate": "2019-10-24 12:59:59",
    "status": "active",
    "canReissue": "true"
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Certificate with id '1337' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}

Get SSL certificate by id

GET/domains/{domainName}/ssl/{certificateId}

Retrieves a single SSL certificate by id.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

certificateId
number (required) Example: 12358

The id of the SSL certificate

Response Attributes
certificate
SslCertificate

Hide child attributesShow child attributes
certificateId
number

The id of the certificate, can be used to retrieve additional info

commonName
string

The domain name that the SSL certificate is added to. Start with ‘*.’ when the certificate is a wildcard.

expirationDate
string

Expiration date

status
string

The current status, either ‘active’, ‘inactive’, ‘busy’ or ‘expired’

Active: Certificate is not expired and can be used
Inactive: Certificate is being processed
Busy: Order is in progress
Expired: Certificate is malformed or gone.

canReissue
string

Whether the certificate can be reissued

AuthCode

This is the API endpoint for obtaining domain auth-codes

GET /domains/example.com/auth-code
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/auth-code"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404405
Response headers
Content-Type: application/json
Response body
{
  "authCode": ""
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Tld '.be' does not allow this action"
}

Get auth-code of a domain name

GET/domains/{domainName}/auth-code

Returns the auth-code for a domain name.

Certain TLDs (like .be and .eu) do not provide direct access to the auth code and will send it to the email address of the current registrant upon request. To request the registry of this TLD to send the auth code, use the POST method instead.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Response Attributes
authCode
string

POST /domains/example.com/auth-code
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/auth-code"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response201404405
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "Domain with name 'example.com' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Tld '.com' does not allow this action"
}

Request an auth code for a domain name

POST/domains/{domainName}/auth-code

Request the auth-code for a domain name.

This method will request the registry to email the auth code to the current registrant’s email address. This option is only supported for certain TLDs (like .be and .eu), where the registries do not provide direct access to the auth codes. For all other TLDs, you can use the GET method to instantly retrieve the code.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Whois

This is the API endpoint for executing whois domain lookups.

GET /domains/example.com/whois
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domains/example.com/whois"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200406
Response headers
Content-Type: application/json
Response body
{
  "whois": ""
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid domain name: 'power-ranger$.nl'"
}

Get WHOIS information for a domain name

GET/domains/{domainName}/whois

This method will return the WHOIS information for a domain name.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Response Attributes
whois
string

Whitelabel

Whitelabel accounts are used in order to hide the TransIP registrar details in a WHOIS lookup for a domain name. When a domain name is registered under a whitelabel account, the registrar will be an alternative whitelabel company, not offering domain name registration services on its own.

Whitelabel accounts are charged at an additional rate. Already registered domain names will be registered again, as they’re technically transfered to the new whitelabel registrar. This means existing domain names are charged in order to add them to your whitelabel account (though at a discounted rate).

Currently, TransIP’s whitelabeling service is available exclusively for .nl domains.

POST /whitelabel
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/whitelabel"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response201406
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "You already have a whitelabel account."
}

Order a whitelabel account

POST/whitelabel

Order a whitelabel account from the API. Note that you do not need to order a whitelabel account for every registered domain name.

Please check the TransIP control panel to view the cost for a whitelabel account.

Warning: This API call will create an invoice!

Availability

Check availability for domain names.

Response can be ‘inyouraccount’, ‘unavailable’, ‘notfree’, ‘free’, ‘internalpull’ or ‘internalpush’.

  • inyouraccount: The domain name is already in your account;

  • unavailable: The domain name is currently unavailable and can not be registered due to unknown reasons. In most cases, this has to do with registry policy (eg. the domain name is too short);

  • notfree: The domain name has already been registered;

  • free: The domain name is available and can be registered;

  • internalpull: The domain name is currently registered at TransIP and is available to be pulled from another account to yours;

  • internalpush: The domain name is currently registered at TransIP in your account and is available to be pushed to another account.

GET /domain-availability/example.com
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/domain-availability/example.com"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "availability": {
    "domainName": "example.com",
    "status": "free",
    "actions": [
      "register"
    ]
  }
}

Check availability for a domain name

GET/domain-availability/{domainName}

This method allows you to check the availability for a domain name.

URI Parameters
HideShow
domainName
string (required) Example: example.com

Domain name

Response Attributes
availability
DomainCheckResult

Hide child attributesShow child attributes
domainName
string

The name of the domain

status
string

The status for this domain. Possible statuses are: ‘inyouraccount’, ‘unavailable’, ‘notfree’, ‘free’, ‘internalpull’ and ‘internalpush’

actions
Array (string)

List of available actions to perform on this domain. Possible actions are: ‘register’, ‘transfer’, ‘internalpull’ and ‘internalpush’

GET /domain-availability
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"domainNames": [
"example.com",
"example.nl"
]
}
' \
"https://api.transip.nl/v6/domain-availability"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "domainNames": [
    "example.com",
    "example.nl"
  ]
}
Response200
Response headers
Content-Type: application/json
Response body
{
  "availability": [
    {
      "domainName": "example.com",
      "status": "free",
      "actions": [
        "register"
      ]
    }
  ]
}

Check the availability for multiple domain names

GET/domain-availability

Check the availability for multiple domain names.

Request Attributes
domainNames
Array (string), required

array of domainNames to check

Response Attributes
availability
Array (DomainCheckResult)

Hide child attributesShow child attributes
domainName
string

The name of the domain

status
string

The status for this domain. Possible statuses are: ‘inyouraccount’, ‘unavailable’, ‘notfree’, ‘free’, ‘internalpull’ and ‘internalpush’

actions
Array (string)

List of available actions to perform on this domain. Possible actions are: ‘register’, ‘transfer’, ‘internalpull’ and ‘internalpush’

Tlds

This is the API endpoint for TLD services.

GET /tlds
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/tlds"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "tlds": [
    {
      "name": ".nl",
      "price": 399,
      "recurringPrice": 749,
      "capabilities": [
        "canRegister"
      ],
      "minLength": 2,
      "maxLength": 63,
      "registrationPeriodLength": 12,
      "cancelTimeFrame": 1
    }
  ]
}

List all TLDs

GET/tlds

This method will return a list of all available TLDs currently offered by TransIP.

Response Attributes
tlds
Array (Tld)

Hide child attributesShow child attributes
name
string

The name of this TLD, including the starting dot. E.g. .nl or .com.

price
number

Price of the TLD in cents

recurringPrice
number

Price for renewing the TLD in cents

capabilities
Array (string)

A list of the capabilities that this Tld has (the things that can be done with a domain under this tld). Possible capabilities are: ‘requiresAuthCode’, ‘canRegister’, ‘canTransferWithOwnerChange’, ‘canTransferWithoutOwnerChange’, ‘canSetLock’, ‘canSetOwner’, ‘canSetContacts’, ‘canSetNameservers’, ‘supportsDnsSec’

minLength
number

The minimum amount of characters need for registering a domain under this TLD.

maxLength
number

The maximum amount of characters need for registering a domain under this TLD.

registrationPeriodLength
number

Length in months of each registration or renewal period.

cancelTimeFrame
number

Number of days a domain needs to be canceled before the renewal date.

GET /tlds/.nl
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/tlds/.nl"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "tld": {
    "name": ".nl",
    "price": 399,
    "recurringPrice": 749,
    "capabilities": [
      "canRegister"
    ],
    "minLength": 2,
    "maxLength": 63,
    "registrationPeriodLength": 12,
    "cancelTimeFrame": 1
  }
}

Get info for a TLD

GET/tlds/{tld}

Get information about a specific TLD. General details such as price, renewal price and minimum registration length are outlined in the output.

URI Parameters
HideShow
tld
string (required) Example: .nl

Top Level Domain.

Response Attributes
tld
Tld

Hide child attributesShow child attributes
name
string

The name of this TLD, including the starting dot. E.g. .nl or .com.

price
number

Price of the TLD in cents

recurringPrice
number

Price for renewing the TLD in cents

capabilities
Array (string)

A list of the capabilities that this Tld has (the things that can be done with a domain under this tld). Possible capabilities are: ‘requiresAuthCode’, ‘canRegister’, ‘canTransferWithOwnerChange’, ‘canTransferWithoutOwnerChange’, ‘canSetLock’, ‘canSetOwner’, ‘canSetContacts’, ‘canSetNameservers’, ‘supportsDnsSec’

minLength
number

The minimum amount of characters need for registering a domain under this TLD.

maxLength
number

The maximum amount of characters need for registering a domain under this TLD.

registrationPeriodLength
number

Length in months of each registration or renewal period.

cancelTimeFrame
number

Number of days a domain needs to be canceled before the renewal date.

/ VPS

VPS

The API endpoint for VPS services allows you to manage all VPS services in your account.

GET /vps
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "vpss": [
    {
      "name": "example-vps",
      "uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
      "description": "example VPS",
      "productName": "vps-bladevps-x1",
      "operatingSystem": "ubuntu-18.04",
      "diskSize": 157286400,
      "memorySize": 4194304,
      "cpus": 2,
      "status": "running",
      "flavor": "shared",
      "ipAddress": "37.97.254.6",
      "macAddress": "52:54:00:3b:52:65",
      "currentSnapshots": 1,
      "maxSnapshots": 10,
      "isLocked": false,
      "isBlocked": false,
      "isCustomerLocked": false,
      "availabilityZone": "ams0",
      "tags": [
        "customTag",
        "anotherTag"
      ],
      "createdAt": "2024-01-01 23:59:59"
    }
  ]
}

List all VPSs

GET/vps

Returns a list of all VPSs in the account.

This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.

URI Parameters
HideShow
tags
string (optional) Example: /vps?tags=customTag,anotherTag

Tags to filter by, separated by a comma.

Response Attributes
vpss
Array (Vps)

Hide child attributesShow child attributes
name
string

The unique VPS name

uuid
string

The unique identifier for the VPS

description
string,null

The name that can be set by customer

productName
string

The product name

operatingSystem
string,null

The VPS OperatingSystem

diskSize
number

The VPS disk size in kB

memorySize
number

The VPS memory size in kB

cpus
number

The VPS cpu count

status
string

The VPS status, either ‘created’, ‘installing’, ‘running’, ‘stopped’ or ‘paused’

flavor
string

The VPS flavor, either ‘dedicated’, ‘shared’ or ‘flexible’

ipAddress
string

The VPS main ipAddress

macAddress
string

The VPS macaddress

currentSnapshots
number

The amount of snapshots that is used on this VPS

maxSnapshots
number

The maximum amount of snapshots for this VPS

isLocked
boolean

Whether or not another process is already doing stuff with this VPS

isBlocked
boolean

If the VPS is administratively blocked

isCustomerLocked
boolean

If this VPS is locked by the customer

availabilityZone
string

The name of the availability zone the VPS is in

tags
Array (string)

The custom tags added to this VPS

createdAt
string

The VPS creation datetime (UTC)

GET /vps/example-vps
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200403404
Response headers
Content-Type: application/json
Response body
{
  "vps": {
    "name": "example-vps",
    "uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
    "description": "example VPS",
    "productName": "vps-bladevps-x1",
    "operatingSystem": "ubuntu-18.04",
    "diskSize": 157286400,
    "memorySize": 4194304,
    "cpus": 2,
    "status": "running",
    "flavor": "shared",
    "ipAddress": "37.97.254.6",
    "macAddress": "52:54:00:3b:52:65",
    "currentSnapshots": 1,
    "maxSnapshots": 10,
    "isLocked": false,
    "isBlocked": false,
    "isCustomerLocked": false,
    "availabilityZone": "ams0",
    "tags": [
      "customTag",
      "anotherTag"
    ],
    "createdAt": "2024-01-01 23:59:59"
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with identifier 'example-vps' not found"
}

Get VPS by identifier

GET/vps/{vpsIdentifier}

Get information on specific VPS by identifier (name or uuid).

Note: for vpsIdentifier, use the provided name (format: username-vpsXX) or uuid.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Response Attributes
vps
Vps

Hide child attributesShow child attributes
name
string

The unique VPS name

uuid
string

The unique identifier for the VPS

description
string,null

The name that can be set by customer

productName
string

The product name

operatingSystem
string,null

The VPS OperatingSystem

diskSize
number

The VPS disk size in kB

memorySize
number

The VPS memory size in kB

cpus
number

The VPS cpu count

status
string

The VPS status, either ‘created’, ‘installing’, ‘running’, ‘stopped’ or ‘paused’

flavor
string

The VPS flavor, either ‘dedicated’, ‘shared’ or ‘flexible’

ipAddress
string

The VPS main ipAddress

macAddress
string

The VPS macaddress

currentSnapshots
number

The amount of snapshots that is used on this VPS

maxSnapshots
number

The maximum amount of snapshots for this VPS

isLocked
boolean

Whether or not another process is already doing stuff with this VPS

isBlocked
boolean

If the VPS is administratively blocked

isCustomerLocked
boolean

If this VPS is locked by the customer

availabilityZone
string

The name of the availability zone the VPS is in

tags
Array (string)

The custom tags added to this VPS

createdAt
string

The VPS creation datetime (UTC)

POST /vps
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"productName": "vps-bladevps-x8",
"addons": [
"vps-addon-1-extra-cpu-core"
],
"availabilityZone": "ams0",
"description": "example vps description",
"operatingSystem": "ubuntu-18.04",
"installFlavour": "installer",
"hostname": "server01.example.com",
"username": "linus",
"hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
"sshKeys": [
"ssh-rsa AAAAB3NzaC1yc2EAAA...",
"ssh-ed25519 AAAAC3NzaC1l..."
],
"base64InstallText": "",
"licenses": [
"cpanel-premier-200"
]
}
' \
"https://api.transip.nl/v6/vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "productName": "vps-bladevps-x8",
  "addons": [
    "vps-addon-1-extra-cpu-core"
  ],
  "availabilityZone": "ams0",
  "description": "example vps description",
  "operatingSystem": "ubuntu-18.04",
  "installFlavour": "installer",
  "hostname": "server01.example.com",
  "username": "linus",
  "hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
  "sshKeys": [
    "ssh-rsa AAAAB3NzaC1yc2EAAA...",
    "ssh-ed25519 AAAAC3NzaC1l..."
  ],
  "base64InstallText": "",
  "licenses": [
    "cpanel-premier-200"
  ]
}
Response201403404404404404404406406406406406406406406406406406406406406
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "No valid payment information found. Please add your payment information through the Controlpanel on the website."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS product 'vps-bladevps-x1337' is not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS product addon 'vps-addon-extra-pie' is not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "OperatingSystem with name 'windows-xp' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The availability zone 'wtf1' is not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The availability zone 'ams0' is not available"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid hostname: 'ex@mple.test.nl'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "InstallText not base64 encoded"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The decoded base64InstallText is over 49152 bytes (48 KiB) long"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided SSH key 'ssh-rsa AAAAB3NzaC_INVALIDKEY_1yc2EAAAADAQA' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Provided installFlavour 'strawberry' not supported for this operatingsystem, available flavours are: installer"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "OperatingSystem 'WindowsServer2022Standard' is not supported on the specifications of the provided Vps"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided parameter 'username' can be 32 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided parameter 'description' can be 32 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "License 'plesk-co-op-50' is invalid for operating system 'CPanel-alma8-latest'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Only one operating system license should be provided"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Field 'licenses' with value 'cpanel-premier-200!' contains a symbol, this is now allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Currently we only support setting the hashed password for the root user"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Given password is not hashed with the bcrypt algorithm"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Parameter 'hashedPassword' can only be set in combination with the cloudinit installation flavour"
}

Order a new VPS

POST/vps

Using this API call, you are able to order a new VPS. Values associated to the newly delivered VPS will be returned in a new call respectively. When the new VPS is delivered it will be added to the output of the VPS list method above.

  • You can specify additional add-ons in an array (not required) to customize the specifications of your VPS;

  • To get a list of available add-ons, please use the List all VPS products call;

  • When a hostname is provided, the first 32 chars of this will be used as the description of the VPS. The hostname will be validated when ordering a preinstallable web controlpanel like cPanel.

Provide a installFlavour to choose whether a operatingSystem should be deployed with a regular installer or a preinstalled cloudinit image. Check the GET OperatingSystems function to see what flavours are available for you operatingSystem. When choosing installer the base64InstallText will be interpreted as a preseed or kickstart file, when choosing cloudinit it will be interpreted as cloudinit UserData.

SSHKeys are optional for a cloudinit installation, when no keys are provided a OneTimePassword will be generated and emailed to you.

Warning: This API call will create an invoice!

Request Attributes
productName
string, required

Name of the product

addons
Array (string), optional

Array with additional addons

availabilityZone
string, optional

The name of the availability zone where the vps should be created

description
string, optional

The description of the VPS

operatingSystem
string, optional

The name of the operating system to install

installFlavour
string, optional

The flavour of OS installation installer, preinstallable or cloudinit check GET OperatingSystem to see what flavours your OS supports

hostname
string, optional

The name for the host, only needed for installing a preinstallable control panel image

username
string, optional

Username used for account creating during cloudinit installation (max 32 chars)

hashedPassword
string, optional

password used for cloud init installation account.

sshKeys
Array (string), optional

array of public ssh key’s to use for account creating during installation

base64InstallText
string, optional

Base64 encoded preseed / kickstart / cloudinit instructions, when installing unattended. The decoded string may be up to 49152 bytes (48 KiB) long.

licenses
Array (string), optional

Licenses you want to add to your preinstallable installation flavor

POST /vps
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"vpss": [
{
"productName": "vps-bladevps-x8",
"addons": [
"vps-addon-1-extra-cpu-core"
],
"availabilityZone": "ams0",
"description": "example vps description",
"operatingSystem": "ubuntu-18.04",
"installFlavour": "installer",
"hostname": "",
"username": "ubuntu-user",
"hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
"sshKeys": [
"ssh-rsa AAAAB3NzaC1yc2EAAA...",
"ssh-ed25519 AAAAC3NzaC1l..."
],
"base64InstallText": "",
"licenses": [
"cpanel-premier-200",
"cpanel-premier-500"
]
},
{
"productName": "vps-bladevps-x8",
"addons": [
"vps-addon-1-extra-cpu-core"
],
"availabilityZone": "ams0",
"description": "example vps description",
"operatingSystem": "ubuntu-18.04",
"installFlavour": "installer",
"hostname": "",
"username": "ubuntu-user",
"hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
"sshKeys": [
"ssh-rsa AAAAB3NzaC1yc2EAAA...",
"ssh-ed25519 AAAAC3NzaC1l..."
],
"base64InstallText": "",
"licenses": [
"cpanel-premier-200",
"cpanel-premier-500"
]
}
]
}
' \
"https://api.transip.nl/v6/vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "vpss": [
    {
      "productName": "vps-bladevps-x8",
      "addons": [
        "vps-addon-1-extra-cpu-core"
      ],
      "availabilityZone": "ams0",
      "description": "example vps description",
      "operatingSystem": "ubuntu-18.04",
      "installFlavour": "installer",
      "hostname": "",
      "username": "ubuntu-user",
      "hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
      "sshKeys": [
        "ssh-rsa AAAAB3NzaC1yc2EAAA...",
        "ssh-ed25519 AAAAC3NzaC1l..."
      ],
      "base64InstallText": "",
      "licenses": [
        "cpanel-premier-200",
        "cpanel-premier-500"
      ]
    },
    {
      "productName": "vps-bladevps-x8",
      "addons": [
        "vps-addon-1-extra-cpu-core"
      ],
      "availabilityZone": "ams0",
      "description": "example vps description",
      "operatingSystem": "ubuntu-18.04",
      "installFlavour": "installer",
      "hostname": "",
      "username": "ubuntu-user",
      "hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
      "sshKeys": [
        "ssh-rsa AAAAB3NzaC1yc2EAAA...",
        "ssh-ed25519 AAAAC3NzaC1l..."
      ],
      "base64InstallText": "",
      "licenses": [
        "cpanel-premier-200",
        "cpanel-premier-500"
      ]
    }
  ]
}
Response201403404404404404404406406406406406406406406406
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "No valid payment information found. Please add your payment information through the Controlpanel on the website."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS product 'vps-bladevps-x1337' is not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS product addon 'vps-addon-extra-pie' is not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "OperatingSystem with name 'windows-xp' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The availability zone 'wtf1' is not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The availability zone 'ams0' is not available"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid hostname: 'ex@mple.test.nl'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided SSH key 'ssh-rsa AAAAB3NzaC_INVALIDKEY_1yc2EAAAADAQA' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Provided installFlavour 'strawberry' not supported for this operatingsystem, available flavours are: installer"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "OperatingSystem 'WindowsServer2022Standard' is not supported on the specifications of the provided Vps"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided parameter 'username' can be 32 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided parameter 'description' can be 32 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "License 'plesk-co-op-50' is invalid for operating system 'CPanel-alma8-latest'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Only one operating system license should be provided"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Field 'licenses' with value 'cpanel-premier-200!' contains a symbol, this is now allowed"
}

Order multiple VPSs

POST/vps

When ordering multiple VPSs at once, specify the VPS specs as in the order function but wrapped in an array.

Warning: This API call will create an invoice!

Request Attributes
vpss
Array (VpsOrder), required

Array with multiple VPS specs

productName
string

Name of the product

addons
Array (string)

Array with additional addons

availabilityZone
string

The name of the availability zone where the vps should be created

description
string

The description of the VPS

operatingSystem
string

The name of the operating system to install

installFlavour
string

The flavour of OS installation installer, preinstallable or cloudinit check GET OperatingSystem to see what flavours your OS supports

hostname
string

The name for the host, only needed for installing a preinstallable control panel image

username
string

VPS User

hashedPassword
string

The hashedPassword for the specified user

sshKeys
Array (string)

Array of public ssh key’s to use for account creating during installation

base64InstallText
string

Base64 encoded preseed / kickstart instructions, when installing unattended. The decoded string may be up to 49152 bytes (48 KiB) long.

licenses
Array (string)

Licenses you want to add to your preinstallable installation flavor

POST /vps
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"vpsName": "example-vps",
"targetProductName": "vps-bladevps-x8",
"availabilityZone": "ams0"
}
' \
"https://api.transip.nl/v6/vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "vpsName": "example-vps",
  "targetProductName": "vps-bladevps-x8",
  "availabilityZone": "ams0"
}
Response201403403404409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "No valid payment information found. Please add your payment information through the Controlpanel on the website."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with identifier 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Administrative error, unable to clone VPS"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

Clone a VPS

POST/vps

Use this API call in order to clone an existing VPS. There are a few things to take into account when you want to clone an existing VPS to a new VPS:

  • If the original VPS (which you’re going to clone) is currently locked, the clone will fail;

  • Cloned control panels can be used on the VPS, but as the IP address changes, this does require you to synchronise the new license on the new VPS (licenses are often IP-based);

  • If you choose a target product name and such product doesn’t have enough disk space to fit the current VPS, the clone will fail;

  • You cannot clone a PerformanceVPS or BladeVPS to a SandboxVPS;

  • Possibly, your VPS has its network interface(s) configured using (a) static IP(‘s) rather than a dynamic allocation using DHCP. If this is the case, you have to configure the new IP(‘s) on the new VPS. Do note that this is not the case with our pre-installed control panel images;

  • VPS add-ons such as Big Storage aren’t affected by cloning - these will stay attached to the original VPS and can’t be swapped automatically

Warning: As cloning is a paid service, an invoice will be generated

Request Attributes
vpsName
string, required

The vps name of the VPS to clone.

targetProductName
string, optional

Name of the product used by the cloned VPS

availabilityZone
string, optional

The name of the availability zone where the clone should be created

PUT /vps/example-vps
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"vps": {
"name": "example-vps",
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"description": "example VPS",
"productName": "vps-bladevps-x1",
"operatingSystem": "ubuntu-18.04",
"diskSize": 157286400,
"memorySize": 4194304,
"cpus": 2,
"status": "running",
"flavor": "shared",
"ipAddress": "37.97.254.6",
"macAddress": "52:54:00:3b:52:65",
"currentSnapshots": 1,
"maxSnapshots": 10,
"isLocked": false,
"isBlocked": false,
"isCustomerLocked": false,
"availabilityZone": "ams0",
"tags": [
"customTag",
"anotherTag"
],
"createdAt": "2024-01-01 23:59:59"
}
}
' \
"https://api.transip.nl/v6/vps/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "vps": {
    "name": "example-vps",
    "uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
    "description": "example VPS",
    "productName": "vps-bladevps-x1",
    "operatingSystem": "ubuntu-18.04",
    "diskSize": 157286400,
    "memorySize": 4194304,
    "cpus": 2,
    "status": "running",
    "flavor": "shared",
    "ipAddress": "37.97.254.6",
    "macAddress": "52:54:00:3b:52:65",
    "currentSnapshots": 1,
    "maxSnapshots": 10,
    "isLocked": false,
    "isBlocked": false,
    "isCustomerLocked": false,
    "availabilityZone": "ams0",
    "tags": [
      "customTag",
      "anotherTag"
    ],
    "createdAt": "2024-01-01 23:59:59"
  }
}
Response204403404409406409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with identifier 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided parameter 'description' can be 32 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}

Update a VPS

PUT/vps/{vpsIdentifier}

In this API call you can lock/unlock a VPS, update VPS description, and add/remove tags.

Locking a VPS

Locking a VPS prevents accidental execution of API calls and manual actions through the control panel.

For locking the VPS, set isCustomerLocked to true. Set the value to false for unlocking the VPS.

Change a VPS description

You can change your VPS description by simply changing the description attribute. Note that the identifier key name will not be changed. The description can be maximum 32 character longs

VPS Tags

To add/remove tags, you must update the tags attribute. Every time you make a call with a changed tags attribute, the existing tags are overridden.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Request Attributes
vps
Vps, required

name
string

The unique VPS name

uuid
string

The unique identifier for the VPS

description
string,null

The name that can be set by customer

productName
string

The product name

operatingSystem
string,null

The VPS OperatingSystem

diskSize
number

The VPS disk size in kB

memorySize
number

The VPS memory size in kB

cpus
number

The VPS cpu count

status
string

The VPS status, either ‘created’, ‘installing’, ‘running’, ‘stopped’ or ‘paused’

flavor
string

The VPS flavor, either ‘dedicated’, ‘shared’ or ‘flexible’

ipAddress
string

The VPS main ipAddress

macAddress
string

The VPS macaddress

currentSnapshots
number

The amount of snapshots that is used on this VPS

maxSnapshots
number

The maximum amount of snapshots for this VPS

isLocked
boolean

Whether or not another process is already doing stuff with this VPS

isBlocked
boolean

If the VPS is administratively blocked

isCustomerLocked
boolean

If this VPS is locked by the customer

availabilityZone
string

The name of the availability zone the VPS is in

tags
Array (string)

The custom tags added to this VPS

createdAt
string

The VPS creation datetime (UTC)

PATCH /vps/example-vps
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "start"
}
' \
"https://api.transip.nl/v6/vps/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "action": "start"
}
Response204403404409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with identifier 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

Start a VPS

PATCH/vps/{vpsIdentifier}

This API call allows you to start a VPS, given that it’s currently in a stopped state.

To start a VPS, send a PATCH request with the action attribute set to start.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Request Attributes
action
string, required

PATCH /vps/example-vps
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "stop"
}
' \
"https://api.transip.nl/v6/vps/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "action": "stop"
}
Response204403404409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with identifier 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

Stop a VPS

PATCH/vps/{vpsIdentifier}

By setting the action attribute to stop, you can put the specified VPS in a stopped state.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Request Attributes
action
string, required

PATCH /vps/example-vps
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "reset"
}
' \
"https://api.transip.nl/v6/vps/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "action": "reset"
}
Response204403404409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with identifier 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

Reset a VPS

PATCH/vps/{vpsIdentifier}

This API call will reset the specified VPS. A reset is essentially the stop and start command combined into one

To reset a VPS, send a PATCH request with the action attribute set to reset.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Request Attributes
action
string, required

PATCH /vps/example-vps
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "handover",
"targetCustomerName": "example2"
}
' \
"https://api.transip.nl/v6/vps/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "action": "handover",
  "targetCustomerName": "example2"
}
Response204403404404409409409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with identifier 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Target user 'example2' does not exist"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Error Processing Handover, One or more items are already being handovered"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Target user 'example2' is not capable of receiving handover"
}

Handover a VPS

PATCH/vps/{vpsIdentifier}

Handover a VPS to another Account. This call will initiate the handover process. the actual handover will be done when the target customer accepts the handover.

Note: the VPS will be shut down in order to handover.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Request Attributes
action
string, required

targetCustomerName
string, required

DELETE /vps/example-vps
Request
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"endTime": "end"
}
' \
"https://api.transip.nl/v6/vps/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "endTime": "end"
}
Response204403404406409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with identifier 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid cancellation time: 'now', please use either 'end' or 'immediately'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Product already has cancellation pending"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}

Cancel a VPS

DELETE/vps/{vpsIdentifier}

Using the DELETE method on a VPS will cancel the VPS, thus deleting it.

Upon cancellation This will wipe all data on the VPS and permanently destroy it.

You can set the endTime attribute to ‘end’ or ‘immediately’, this has the following implications:

  • end: The VPS will be terminated from the end date of the agreement as can be found in the applicable quote;

  • immediately: The VPS will be terminated immediately.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Request Attributes
endTime
string, optional

Cancellation time, either ‘end’ (default) or ‘immediately’

Usage

This is the API endpoint for VPS usage data.

GET /vps/example-vps/usage
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"types": "cpu,disk,network",
"dateTimeStart": 1500538995,
"dateTimeEnd": 1500542619
}
' \
"https://api.transip.nl/v6/vps/example-vps/usage"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "types": "cpu,disk,network",
  "dateTimeStart": 1500538995,
  "dateTimeEnd": 1500542619
}
Response200403404406406406406406
Response headers
Content-Type: application/json
Response body
{
  "usage": {
    "cpu": [
      {
        "percentage": 3.11,
        "date": 1574783109
      }
    ],
    "disk": [
      {
        "iopsRead": 0.27,
        "iopsWrite": 0.13,
        "date": 1574783109
      }
    ],
    "network": [
      {
        "mbitOut": 100.2,
        "mbitIn": 249.93,
        "date": 1574783109
      }
    ]
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The parameter 'dateTimeStart' is not a number."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The timestamp 'dateTimeEnd' cannot be negative."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The timestamp 'dateTimeEnd' cannot be in the future."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The time period is too large, it should not be bigger than one month."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "These are invalid usage types: invalid, type."
}

Get usage data for a VPS

GET/vps/{vpsIdentifier}/usage

Use this API call to retrieve usage data for a specific VPS. Make sure to specify the dateTimeStart and dateTimeEnd parameters in UNIX timestamp format.

Please take the following into account:

  • The dateTimeStart and dateTimeEnd parameters allow for gathering information about a specific time period, when not specified the output will contain data for the past 24 hours;

  • The difference between dateTimeStart and dateTimeEnd parameters may not exceed one month.

For traffic-related information and statistics, use the Get traffic information for a VPS API call.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Request Attributes
types
string, optional

The types of statistics that can be returned, cpu, disk and network can be specified in a comma seperated way. If not specified, all data will be returned.

dateTimeStart
number, optional

The start date of the usage statistics

dateTimeEnd
number, optional

The end date of the usage statistics

Response Attributes
usage
Usage

Hide child attributesShow child attributes
cpu
Array (VpsUsageDataCpu)

percentage
number

The percentage of CPU usage for this entry

date
number

Date of the entry, by default in UNIX timestamp format

disk
Array (VpsUsageDataDisk)

iopsRead
number

The read IOPS for this entry

iopsWrite
number

The write IOPS for this entry

date
number

Date of the entry, by default in UNIX timestamp format

network
Array (VpsUsageDataNetwork)

mbitOut
number

The amount of outbound traffic in Mbps for this usage entry

mbitIn
number

The amount of inbound traffic in Mbps for this usage entry

date
number

Date of the entry, by default in UNIX timestamp format

VPS VNC Data

This is the API endpoint for VPS VNC data

GET /vps/example-vps/vnc-data
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/vnc-data"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200403404409
Response headers
Content-Type: application/json
Response body
{
  "vncData": {
    "host": "vncproxy.transip.nl",
    "path": "websockify?token=esco024gzqwyeeb5nexayi2gve09paw9dytumyxqzurxj5t642o5p6myzisn5gch",
    "url": "https://vncproxy.transip.nl/websockify?token=esco024gzqwyeeb5nexayi2gve09paw9dytumyxqzurxj5t642o5p6myzisn5gch",
    "token": "esco024gzqwyeeb5nexayi2gve09paw9dytumyxqzurxj5t642o5p6myzisn5gch",
    "password": "fVpTyDrhMiuYBXxn"
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS console for 'example-vps' is currently unavailable"
}

Get VNC data for a VPS

GET/vps/{vpsIdentifier}/vnc-data

Get the location, token and password in order to connect directly to the VNC console of your VPS.

Please note, you cannot directly connect to the proxy using a VNC client, use a client that supports websockets like https://github.com/novnc/noVNC

Use the information as URL query parameters, or use the URL in the url parameter directly. Then enter the password. See the link below for an example of how to provide URL query parameters to a hosted novnc instance.

By default novnc understands the following url parameters:

  • host the host hosting the vnc proxy, this should be vncproxy.transip.nl

  • path the path to request on the host, websockify?token=YOURTOKEN

  • password the vnc password

  • autoconnect whether or not to start connecting once you loaded the page

An example of all parameters together in one url would be https://novnc.com/noVNC/vnc.html?host=vncproxy.transip.nl&path=websockify?token=esco024gzqwyeeb5nexayi2gve09paw9dytumyxqzurxj5t642o5p6myzisn5gch&password=fVpTyDrhMiuYBXxn&autoconnect=true

Warning: We do recommend running novnc locally or hosting your own novnc page, this way you can make sure your token and password remain private.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Response Attributes
vncData
VpsVncData

Hide child attributesShow child attributes
host
string

Location of the VNC Proxy

path
string

Websocket path including the token

url
string

Complete websocket URL

token
string

Token to identify the VPS to connect to (changes dynamically)

password
string

Password to setup up the VNC connection (changes dynamically)

PATCH /vps/example-vps/vnc-data
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/vnc-data"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response204403404409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS console for 'example-vps' is currently unavailable"
}

Regenerate VNC token for a vps

PATCH/vps/{vpsIdentifier}/vnc-data

Call this method to regenerate the VNC credentials for a VPS.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Addons

This is the API endpoint for VPS addons services.

GET /vps/example-vps/addons
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/addons"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404
Response headers
Content-Type: application/json
Response body
{
  "addons": {
    "active": [
      {
        "name": "example-product-name",
        "description": "This is an example product",
        "price": 499,
        "recurringPrice": 799
      }
    ],
    "cancellable": [
      {
        "name": "example-product-name",
        "description": "This is an example product",
        "price": 499,
        "recurringPrice": 799
      }
    ],
    "available": [
      {
        "name": "example-product-name",
        "description": "This is an example product",
        "price": 499,
        "recurringPrice": 799
      }
    ]
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}

List addons for a VPS

GET/vps/{vpsIdentifier}/addons

This method will return all active, cancelable and available add-ons for a VPS.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Response Attributes
addons
Addons

Hide child attributesShow child attributes
active
Array (Product)

A list of all active addons

name
string

Name of the product

description
string

Describes this product

price
number

Price in cents

recurringPrice
number

The recurring price for the product in cents

cancellable
Array (Product)

A list of addons that you can cancel

name
string

Name of the product

description
string

Describes this product

price
number

Price in cents

recurringPrice
number

The recurring price for the product in cents

available
Array (Product)

A list of available addons that you can order

name
string

Name of the product

description
string

Describes this product

price
number

Price in cents

recurringPrice
number

The recurring price for the product in cents

POST /vps/example-vps/addons
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"addons": [
"vps-addon-1-extra-ip-address"
]
}
' \
"https://api.transip.nl/v6/vps/example-vps/addons"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "addons": [
    "vps-addon-1-extra-ip-address"
  ]
}
Response201403403404404409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Addon order limit reached for addon product element 'memory-size'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS product addon 'example-addon' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

Order addons for a VPS

POST/vps/{vpsIdentifier}/addons

In order to extend a specific VPS with add-ons, use this API call.

The type of add-ons that can be ordered range from extra IP addresses to hardware add-ons such as an extra core or additional SSD disk space.

Warning: This API call will create a new invoice for the specified add-on(s)

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Request Attributes
addons
Array (string), required

Addons to be added

DELETE /vps/example-vps/addons/vps-addon-1-extra-ip-address
Request
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/addons/vps-addon-1-extra-ip-address"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response204403403404409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "The addon 'vps-addon-100-gb-extra-harddisk' is not cancellable."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Product already has cancellation pending"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

Cancel an addon for a VPS

DELETE/vps/{vpsIdentifier}/addons/{addonName}

By using this API call, you can cancel an add-on by name, specifying the VPS name as well. Due to technical restrictions (possible dataloss) storage add-ons cannot be cancelled.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

addonName
string (required) Example: vps-addon-1-extra-ip-address

Addon name

VPS Licenses

This is the API endpoint for VPS licenses.

GET /vps/example-vps/licenses
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/licenses"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404
Response headers
Content-Type: application/json
Response body
{
  "licenses": {
    "active": [
      {
        "id": 42,
        "name": "cpanel-admin",
        "price": 1050,
        "recurringPrice": 1050,
        "type": "addon",
        "quantity": 1,
        "maxQuantity": 1,
        "keys": [
          {
            "name": "Cpanel license key",
            "key": "XXXXXXXXXXX"
          }
        ]
      }
    ],
    "cancellable": [
      {
        "id": 42,
        "name": "cpanel-admin",
        "price": 1050,
        "recurringPrice": 1050,
        "type": "addon",
        "quantity": 1,
        "maxQuantity": 1,
        "keys": [
          {
            "name": "Cpanel license key",
            "key": "XXXXXXXXXXX"
          }
        ]
      }
    ],
    "available": [
      {
        "name": "cpanel-pro",
        "price": 2750,
        "recurringPrice": 2750,
        "type": "operating-system",
        "minQuantity": 1,
        "maxQuantity": 1
      }
    ]
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}

List licenses for a VPS

GET/vps/{vpsIdentifier}/licenses

This method will return all active, cancellable and available licenses for a VPS.

Operating system licenses (type: operating-system) cannot be directly purchased, or cancelled, they are attached to your VPS the moment you install an operating system that requires a license. Operating systems such as Plesk, DirectAdmin, cPanel and etc need a valid license. An operating system license can only be upgraded or downgraded by using the Update an operating system license API call.

Addon licenses (type: addon) can be purchased individually through the Order an addon license API call.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Response Attributes
licenses
Licenses

Hide child attributesShow child attributes
active
Array (License)

A list of licenses active on your VPS

id
number

License Id

name
string

License name

price
number

Price in cents

recurringPrice
number

Recurring price in cents

type
string

License type: ‘operating-system’, ‘addon’

quantity
number

Quantity already purchased

maxQuantity
number

Maximum quantity you are allowed to purchase

keys
Array (LicenseKey)

License keys belonging to this specific License

name
string

License key name

key
string

License key

cancellable
Array (License)

A list of licenses active on your VPS that you can cancel

id
number

License Id

name
string

License name

price
number

Price in cents

recurringPrice
number

Recurring price in cents

type
string

License type: ‘operating-system’, ‘addon’

quantity
number

Quantity already purchased

maxQuantity
number

Maximum quantity you are allowed to purchase

keys
Array (LicenseKey)

License keys belonging to this specific License

name
string

License key name

key
string

License key

available
Array (LicenseProduct)

A list of available licenses that you can order or switch to for your VPS

name
string

License name

price
number

Price in cents

recurringPrice
number

Recurring price in cents

type
string

License type: ‘operating-system’, ‘addon’

minQuantity
number

Minimum quantity you have to purchase

maxQuantity
number

Maximum quantity you are allowed to purchase

POST /vps/example-vps/licenses
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"licenseName": "microsoft-office-professional",
"quantity": 1
}
' \
"https://api.transip.nl/v6/vps/example-vps/licenses"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "licenseName": "microsoft-office-professional",
  "quantity": 1
}
Response201403403404404404409409500
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "The limit for license 'installatron' has been reached"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "License with name 'cpanel-premier-1000' is not orderable as an addon license"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "License with name 'example-license' does not exist"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "License with name 'example-license' is not available"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The license could not be ordered due to an internal error"
}

Order an addon license

POST/vps/{vpsIdentifier}/licenses

In order to purchase an addon license for your VPS, use this API call.

The licenses that can be ordered can be requested using the get licenses api call.

Warning: This API call will create a new invoice for the specified license

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Request Attributes
licenseName
string, required

Name of the license that you want to order

quantity
number, required

Quantity of the license that you want to order

PUT /vps/example-vps/licenses/18
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"newLicenseName": "cpanel-premier"
}
' \
"https://api.transip.nl/v6/vps/example-vps/licenses/18"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "newLicenseName": "cpanel-premier"
}
Response204403403403403404404406409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "The installed operating system on your VPS does not have licenses"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "License with id '1' not up or downgradable"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "License with name 'installatron' and type 'addon' can't be used to up or downgrade"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Cannot downgrade to License with name 'cpanel-admin', due to too many active cPanel users on the provided VPS"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name example-vps not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "License with id '1' is not attached to example-vps"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "License with name 'microsoft-office-365' is not available"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

Update an operating system license

PUT/vps/{vpsIdentifier}/licenses/{licenseId}

Switch between operating system licenses using this API call.

You must provide your current License Id in the licenseId parameter. Provide your desired license name in the newLicenseName parameter within the request body for either to upgrade or downgrade.

Warning: Changes made using this API call will reflect on your next invoice

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

licenseId
string (required) Example: 18

License Id

Request Attributes
newLicenseName
string, required

The name of the new license that you want to switch to

DELETE /vps/example-vps/licenses/18
Request
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/licenses/18"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response204403404404409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "License with id '1' is not cancellable"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "License with id '123' does not exist"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Product already has cancellation pending"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

Cancel an addon license

DELETE/vps/{vpsIdentifier}/licenses/{licenseId}

By using this API call, you can cancel a license by its id, specifying the VPS name as well. Operating system licenses cannot be cancelled.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

licenseId
string (required) Example: 18

License Id

Upgrades

This is the API endpoint for VPS upgrades services.

GET /vps/example-vps/upgrades
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/upgrades"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200403404409409
Response headers
Content-Type: application/json
Response body
{
  "upgrades": [
    {
      "name": "example-product-name",
      "description": "This is an example product",
      "price": 499,
      "recurringPrice": 799
    }
  ]
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

List available upgrades for a VPS

GET/vps/{vpsIdentifier}/upgrades

List all available product upgrades for a VPS.

Upgrades differentiate from add-ons in the sense that upgrades are VPS products like the vps-bladevps-pro-x16 VPS product.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Response Attributes
upgrades
Array (Product)

Hide child attributesShow child attributes
name
string

Name of the product

description
string

Describes this product

price
number

Price in cents

recurringPrice
number

The recurring price for the product in cents

POST /vps/example-vps/upgrades
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"productName": "vps-bladevps-pro-x16"
}
' \
"https://api.transip.nl/v6/vps/example-vps/upgrades"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "productName": "vps-bladevps-pro-x16"
}
Response201403403404404409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "Downgrades are not supported."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Upgrade with id 'vps-bladevps-pro-x9' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

Upgrade a VPS

POST/vps/{vpsIdentifier}/upgrades

This API call allows you to upgrade a VPS by name and productName.

It’s not possible to downgrade a VPS, as most upgrades cannot be deallocated due to technical reasons (data loss when shrinking the disk space).

Your current add-ons will be transferred to your selected package. Add-ons that have become redundant are automatically cancelled and you only pay for add-ons that you need after an upgrade. So, if you have a BladeVPS X1 with an additional 100GB disk space Add-on then it will automatically expire after an upgrade to a BladeVPS X4.

Warning: This API call will create an invoice for the upgrade.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Request Attributes
productName
string, required

OperatingSystems

This is the API endpoint for VPS operating systems.

GET /vps/example-vps/operating-systems
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/operating-systems"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "operatingSystems": [
    {
      "name": "CPanel-alma8-latest",
      "description": "cPanel 90.0.5 + AlmaLinux 8",
      "baseName": "AlmaLinux",
      "version": "90.05",
      "price": 2000,
      "installFlavours": [
        "installer",
        "preinstallable",
        "cloudinit"
      ],
      "licenses": [
        {
          "name": "cpanel-pro",
          "price": 2750,
          "recurringPrice": 2750,
          "type": "operating-system",
          "minQuantity": 1,
          "maxQuantity": 1
        }
      ],
      "isPreinstallableImage": false,
      "installFields": [
        "hostname",
        "hashedPassword"
      ],
      "isDefault": false
    }
  ]
}

List installable operating systems for a VPS

GET/vps/{vpsIdentifier}/operating-systems

We offer a number of operating systems and preinstalled images ready to be installed on any VPS. Using this API call, you can get a list of operating systems and preinstalled images available.

Commercial operating systems (such as Windows Server editions) and images shipping a commercial control panel contain the ‘price’ attribute, showing the price per month charged on top of the VPS itself.

A list with operating systems can also be found here

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Response Attributes
operatingSystems
Array (OperatingSystem)

Hide child attributesShow child attributes
name
string

The operating system name

description
string

Description

baseName
string

The baseName of the operating system

version
string

The version of the operating system

price
number

The monthly price of the operating system in cents

installFlavours
Array (string)

available flavours of installation for this operating system

licenses
Array (LicenseProduct)

available licenses for this operating system

name
string

License name

price
number

Price in cents

recurringPrice
number

Recurring price in cents

type
string

License type: ‘operating-system’, ‘addon’

minQuantity
number

Minimum quantity you have to purchase

maxQuantity
number

Maximum quantity you are allowed to purchase

isPreinstallableImage
boolean

Specifies if Operating System is a preinstallable image

installFields
Array (string)

required installation fields for this operating system

isDefault
boolean

Specifies if Operating System is the default version in the list

POST /vps/example-vps/operating-systems
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"operatingSystemName": "ubuntu-22.04",
"hostname": "",
"installFlavour": "cloudinit",
"username": "bob",
"hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
"sshKeys": [
"ssh-rsa AAAAB3NzaC1yc2EAAA...",
"ssh-ed25519 AAAAC3NzaC1l..."
],
"base64InstallText": "",
"licenses": [
"cpanel-premier-200"
],
"acronisTenantId": "eede56d2-1dc6-4fbc-aa3e-ed73f0c41554"
}
' \
"https://api.transip.nl/v6/vps/example-vps/operating-systems"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "operatingSystemName": "ubuntu-22.04",
  "hostname": "",
  "installFlavour": "cloudinit",
  "username": "bob",
  "hashedPassword": "$2y$10$kDwnrkGedxn4HtdAPl86D..sdtnW5aLeHzPuJ8UbAWOOiSiBDXYkm",
  "sshKeys": [
    "ssh-rsa AAAAB3NzaC1yc2EAAA...",
    "ssh-ed25519 AAAAC3NzaC1l..."
  ],
  "base64InstallText": "",
  "licenses": [
    "cpanel-premier-200"
  ],
  "acronisTenantId": "eede56d2-1dc6-4fbc-aa3e-ed73f0c41554"
}
Response201403404404404406406406406406406406406406406406406406406409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The OperatingSystem 'ubuntu-15.04' does not exist"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "License with name 'plesk-co-op-51' does not exist"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid hostname: 'ex@mple.test.nl'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "InstallText not base64 encoded"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The decoded base64InstallText is over 49152 bytes (48 KiB) long"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Cannot install preinstallable image unattended"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided SSH key 'ssh-rsa AAAAB3NzaC_INVALIDKEY_1yc2EAAAADAQA' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Provided installFlavour 'strawberry' not supported for this operating system, available flavours are: installer"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "OperatingSystem 'WindowsServer2022Standard' is not supported on the specifications of the provided Vps"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided parameter 'username' can be 32 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "License 'plesk-co-op-50' is invalid for operating system 'CPanel-alma8-latest'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Currently we only support setting the hashed password for the root user"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Given password is not hashed with the bcrypt algorithm"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Parameter 'hashedPassword' can only be set in combination with the cloudinit installation flavour"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Parameter 'acronisTenantId' can only be set in combination with the cloudinit installation flavour"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Only one operating system license should be provided"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

Install an operating system on a VPS

POST/vps/{vpsIdentifier}/operating-systems

With this method you can install operating systems and preinstalled images on a VPS.

A notable feature is the ability to specify if the installation should be unattended using the base64InstallText parameter, allowing for automatic deployment of operating systems.

Provide an installFlavour to choose whether a operating system should be deployed with a regular installer or a preinstalled cloudinit image. Check the GET operating-systems function to see what flavours are available for you operating system. When choosing installer the base64InstallText will be interpreted as a preseed or kickstart file, when choosing cloudinit it will be interpreted as cloudinit UserData.

SSHKeys are optional for a cloudinit installation, when no keys are provided a OneTimePassword will be generated and emailed to you.

Provide a license to override the default license of a preinstallable operating system. As an example, once a cPanel installation is complete, the default cPanel license will allow you to create 5 user accounts. If the cPanel Pro license is provided, the default license is replaced, and after installation you are able to create 30 user accounts.

Warning: This will create an invoice when a non-free operating system or a non-free control panel is chosen.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Request Attributes
operatingSystemName
string, required

The name of the operating system

hostname
string, optional

Hostname is required for preinstallable web controlpanels

installFlavour
string, optional

Flavour of OS installation installer, preinstallable or cloudinit check GET operating-system to see what flavours of installation your OS supports.

username
string, optional

username used for account creating during cloudinit installation (max 32 chars)

hashedPassword
string, optional

password used for cloud init installation account.

sshKeys
Array (string), optional

array of public ssh keys to use for account creating during installation

base64InstallText
string, optional

Base64 encoded preseed / kickstart / cloudinit instructions, when installing unattended. The decoded string may be up to 49152 bytes (48 KiB) long.

licenses
Array (string), optional

Licenses you want to add to your preinstallable installation flavor

acronisTenantId
string, optional

Specify your Acronis Tenant Id if you would like to automatically install the Acronis Client on your VPS.

IP Addresses

This is the API endpoint for VPS Ips services. To add an IP address, use the addons endpoint.

GET /vps/example-vps/ip-addresses
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/ip-addresses"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200403404
Response headers
Content-Type: application/json
Response body
{
  "ipAddresses": [
    {
      "address": "37.97.254.6",
      "subnetMask": "255.255.255.0",
      "gateway": "37.97.254.1",
      "dnsResolvers": [
        "195.8.195.8",
        "195.135.195.135"
      ],
      "reverseDns": "example.com"
    }
  ]
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}

List IP addresses for a VPS

GET/vps/{vpsIdentifier}/ip-addresses

This API call will return all IPv4 and IPv6 addresses attached to the VPS including Relevant network information like the gateway and subnet mask.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Response Attributes
ipAddresses
Array (IpAddress)

Hide child attributesShow child attributes
address
string

The IP address

subnetMask
string

Subnet mask

gateway
string

Gateway

dnsResolvers
Array (string)

The DNS resolvers you can use

reverseDns
string

Reverse DNS, also known as the PTR record

GET /vps/example-vps/ip-addresses/37.97.254.6
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/ip-addresses/37.97.254.6"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200403404404
Response headers
Content-Type: application/json
Response body
{
  "ipAddress": {
    "address": "37.97.254.6",
    "subnetMask": "255.255.255.0",
    "gateway": "37.97.254.1",
    "dnsResolvers": [
      "195.8.195.8",
      "195.135.195.135"
    ],
    "reverseDns": "example.com"
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "IP address '8.8.8.8' is not found on VPS 'example-vps'"
}

Get IP address info by address

GET/vps/{vpsIdentifier}/ip-addresses/{ipAddress}

Only return network information for the specified IP address.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

ipAddress
string (required) Example: 37.97.254.6

The IP address of the VPS

Response Attributes
ipAddress
IpAddress

Hide child attributesShow child attributes
address
string

The IP address

subnetMask
string

Subnet mask

gateway
string

Gateway

dnsResolvers
Array (string)

The DNS resolvers you can use

reverseDns
string

Reverse DNS, also known as the PTR record

POST /vps/example-vps/ip-addresses
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"ipAddress": "2a01:7c8:3:1337::6"
}
' \
"https://api.transip.nl/v6/vps/example-vps/ip-addresses"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "ipAddress": "2a01:7c8:3:1337::6"
}
Response201403404406406409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "IP address 'fe80::200:f8ff:fe21:67cfaa' is not valid"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "IP address '2a01:7c8:3:1337::6' is not in the VPS ipv6 Range"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "IP address '2a01:7c8:3:1337::6' already exists"
}

Add IPv6 address to a VPS

POST/vps/{vpsIdentifier}/ip-addresses

VPSes are deployed with an /64 IPv6 range. In order to set ReverseDNS for specific ipv6 addresses, you will have to add the IPv6 address via this command.

After adding an IPv6 address, you can set the reverse DNS for this address using the Update Reverse DNS API call.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Request Attributes
ipAddress
string, required

PUT /vps/example-vps/ip-addresses/37.97.254.6
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"ipAddress": {
"address": "37.97.254.6",
"subnetMask": "255.255.255.0",
"gateway": "37.97.254.1",
"dnsResolvers": [
"195.8.195.8",
"195.135.195.135"
],
"reverseDns": "example.com"
}
}
' \
"https://api.transip.nl/v6/vps/example-vps/ip-addresses/37.97.254.6"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "ipAddress": {
    "address": "37.97.254.6",
    "subnetMask": "255.255.255.0",
    "gateway": "37.97.254.1",
    "dnsResolvers": [
      "195.8.195.8",
      "195.135.195.135"
    ],
    "reverseDns": "example.com"
  }
}
Response204403404404406
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "IP address '8.8.8.8' is not found on VPS 'example-vps'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid hostname: 'test&@*#'"
}

Update reverse DNS for a VPS

PUT/vps/{vpsIdentifier}/ip-addresses/{ipAddress}

Reverse DNS for IPv4 addresses as well as IPv6 addresses can be updated using this API call.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

ipAddress
string (required) Example: 37.97.254.6

The IP address of the VPS

Request Attributes
ipAddress
IpAddress, required

address
string

The IP address

subnetMask
string

Subnet mask

gateway
string

Gateway

dnsResolvers
Array (string)

The DNS resolvers you can use

reverseDns
string

Reverse DNS, also known as the PTR record

DELETE /vps/example-vps/ip-addresses/37.97.254.6
Request
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/ip-addresses/37.97.254.6"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response204403403404404
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "IPv6 '2a01:0a0:aa00:00::1' cannot be deleted, your VPS requires at least one IPv6 address."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "IPv6 address '2a01:0a0:aa00:00::1' is not found on VPS 'example-vps'"
}

Remove an IPv6 address from a VPS

DELETE/vps/{vpsIdentifier}/ip-addresses/{ipAddress}

This method allows you to remove specific IPv6 addresses from the registered list of IPv6 addresses within the VPS’s /64 IPv6 range.

Note that deleting an IP address will also wipe its reverse DNS information.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

ipAddress
string (required) Example: 37.97.254.6

The IP address of the VPS

Snapshots

This is the API endpoint for VPS snapshots services.

GET /vps/example-vps/snapshots
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/snapshots"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "snapshots": [
    {
      "name": "1572607577",
      "description": "before upgrade",
      "diskSize": 314572800,
      "status": "creating",
      "dateTimeCreate": "2019-07-14 12:21:11",
      "operatingSystem": "ubuntu-18.04"
    }
  ]
}

List snapshots for a VPS

GET/vps/{vpsIdentifier}/snapshots

This method allows you to list all snapshots that are taken of your VPS main disk.

A snapshot status can have the following values: ‘active‘, ‘creating‘, ‘reverting‘, ‘deleting‘, ‘pendingDeletion‘, ‘syncing‘, ‘moving‘ when status is ‘active‘ you can perform actions on it.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Response Attributes
snapshots
Array (Snapshot)

Hide child attributesShow child attributes
name
string

The snapshot name

description
string

The snapshot description

diskSize
number

The size of the snapshot in kB

status
string

The snapshot status (‘active’, ‘creating’, ‘reverting’, ‘deleting’, ‘pendingDeletion’, ‘syncing’, ‘moving’)

dateTimeCreate
string

The snapshot creation date

operatingSystem
string

The snapshot OperatingSystem

GET /vps/example-vps/snapshots/1500027671
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/snapshots/1500027671"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404
Response headers
Content-Type: application/json
Response body
{
  "snapshot": {
    "name": "1572607577",
    "description": "before upgrade",
    "diskSize": 314572800,
    "status": "creating",
    "dateTimeCreate": "2019-07-14 12:21:11",
    "operatingSystem": "ubuntu-18.04"
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Snapshot with name '1500027671' not found"
}

Get snapshot by name

GET/vps/{vpsIdentifier}/snapshots/{snapshotName}

Specifying the snapshot ID and the VPS name it’s associated with, allows for insight in snapshot details.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

snapshotName
string (required) Example: 1500027671

Name of the snapshot

Response Attributes
snapshot
Snapshot

Hide child attributesShow child attributes
name
string

The snapshot name

description
string

The snapshot description

diskSize
number

The size of the snapshot in kB

status
string

The snapshot status (‘active’, ‘creating’, ‘reverting’, ‘deleting’, ‘pendingDeletion’, ‘syncing’, ‘moving’)

dateTimeCreate
string

The snapshot creation date

operatingSystem
string

The snapshot OperatingSystem

POST /vps/example-vps/snapshots
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"description": "BeforeItsAllBroken",
"shouldStartVps": true
}
' \
"https://api.transip.nl/v6/vps/example-vps/snapshots"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "description": "BeforeItsAllBroken",
  "shouldStartVps": true
}
Response201403403404409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "Snapshot limit reached"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

Create snapshot of a VPS

POST/vps/{vpsIdentifier}/snapshots

With this API call you can create a snapshot of a VPS.

In case the creation of this snapshot leads to exceeding the maximum allowed snapshots, the API call will return an error and the snapshot will not be created - please order extra snapshots before proceeding.

Creating a snapshot allows for restoring it on another VPS using the Revert snapshot to a VPS given that its specifications equals or exceeds those of the snapshot’s source VPS.

We strongly recommend shutting the VPS down before taking a snapshot in order to prevent data loss, etc.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Request Attributes
description
string, required

shouldStartVps
boolean, optional

Specify whether the VPS should be started immediately after the snapshot was created, default is true

PATCH /vps/example-vps/snapshots/1500027671
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"destinationVpsName": "destination-vps"
}
' \
"https://api.transip.nl/v6/vps/example-vps/snapshots/1500027671"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "destinationVpsName": "destination-vps"
}
Response204403404406406409409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Snapshot '1500027671' diskSize '157286400' is bigger than destination diskSize '52428800'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "OperatingSystem 'example OS' is not supported on the specifications of the provided Vps"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The Snapshot '1500027671' is already locked to another action"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

Revert snapshot to a VPS

PATCH/vps/{vpsIdentifier}/snapshots/{snapshotName}

This method can be used to revert a snapshot to a VPS. Specifying the destinationVpsName attribute makes sure the snapshot is restored onto another VPS.

Networking may be configured statically on the source VPS, therefore breaking connectivity when restored onto another VPS with a new assigned IP. You should be able to alter this through the KVM console in the control panel in case SSH is unavailable.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

snapshotName
string (required) Example: 1500027671

Name of the snapshot

Request Attributes
destinationVpsName
string, optional

When set, revert the snapshot to this VPS

DELETE /vps/example-vps/snapshots/1500027671
Request
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/snapshots/1500027671"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response204403404409409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The Snapshot '1500027671' is already locked to another action."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

Delete a snapshot

DELETE/vps/{vpsIdentifier}/snapshots/{snapshotName}

Delete a VPS snapshot using this API call.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

snapshotName
string (required) Example: 1500027671

Name of the snapshot

VPS Backups

This is the API endpoint for VPS backups services.

GET /vps/example-vps/backups
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/backups"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "backups": [
    {
      "id": 712332,
      "status": "active",
      "dateTimeCreate": "2019-11-29 22:11:20",
      "diskSize": 157286400,
      "operatingSystem": "Ubuntu 19.10",
      "availabilityZone": "ams0",
      "retentionType": "weeklyBackupRetention"
    }
  ]
}

List backups for a VPS

GET/vps/{vpsIdentifier}/backups

We offer multiple backup types, every VPS has 4 hourly backups by default, weekly backups are available for a small fee. This API call returns backups for both types.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Response Attributes
backups
Array (VpsBackup)

Hide child attributesShow child attributes
id
number

The backup id

status
string

Status of the backup (‘active’, ‘creating’, ‘reverting’, ‘deleting’, ‘pendingDeletion’, ‘syncing’, ‘moving’)

dateTimeCreate
string

The backup creation date

diskSize
number

The backup disk size in kB

operatingSystem
string

The backup operatingSystem

availabilityZone
string

The name of the availability zone the backup is in

retentionType
string

The backup retention type (daily, weekly)

PATCH /vps/example-vps/backups/712332
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "revert",
"destinationVpsIdentifier": "destination-vps"
}
' \
"https://api.transip.nl/v6/vps/example-vps/backups/712332"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "action": "revert",
  "destinationVpsIdentifier": "destination-vps"
}
Response204403404404409409409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Backup with id '1234' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The Backup '34026' is already locked to another action"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on Backup '123' are temporary disabled"
}

Revert backup to a VPS

PATCH/vps/{vpsIdentifier}/backups/{backupId}

Reverting a VPS backup will restore the VPS to an earlier state.

Both the VPS name (that the backup belongs to) and the backup id are required. Please use the List backups for a VPS call in order to get the ID, as you can extract the backup id from its output.

To revert a backup to a VPS, send a PATCH request with an action attribute set to revert.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

backupId
number (required) Example: 712332

Id of the backup

Request Attributes
action
string, required

destinationVpsIdentifier
string, optional

(name or uuid) When set, revert the backup to this VPS

PATCH /vps/example-vps/backups/712332
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "convert",
"description": "BeforeItsAllBroken"
}
' \
"https://api.transip.nl/v6/vps/example-vps/backups/712332"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "action": "convert",
  "description": "BeforeItsAllBroken"
}
Response204403403404404409409409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Snapshot limit reached"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Backup with id '1234' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The Backup '34026' is already locked to another action"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on Backup '123' are temporary disabled"
}

Convert backup to snapshot

PATCH/vps/{vpsIdentifier}/backups/{backupId}

With this API call you can convert a backup to a snapshot for the VPS.

In case the creation of this snapshot leads to exceeding the maximum allowed snapshots, the API call will return an error and the snapshot will not be created please order extra snapshots before proceeding.

To convert a backup to a VPS snapshot, send a PATCH request with the action attribute set to convert.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

backupId
number (required) Example: 712332

Id of the backup

Request Attributes
action
string, required

description
string, optional

TrafficPool

GET /traffic-pool
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/traffic-pool"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "trafficPoolInformation": [
    {
      "startDate": "2019-06-22",
      "endDate": "2019-07-22",
      "usedInBytes": 7860253754,
      "maxInBytes": 1073741824000,
      "expectedBytes": 1073741824000
    }
  ]
}

Get traffic pool information

GET/traffic-pool

All the traffic of your VPSes combined, overusage will also be billed based on this information.

Response Attributes
trafficPoolInformation
Array (VpsTrafficPoolInformation)

Hide child attributesShow child attributes
startDate
string

The start date in ‘Y-m-d’ format

endDate
string

The end date in ‘Y-m-d’ format

usedInBytes
number

The usage in bytes for this period

maxInBytes
number

The maximum amount of bytes that can be used in this period

expectedBytes
number

The expected amount of bytes that will be used in this period

GET /traffic-pool/example-vps
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/traffic-pool/example-vps"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404
Response headers
Content-Type: application/json
Response body
{
  "trafficPoolInformation": [
    {
      "startDate": "2019-06-22",
      "endDate": "2019-07-22",
      "usedInBytes": 7860253754,
      "maxInBytes": 1073741824000,
      "expectedBytes": 1073741824000
    }
  ]
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}

Get traffic information for a VPS

GET/traffic-pool/{vpsName}

Traffic information for a specific VPS can be retrieved using this API call. Statistics such as consumed bandwidth and network usage statistics are classified as traffic information.

URI Parameters
HideShow
vpsName
string (required) Example: example-vps

VPS name

Response Attributes
trafficPoolInformation
Array (VpsTrafficPoolInformation)

Hide child attributesShow child attributes
startDate
string

The start date in ‘Y-m-d’ format

endDate
string

The end date in ‘Y-m-d’ format

usedInBytes
number

The usage in bytes for this period

maxInBytes
number

The maximum amount of bytes that can be used in this period

expectedBytes
number

The expected amount of bytes that will be used in this period

VPS Firewall

This is the API endpoint for VPS firewall

GET /vps/example-vps/firewall
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/firewall"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "vpsFirewall": {
    "isEnabled": true,
    "ruleSet": [
      {
        "description": "HTTP",
        "startPort": 80,
        "endPort": 80,
        "protocol": "tcp",
        "whitelist": [
          "80.69.69.80/32",
          "80.69.69.100/32",
          "2a01:7c8:3:1337::1/128"
        ]
      }
    ]
  }
}

List firewall for a VPS

GET/vps/{vpsIdentifier}/firewall

The VPS firewall works as a whitelist stateful firewall for incoming traffic. Enable the Firewall to block everything, add rules to exclude certain traffic from being blocked.

To further filter traffic, IP’s can be whitelisted per rule. when no whitelist has been given for a specific rule, all traffic is allowed to this port.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Response Attributes
vpsFirewall
VpsFirewall

Hide child attributesShow child attributes
isEnabled
boolean

Whether the firewall is enabled for this VPS

ruleSet
Array (VpsFirewallRule)

Ruleset of the VPS

description
string

The rule name

startPort
number

The start port of this firewall rule

endPort
number

The end port of this firewall rule

protocol
string

The protocol tcp , udp or tcp_udp

whitelist
Array (string)

Whitelisted IP’s or ranges that are allowed to connect, empty to allow all

PUT /vps/example-vps/firewall
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"vpsFirewall": {
"isEnabled": true,
"ruleSet": [
{
"description": "HTTP",
"startPort": 80,
"endPort": 80,
"protocol": "tcp",
"whitelist": [
"80.69.69.80/32",
"80.69.69.100/32",
"2a01:7c8:3:1337::1/128"
]
}
]
}
}
' \
"https://api.transip.nl/v6/vps/example-vps/firewall"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "vpsFirewall": {
    "isEnabled": true,
    "ruleSet": [
      {
        "description": "HTTP",
        "startPort": 80,
        "endPort": 80,
        "protocol": "tcp",
        "whitelist": [
          "80.69.69.80/32",
          "80.69.69.100/32",
          "2a01:7c8:3:1337::1/128"
        ]
      }
    ]
  }
}
Response204403404406406406406406406406406406409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "IP range 'fe80::200:f8ff:fe21:67cfaa/200' is not valid"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Firewall 'example' has startPort '13371337' which should be larger than '0' and smaller than '65535'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Firewall 'example' has endPort '13371337' which should be larger than '0' and smaller than '65535'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Firewall 'example' has endPort '80' should be larger or equal than startPort '443'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Invalid whitelist entry provided '256.0.1.1'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Whitelisted entry count '21' exceeded maximum of '20''"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Rule 'HTTP' is already covered by 'HTTP-HTTPS'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Rulecount '51' exceeded maximum of '50'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided parameter 'protocol' can only be one of the following value's 'tcp,udp,tdp_udp'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Port '25' is blocked administratively"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}

Update firewall for a VPS

PUT/vps/{vpsIdentifier}/firewall

Update the ruleset for a VPS. This will override all current rules set for this VPS.

The VPS Firewall works as a whitelist. when no entries are given, but the firewall is enabled. All incoming traffic will be blocked. IP’s or IP Ranges (v4/v6) can be whitelisted per rule. When no whitelist has been given for a specific rule, all incoming traffic is allowed to this port.

Protocol parameter can either be tcp, udp or tcp_udp. There is a maximum of 50 rules with each a maximum of 20 whitelist entries.

Any change to the firewall will temporary lock the VPS while the new rules are being applied.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Request Attributes
vpsFirewall
VpsFirewall, required

isEnabled
boolean

Whether the firewall is enabled for this VPS

ruleSet
Array (VpsFirewallRule)

Ruleset of the VPS

description
string

The rule name

startPort
number

The start port of this firewall rule

endPort
number

The end port of this firewall rule

protocol
string

The protocol tcp , udp or tcp_udp

whitelist
Array (string)

Whitelisted IP’s or ranges that are allowed to connect, empty to allow all

PATCH /vps/example-vps/firewall
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "reset"
}
' \
"https://api.transip.nl/v6/vps/example-vps/firewall"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "action": "reset"
}
Response204403404406409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Action should be one of the following: reset"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}

Reset firewall for a VPS

PATCH/vps/{vpsIdentifier}/firewall

Reset the ruleset for a VPS back to the default settings. This will override all current rules set for this VPS.

Any change to the firewall will temporary lock the VPS while the new rules are being applied.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Request Attributes
action
string, required

VPS Settings

This endpoint can be used to toggle VPS settings on or off for a specified VPS.

VPS Settings are settings that are not necessarily part of the VPS itself but rather settings that can be toggled as an addition or deduction of functionalities.

An example of a setting would be blocking or unblocking the outbound mail ports for a specified VPS (Ports: 25, 465, 587). This setting is named blockVpsMailPorts.

GET /vps/example-vps/settings
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/settings"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200403404404
Response headers
Content-Type: application/json
Response body
{
  "settings": [
    {
      "name": "blockVpsMailPorts",
      "dataType": "boolean",
      "readOnly": false,
      "value": {
        "valueBoolean": true,
        "valueString": "allow"
      }
    }
  ]
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Setting 'exampleSetting' is not an existing setting"
}

List All Settings for a VPS

GET/vps/{vpsIdentifier}/settings

This API call will return all available settings that could be toggled for a VPS.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

Response Attributes
settings
Array (Setting)

Hide child attributesShow child attributes
name
string

Setting Name

dataType
string

Setting Datatype

readOnly
boolean

Setting ReadOnly

value
SettingValue

Setting Value

valueBoolean
boolean

Boolean Value

valueString
string

String Value

GET /vps/example-vps/settings/blockVpsMailPorts
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/vps/example-vps/settings/blockVpsMailPorts"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200403404404
Response headers
Content-Type: application/json
Response body
{
  "setting": {
    "name": "blockVpsMailPorts",
    "dataType": "boolean",
    "readOnly": false,
    "value": {
      "valueBoolean": true,
      "valueString": "allow"
    }
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Setting 'exampleSetting' is not an existing setting"
}

Get VPS Setting Information

GET/vps/{vpsIdentifier}/settings/{setting}

Returns the current value for the specified setting.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

setting
string (required) Example: blockVpsMailPorts

The Setting for the VPS

Response Attributes
setting
Setting

Hide child attributesShow child attributes
name
string

Setting Name

dataType
string

Setting Datatype

readOnly
boolean

Setting ReadOnly

value
SettingValue

Setting Value

valueBoolean
boolean

Boolean Value

valueString
string

String Value

PUT /vps/example-vps/settings/blockVpsMailPorts
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"setting": {
"name": "blockVpsMailPorts",
"dataType": "boolean",
"readOnly": false,
"value": {
"valueBoolean": true,
"valueString": "allow"
}
}
}
' \
"https://api.transip.nl/v6/vps/example-vps/settings/blockVpsMailPorts"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "setting": {
    "name": "blockVpsMailPorts",
    "dataType": "boolean",
    "readOnly": false,
    "value": {
      "valueBoolean": true,
      "valueString": "allow"
    }
  }
}
Response204403404404406406406409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Setting with name 'settingName' does not exist"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Setting name in JSON body does not match URI"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "No values are set in the value parameter"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Setting with name 'tcpMonitoringAvailable' is read only"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification allowed"
}

Update a setting for the specified VPS

PUT/vps/{vpsIdentifier}/settings/{setting}

This method allows you to update an available setting for the specified VPS.

There are a couple of things to keep in mind while sending this request:

  • You are able to set multiple value data types e.g. ‘valueBoolean’, ‘valueString’ however only the relevant datatype for the specified setting will be used.

  • You are not able to send an update request to a read only setting, please make sure to check which settings are specified as read only.

  • You are not able to send an update request without sending any values or leaving the values empty e.g. null values.

  • Please make sure that the setting name in the JSON body is equal to the setting name in the URI.

URI Parameters
HideShow
vpsIdentifier
string (required) Example: example-vps

VPS identifier (name or uuid)

setting
string (required) Example: blockVpsMailPorts

The Setting for the VPS

Request Attributes
setting
Setting, required

name
string

Setting Name

dataType
string

Setting Datatype

readOnly
boolean

Setting ReadOnly

value
SettingValue

Setting Value

valueBoolean
boolean

Boolean Value

valueString
string

String Value

Private Networks

Private networks are used for internal communication between VPSes that can be utilized best by non-public facing connectivity, data usage is unlimited and will not be billed

A private network offers the ability to connect your VPSes in a separate layer 2 network. IP address assignments and services like DHCP, DNS and routing are all in your own freedom to choose and set up.

GET /private-networks
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/private-networks"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "privateNetworks": [
    {
      "name": "example-privatenetwork",
      "description": "FilesharingNetwork",
      "isBlocked": false,
      "isLocked": false,
      "vpsNames": [
        "example-vps",
        "example-vps2"
      ],
      "connectedVpses": [
        {
          "name": "example-vps",
          "uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
          "description": "example VPS",
          "macAddress": "52:54:00:3b:52:65",
          "isLocked": false,
          "isBlocked": false,
          "isCustomerLocked": false
        }
      ]
    }
  ]
}

List all private networks

GET/private-networks

List all private networks in your account.

Should you only want to get the private networks attached to a specific VPS, set the vpsName parameter and only attached private networks will be shown like /v6/private-networks?vpsName=example-vps

If this parameter is not set, all private networks will be listed along with the VPSes it’s attached to.

This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.

URI Parameters
HideShow
vpsName
string (optional) Example: /private-networks?vpsName=example-vps

Filter private networks by a given VPS

Response Attributes
privateNetworks
Array (PrivateNetwork)

Hide child attributesShow child attributes
name
string

The unique private network name

description
string

The custom name that can be set by customer

isBlocked
boolean

If the Private Network is administratively blocked

isLocked
boolean

When locked, another process is already working with this private network

vpsNames
Array (string)

The names of VPSes in this private network

connectedVpses
Array (PrivateNetworkVps)

The VPSes in this private network

name
string

The unique VPS name

uuid
string

The unique identifier for the VPS

description
string,null

The name that can be set by customer

macAddress
string

The VPS macaddress

isLocked
boolean

Whether or not another process is already doing stuff with this VPS

isBlocked
boolean

If the VPS is administratively blocked

isCustomerLocked
boolean

If this VPS is locked by the customer

GET /private-networks/example-privatenetwork
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/private-networks/example-privatenetwork"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200403404
Response headers
Content-Type: application/json
Response body
{
  "privateNetwork": {
    "name": "example-privatenetwork",
    "description": "FilesharingNetwork",
    "isBlocked": false,
    "isLocked": false,
    "vpsNames": [
      "example-vps",
      "example-vps2"
    ],
    "connectedVpses": [
      {
        "name": "example-vps",
        "uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
        "description": "example VPS",
        "macAddress": "52:54:00:3b:52:65",
        "isLocked": false,
        "isBlocked": false,
        "isCustomerLocked": false
      }
    ]
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "PrivateNetwork 'example-privatenetwork' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "PrivateNetwork with name 'example-privatenetwork' not found"
}

Get private network by name

GET/private-networks/{privateNetworkName}

Gather detailed information about a private network. As one of the returned attributes includes an array of the VPSes it’s attached to, you can determine if the private network is already attached to a specific VPS and if not, you can attach it.

URI Parameters
HideShow
privateNetworkName
string (required) Example: example-privatenetwork

Name of the private network

Response Attributes
privateNetwork
PrivateNetwork

Hide child attributesShow child attributes
name
string

The unique private network name

description
string

The custom name that can be set by customer

isBlocked
boolean

If the Private Network is administratively blocked

isLocked
boolean

When locked, another process is already working with this private network

vpsNames
Array (string)

The names of VPSes in this private network

connectedVpses
Array (PrivateNetworkVps)

The VPSes in this private network

name
string

The unique VPS name

uuid
string

The unique identifier for the VPS

description
string,null

The name that can be set by customer

macAddress
string

The VPS macaddress

isLocked
boolean

Whether or not another process is already doing stuff with this VPS

isBlocked
boolean

If the VPS is administratively blocked

isCustomerLocked
boolean

If this VPS is locked by the customer

POST /private-networks
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"description": ""
}
' \
"https://api.transip.nl/v6/private-networks"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "description": ""
}
Response201
This response has no content.

Order a new private network

POST/private-networks

Order a new private network. After ordering a private network you’re able to attach it to a VPS t o make use of the private network.

Warning: This API call will create an invoice!

Request Attributes
description
string, optional

PUT /private-networks/example-privatenetwork
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"privateNetwork": {
"name": "example-privatenetwork",
"description": "FilesharingNetwork",
"isBlocked": false,
"isLocked": false,
"vpsNames": [
"example-vps",
"example-vps2"
],
"connectedVpses": [
{
"name": "example-vps",
"uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
"description": "example VPS",
"macAddress": "52:54:00:3b:52:65",
"isLocked": false,
"isBlocked": false,
"isCustomerLocked": false
}
]
}
}
' \
"https://api.transip.nl/v6/private-networks/example-privatenetwork"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "privateNetwork": {
    "name": "example-privatenetwork",
    "description": "FilesharingNetwork",
    "isBlocked": false,
    "isLocked": false,
    "vpsNames": [
      "example-vps",
      "example-vps2"
    ],
    "connectedVpses": [
      {
        "name": "example-vps",
        "uuid": "bfa08ad9-6c12-4e03-95dd-a888b97ffe49",
        "description": "example VPS",
        "macAddress": "52:54:00:3b:52:65",
        "isLocked": false,
        "isBlocked": false,
        "isCustomerLocked": false
      }
    ]
  }
}
Response204403404406409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "PrivateNetwork 'example-privatenetwork' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "PrivateNetwork with name 'example-privatenetwork' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided parameter 'verylongdescriptionthatwouldnotfit' can be 32 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The PrivateNetwork 'example-privatenetwork' is already locked to another action"
}

Update private network

PUT/private-networks/{privateNetworkName}

This method can also be used to change the description attribute. The description can be maximum 32 character longs

URI Parameters
HideShow
privateNetworkName
string (required) Example: example-privatenetwork

Name of the private network

Request Attributes
privateNetwork
PrivateNetwork, required

name
string

The unique private network name

description
string

The custom name that can be set by customer

isBlocked
boolean

If the Private Network is administratively blocked

isLocked
boolean

When locked, another process is already working with this private network

vpsNames
Array (string)

The names of VPSes in this private network

connectedVpses
Array (PrivateNetworkVps)

The VPSes in this private network

name
string

The unique VPS name

uuid
string

The unique identifier for the VPS

description
string,null

The name that can be set by customer

macAddress
string

The VPS macaddress

isLocked
boolean

Whether or not another process is already doing stuff with this VPS

isBlocked
boolean

If the VPS is administratively blocked

isCustomerLocked
boolean

If this VPS is locked by the customer

PATCH /private-networks/example-privatenetwork
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "attachvps",
"vpsName": "example-vps"
}
' \
"https://api.transip.nl/v6/private-networks/example-privatenetwork"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "action": "attachvps",
  "vpsName": "example-vps"
}
Response204403403404404409409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "PrivateNetwork 'example-privatenetwork' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "PrivateNetwork with name 'example-privatenetwork' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The PrivateNetwork 'example-privatenetwork' is already locked to another action"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

Attach vps to privateNetwork

PATCH/private-networks/{privateNetworkName}

Attach VPSes to the private network one at a time. Send a PATCH request with the action attribute set to attachvps.

URI Parameters
HideShow
privateNetworkName
string (required) Example: example-privatenetwork

Name of the private network

Request Attributes
action
string, required

vpsName
string, required

Name of the vps that you want to attach

PATCH /private-networks/example-privatenetwork
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "detachvps",
"vpsName": "example-vps"
}
' \
"https://api.transip.nl/v6/private-networks/example-privatenetwork"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "action": "detachvps",
  "vpsName": "example-vps"
}
Response204403403404404409409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "PrivateNetwork 'example-privatenetwork' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "PrivateNetwork with name 'example-privatenetwork' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The PrivateNetwork 'example-privatenetwork' is already locked to another action"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}

Detach vps from privateNetwork

PATCH/private-networks/{privateNetworkName}

Detach VPSes from the private network one at a time. Send a PATCH request with the action attribute set to removevps.

URI Parameters
HideShow
privateNetworkName
string (required) Example: example-privatenetwork

Name of the private network

Request Attributes
action
string, required

vpsName
string, required

Name of the vps that you want to detach

DELETE /private-networks/example-privatenetwork
Request
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"endTime": "end"
}
' \
"https://api.transip.nl/v6/private-networks/example-privatenetwork"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "endTime": "end"
}
Response204403404406409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "PrivateNetwork 'example-privatenetwork' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "PrivateNetwork with name 'example-privatenetwork' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid cancellation time: 'now', please use either 'end' or 'immediately'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Product already has cancellation pending."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The PrivateNetwork 'example-privatenetwork' is already locked to another action"
}

Cancel a private network

DELETE/private-networks/{privateNetworkName}

Cancel a private network.

You can set the endTime attribute to end or immediately, this has the following implications:

  • end: The private network will be terminated from the end date of the agreement as can be found in the applicable quote;

  • immediately: The private network will be terminated immediately.

URI Parameters
HideShow
privateNetworkName
string (required) Example: example-privatenetwork

Name of the private network

Request Attributes
endTime
string, optional

Cancellation time, either ‘end’ (default) or ‘immediately’

Big Storages

This is the API endpoint for bigstorage services.

GET /big-storages
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/big-storages"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "bigStorages": [
    {
      "name": "example-bigstorage",
      "description": "Big storage description",
      "diskSize": 2147483648,
      "offsiteBackups": true,
      "vpsName": "example-vps",
      "status": "active",
      "isLocked": false,
      "availabilityZone": "ams0",
      "serial": "a4d857d3fe5e814f34bb"
    }
  ]
}

List all big storages

GET/big-storages

Returns an array of all Big Storages in the given account.

After all Big Storages have been returned as an array, you can extract it and use a specific Big Storage for the other API calls documented below.

Should you only want to get the big storages attached to a specific VPS, set the vpsName parameter and only big storages that are attached to the given vps will be shown like /v6/big-storages?vpsName=example-vps

This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.

Warning: This method is deprecated. Use the block-storages resource instead.

URI Parameters
HideShow
vpsName
string (optional) Example: /big-storages?vpsName=example-vps

Filters on a given vps name.

Response Attributes
bigStorages
Array (BigStorage)

Hide child attributesShow child attributes
name
string

Name of the big storage

description
string

Name that can be set by customer

diskSize
number

Disk size of the big storage in kB

offsiteBackups
boolean

Whether a bigstorage has backups

vpsName
string

The VPS that the big storage is attached to

status
string

Status of the big storage can be ‘active’, ‘attaching’ or ‘detaching’

isLocked
boolean

Lock status of the big storage, when it is locked, it cannot be attached or detached.

availabilityZone
string

The availability zone the bigstorage is located in

serial
string

The serial of the big storage. This is a unique identifier that is visible by the vps it has been attached to. On linux servers it is visible using udevadm info /dev/vdb where it will be the value of ID_SERIAL. A symlink will also be created in /dev/disk-by-id/ containing the serial. This is useful if you want to map a disk inside a VPS to a big storage.

GET /big-storages/bigStorageIdentifier
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/big-storages/bigStorageIdentifier"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404
Response headers
Content-Type: application/json
Response body
{
  "bigStorage": {
    "name": "example-bigstorage",
    "description": "Big storage description",
    "diskSize": 2147483648,
    "offsiteBackups": true,
    "vpsName": "example-vps",
    "status": "active",
    "isLocked": false,
    "availabilityZone": "ams0",
    "serial": "a4d857d3fe5e814f34bb"
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage with identifier 'example-bigstorage' not found"
}

Get big storage by identifier

GET/big-storages/{bigStorageIdentifier}

Get information about a specific Big Storage and its current status. If the Big Storage is attached to a VPS, the output will contain the VPS name it’s attached to.

Warning: This method is deprecated. Use the block-storages resource instead.

URI Parameters
HideShow
bigStorageIdentifier
string (required) 

The identifier of the big storage (name or uuid)

Response Attributes
bigStorage
BigStorage

Hide child attributesShow child attributes
name
string

Name of the big storage

description
string

Name that can be set by customer

diskSize
number

Disk size of the big storage in kB

offsiteBackups
boolean

Whether a bigstorage has backups

vpsName
string

The VPS that the big storage is attached to

status
string

Status of the big storage can be ‘active’, ‘attaching’ or ‘detaching’

isLocked
boolean

Lock status of the big storage, when it is locked, it cannot be attached or detached.

availabilityZone
string

The availability zone the bigstorage is located in

serial
string

The serial of the big storage. This is a unique identifier that is visible by the vps it has been attached to. On linux servers it is visible using udevadm info /dev/vdb where it will be the value of ID_SERIAL. A symlink will also be created in /dev/disk-by-id/ containing the serial. This is useful if you want to map a disk inside a VPS to a big storage.

POST /big-storages
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"size": 8,
"offsiteBackups": true,
"availabilityZone": "ams0",
"vpsName": "example-vps",
"description": "backup-bigstorage"
}
' \
"https://api.transip.nl/v6/big-storages"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "size": 8,
  "offsiteBackups": true,
  "availabilityZone": "ams0",
  "vpsName": "example-vps",
  "description": "backup-bigstorage"
}
Response201403404404404406406406406406409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The availability zone 'wtf0' is not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The availability zone 'ams0' is not available"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage size '-1' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage size '50' exceeds the maximum amount of 40 TB"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage size '3' should be a multiple of 2"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage needs to be in the same availability zone as VPS 'example-vps'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided parameter 'description' can be 64 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}

Order a new big storage

POST/big-storages

Use this API call to order a new Big Storage.

The minimum size is 2 TB and storage can be extended with up to maximum of 40 TB. Make sure to use a multiple of 2 TB.

Optionally, to create back-ups of your Big Storage, enable off-site back-ups. We highly recommend activating back-ups.

When a vpsName has been given, the availability zone of this VPS will be used. The Bigstorage and VPS have to be in the same availability zone in order to attach.

Warning: This API call will create an invoice!

Warning: This method is deprecated. Use the block-storages resource instead.

Request Attributes
size
number, required

The size of the big storage in TB’s, use a multiple of 2. The maximum size is 40.

offsiteBackups
boolean, optional

Whether to order offsite backups, default is true.

availabilityZone
string, optional

The name of the availabilityZone where the BigStorage should be created. This parameter can not be used in conjunction with vpsName. If a vpsName is provided as well as an availabilityZone, the zone of the vps is leading.

vpsName
string, optional

The name of the VPS to attach the big storage to

description
string, optional

The description of the Bigstorage (maximum length 64)

POST /big-storages
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"bigStorageName": "example-bigstorage",
"size": 8,
"offsiteBackups": true
}
' \
"https://api.transip.nl/v6/big-storages"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "bigStorageName": "example-bigstorage",
  "size": 8,
  "offsiteBackups": true
}
Response201404406406406406
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage with identifier 'example-bigstorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage size '-1' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage size '50' exceeds the maximum amount of 40 TB"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage size '3' should be a multiple of 2"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Upgrade size '2' is smaller than current size '4'"
}

Upgrade big storage

POST/big-storages

With this method you are able to upgrade a bigstorage diskSize or enable backups.

The minimum size is 2 TB and storage can be extended with up to maximum of 40 TB. Make sure to use a multiple of 2 TB.

Optionally, to create back-ups of your Big Storage, enable off-site back-ups. We highly recommend activating back-ups.

Warning: This API call will create an invoice!

Warning: This method is deprecated. Use the block-storages resource instead.

Request Attributes
bigStorageName
string, optional

The name of the bigstorage to upgrade

size
number, required

The size of the big storage in TB’s, use a multiple of 2. The maximum size is 40.

offsiteBackups
boolean, optional

Whether to order offsite backups, omit this to use current value

PUT /big-storages/bigStorageIdentifier
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"bigStorage": {
"name": "example-bigstorage",
"description": "Big storage description",
"diskSize": 2147483648,
"offsiteBackups": true,
"vpsName": "example-vps",
"status": "active",
"isLocked": false,
"availabilityZone": "ams0",
"serial": "a4d857d3fe5e814f34bb"
}
}
' \
"https://api.transip.nl/v6/big-storages/bigStorageIdentifier"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "bigStorage": {
    "name": "example-bigstorage",
    "description": "Big storage description",
    "diskSize": 2147483648,
    "offsiteBackups": true,
    "vpsName": "example-vps",
    "status": "active",
    "isLocked": false,
    "availabilityZone": "ams0",
    "serial": "a4d857d3fe5e814f34bb"
  }
}
Response204403404404406406406409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage with identifier 'example-bigstorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Please supply the '`description` or `vpsName`' parameter"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage needs to be in the same availability zone as VPS 'example-vps'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided parameter 'description' can be 64 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage 'example-bigstorage' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}

Update big storage

PUT/big-storages/{bigStorageIdentifier}

This API calls allows for altering a big storage in several ways outlined below:

  • Changing the description of a Big Storage (maximum length 64);

  • One Big Storages can only be attached to one VPS at a time;

  • One VPS can have a maximum of 10 bigstorages attached;

  • Set the vpsName property to the VPS name to attach to for attaching Big Storage;

  • Set the vpsName property to null to detach the Big Storage from the currently attached VPS.

Warning: This method is deprecated. Use the block-storages resource instead.

URI Parameters
HideShow
bigStorageIdentifier
string (required) 

The identifier of the big storage (name or uuid)

Request Attributes
bigStorage
BigStorage, required

name
string

Name of the big storage

description
string

Name that can be set by customer

diskSize
number

Disk size of the big storage in kB

offsiteBackups
boolean

Whether a bigstorage has backups

vpsName
string

The VPS that the big storage is attached to

status
string

Status of the big storage can be ‘active’, ‘attaching’ or ‘detaching’

isLocked
boolean

Lock status of the big storage, when it is locked, it cannot be attached or detached.

availabilityZone
string

The availability zone the bigstorage is located in

serial
string

The serial of the big storage. This is a unique identifier that is visible by the vps it has been attached to. On linux servers it is visible using udevadm info /dev/vdb where it will be the value of ID_SERIAL. A symlink will also be created in /dev/disk-by-id/ containing the serial. This is useful if you want to map a disk inside a VPS to a big storage.

DELETE /big-storages/bigStorageIdentifier
Request
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"endTime": "end"
}
' \
"https://api.transip.nl/v6/big-storages/bigStorageIdentifier"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "endTime": "end"
}
Response204404406409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage with identifier 'example-bigstorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid cancellation time: 'now', please use either 'end' or 'immediately'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Product already has cancellation pending"
}

Cancel big storage

DELETE/big-storages/{bigStorageIdentifier}

Cancels a big storage for the specified ‘endTime’. You can set the endTime attribute to end or immediately, this has the following implications:

  • end: The Big Storage will be terminated from the end date of the agreement as can be found in the applicable quote;

  • immediately: The Big Storage will be terminated immediately.

Note that canceling a Big Storage will wipe all data stored on it as well as off-site back-ups as well if these are activated.

Warning: This method is deprecated. Use the block-storages resource instead.

URI Parameters
HideShow
bigStorageIdentifier
string (required) 

The identifier of the big storage (name or uuid)

Request Attributes
endTime
string, optional

Cancellation time, either ‘end’ or ‘immediately’

Big Storage Backups

This is the API endpoint for big storage backup services.

GET /big-storages/bigStorageIdentifier/backups
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/big-storages/bigStorageIdentifier/backups"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "backups": [
    {
      "id": 1583,
      "status": "active",
      "diskSize": 4294967296,
      "dateTimeCreate": "2019-12-31 09:13:55",
      "availabilityZone": "ams0"
    }
  ]
}

List backups for a big storage

GET/big-storages/{bigStorageIdentifier}/backups

Using this API call, you are able to list all backups belonging to a specific big storage.

Warning: This method is deprecated. Use the block-storages resource instead.

URI Parameters
HideShow
bigStorageIdentifier
string (required) 

The identifier of the big storage (name or uuid)

Response Attributes
backups
Array (BigStorageBackup)

Hide child attributesShow child attributes
id
number

Id of the big storage

status
string

Status of the big storage backup (‘active’, ‘creating’, ‘reverting’, ‘deleting’, ‘pendingDeletion’, ‘syncing’, ‘moving’)

diskSize
number

The backup disk size in kB

dateTimeCreate
string

Date of the big storage backup

availabilityZone
string

The name of the availability zone the backup is in

PATCH /big-storages/bigStorageIdentifier/backups/625584
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "revert",
"destinationBigStorageIdentifier": "example-bigstorage"
}
' \
"https://api.transip.nl/v6/big-storages/bigStorageIdentifier/backups/625584"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "action": "revert",
  "destinationBigStorageIdentifier": "example-bigstorage"
}
Response204404404409409409409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage with identifier 'example-bigstorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Backup with id '1337' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage 'example-bigstorage' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The Backup '34026' is already locked to another action"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on Backup '123' are temporary disabled"
}

Revert a big storage backup

PATCH/big-storages/{bigStorageIdentifier}/backups/{backupId}

To revert a backup from a big storage, retrieve the backupId from the backups resource. Please note this is only possible when any backups are created with the off-site backups feature, otherwise no backups will be made nor listed.

Warning: This method is deprecated. Use the block-storages resource instead.

URI Parameters
HideShow
bigStorageIdentifier
string (required) 

The identifier of the big storage (name or uuid)

backupId
number (required) Example: 625584

Id of the backup

Request Attributes
action
string, required

destinationBigStorageIdentifier
string, optional

When set, revert the backup to this big storage

Usage

This is the API endpoint for big storage usage statistics.

GET /big-storages/bigStorageIdentifier/usage
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"dateTimeStart": 1490023668,
"dateTimeEnd": 1490064468
}
' \
"https://api.transip.nl/v6/big-storages/bigStorageIdentifier/usage"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "dateTimeStart": 1490023668,
  "dateTimeEnd": 1490064468
}
Response200406406406406406406406
Response headers
Content-Type: application/json
Response body
{
  "usage": [
    {
      "iopsRead": 0.27,
      "iopsWrite": 0.13,
      "date": 1574783109
    }
  ]
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The parameter 'dateTimeStart' is not a number."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The timestamp 'dateTimeStart' cannot be negative."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The timestamp 'dateTimeEnd' cannot be in the future."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The time period is too large, it should not be bigger than one month."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The time period is too large, it should not be bigger than one month."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "These are invalid usage types: invalid, type."
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Big storage 'example-bigstorage' is not attached to a VPS"
}

Get big storage usage statistics

GET/big-storages/{bigStorageIdentifier}/usage

Get the usage statistics for a big storage. You can specify a dateTimeStart and dateTimeEnd parameter in the UNIX timestamp format. When none given, traffic for the past 24 hours are returned. The maximum period is one month.

When the big storage is not attached to a vps, there are no usage statistics available. Therefore, the response returned will be a 406 exception. If the big storage is re-attached to another vps then the old statistics are no longer available.

Warning: This method is deprecated. Use the block-storages resource instead.

URI Parameters
HideShow
bigStorageIdentifier
string (required) 

The identifier of the big storage (name or uuid)

Request Attributes
dateTimeStart
number, optional

The start date of the usage statistics

dateTimeEnd
number, optional

The end date of the usage statistics

Response Attributes
usage
Array (VpsUsageDataDisk)

Hide child attributesShow child attributes
iopsRead
number

The read IOPS for this entry

iopsWrite
number

The write IOPS for this entry

date
number

Date of the entry, by default in UNIX timestamp format

Block Storages

This is the API endpoint for blockstorage services.

GET /block-storages
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/block-storages"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "blockStorages": [
    {
      "name": "example-faststorage",
      "description": "Block storage description",
      "productType": "fast-storage",
      "size": 2147483648,
      "offsiteBackups": true,
      "vpsName": "example-vps",
      "status": "active",
      "isLocked": false,
      "availabilityZone": "ams0",
      "serial": "a4d857d3fe5e814f34bb"
    }
  ]
}

List all block storages

GET/block-storages

Returns an array of all Block Storages in the given account.

After all Block Storages have been returned as an array, you can extract it and use a specific Block Storage for the other API calls documented below.

Should you only want to get the block storages attached to a specific VPS, set the vpsName parameter and only block storages that are attached to the given vps will be shown like /v6/block-storages?vpsName=example-vps

This method supports pagination, which allows you to limit the amount of returned objects per call, thus improving the response time. See the documentation on pages for more information on how to use this functionality.

Response Attributes
blockStorages
Array (BlockStorage)

Hide child attributesShow child attributes
name
string

Name of the block storage

description
string

Name that can be set by customer

productType
string

Block storage type

size
number

Size of the block storage in kB

offsiteBackups
boolean

Whether a block storage has backups

vpsName
string

The VPS that the block storage is attached to

status
string

Status of the block storage can be ‘active’, ‘attaching’ or ‘detaching’

isLocked
boolean

Lock status of the block storage, when it is locked, it cannot be attached or detached.

availabilityZone
string

The availability zone the block storage is located in

serial
string

The serial of the block storage. This is a unique identifier that is visible by the vps it has been attached to. On linux servers it is visible using udevadm info /dev/vdb where it will be the value of ID_SERIAL. A symlink will also be created in /dev/disk-by-id/ containing the serial. This is useful if you want to map a disk inside a VPS to a block storage.

GET /block-storages/blockStorageIdentifier
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/block-storages/blockStorageIdentifier"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200404
Response headers
Content-Type: application/json
Response body
{
  "blockStorage": {
    "name": "example-faststorage",
    "description": "Block storage description",
    "productType": "fast-storage",
    "size": 2147483648,
    "offsiteBackups": true,
    "vpsName": "example-vps",
    "status": "active",
    "isLocked": false,
    "availabilityZone": "ams0",
    "serial": "a4d857d3fe5e814f34bb"
  }
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Block storage with identifier 'example-faststorage' not found"
}

Get block storage by identifier

GET/block-storages/{blockStorageIdentifier}

Get information about a specific Block Storage and its current status by identifier (name or uuid). If the Block Storage is attached to a VPS, the output will contain the VPS name it’s attached to.

URI Parameters
HideShow
blockStorageIdentifier
string (required) 

The identifier of the block storage (name or uuid)

Response Attributes
blockStorage
BlockStorage

Hide child attributesShow child attributes
name
string

Name of the block storage

description
string

Name that can be set by customer

productType
string

Block storage type

size
number

Size of the block storage in kB

offsiteBackups
boolean

Whether a block storage has backups

vpsName
string

The VPS that the block storage is attached to

status
string

Status of the block storage can be ‘active’, ‘attaching’ or ‘detaching’

isLocked
boolean

Lock status of the block storage, when it is locked, it cannot be attached or detached.

availabilityZone
string

The availability zone the block storage is located in

serial
string

The serial of the block storage. This is a unique identifier that is visible by the vps it has been attached to. On linux servers it is visible using udevadm info /dev/vdb where it will be the value of ID_SERIAL. A symlink will also be created in /dev/disk-by-id/ containing the serial. This is useful if you want to map a disk inside a VPS to a block storage.

POST /block-storages
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"type": "fast-storage",
"size": 10485760,
"offsiteBackups": true,
"availabilityZone": "ams0",
"vpsName": "example-vps",
"description": "backup-blockstorage"
}
' \
"https://api.transip.nl/v6/block-storages"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "type": "fast-storage",
  "size": 10485760,
  "offsiteBackups": true,
  "availabilityZone": "ams0",
  "vpsName": "example-vps",
  "description": "backup-blockstorage"
}
Response201403404404404406406406406406409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The availability zone 'wtf0' is not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The availability zone 'ams0' is not available"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Block storage size '-1' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Block storage size '9765625005' exceeds the maximum amount of 10000 GB"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Block storage size '9765626' should be a multiple of 10 GB"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Block storage needs to be in the same availability zone as VPS 'example-vps'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided parameter 'description' can be 64 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}

Order a new block storage

POST/block-storages

Use this API call to order a new Block Storage.

Big storages: The minimum size is 2 TiB and storage can be extended with up to maximum of 40 TiB. Make sure to use a multiple of 2 TiB. Note that 2 TiB equals 2147483648 KiB.

Fast storages: The minimum size is 10 GiB and storage can be extended with up to maximum of 10000 GiB. Make sure to use a multiple of 10 GiB. Note that 10 GiB equals 10485760 KiB.

Optionally, to create back-ups of your Block Storage, enable off-site back-ups. We highly recommend activating back-ups.

When a vpsName has been given, the availability zone of this VPS will be used. The Blockstorage and VPS have to be in the same availability zone in order to attach.

Warning: This API call will create an invoice!

Request Attributes
type
string, required

The type of the block storage. It can be big-storage or fast-storage.

size
number, required

The size of the block storage in KB.

offsiteBackups
boolean, optional

Whether to order offsite backups, default is true.

availabilityZone
string, optional

The name of the availabilityZone where the BlockStorage should be created. This parameter can not be used in conjunction with vpsName. If a vpsName is provided as well as an availabilityZone, the zone of the vps is leading.

vpsName
string, optional

The name of the VPS to attach the block storage to

description
string, optional

The description of the Blockstorage (maximum length 64)

POST /block-storages
Request
Curl example
curl -X POST \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"blockStorageName": "example-faststorage",
"size": 10485760,
"offsiteBackups": true
}
' \
"https://api.transip.nl/v6/block-storages"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "blockStorageName": "example-faststorage",
  "size": 10485760,
  "offsiteBackups": true
}
Response201404406406406406
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "Block storage with name 'example-faststorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Block storage size '-1' is invalid"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Block storage size '9765625005' exceeds the maximum amount of 10000 GB"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Block storage size '9765626' should be a multiple of 10 GB"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Upgrade size '20' is smaller than current size '40'"
}

Upgrade block storage

POST/block-storages

With this method you are able to upgrade a blockstorage size or enable backups.

Big storages: The minimum size is 2 TiB and storage can be extended with up to maximum of 40 TiB. Make sure to use a multiple of 2 TiB. Note that 2 TiB equals 2147483648 KiB.

Fast storages: The minimum size is 10 GiB and storage can be extended with up to maximum of 10000 GiB. Make sure to use a multiple of 10 GiB. Note that 10 GiB equals 10485760 KiB.

Optionally, to create back-ups of your Block Storage, enable off-site back-ups. We highly recommend activating back-ups.

Warning: This API call will create an invoice!

Request Attributes
blockStorageName
string, optional

The name of the blockstorage to upgrade

size
number, required

The size of the block storage in KB.

offsiteBackups
boolean, optional

Whether to order offsite backups, omit this to use current value

PUT /block-storages/blockStorageIdentifier
Request
Curl example
curl -X PUT \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"blockStorage": {
"name": "example-faststorage",
"description": "Block storage description",
"productType": "fast-storage",
"size": 2147483648,
"offsiteBackups": true,
"vpsName": "example-vps",
"status": "active",
"isLocked": false,
"availabilityZone": "ams0",
"serial": "a4d857d3fe5e814f34bb"
}
}
' \
"https://api.transip.nl/v6/block-storages/blockStorageIdentifier"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "blockStorage": {
    "name": "example-faststorage",
    "description": "Block storage description",
    "productType": "fast-storage",
    "size": 2147483648,
    "offsiteBackups": true,
    "vpsName": "example-vps",
    "status": "active",
    "isLocked": false,
    "availabilityZone": "ams0",
    "serial": "a4d857d3fe5e814f34bb"
  }
}
Response204403404404406406406409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is blocked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Block storage with name 'example-faststorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS with name 'example-vps' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Please supply the '`description` or `vpsName`' parameter"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Block storage needs to be in the same availability zone as VPS 'example-vps'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The provided parameter 'description' can be 64 characters maximum"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Block storage 'example-faststorage' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}

Update block storage

PUT/block-storages/{blockStorageIdentifier}

This API calls allows for altering a block storage in several ways outlined below:

  • Changing the description of a Block Storage (maximum length 64);

  • One Block Storage can only be attached to one VPS at a time;

  • One VPS can have a maximum of 10 block storages attached;

  • Set the vpsName property to the VPS name to attach to for attaching Block Storage;

  • Set the vpsName property to null to detach the Block Storage from the currently attached VPS.

URI Parameters
HideShow
blockStorageIdentifier
string (required) 

The identifier of the block storage (name or uuid)

Request Attributes
blockStorage
BlockStorage, required

name
string

Name of the block storage

description
string

Name that can be set by customer

productType
string

Block storage type

size
number

Size of the block storage in kB

offsiteBackups
boolean

Whether a block storage has backups

vpsName
string

The VPS that the block storage is attached to

status
string

Status of the block storage can be ‘active’, ‘attaching’ or ‘detaching’

isLocked
boolean

Lock status of the block storage, when it is locked, it cannot be attached or detached.

availabilityZone
string

The availability zone the block storage is located in

serial
string

The serial of the block storage. This is a unique identifier that is visible by the vps it has been attached to. On linux servers it is visible using udevadm info /dev/vdb where it will be the value of ID_SERIAL. A symlink will also be created in /dev/disk-by-id/ containing the serial. This is useful if you want to map a disk inside a VPS to a block storage.

DELETE /block-storages/blockStorageIdentifier
Request
Curl example
curl -X DELETE \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"endTime": "end"
}
' \
"https://api.transip.nl/v6/block-storages/blockStorageIdentifier"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "endTime": "end"
}
Response204404406409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "Block storage with name 'example-faststorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "This is not a valid cancellation time: 'now', please use either 'end' or 'immediately'"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Product already has cancellation pending"
}

Cancel block storage

DELETE/block-storages/{blockStorageIdentifier}

Cancels a block storage for the specified ‘endTime’. You can set the endTime attribute to end or immediately, this has the following implications:

  • end: The Block Storage will be terminated from the end date of the agreement as can be found in the applicable quote;

  • immediately: The Block Storage will be terminated immediately.

Note that canceling a Block Storage will wipe all data stored on it as well as off-site back-ups as well if these are activated.

URI Parameters
HideShow
blockStorageIdentifier
string (required) 

The identifier of the block storage (name or uuid)

Request Attributes
endTime
string, optional

Cancellation time, either ‘end’ or ‘immediately’

Block Storage Backups

This is the API endpoint for block storage backup services.

GET /block-storages/blockStorageIdentifier/backups
Request
Curl example
curl -X GET \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
"https://api.transip.nl/v6/block-storages/blockStorageIdentifier/backups"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Response200
Response headers
Content-Type: application/json
Response body
{
  "backups": [
    {
      "id": 1583,
      "status": "active",
      "size": 4294967296,
      "dateTimeCreate": "2019-12-31 09:13:55",
      "availabilityZone": "ams0"
    }
  ]
}

List backups for a block storage

GET/block-storages/{blockStorageIdentifier}/backups

Using this API call, you are able to list all backups belonging to a specific block storage.

URI Parameters
HideShow
blockStorageIdentifier
string (required) 

The identifier of the block storage (name or uuid)

Response Attributes
backups
Array (BlockStorageBackup)

Hide child attributesShow child attributes
id
number

Id of the block storage

status
string

Status of the block storage backup (‘active’, ‘creating’, ‘reverting’, ‘deleting’, ‘pendingDeletion’, ‘syncing’, ‘moving’)

size
number

The backup size in kB

dateTimeCreate
string

Date of the block storage backup

availabilityZone
string

The name of the availability zone the backup is in

PATCH /block-storages/blockStorageIdentifier/backups/625584
Request
Curl example
curl -X PATCH \
-H "Content-Type: application/json" \
-H "Authorization: Bearer [your JSON web token]" \
-d '
{
"action": "revert",
"destinationBlockStorageName": "example-faststorage"
}
' \
"https://api.transip.nl/v6/block-storages/blockStorageIdentifier/backups/625584"
Request headers
Content-Type: application/json
Authorization: Bearer [your JSON web token]
Request body
{
  "action": "revert",
  "destinationBlockStorageName": "example-faststorage"
}
Response204404404409409409409409409
This response has no content.
Response headers
Content-Type: application/json
Response body
{
  "error": "Block storage with name 'example-faststorage' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Backup with id '1337' not found"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Block storage 'example-faststorage' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "The Backup '34026' is already locked to another action"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' has an action running, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "VPS 'example-vps' is customer locked, no modification is allowed"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on VPS 'example-vps' are temporary disabled"
}
Response headers
Content-Type: application/json
Response body
{
  "error": "Actions on Backup '123' are temporary disabled"
}

Revert a block storage backup