Xenius public API Documentation

Postman collection → OpenAPI spec →

Introduction

Xenius Api Documentation for public Use

Welcome to the API Documentation

This documentation aims to provide all the information you need to work with our API.

HTTP Status Codes

Below is a list of possible HTTP status codes that may be returned by the API:

Code Description
200 OK
201 Created
202 Accepted
204 No Content
301 Moved Permanently
302 Found
400 Bad Request
401 Unauthorized
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
413 Content Too Large
415 Unsupported Media Type
422 Unprocessable Content
429 Too Many Requests
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
511 Network Authentication Required

Authenticating requests

To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".

All authenticated endpoints are marked with a requires authentication badge in the documentation below.

You can retrieve your token contacting support.

Authentication

Verify Api-token

GET
https://staging.api.xenius.io
/v2/verify-token
requires authentication

Headers

Authorization
Example:
Bearer ACCESS_TOKEN
Accept
Example:
application/json
Content-Type
Example:
application/json
Example request:
curl --request GET \
    --get "https://staging.api.xenius.io/v2/verify-token" \
    --header "Authorization: Bearer ACCESS_TOKEN" \
    --header "Accept: application/json" \
    --header "Content-Type: application/json"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : application/json
                                                         
{
    "message": "Unauthenticated."
}

Carts

Create a new cart for Admind (POST)

POST
https://staging.api.xenius.io
/v2/carts/store-admind
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Accept
Example:
application/json
Content-Type
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://staging.api.xenius.io/v2/carts/store-admind" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Accept: application/json" \
    --header "Content-Type: application/json" \
    --data "{
    \"domain_name\": \"xenius.be\",
    \"order_number\": \"OR1234\",
    \"contact_id\": 1,
    \"contact\": {
        \"first_name\": \"Anouk\",
        \"last_name\": \"Leroy\",
        \"email\": \"gilles.degroote@example.org\",
        \"address\": \"Lauwerslaan 39\",
        \"postalcode\": \"5537\",
        \"town\": \"Péruwelz\",
        \"country\": \"PW\",
        \"phone\": \"+32.123457789\",
        \"company\": \"Aerts EBVBA\",
        \"vat\": \"BE1234567\",
        \"lang\": \"NL\",
        \"gender\": \"V\"
    }
}"
Example response:
[
    {
        "message": "Cart stored successfully",
        "data": {
            "order_id": 1,
            "contact_id": 1
        }
    }
]
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : application/json
                                                         
{
    "message": "Unauthenticated."
}
{
    "message": "Unauthenticated."
}
{
    "message": "No :attribute found."
}
[
    {
        "message": "There are conflicting items.",
        "errors": {
            "contact_id": [
                "The contact id field prohibits contact from being present."
            ],
            "contact": [
                "The contact field prohibits contact id from being present."
            ]
        }
    }
]
[
    {
        "message": "The selected :attribute is invalid",
        "errors": {
            ":attribute": [
                "The selected :attribute is invalid."
            ]
        }
    }
]

Domain names

Show all domain names of the client (GET)

GET
https://staging.api.xenius.io
/v2/domain-names
requires authentication

Returns a list of domain names of the client.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Accept
Example:
application/json
Content-Type
Example:
application/json

Response Fields

Example request:
curl --request GET \
    --get "https://staging.api.xenius.io/v2/domain-names" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Accept: application/json" \
    --header "Content-Type: application/json"
Example response:
{
    "id": null,
    "status": "active",
    "domain_name": "collin.net",
    "expirationdate": "2024-12-30",
    "days_until_expiration": 0,
    "is_locked": false,
    "auto_renew": false,
    "external_id": "(test)184",
    "nameservers": {
        "ns1": {
            "name": "ns3.hostedby.eu",
            "ipv4": "185.27.175.217",
            "ipv6": "2a00:f10:121:400:4c7:54ff:fe00:525"
        },
        "ns2": {
            "name": "ns4.hostedby.eu",
            "ipv4": "185.59.16.34",
            "ipv6": null
        },
        "ns3": {
            "name": "ns2.hostedby.be",
            "ipv4": "151.80.147.144",
            "ipv6": null
        }
    }
}

Show a domain name of the client by id (GET)

GET
https://staging.api.xenius.io
/v2/domain-names/id/{id}
requires authentication

Returns a domain name of the client.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Accept
Example:
application/json
Content-Type
Example:
application/json

URL Parameters

id
integer
required

id of the domain name

Example:
10

Response Fields

Example request:
curl --request GET \
    --get "https://staging.api.xenius.io/v2/domain-names/id/10" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Accept: application/json" \
    --header "Content-Type: application/json"
Example response:
{
    "id": null,
    "status": "active",
    "domain_name": "borremans.org",
    "expirationdate": "2024-12-30",
    "days_until_expiration": 0,
    "is_locked": false,
    "auto_renew": false,
    "external_id": "(test)8634",
    "nameservers": {
        "ns1": {
            "name": "ns3.hostedby.eu",
            "ipv4": "185.27.175.217",
            "ipv6": "2a00:f10:121:400:4c7:54ff:fe00:525"
        },
        "ns2": {
            "name": "ns4.hostedby.eu",
            "ipv4": "185.59.16.34",
            "ipv6": null
        },
        "ns3": {
            "name": "ns2.hostedby.be",
            "ipv4": "151.80.147.144",
            "ipv6": null
        }
    }
}

Show a domain name of the client by external_id (GET)

GET
https://staging.api.xenius.io
/v2/domain-names/external-id/{external_id}
requires authentication

Returns a domain name of the client.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Accept
Example:
application/json
Content-Type
Example:
application/json

URL Parameters

external_id
string
required

external_id of the domain name

Example:
test_123

Query Parameters

client_id
integer

Required if an admin uses this endpoint. The client ID of the domain the external_id belongs to.

Example:
1

Response Fields

Example request:
curl --request GET \
    --get "https://staging.api.xenius.io/v2/domain-names/external-id/test_123?client_id=1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Accept: application/json" \
    --header "Content-Type: application/json"
Example response:
{
    "id": null,
    "status": "active",
    "domain_name": "borremans.org",
    "expirationdate": "2024-12-30",
    "days_until_expiration": 0,
    "is_locked": false,
    "auto_renew": false,
    "external_id": "(test)4757",
    "nameservers": {
        "ns1": {
            "name": "ns3.hostedby.eu",
            "ipv4": "185.27.175.217",
            "ipv6": "2a00:f10:121:400:4c7:54ff:fe00:525"
        },
        "ns2": {
            "name": "ns4.hostedby.eu",
            "ipv4": "185.59.16.34",
            "ipv6": null
        },
        "ns3": {
            "name": "ns2.hostedby.be",
            "ipv4": "151.80.147.144",
            "ipv6": null
        }
    }
}

Update a domain's external id (PATCH)

PATCH
https://staging.api.xenius.io
/v2/domain-names/{id}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Accept
Example:
application/json
Content-Type
Example:
application/json

Body Parameters

Example request:
curl --request PATCH \
    "https://staging.api.xenius.io/v2/domain-names/{id}" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Accept: application/json" \
    --header "Content-Type: application/json" \
    --data "{
    \"external_id\": \"domain_10\"
}"
Example response:
{
    "id": null,
    "status": "active",
    "domain_name": "vanacker.net",
    "expirationdate": "2024-12-30",
    "days_until_expiration": 0,
    "is_locked": false,
    "auto_renew": false,
    "external_id": "(test)8293",
    "nameservers": {
        "ns1": {
            "name": "ns3.hostedby.eu",
            "ipv4": "185.27.175.217",
            "ipv6": "2a00:f10:121:400:4c7:54ff:fe00:525"
        },
        "ns2": {
            "name": "ns4.hostedby.eu",
            "ipv4": "185.59.16.34",
            "ipv6": null
        },
        "ns3": {
            "name": "ns2.hostedby.be",
            "ipv4": "151.80.147.144",
            "ipv6": null
        }
    }
}

TLD


Show Tld prices by client (GET)

GET
https://staging.api.xenius.io
/v2/tlds
requires authentication

Returns a list of the Tld prices of the client.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Accept
Example:
application/json
Content-Type
Example:
application/json
Example request:
curl --request GET \
    --get "https://staging.api.xenius.io/v2/tlds" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Accept: application/json" \
    --header "Content-Type: application/json"
Example response:
[
    {
        "tld": ".com",
        "price_excl": "14.95",
        "price_promo": "12.50"
    }
]

Endpoints

GET up

GET
https://staging.api.xenius.io
/up

Headers

Content-Type
Example:
application/json
Accept
Example:
application/json
Example request:
curl --request GET \
    --get "https://staging.api.xenius.io/up" \
    --header "Content-Type: application/json" \
    --header "Accept: application/json"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : application/json
                                                         
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Xenius API</title>

    <!-- Fonts -->
    <link rel="preconnect" href="https://fonts.bunny.net">
    <link href="https://fonts.bunny.net/css?family=figtree:400,600&display=swap" rel="stylesheet" />

    <!-- Styles -->
    <script src="https://cdn.tailwindcss.com"></script>

    <script>
        tailwind.config = {
            theme: {
                extend: {
                    fontFamily: {
                        sans: ['Figtree', 'ui-sans-serif', 'system-ui', 'sans-serif', "Apple Color Emoji", "Segoe UI Emoji"],
                    }
                }
            }
        }
    </script>
</head>
<body class="antialiased">
<div class="relative flex justify-center items-center min-h-screen bg-gray-100 selection:bg-red-500 selection:text-white">
    <div class="w-full sm:w-3/4 xl:w-1/2 mx-auto p-6">
        <div class="px-6 py-4 bg-white from-gray-700/50 via-transparent rounded-lg shadow-2xl shadow-gray-500/20 flex items-center focus:outline focus:outline-2 focus:outline-red-500">
            <div class="relative flex h-3 w-3 group ">
                <span class="animate-ping absolute inline-flex h-full w-full rounded-full bg-green-400 group-[.status-down]:bg-red-600 opacity-75"></span>
                <span class="relative inline-flex rounded-full h-3 w-3 bg-green-400 group-[.status-down]:bg-red-600"></span>
            </div>

            <div class="ml-6">
                <h2 class="text-xl font-semibold text-gray-900">Application up</h2>

                <p class="mt-2 text-gray-500 dark:text-gray-400 text-sm leading-relaxed">
                    HTTP request received.

                                            Response rendered in 489ms.
                                    </p>
            </div>
        </div>
    </div>
</div>
</body>
</html>

Invoices

Show invoices (POST)

POST
https://staging.api.xenius.io
/v2/invoices
requires authentication

Get All invoices with the option to filter by payment status

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Accept
Example:
application/json
Content-Type
Example:
application/json

Body Parameters

Example request:
curl --request POST \
    "https://staging.api.xenius.io/v2/invoices" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Accept: application/json" \
    --header "Content-Type: application/json" \
    --data "{
    \"invoice_number\": \"VF202200734\",
    \"is_paid\": false
}"
Example response:
{
    "data": {
        "success": true,
        "data": [
            {
                "invoice number": "(test) VF202523488",
                "invoice date": "10-01-2026",
                "due date": "10-01-2026",
                "paid_at": null,
                "total": 0,
                "open": 0,
                "is_paid": false,
                "payment link": "https://www.factuursturen.be/pay?id=53cc2c10-f1d5-373a-929d-18b8108463e9"
            },
            {
                "invoice number": "(test) VF202506721",
                "invoice date": "25-03-2026",
                "due date": "25-03-2026",
                "paid_at": "11-03-2025",
                "total": 0,
                "open": 7682.27,
                "is_paid": false,
                "payment link": "https://www.factuursturen.be/pay?id=dd3afc25-3b49-34c8-9e3f-7edeebdc67a6"
            }
        ],
        "meta": {
            "count": 2
        }
    },
    "links": {
        "first": "/?page=1",
        "last": "/?page=1",
        "prev": null,
        "next": null
    },
    "meta": {
        "current_page": 1,
        "from": 1,
        "last_page": 1,
        "links": [
            {
                "url": null,
                "label": "pagination.previous",
                "active": false
            },
            {
                "url": "/?page=1",
                "label": "1",
                "active": true
            },
            {
                "url": null,
                "label": "pagination.next",
                "active": false
            }
        ],
        "path": "/",
        "per_page": 10,
        "to": 2,
        "total": 2
    }
}

Toggle auto-renewal (PATCH)

PATCH
https://staging.api.xenius.io
/v2/invoices/toggle-autorenew
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Accept
Example:
application/json
Content-Type
Example:
application/json

Body Parameters

Example request:
curl --request PATCH \
    "https://staging.api.xenius.io/v2/invoices/toggle-autorenew" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Accept: application/json" \
    --header "Content-Type: application/json" \
    --data "{
    \"external_ids\": [
        \"1\",
        \"2\",
        3,
        4
    ],
    \"autorenew\": false
}"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : application/json
                                                         
{
    "message": "Unauthenticated."
}

Office 365

Show tenants (GET)

GET
https://staging.api.xenius.io
/v2/office-365/{tenant?}
requires authentication

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Accept
Example:
application/json
Content-Type
Example:
application/json
Example request:
curl --request GET \
    --get "https://staging.api.xenius.io/v2/office-365/{tenant?}" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Accept: application/json" \
    --header "Content-Type: application/json"
Example response:
Headers
                                                            cache-control
                                                            : no-cache, private
                                                                                                                    content-type
                                                            : application/json
                                                         
{
    "message": "Unauthenticated."
}

Shared hosting

Show prices of Shared-hostings (GET)

GET
https://staging.api.xenius.io
/v2/hostings/pricing

Headers

Accept
Example:
application/json
Content-Type
Example:
application/json
Example request:
curl --request GET \
    --get "https://staging.api.xenius.io/v2/hostings/pricing" \
    --header "Accept: application/json" \
    --header "Content-Type: application/json"
Example response:
{
    "success": true,
    "data": [
        {
            "name": "Cosmos magento",
            "is_promo": true,
            "price_monthly": 32.55,
            "type": "magento-hosting",
            "aanrader": false
        }
    ],
    "meta": {
        "count": 1
    }
}

Show all shared-hostings of the client (GET)

GET
https://staging.api.xenius.io
/v2/hostings
requires authentication

Returns a list of domain names of the client.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Accept
Example:
application/json
Content-Type
Example:
application/json

Response Fields

Example request:
curl --request GET \
    --get "https://staging.api.xenius.io/v2/hostings" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Accept: application/json" \
    --header "Content-Type: application/json"
Example response:
{
    "success": true,
    "data": [
        {
            "client_id": 3359,
            "accountname": "(test) El Amrani VZW",
            "domain": "michel.be",
            "creation_date": "2024-11-23 02:02:46",
            "expiration_date": "2024-11-22T23:00:00.000000Z",
            "product_package_id": 2,
            "package_id": 262,
            "server": 6,
            "status": "ACTIVE",
            "disk_used": 276,
            "owner": "root",
            "external_id": "(test)1282"
        }
    ],
    "meta": {
        "count": 1
    }
}

Show a shared-hosting of the client by id (GET)

GET
https://staging.api.xenius.io
/v2/hostings/id/{id}
requires authentication

return a list of shared-hostings of the client

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Accept
Example:
application/json
Content-Type
Example:
application/json

URL Parameters

id
integer
required

id of the shared-hosting

Example:
1
Example request:
curl --request GET \
    --get "https://staging.api.xenius.io/v2/hostings/id/1" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Accept: application/json" \
    --header "Content-Type: application/json"
Example response:
{
    "client_id": 1051,
    "accountname": "(test) El Amrani VZW",
    "domain": "michel.be",
    "creation_date": "2024-11-23 02:02:46",
    "expiration_date": "2024-11-22T23:00:00.000000Z",
    "product_package_id": 5,
    "package_id": 262,
    "server": 6,
    "status": "ACTIVE",
    "disk_used": 276,
    "owner": "root",
    "external_id": "(test)2019"
}

Show a shared-hosting of the client by external_id (GET)

GET
https://staging.api.xenius.io
/v2/hostings/external-id/{external_id}
requires authentication

Returns a shared-hosting of the client.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Accept
Example:
application/json
Content-Type
Example:
application/json

URL Parameters

external_id
string
required

external_id of the shared-hosting

Example:
10

Response Fields

Example request:
curl --request GET \
    --get "https://staging.api.xenius.io/v2/hostings/external-id/10" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Accept: application/json" \
    --header "Content-Type: application/json"
Example response:
{
    "client_id": 1824,
    "accountname": "(test) El Amrani VZW",
    "domain": "michel.be",
    "creation_date": "2024-11-23 02:02:46",
    "expiration_date": "2024-11-22T23:00:00.000000Z",
    "product_package_id": 11,
    "package_id": 262,
    "server": 6,
    "status": "ACTIVE",
    "disk_used": 276,
    "owner": "root",
    "external_id": "(test)774"
}

Update a shared-hosting's external id (PATCH)

PATCH
https://staging.api.xenius.io
/v2/hostings
requires authentication

Returns a shared-hosting of the client.

Headers

Authorization
Example:
Bearer {YOUR_AUTH_KEY}
Accept
Example:
application/json
Content-Type
Example:
application/json

Body Parameters

Example request:
curl --request PATCH \
    "https://staging.api.xenius.io/v2/hostings" \
    --header "Authorization: Bearer {YOUR_AUTH_KEY}" \
    --header "Accept: application/json" \
    --header "Content-Type: application/json" \
    --data "{
    \"external_id\": \"domain_10\"
}"
Example response:
{
    "client_id": 2157,
    "accountname": "(test) Van Damme",
    "domain": "delhaye.org",
    "creation_date": "2024-10-21 00:11:22",
    "expiration_date": "2024-10-20T22:00:00.000000Z",
    "product_package_id": 5,
    "package_id": 262,
    "server": 6,
    "status": "ACTIVE",
    "disk_used": 190,
    "owner": "root",
    "external_id": "(test)5902"
}