Telecom v1 / Telecom
Analiză număr de telefon
Tipul (mobil, fix, non-geografic, scurt), operatorul care a primit blocul la alocare şi dacă numărul se află
într-un bloc alocat de ANCOM. POST, fiindcă numărul e dată a clientului: într-un GET ar ajunge în logurile de
acces, în istoricul browserului şi în referrer.
POST
https://oneapi.ro/api/telecom/v1/analizeaza
Corpul cererii
Se trimite ca JSON, în corpul cererii (Content-Type: application/json) — nu în şirul de interogare.
NumeTipDescriereValori acceptate
numarobligatoriu
text
Minim 3, maxim 32.
max 32 car.
Mobil
Corpul cererii
{
"numar": "0721234567"
}
Fix, cu prefix internațional
Corpul cererii
{
"numar": "+40 264 405 300"
}
Număr inventat
Corpul cererii
{
"numar": "0312345678"
}
Parametri de interogare
Ruta nu acceptă parametri de interogare.
Cum se comportă
- Corpul cererii are un singur câmp,
numar(text, 3–32 caractere, obligatoriu): numărul de analizat. Câmpurile de corp nu apar în tabelul de parametri — acela documentează doar query string-ul — de aceea sunt descrise aici. - Metoda e POST pentru că numărul e dată a clientului: într-un GET ar ajunge în logurile de acces, în istoricul browserului și în header-ul
Referer. Numărul analizat nu se scrie nicăieri — nici în loguri, nici în bază. - Nu confunda alocarea cu operatorul curent. ANCOM publică cine a primit blocul la alocare, nu cine deține numărul azi. Un număr portat rămâne în blocul operatorului inițial. De aceea răspunsul are
operator_alocare(ce știm) separat deoperator_curent, care e întotdeauna null — nu există sursă publică de portabilitate în România. Câmpul e acolo tocmai ca să fie explicit că nu știm. - Acceptă orice formă uzuală:
0721234567,+40721234567,0040 721 234 567,0721-234-567. Separatorii se ignoră. - Se validează și numerele scurte (
1910,0264 990,116000) — sunt ~17% din blocurile alocate. Ele n-au 9 cifre, deci nu există regulă de format care să le confirme: sunt declarate valide numai dacă figurează efectiv într-un bloc alocat. Un număr scurt neregăsit primeștevalid: falsecu motivulnumar_scurt_nealocat. - Un număr de 9 cifre cu format corect rămâne
valid: truechiar dacă blocul nu e alocat — distincția utilă ebloc_alocat, nuvalid.
La ce folosește
- Validarea numărului de telefon la înregistrare sau la checkout: respingi numerele care nu se află în niciun bloc alocat de ANCOM, adică nu pot exista.
- Rutarea unui mesaj sau apel: afli dacă numărul e mobil, fix sau non-geografic înainte să alegi canalul (SMS n-are sens pe un fix).
- Fraud scoring: un număr cu format corect dar bloc nealocat e un semnal puternic de date inventate într-un formular.
- Normalizarea unei baze de contacte la o formă unică (E.164) pornind de la orice formă în care a fost introdusă.
Structura răspunsului
Toate câmpurile de mai jos sunt în data.
CâmpTipDescriere
valid
boolean
Numărul e o formă recunoscută. La numerele scurte, validitatea se decide prin alocare.
motiv
string
Doar când
valid e false: format_nerecunoscut sau numar_scurt_nealocat.
introdus
string
Exact ce ai trimis, ca să poți corela răspunsurile într-un lot.
format.e164
string
Forma internațională (
+40…). Lipsește la numerele scurte — ele nu se formează din străinătate.
format.national
string
Forma națională, cu 0 inițial.
format.fara_prefix
string
Cifrele semnificative, fără 0 și fără prefix de țară.
tip
string
mobil | fix | nongeografic | scurt | necunoscut. Vine din blocul alocat; fără bloc, e o deducție după prima cifră.
bloc_alocat
boolean
Numărul cade într-un bloc alocat de ANCOM.
false = cel mai probabil numărul nu există.
operator_alocare
string
Titularul de licență care a primit blocul, cu numele exact din registrul ANCOM.
operator_curent
null
Întotdeauna null: portabilitatea nu e publicată. Prezent explicit, ca să nu fie citit ca omisiune.
bloc
object
Intervalul alocat în care cade numărul: domeniul, primul și ultimul număr, dimensiunea.
bloc.domeniu
string
Domeniul de numerotație din care face parte blocul (ex. 721, 264).
bloc.primul
string
Primul număr din bloc.
bloc.ultimul
string
Ultimul număr din bloc.
bloc.dimensiune
integer
Câte numere conține blocul.
observatie
string
Avertismentul aplicabil rezultatului (portabilitate sau bloc nealocat).
sursa
object
Sursa alocărilor: ANCOM, „Resurse de numerotație", cu data importului.
sursa.ancom
string
Setul de date folosit („Resurse de numerotație").
sursa.actualizat
string
Când a fost importată ultima dată alocarea.
Exemple de răspuns
body: {"numar": "0721234567"}
POSThttps://oneapi.ro/api/telecom/v1/analizeaza
{
"data": {
"valid": true,
"introdus": "0721234567",
"format": {
"e164": "+40721234567",
"national": "0721234567",
"fara_prefix": "721234567"
},
"tip": "mobil",
"bloc_alocat": true,
"operator_alocare": "VODAFONE ROMANIA S.A.",
"bloc": {
"domeniu": "72",
"primul": "721000000",
"ultimul": "721999999",
"dimensiune": 1000000
},
"observatie": "Operatorul e cel care a primit blocul la alocare. Dacă numărul a fost portat, deținătorul actual poate fi altul — ANCOM nu publică portabilitatea.",
"sursa": {
"ancom": "Resurse de numerotație",
"actualizat": "2026-10-02 11: 46: 30"
}
}
}
body: {"numar": "+40 264 405 300"}
POSThttps://oneapi.ro/api/telecom/v1/analizeaza
{
"data": {
"valid": true,
"introdus": "0264405300",
"format": {
"e164": "+40264405300",
"national": "0264405300",
"fara_prefix": "264405300"
},
"tip": "fix",
"bloc_alocat": true,
"operator_alocare": "ORANGE ROMANIA S.A.",
"bloc": {
"domeniu": "264",
"primul": "264400000",
"ultimul": "264409999",
"dimensiune": 10000
},
"observatie": "Operatorul e cel care a primit blocul la alocare. Dacă numărul a fost portat, deținătorul actual poate fi altul — ANCOM nu publică portabilitatea.",
"sursa": {
"ancom": "Resurse de numerotație",
"actualizat": "2026-10-02 11: 46: 30"
}
}
}
body: {"numar": "0312345678"} — format valid, bloc nealocat.
POSThttps://oneapi.ro/api/telecom/v1/analizeaza
{
"data": {
"valid": true,
"introdus": "0312345678",
"format": {
"e164": "+40312345678",
"national": "0312345678",
"fara_prefix": "312345678"
},
"tip": "fix",
"bloc_alocat": false,
"observatie": "Numărul are format valid, dar NU se află într-un bloc alocat de ANCOM. Cel mai probabil nu există — util ca semnal la validarea formularelor.",
"sursa": {
"ancom": "Resurse de numerotație",
"actualizat": "2026-10-02 11: 46: 30"
}
}
}
Coduri de eroare
| Cod | Slug | Când apare |
|---|---|---|
| 401 | neautentificat | Token lipsă, invalid, expirat sau revocat. |
| 403 | feature_indisponibil | Planul curent nu include funcţia de care ţine ruta. |
| 422 | validare | Lipsește numar, e gol sau depășește 32 de caractere. Câmpul vinovat e în detalii. |
| 429 | cota_depasita | Cota lunară a planului a fost depăşită (vezi Retry-After). |
Toate erorile au aceeași formă. eroare.cod e stabil și e cel după care trebuie să ramifici în cod — nu după textul din mesaj, care se poate schimba.
{
"eroare": {
"cod": "validare",
"mesaj": "Lipsește numar, e gol sau depășește 32 de caractere. Câmpul vinovat e în detalii."
}
}