Skip to main content

API

New REST API — available now

Sell our entire range from your own platform.

The TPP Wholesale REST API is a modern JSON interface to domains, hosting, Microsoft 365 and SSL. Available to every reseller account, with no extra approval and no legacy plumbing.

1,200+
Domain extensions
8
Product areas covered
JSON
Requests and responses
GET /domains/example.com.au/check-availability
{
  "domain": "example.com.au",
  "available": true,
  "prices": [
    { "years": 1, "price": 11.95 },
    { "years": 2, "price": 23.90 }
  ],
  "premium": false
}
Why the new API

Built for the way resellers actually sell.

REST and JSON throughout

Predictable resources, standard verbs and JSON bodies. No bespoke request format to learn or maintain.

Open to every reseller

Available on all reseller accounts as standard, so you can build against it from day one.

More products in scope

Domains, cPanel hosting, SSL and Microsoft 365 all order through the same endpoint.

Faster checks

Availability, transfer and service line checks return pricing with the result, so a single call drives your cart.

Manage your customers

Create customer accounts and registrants, then order on their behalf with the customer greencode.

Quote before you commit

Price a full basket with /quote, including your own reseller pricing, before an order is placed.

What you can automate

One integration, the whole catalogue.

Eight product areas, all under the same token and the same JSON conventions. Add a product line without rewriting your integration.

Browse the full reference

Domains

14 endpoints

Register, transfer, renew, lock, delegate and bulk transfer across 1,200+ extensions.

Domain pricing follows our standard reseller rates. Premium domains may carry an additional cost, which is always returned alongside the price in the availability check.

GET /domains

Orders

5 endpoints

Quote a basket, submit orders for any product type and track order status.

POST /order

Products

1 endpoint

Pull your live reseller pricing for every product code in one call.

GET /products/prices

DNS

7 endpoints

Full record management on our Anycast network, plus change history and bulk A record updates.

GET /dns-records

Registrants

8 endpoints

Create and update customer accounts and registrant contacts, including .au eligibility.

POST /accounts

cPanel

1 endpoint

Generate single sign-on links straight into a customer’s hosting control panel.

GET /cPanel/loginUrl

Billing

3 endpoints

Read billing accounts and the default payment method behind each order.

GET /billings

Account

1 endpoint

Keep your own reseller account details current without logging in.

PUT /account

Quickstart

From key to first call in three steps.

  1. 01Generate an API key and secret in The Console, under Reseller → API.
  2. 02POST them to /jwt/auth/token/ and hold the JWT you get back.
  3. 03Send it as an Authorization: Bearer header on every call.

Tokens last one hour and are bound to the IP address that requested them.

API=https://api.tppwholesale.com.au

# 1. Exchange your key and secret for a token
curl -X POST $API/jwt/auth/token/ \
  -H "Content-Type: application/json" \
  -d '{"apiKey": "KEY", "secretKey": "SECRET"}'

# The response is the JWT as plain text.

# 2. Check a domain and its pricing
curl $API/domains/example.com.au/check-availability \
  -H "Authorization: Bearer $TOKEN"

# 3. Place the order
curl -X POST $API/order \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "customerGreencode": "ABC123",
    "orders": [{
      "orderType": "DOMAIN_REGISTRATION",
      "domain": "example.com.au",
      "resellerPriceId": 4821,
      "autoRenew": true,
      "termsConditions": true
    }]
  }'
<?php
$base = 'https://api.tppwholesale.com.au';

// 1. Exchange your key and secret for a token
$token = trim(file_get_contents($base . '/jwt/auth/token/', false, stream_context_create([
  'http' => [
    'method' => 'POST',
    'header' => "Content-Type: application/json\r\n",
    'content' => json_encode([
      'apiKey' => getenv('TPP_API_KEY'),
      'secretKey' => getenv('TPP_SECRET_KEY'),
    ]),
  ],
])));

// 2. Check a domain and its pricing
$auth = ['http' => ['header' => "Authorization: Bearer $token\r\n"]];
$check = json_decode(file_get_contents(
  $base . '/domains/example.com.au/check-availability',
  false,
  stream_context_create($auth)
), true);

// 3. Place the order
if ($check['available']) {
  $ch = curl_init($base . '/order');
  curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
      "Authorization: Bearer $token",
      'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
      'customerGreencode' => 'ABC123',
      'orders' => [[
        'orderType' => 'DOMAIN_REGISTRATION',
        'domain' => 'example.com.au',
        'resellerPriceId' => 4821,
        'autoRenew' => true,
        'termsConditions' => true,
      ]],
    ]),
  ]);
  $order = json_decode(curl_exec($ch), true);
}

Code in your discipline

Standard HTTP and JSON, so you can integrate in any language with networking support. No SDK required.

Support and documentation

A complete interactive reference plus a dedicated support team on hand during implementation.

Feedback driven

We build new calls around reseller requests. Tell us what you need and it goes on the roadmap.

Start reselling today.

Create a TPP Wholesale account and an Account Manager will reach out to get you reselling in no time.