api-cui.ro
API online · Cheie gratuită
Documentație

Tot API-ul, pe o singură pagină.

Un endpoint pentru fișa firmei, unul pentru căutare, câteva validări și cursul BNR. Cheia în antet, JSON înapoi. Dacă știi curl, știi deja tot.

Primii pași

Bază: https://api-cui.ro/v1. Toate răspunsurile sunt JSON, UTF-8, cu diacritice reale (nu ș). Datele sunt ISO 8601 (2026-09-21).

curl https://api-cui.ro/v1/firma/14399840 -H "X-Api-Key: ck_..."

Cheia o iei din cont, în 30 de secunde. Planul gratuit are 100 de cereri pe lună.

Autentificare

Cheia se trimite în antetul X-Api-Key (sau Authorization: Bearer <cheie>). Sunt două feluri de chei:

tipprefixundeprotecție
secretăck_pe server (ERP, facturare, importuri)nu o trimite niciodată în URL sau în browser
publicăpk_în browser (checkout, formulare)merge doar de pe domeniile aprobate în panou (verificăm Origin); poate fi trimisă și ca ?cheie=pk_...

Răspunsurile pentru cheile publice includ antetele CORS pentru domeniul de origine.

GET/v1/firma/{cui}

Fișa firmei. {cui} acceptă și forma RO14399840 sau cu spații. Se validează cifra de control înainte de orice.

câmpce e
cui, cui_ronumărul; cui_ro are prefixul RO când firma e plătitoare de TVA
denumire, nr_reg_com, cod_caen, forma_juridica, forma_organizare, forma_proprietate, organ_fiscal, telefon, faxidentificare, așa cum le are ANAF
stare.activatrue dacă nu e radiată și nu e inactivă fiscal
stare.text, stare.data_inregistrare, stare.radiata, stare.data_radiere, stare.inactiv_fiscal, stare.data_inactivare, stare.data_reactivaredetaliile stării
tva.platitor, tva.de_la, tva.pana_la, tva.perioade[]înregistrarea în scopuri de TVA
tva.la_incasare (+ _de_la, _pana_la), tva.splitTVA la încasare, split TVA
efactura, efactura_de_laînregistrarea în Registrul RO e-Factura
adresa_sediu, adresa_fiscalaobiecte cu judet, judet_auto, localitate, strada, numar, detalii, cod_postal, cod_judet, cod_localitate, tara și text (pe o linie)
adresa_anaftextul brut al ANAF, pentru comparație
verificat_lacând am citit ultima oară fișa de la ANAF
meta.mscât a durat pe server

?extins=1

Adaugă, în același răspuns: bilanturi[] (ultimii 3 ani: an, caen, cifra_afaceri, profit_net, venituri, cheltuieli, angajati, datorii, capitaluri, active), registru (cod_j, stare ONRC, data_inmatriculare, euid, web), persoane[] (nume, calitate — administratori, asociați), contacte[] (fel: email / telefon / site, valoare) și bani_publici (achiziții directe și contracte din SEAP, în lei).

curl "https://api-cui.ro/v1/firma/14399840?extins=1" -H "X-Api-Key: ck_..."

GET/v1/firma/{cui}/bilanturi

Toți anii disponibili (din 2011), cu aceleași câmpuri ca la extins. Sursa: Ministerul Finanțelor, date deschise.

GET/v1/firme/cauta?q=&judet=&limita=&doar_active=

Autocomplete după denumire. Minimum 3 litere; ignoră diacriticele, punctuația și cuvintele „SC”, „SRL”, „SA”, „PFA”. Întâi potrivire de prefix (sub 2 ms); dacă nu găsește nimic, caută și în interiorul numelui. limita ≤ 25, implicit 10. doar_active=0 include firmele radiate.

curl "https://api-cui.ro/v1/firme/cauta?q=dante+intern&judet=bucuresti" -H "X-Api-Key: ck_..."
{"rezultate":[{"cui":14399840,"denumire":"DANTE INTERNATIONAL SA","judet":"MUNICIPIUL BUCUREȘTI","localitate":"Sector 6 Mun. București","activa":true,"tva":true}],"meta":{"ms":1.1}}

GET/v1/valideaza/cui/{cui} · /cnp/{cnp} · /iban/{iban}

Validări de format, fără să atingă baza. CUI: cifra de control. CNP: cifra de control + sex, data_nasterii, judet, rezident_strain. IBAN: mod 97, plus banca_cod pentru RO. Nu stocăm nimic din ce ne trimiți aici.

GET/v1/curs?data=&moneda=

Cursul BNR. Fără parametri: ultima zi publicată, toate monedele. data=2026-09-15 întoarce cursul valabil în acea zi (ultima publicare de dinainte, dacă e weekend). moneda=EUR întoarce doar una. multiplu e 100 pentru HUF, JPY, KRW.

Erori și cote

Erorile vin ca {"eroare": {"tip": "...", "mesaj": "...", "status": 4xx}}. Tipurile:

statustipce înseamnă
400cui_invalidnu trece de cifra de control
401cheie_lipsalipsește antetul
403cheie_necunoscuta, origine_nepermisa, cheie_secreta_in_url, cont_inactivcheia nu e bună sau nu e folosită unde trebuie
404in_cursCUI valid pe care nu-l avem încă; l-am cerut de la ANAF — reîncearcă după reincearca_in_secunde
404necunoscut_anafANAF nu are acest CUI (firmă străină, număr greșit)
429ritm_depasit, cota_lunara_depasitaprea repede, sau cota lunii e consumată

Fiecare răspuns autentificat are antetele X-Cota-Luna, X-Cota-Ramasa, X-Plan și X-Timp-Ms. Cererile refuzate (401/403/429) nu consumă cotă. Cota se resetează la 1 ale lunii.

Prospețimea datelor

Toate firmele sunt reverificate la ANAF cel puțin săptămânal; fișele servite cu date mai vechi de 7 zile primesc reverificare_ceruta: true și intră la coadă imediat. Firmele noi se descoperă zilnic. Dacă vrei să știi cât de proaspătă e o fișă, uită-te la verificat_la. /v1/stare arată, fără cheie, câte firme avem și ultima verificare.