API OTP Email untuk Testing dan Otomatisasi (Developer/QA)

Saat tes end-to-end Anda mendaftar ke layanan pihak ketiga, kode verifikasinya dikirim ke alamat email sungguhan. Email dummy di server lokal atau penangkap email (mail catcher) hanya menerima email dari aplikasi Anda sendiri, bukan dari layanan luar, dan alamat dari domain acak sering ditolak. API OTPGmail menyelesaikan bagian ini dengan beberapa permintaan HTTP: tes Anda menyewa alamat @gmail.com atau @icloud.com asli dan membaca kodenya, lalu membatalkan pesanan untuk refund jika kode belum masuk saat tes berhenti.

Dokumentasi lengkap ada di Dokumentasi API. Panduan ini merangkum alur yang paling sering dipakai tim developer dan QA.

Alur standar

  1. GET /v1/services untuk melihat kode layanan, harga, stok, dan sumber stok yang tersedia.
  2. POST /v1/orders untuk menyewa alamat bagi layanan tujuan. Saldo hanya terpotong jika alamat berhasil diberikan.
  3. Tes Anda mengisi alamat itu di formulir pendaftaran.
  4. GET /v1/orders/{id} setiap 3–5 detik sampai array otp berisi kode. Kode terbaru selalu ada di akhir array.
  5. Jika kode tidak dibutuhkan lagi, POST /v1/orders/{id}/cancel mengembalikan 100% harga selama kode pertama belum masuk. Jika dibiarkan, pesanan tanpa kode batal sendiri setelah waktu tunggu (maksimal 25 menit) dan tetap di-refund.

Autentikasi dan format respons

Simpan API key seperti kata sandi, misalnya di variabel lingkungan atau secret CI, bukan di repository.

Membuat pesanan

POST /v1/orders
Authorization: Bearer <key>
Idempotency-Key: <UUID baru untuk setiap pesanan>
Content-Type: application/json

{ "service": "git", "domain": "icloud.com" }

Setiap pesanan berisi antara lain orderId, email, status, price, otp, codeDeadlineAt, rentExpiresAt, dan warehouse (sumber stok yang dipakai). Kirim Idempotency-Key baru untuk setiap pesanan: jika permintaan terputus dan Anda mengulang dengan key yang sama, Anda tidak menyewa alamat kedua. Atur batas waktu (timeout) di sisi klien sekitar 15 detik atau lebih.

Mengambil kode dan kode tambahan

Status pesanan adalah waiting_code, completed (kode sudah masuk), atau cancelled. Polling lebih cepat dari 3–5 detik tidak membuat email datang lebih cepat dan hanya menghabiskan batas permintaan Anda.

Kode berikutnya hanya masuk jika layanan tujuan mengirim lebih dari satu kode, dan caranya bergantung pada nilai warehouse pesanan. Untuk warehouse 1 dan 4, kode tambahan muncul sendiri di akhir otp. Untuk warehouse 2, Anda memanggil POST /v1/orders/{id}/next-code; di luar jendela tanpa biaya, permintaan itu harus menyertakan confirmFee: true karena dikenai 50% harga sewa. Untuk warehouse 3, sewa ulang kotak masuk yang sama memakai POST /v1/orders/{id}/rerent. Batas dan durasinya juga tampil di aplikasi sebelum menyewa.

Contoh Python

import time
import uuid
import requests

HOST = "otpgmail.net"
BASE = f"https://{HOST}"
HEADERS = {"Authorization": "Bearer API_KEY_ANDA"}


def sewa(service, domain="gmail.com"):
    r = requests.post(
        f"{BASE}/v1/orders",
        json={"service": service, "domain": domain},
        headers={**HEADERS, "Idempotency-Key": str(uuid.uuid4())},
        timeout=30,
    )
    body = r.json()
    if not body.get("success"):
        raise RuntimeError(body["error"]["code"])
    return body["data"][0]  # data berupa array pesanan


def tunggu_kode(order_id, batas_detik=600, jeda=4):
    selesai = time.time() + batas_detik
    while time.time() < selesai:
        res = requests.get(f"{BASE}/v1/orders/{order_id}", headers=HEADERS, timeout=30)
        order = res.json()["data"]
        if order["otp"]:
            return order["otp"][-1]["code"]  # kode terbaru ada di akhir
        if order["status"] == "cancelled":
            return None
        time.sleep(jeda)
    # Batalkan agar saldo langsung kembali (hanya sebelum kode pertama masuk)
    requests.post(f"{BASE}/v1/orders/{order_id}/cancel", headers=HEADERS, timeout=30)
    return None


order = sewa("git", domain="icloud.com")
print("Alamat:", order["email"])
print("Kode:", tunggu_kode(order["orderId"]))

Pola yang sama mudah dipindahkan ke PHP (misalnya HTTP client Laravel), Node.js, atau bahasa lain: buat pesanan, polling, lalu batalkan jika tes gagal sebelum kode masuk.

Batas permintaan dan kode error

Batas bawaannya adalah 20 permintaan per detik dan 900 permintaan per menit untuk setiap API key, serta maksimal 200 alamat per permintaan. Jumlah pesanan yang menunggu kode secara bersamaan juga dibatasi, jadi batalkan pesanan yang sudah tidak dipakai. Kode error yang perlu ditangani:

Praktik baik untuk tim QA

Pertanyaan yang sering diajukan

Di mana saya mendapatkan API key?

Masuk ke aplikasi OTPGmail lalu buka halaman Akun. Setiap akun punya satu API key yang bisa dibuat ulang kapan saja.

Apakah pesanan bisa dibatalkan setelah kode masuk?

Tidak. Hanya pesanan yang masih menunggu kode pertama yang bisa dibatalkan dengan refund 100%. Setelah kode masuk, cancel menghasilkan ORDER_NOT_CANCELLABLE.

Bisakah memilih iCloud lewat API?

Bisa. Kirim "domain": "icloud.com" saat membuat pesanan. Jika jenis itu tidak tersedia untuk layanan tersebut, Anda mendapat error dan bisa mengulang dengan gmail.com.

Apakah OTP SMS juga tersedia lewat API?

Tidak. OTPGmail hanya menangani email. Bedanya dengan nomor virtual dijelaskan di panduan OTP email atau nokos.

Panduan terkait

Dapatkan kode verifikasi Anda sekarang

Pendaftaran tanpa biaya, dan saldo hanya terpotong saat alamat email berhasil diberikan. Tidak ada kode dalam waktu tunggu (maksimal 25 menit)? Refund 100% otomatis.

Layanan yang Anda butuhkan belum ada? Gunakan tombol Tambah layanan di halaman sewa untuk mengajukannya, dan kami akan meninjau apakah layanan itu bisa ditambahkan.

Butuh akun Gmail yang bisa dipakai login, bukan sekadar kode? Lihat beli akun Gmail masa aktif singkat · Refund dan garansi