Dokumentasi API Domain

API ini memungkinkan Anda mengintegrasikan fitur pembelian dan manajemen domain ke dalam website, aplikasi, atau sistem Anda. Cocok untuk developer, agensi, dan platform SaaS yang ingin menjual domain di bawah brand sendiri.

Base URL

https://domain.andupay.com

Format

RESTful JSON / HTTPS

Versi API

v1 (stabil)

Base URL

Semua endpoint pada dokumentasi ini menggunakan base URL berikut:

https://domain.andupay.com/api/...

Autentikasi

Sebagian besar endpoint membutuhkan autentikasi menggunakan API Key dan API Secret milik user. Anda bisa mengelola API Key & Secret Key dari menu Setting API di dashboard user.

Header yang dibutuhkan:

  • Authorization: Bearer {API_KEY}
  • X-API-SECRET: {API_SECRET}

Simpan API Key & Secret Key Anda seperti menyimpan password. Jangan expose di frontend publik.

curl -X GET "https://domain.andupay.com/api/profile" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer {API_KEY}" \
  -H "X-API-SECRET: {API_SECRET}"

Struktur Respons

Semua endpoint akan mengembalikan respons dalam format JSON dengan struktur dasar sebagai berikut:

Respons Berhasil:

{
  "success": true,
  "data": { ... },
  "meta": { ... } // optional
}

Respons Gagal:

{
  "success": false,
  "error": "Pesan error yang menjelaskan masalah",
  "fields": {
    "nama_field": "error detail per field (opsional)"
  }
}

Status HTTP & Penanganan Error

Selain nilai success pada body, Anda juga bisa menggunakan kode status HTTP untuk menangani error.

Status Arti Contoh Kasus
200 OK Request berhasil Pengambilan data profil, list domain, dll.
201 Created Resource baru berhasil dibuat Order domain baru berhasil disimpan.
400 Bad Request Request tidak valid Saldo tidak cukup, field wajib kosong, dsb.
401 Unauthorized Tidak ada / salah header autentikasi API Key atau Secret salah.
403 Forbidden User tidak diizinkan Akun dibanned / tidak aktif.
404 Not Found Resource tidak ditemukan Domain atau endpoint tidak ada.
500 Internal Server Error Kesalahan di sisi server Error tak terduga, biasanya sementara.

Daftar Endpoint

1. List Harga Domain

Mengambil daftar harga domain yang tersedia.

Method: GET

URL: https://domain.andupay.com/api/harga-domain

Auth: Tidak wajib (public)

Contoh Request

curl -X GET "https://domain.andupay.com/api/harga-domain" \
  -H "Accept: application/json"

Contoh Response

{
  "success": true,
  "data": [
    {
      "extension": ".com",
      "price": 180000,
      "period_years": 1,
      "status": "active"
    },
    {
      "extension": ".net",
      "price": 170000,
      "period_years": 1,
      "status": "active"
    }
  ]
}

2. Profil & Saldo User

Mengambil profil dasar user dan saldo saat ini berdasarkan API Key yang digunakan.

Method: GET

URL: https://domain.andupay.com/api/profile

Auth: Wajib

Contoh Request

curl -X GET "https://domain.andupay.com/api/profile" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer {API_KEY}" \
  -H "X-API-SECRET: {API_SECRET}"

Contoh Response

{
  "success": true,
  "data": {
    "id": 5,
    "hosting_username": "userhosting",
    "email": "user@example.com",
    "balance": 250000,
    "status": "active"
  }
}

3. List Domain User

Mengambil semua domain yang dimiliki user terkait API Key yang digunakan.

Method: GET

URL: https://domain.andupay.com/api/domains

Auth: Wajib

curl -X GET "https://domain.andupay.com/api/domains" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer {API_KEY}" \
  -H "X-API-SECRET: {API_SECRET}"
{
  "success": true,
  "data": [
    {
      "id": 10,
      "domain_name": "mycompany",
      "extension": ".com",
      "price": 180000,
      "period_years": 1,
      "status": "active",
      "nameserver1": "ns1.hostingmu.com",
      "nameserver2": "ns2.hostingmu.com",
      "created_at": "2025-01-10 10:00:00",
      "paid_at": "2025-01-10 10:01:00"
    }
  ]
}

4. Order Domain

Membuat order domain baru. Pesanan bisa langsung dipotong dari saldo (use_balance=true) atau disimpan sebagai pending_payment.

Method: POST

URL: https://domain.andupay.com/api/domain-order

Auth: Wajib

Body (JSON):

  • domain_name (string, wajib) – tanpa ekstensi, contoh: "mycompany"
  • extension (string, wajib) – contoh: ".com"
  • period_years (int, opsional) – default diambil dari konfigurasi harga
  • use_balance (bool, wajib) – true untuk langsung potong saldo

Contoh Request

curl -X POST "https://domain.andupay.com/api/domain-order" \
  -H "Accept: application/json" \
  -H "Authorization: Bearer {API_KEY}" \
  -H "X-API-SECRET: {API_SECRET}" \
  -H "Content-Type: application/json" \
  -d '{
    "domain_name": "mycompany",
    "extension": ".com",
    "period_years": 1,
    "use_balance": true
  }'

Contoh Response Berhasil

{
  "success": true,
  "data": {
    "domain_id": 10,
    "domain_name": "mycompany.com",
    "total_price": 180000,
    "status": "active",
    "paid_at": "2025-01-10 10:01:00"
  }
}

Contoh Response Error (saldo tidak cukup)

{
  "success": false,
  "error": "Saldo tidak cukup untuk membeli domain ini"
}

5. Update Nameserver Domain

Men