Valider un Numéro de Téléphone
curl --request GET \
--url https://api.oneclickdz.com/v3/internet/check-number \
--header 'X-Access-Token: <api-key>'import requests
url = "https://api.oneclickdz.com/v3/internet/check-number"
headers = {"X-Access-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Access-Token': '<api-key>'}};
fetch('https://api.oneclickdz.com/v3/internet/check-number', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.oneclickdz.com/v3/internet/check-number",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Access-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.oneclickdz.com/v3/internet/check-number"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Access-Token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.oneclickdz.com/v3/internet/check-number")
.header("X-Access-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.oneclickdz.com/v3/internet/check-number")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Access-Token"] = '<api-key>'
response = http.request(request)
puts response.read_bodyRecharges internet
Valider un Numéro de Téléphone
Validez les numéros de téléphone avant de traiter une recharge internet
GET
/
v3
/
internet
/
check-number
Valider un Numéro de Téléphone
curl --request GET \
--url https://api.oneclickdz.com/v3/internet/check-number \
--header 'X-Access-Token: <api-key>'import requests
url = "https://api.oneclickdz.com/v3/internet/check-number"
headers = {"X-Access-Token": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Access-Token': '<api-key>'}};
fetch('https://api.oneclickdz.com/v3/internet/check-number', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.oneclickdz.com/v3/internet/check-number",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Access-Token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.oneclickdz.com/v3/internet/check-number"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Access-Token", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.oneclickdz.com/v3/internet/check-number")
.header("X-Access-Token", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.oneclickdz.com/v3/internet/check-number")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Access-Token"] = '<api-key>'
response = http.request(request)
puts response.read_bodyVue d’ensemble
Valide les numéros de téléphone pour les services ADSL ou 4G avant la soumission. Permet d’éviter les erreurs et de réduire les demandes de remboursement.Validez toujours les numéros de téléphone avant de soumettre des demandes de recharge pour minimiser les échecs.
Paramètres de requête
string
requis
Type de service :
ADSL ou 4Gstring
requis
Numéro de téléphone à valider - ADSL :
0[0-9]{8} (ex. 036362608) - 4G : 213[0-9]{9} (ex. 213472731602)Réponse
Numéro ADSL valide
{
"success": true,
"data": {
"ncli": "11022*****",
"offre": "FTTc-b_10M'",
"type": "ADSL"
},
"meta": {
"timestamp": "2025-10-29T00:36:48.823Z"
}
}
Numéro 4G valide
{
"success": true,
"data": {
"ncli": "11034*****",
"type": "4GLTE"
},
"meta": {
"timestamp": "2025-10-29T00:36:49.847Z"
}
}
Numéro invalide
{
"success": false,
"error": {
"code": "ERR_PHONE",
"message": "عذرًا، لم نتمكن من تأكيد هذا الرقم. يرجى التحقق من صحة الرقم ومن نوع العرض. إذا كان الرقم صحيحًا، يرجى المحاولة مرة أخرى لاحقًا."
},
"requestId": "req_01HQ..."
}
Le
message est rédigé pour l’utilisateur final et peut être affiché tel quel. ERR_PHONE couvre les trois cas : le numéro n’existe pas chez Algérie Télécom, il ne correspond pas au type envoyé, ou AT est temporairement injoignable.Sandbox
Avec une clé sandbox, cet endpoint répond à partir de fixtures : aucune ligne n’est contactée chez Algérie Télécom, aucun captcha n’est résolu et la réponse est instantanée. C’est le numéro qui détermine la réponse :| Numéro | Réponse |
|---|---|
030000000 | 400 ERR_PHONE |
| tout autre numéro au bon format | 200 valide, avec ncli: "****" et un offre de test |
Sandbox : numéro valide
{
"success": true,
"data": {
"ncli": "****",
"offre": "FTTH 600M Prepaid individual",
"type": "ADSL"
},
"meta": { "timestamp": "2026-08-02T21:32:52.933Z" }
}
030000000 pour tester votre parcours ERR_PHONE, et n’importe quel autre numéro au bon format pour le parcours nominal. Les mêmes numéros valent pour Envoyer une recharge, où ils déterminent aussi l’évolution du statut de la commande.
Exemples
curl "https://api.oneclickdz.com/v3/internet/check-number?type=ADSL&number=036362608" \
-H "X-Access-Token: YOUR_API_KEY"
async function validateNumber(type, number) {
const response = await fetch(
`https://api.oneclickdz.com/v3/internet/check-number?type=${type}&number=${number}`,
{ headers: { "X-Access-Token": process.env.API_KEY } }
);
if (!response.ok) {
const error = await response.json();
throw new Error(error.error.message);
}
return await response.json();
}
// Usage
try {
await validateNumber("ADSL", "036362608");
console.log("Number is valid");
} catch (error) {
console.error("Invalid number:", error.message);
}
def validate_number(type, number):
response = requests.get(
'https://api.oneclickdz.com/v3/internet/check-number',
headers={'X-Access-Token': 'YOUR_API_KEY'},
params={'type': type, 'number': number}
)
if response.ok:
return True
else:
error = response.json()
raise ValueError(error['error']['message'])
# Usage
try:
validate_number('ADSL', '036362608')
print('Valid number')
except ValueError as e:
print(f'Invalid: {e}')
Formats de numéros de téléphone
- ADSL
- 4G
Format :
0[0-9]{8} Exemples valides : - ✅ 036362608 - ✅
031417237 - ✅ 021123456 Exemples invalides : - ❌ 36362608 (0 manquant
au début) - ❌ 0363626081 (trop long) - ❌ 213636362608 (mauvais format)Format :
213[0-9]{9} Exemples valides : - ✅ 213472731602 - ✅
213665983439 - ✅ 213778037340 Exemples invalides : - ❌ 0665983439
(mauvais format, doit inclure l’indicatif pays) - ❌ 665983439 (indicatif pays
manquant) - ❌ +213665983439 (ne doit pas inclure +)Exemple d’intégration
// Flux de validation complet
async function prepareInternetTopup(type, number, value) {
// Étape 1 : Valider le numéro
try {
await validateNumber(type, number);
} catch (error) {
return {
success: false,
error: "Numéro de téléphone invalide",
details: error.message,
};
}
// Step 2: Check product availability
const products = await getProducts(type);
const product = products.find((p) => p.value === value && p.available);
if (!product) {
return {
success: false,
error: "Produit non disponible",
};
}
// Étape 3 : Envoyer la recharge
return await sendInternetTopup({ type, number, value });
}
Pourquoi valider ?
Réduire les erreurs
Détectez les numéros invalides avant la soumission
Meilleure UX
Affichez un retour immédiat aux utilisateurs
Moins de remboursements
Minimisez les transactions échouées et les remboursements
Vérifier le format
Assurez-vous que le numéro correspond au type de service
Bonnes pratiques
Validation côté client
Validation côté client
Validez le format côté client d’abord, puis confirmez avec l’API :
function validateADSLFormat(number) {
return /^0[0-9]{8}$/.test(number);
}
function validate4GFormat(number) {
return /^213[0-9]{9}$/.test(number);
}
Afficher des messages utiles
Afficher des messages utiles
Affichez des messages clairs quand la validation échoue : - “Veuillez entrer un numéro ADSL valide (ex. 036362608)” - “Les numéros 4G doivent commencer par 213 (ex. 213665983439)” - “Format du numéro : 9 chiffres commençant par 0”
Mettre en cache les résultats de validation
Mettre en cache les résultats de validation
Mettez en cache les validations réussies pendant une courte période :
const validationCache = new Map();
async function validateWithCache(type, number) {
const key = `${type}:${number}`;
if (validationCache.has(key)) {
return validationCache.get(key);
}
const result = await validateNumber(type, number);
validationCache.set(key, result);
// Effacer après 5 minutes
setTimeout(() => validationCache.delete(key), 5 * 60 * 1000);
return result;
}
Endpoints liés
Liste des produits
Obtenir les cartes disponibles
Envoyer une recharge
Acheter une carte internet

