fb-pixel
SupportHost italian

Catalog

Prices and availability for the reseller account: the net price table of every TLD you can sell, and a per-name availability check with its price.

Get your price list #

GET /reseller/pricing

Your net prices for every TLD you can sell, in your account’s currency. This is also the list of TLDs available to you: a TLD that is not here cannot be registered or transferred through the API.

For each TLD, register and renew list every term you can buy (years from min_years to max_years) with its price; transfer lists only the minimum term, the one a transfer buys. grace_fee and redemption_fee are added to a renewal in grace and to a restore; null means none is charged. Prices are net of tax.

idn says whether the API accepts a Unicode name on the TLD (a Unicode name on a TLD with idn: false is refused as invalid_domain); it is not a statement about which scripts the registry supports. registrant_countries lists the registrant countries (ISO codes) the TLD accepts: a register or transfer with a registrant elsewhere is refused as invalid_contact before any credit is taken. null means the panel knows no country restriction, not that the registry has none. A transfer always requires auth_code, whatever the TLD.

Responses

  • 200

    Your price list.

    Response body application/json
    • data object
      2 properties
      • currency string
      • tlds array of object
        12 properties
        • extension string
        • min_years integer
        • max_years integer
        • register array of object
          2 properties
          • years integer
          • price number
        • renew array of object
          2 properties
          • years integer
          • price number
        • transfer array of object
          2 properties
          • years integer
          • price number
        • grace_fee number | null
        • redemption_fee number | null
        • grace_days integer
        • redemption_days integer
        • idn boolean
        • registrant_countries array of string | null
  • 401 Missing, invalid or expired token. MessageError
  • 403 not_reseller credit_disabled forbidden ip_not_allowed ip_whitelist_misconfigured ResellerError
  • 429 Rate limit exceeded. Retry after the number of seconds in Retry-After. MessageError

cURL

curl 'https://portal.supporthost.com/api/v1/reseller/pricing' \
  -H "Authorization: Bearer $API_TOKEN" \
  -H 'Accept: application/json'

PHP

Install Guzzle once: composer require guzzlehttp/guzzle

<?php

require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();

$response = $client->request('GET', 'https://portal.supporthost.com/api/v1/reseller/pricing', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('API_TOKEN'),
        'Accept' => 'application/json',
    ],
]);

echo $response->getBody();

Node.js

// Save as a .mjs file (ES module, Node 18+): it uses top-level await.
const response = await fetch('https://portal.supporthost.com/api/v1/reseller/pricing', {
  headers: {
    Authorization: `Bearer ${process.env.API_TOKEN}`,
    Accept: 'application/json',
  },
});

console.log(await response.json());

Response

200

{
  "data": {
    "currency": "EUR",
    "tlds": [
      {
        "extension": ".com",
        "min_years": 1,
        "max_years": 10,
        "register": [
          {
            "years": 1,
            "price": 11.1699999999999999289457264239899814128875732421875
          }
        ],
        "renew": [
          {
            "years": 1,
            "price": 11.1699999999999999289457264239899814128875732421875
          }
        ],
        "transfer": [
          {
            "years": 1,
            "price": 11.1699999999999999289457264239899814128875732421875
          }
        ],
        "grace_fee": null,
        "redemption_fee": 79.900000000000005684341886080801486968994140625,
        "grace_days": 30,
        "redemption_days": 30,
        "idn": true,
        "registrant_countries": null
      }
    ]
  }
}

Error responses share one format: see Errors.

Check a domain name #

GET /reseller/domains/check

Tells you whether name can be registered, with your register and transfer price for the TLD’s minimum term. Use it before POST /reseller/domains/register or /transfer.

available is null when the registry could not be asked right now: retry later. A name already held on this server is reported as not available. Nothing is reserved or charged.

A definite answer is reused for up to 2 minutes, so asking again for the same name costs no registry lookup; register and transfer always check afresh before charging.

Parameters

Query

  • name string required
    • Max length 255

Responses

  • 200

    Availability and price.

    Response body application/json
    • data object
      6 properties
      • name string
      • available boolean | null
      • currency string
      • register_price number | null
      • transfer_price number | null
      • min_years integer
  • 401 Missing, invalid or expired token. MessageError
  • 403 not_reseller credit_disabled forbidden ip_not_allowed ip_whitelist_misconfigured ResellerError
  • 422 invalid_request invalid_domain tld_not_sellable ResellerError
  • 429 Rate limit exceeded. Retry after the number of seconds in Retry-After. MessageError

cURL

curl 'https://portal.supporthost.com/api/v1/reseller/domains/check?name=example.com' \
  -H "Authorization: Bearer $API_TOKEN" \
  -H 'Accept: application/json'

PHP

<?php

require 'vendor/autoload.php';

$client = new GuzzleHttp\Client();

$response = $client->request('GET', 'https://portal.supporthost.com/api/v1/reseller/domains/check?name=example.com', [
    'headers' => [
        'Authorization' => 'Bearer ' . getenv('API_TOKEN'),
        'Accept' => 'application/json',
    ],
]);

echo $response->getBody();

Node.js

const response = await fetch('https://portal.supporthost.com/api/v1/reseller/domains/check?name=example.com', {
  headers: {
    Authorization: `Bearer ${process.env.API_TOKEN}`,
    Accept: 'application/json',
  },
});

console.log(await response.json());

Response

200

{
  "data": {
    "name": "example.com",
    "available": true,
    "currency": "EUR",
    "register_price": 11.1699999999999999289457264239899814128875732421875,
    "transfer_price": 11.1699999999999999289457264239899814128875732421875,
    "min_years": 1
  }
}

Error responses share one format: see Errors.