Minta Nomor, Terima OTP
Semua layanan dan semua negara tampil di sini. Pilih, ambil nomor, lalu OTP masuk otomatis ke inbox.
➕ Minta Nomor Baru
🌍 Katalog Layanan & Negara
📱 Nomor Aktif
Rizaldev
Membangun produk web yang cepat, ringkas, dan terasa matang di layar mana pun. FREEOTP lahir dari satu tujuan sederhana: mendapatkan nomor virtual dan kode OTP tanpa proses yang berbelit.
Tentang
Developer dan proyeknyaTentang Developer
Rizaldev adalah developer di balik FREEOTP. Ia membangun produk dengan pendekatan yang ringkas: mulai dari kebutuhan nyata pengguna, lalu merapikannya sampai setiap langkah terasa jelas dan cepat.
Dari katalog layanan hingga inbox OTP real-time, semuanya dirancang dengan standar yang sama: antarmuka tegas yang mudah dibaca, performa ringan tanpa framework berat, dan tata letak yang nyaman dipakai di HP maupun desktop.
Dokumentasi API dibuka agar developer lain bisa memakai layanan yang sama di aplikasinya sendiri.
Fokus Utama
- Antarmuka yang jelas dan responsif di semua ukuran layar
- Kecepatan dan kestabilan layanan
- Privasi riwayat setiap pengguna
- Integrasi API yang terbuka dan terdokumentasi
Tentang Website
FREEOTP · Virtual number & OTP serviceFREEOTP
FREEOTP adalah layanan nomor virtual dengan penerimaan OTP instan. Kamu cukup memilih layanan dan negara, mengambil nomor, lalu kode verifikasi muncul otomatis di inbox, tanpa perlu membuat akun.
Setiap pengguna memiliki riwayat nomornya sendiri yang tersimpan di perangkatnya, sehingga daftar Nomor Aktif tidak bercampur dengan pengguna lain.
Fitur Unggulan
Yang kamu dapat di FREEOTPCara Kerja
Empat langkah sampai OTP masukTeknologi
Dibangun ringan dan terbukaAda masukan atau ingin berkolaborasi?
Kunjungi website developer untuk informasi lebih lanjut tentang proyek lainnya.
Integrasikan FREEOTP ke website kamu
Gunakan API FREEOTP untuk mengambil layanan, memilih negara, meminta nomor virtual, dan membaca pesan OTP dari aplikasi buatanmu sendiri.
Memuat alamat API…
1. Daftar Layanan
Mengambil layanan yang tersedia beserta jumlah nomor yang tersedia.
/api/servicesParameter: tidak ada.
GET {BASE_URL}/api/servicesRespons sukses: JSON berisi daftar layanan. Struktur contoh:
{
"success": true,
"services": [
{ "name": "WhatsApp", "count": 120 },
{ "name": "Telegram", "count": 45 }
]
}2. Daftar Negara
Mengambil negara yang tersedia untuk layanan tertentu.
/api/countries?service=WhatsApp| Parameter | Jenis | Wajib | Keterangan |
|---|---|---|---|
| service | string | Ya | Nama layanan, misalnya WhatsApp. |
GET {BASE_URL}/api/countries?service=WhatsApp{
"success": true,
"countries": [
{ "name": "Indonesia", "count": 20 },
{ "name": "Malaysia", "count": 12 }
]
}3. Minta Nomor Virtual
Membuat permintaan nomor baru berdasarkan layanan dan negara.
/api/request_numberHeader: Content-Type: application/json
| Body | Jenis | Wajib | Keterangan |
|---|---|---|---|
| service | string | Ya | Nama layanan. |
| country | string | Ya | Nama negara dari endpoint countries. |
POST {BASE_URL}/api/request_number
Content-Type: application/json
{
"service": "WhatsApp",
"country": "Indonesia"
}Respons contoh:
{
"success": true,
"number": "6281234567890",
"id": "transaction_id"
}4. Nomor Aktif
Menampilkan daftar nomor aktif yang tercatat pada layanan API.
/api/my_numbersParameter: tidak ada.
GET {BASE_URL}/api/my_numbers{
"success": true,
"numbers": [
{
"number": "6281234567890",
"country": "Indonesia",
"service": "WhatsApp"
}
]
}5. Lepas Nomor
Melepaskan nomor aktif agar tidak digunakan lagi.
/api/release_numberHeader: Content-Type: application/json
| Body | Jenis | Wajib |
|---|---|---|
| number | string | Ya |
POST {BASE_URL}/api/release_number
Content-Type: application/json
{ "number": "6281234567890" }6. OTP Terbaru
Mengecek kode OTP terbaru untuk satu nomor.
/api/latest_otp?number=6281234567890| Parameter | Jenis | Wajib |
|---|---|---|
| number | string | Ya |
GET {BASE_URL}/api/latest_otp?number=6281234567890{
"success": true,
"has_otp": true,
"otp_code": "123456"
}7. Riwayat OTP
Mengambil riwayat OTP. Parameter number bersifat opsional jika server mendukung filter per nomor.
/api/my_otps?limit=10| Parameter | Jenis | Wajib | Keterangan |
|---|---|---|---|
| limit | integer | Tidak | Jumlah data yang diminta; contoh 10. |
| number | string | Tidak | Filter riwayat berdasarkan nomor, jika didukung. |
GET {BASE_URL}/api/my_otps?limit=10
GET {BASE_URL}/api/my_otps?number=6281234567890&limit=10{
"success": true,
"otps": []
}8. Live Feed OTP Publik
Mengambil daftar OTP terbaru dari feed publik.
/api/otp?count=10| Parameter | Jenis | Wajib |
|---|---|---|
| count | integer | Tidak |
GET {BASE_URL}/api/otp?count=10{
"success": true,
"data": []
}9. Statistik
Mengambil statistik performa dan status global.
/api/stats/detailed?period=daily| Parameter | Jenis | Wajib | Keterangan |
|---|---|---|---|
| period | string | Tidak | Periode statistik, contoh daily. |
GET {BASE_URL}/api/stats/detailed?period=daily{
"success": true,
"countries_count": 0,
"otp_count": 0,
"available_numbers": 0
}10. Contoh Integrasi
Gunakan Base URL yang ditampilkan di atas. Ganti nilai service dan country sesuai hasil endpoint layanan dan negara.
JavaScript (Fetch)
const API_BASE = "GUNAKAN_BASE_URL_DI_ATAS";
async function getServices() {
const response = await fetch(`${API_BASE}/api/services`);
if (!response.ok) throw new Error(`HTTP ${response.status}`);
return response.json();
}
getServices()
.then(data => console.log(data))
.catch(console.error);PHP (cURL)
<?php
$base = 'GUNAKAN_BASE_URL_DI_ATAS';
$url = $base . '/api/services';
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Accept: application/json'],
CURLOPT_TIMEOUT => 20
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($response === false) {
throw new RuntimeException(curl_error($ch));
}
curl_close($ch);
http_response_code($status);
$data = json_decode($response, true);
print_r($data);
?>cURL
curl -X GET "GUNAKAN_BASE_URL_DI_ATAS/api/services" \\
-H "Accept: application/json"
curl -X POST "GUNAKAN_BASE_URL_DI_ATAS/api/request_number" \\
-H "Content-Type: application/json" \\
-d '{"service":"WhatsApp","country":"Indonesia"}'🔗 Pakai Domain Sendiri
🌐 Domain Terdaftar
❓ Cara Kerja
_freeotp di depan domain (bukan di domain itu sendiri) karena sebuah nama yang sudah memakai CNAME tidak boleh punya record lain. Bila panel DNS-mu otomatis menambahkan nama domain utama, isi bagian depannya saja, misalnya _freeotp.otp.