PepCheck

Documentație API

Nouă endpointuri REST peste aceleași surse pe care le folosește aplicația. Răspunsuri JSON, autentificare cu cheie, creditele se scad doar la reușită.

Cum începi

Cheia API se generează din contul tău, la Organizație → Chei API. Este disponibilă în pachetul Enterprise. Toate adresele sunt relative la:

https://pepcheck.ro/api/v1/
Doar HTTPS

Cererile pe HTTP sunt redirecționate; trimite-le direct pe HTTPS ca să nu pierzi antetul de autentificare la redirect.

Autentificare

Fiecare cerere trebuie să poarte cheia în antetul Authorization. Fără ea, sau cu o cheie dezactivată, primești 401.

# Antet obligatoriu pe toate endpointurile Authorization: Bearer pk_live_aBcDeFgHiJkLmNoPqRsT…

Cheia se afișează o singură dată, la creare. Dacă ai pierdut-o, generează alta — nu o putem recupera. Dezactivarea unei chei este definitivă și oprește imediat integrarea care o folosește.

Credite

Fiecare apel consumă din aceeași limită lunară ca verificările făcute din interfață.

Creditele se scad numai la răspuns reușit

Un CUI inexistent, o cheie invalidă sau o eroare a sursei nu te costă nimic. Verificarea disponibilității se face înainte, iar scăderea după.

EndpointCredite
GET /v1/status/0
GET /v1/anaf/{cui}/1
GET /v1/onrc/{cui}/1
GET /v1/mfp/{cui}/1
GET /v1/scoring/{cui}/1
GET /v1/dosare/{cui}/1
GET /v1/company/{cui}/1
GET /v1/company/{cui}/pdf/3
POST /v1/pep/3

/v1/company/ costă un singur credit, deși adună date din mai multe surse — e mai ieftin decât să ceri separat ANAF, ONRC, MFP și scoring.

Limite de cereri

Fiecare cheie are propria limită pe minut, implicit 10 cereri. O vezi în răspunsul de la /v1/status/, în câmpul rate_limit_per_minute.

Depășirea limitei întoarce 401, nu 429

Limitarea se aplică în stratul de autentificare, așa că răspunsul are codul 401 cu mesajul „Rate limit depășit”. Dacă tratezi 401 ca „cheie greșită” și oprești integrarea, o vei opri degeaba — verifică mesajul. Limita lunară de credite, în schimb, întoarce 429.

Coduri de eroare

Erorile vin ca JSON, cu un câmp error în limba română.

CodCând apareCe faci
400 CUI lipsă sau cu alte caractere decât cifre; nume mai scurt de 3 caractere la PEP Corectează parametrul
401 Cheie lipsă, invalidă, dezactivată — sau limita pe minut depășită Citește mesajul: dacă e limita, reîncearcă în câteva secunde
404 CUI-ul nu există în sursa interogată Nu se consumă credit
429 Limita lunară de credite atinsă Răspunsul conține used, limit și remaining
500 Sursa externă nu a răspuns sau a răspuns greșit Reîncearcă mai târziu; nu se consumă credit
// 429 — limita lunara atinsa { "error": "Limita lunara de credite depasita.", "used": 750, "limit": 750, "remaining": 0, "credits_needed": 1 }

Endpointuri

GET /v1/status/ 0 credite

Starea contului: pachet, credite consumate și rămase, numele cheii și limita ei pe minut. Folosește-l ca verificare de sănătate — nu costă nimic.

Exemplu
curl https://pepcheck.ro/api/v1/status/ \
  -H "Authorization: Bearer pk_live_…"
import requests

r = requests.get(
    "https://pepcheck.ro/api/v1/status/",
    headers={"Authorization": "Bearer pk_live_…"},
    timeout=30,
)
r.raise_for_status()
print(r.json())
const r = await fetch("https://pepcheck.ro/api/v1/status/", {
  headers: { "Authorization": "Bearer pk_live_…" },
});
const data = await r.json();
console.log(data);
GET /v1/anaf/{cui}/ 1 credit

Date fiscale ANAF în timp real: stare de înregistrare, plătitor de TVA, TVA la încasare, split TVA, e-Factura, inactivitate fiscală și sediul social.

Parametri
ParametruUndeObligatoriuDescriere
cui în adresă Da Codul unic de înregistrare, cu sau fără prefixul RO
Exemplu
curl https://pepcheck.ro/api/v1/anaf/45945560/ \
  -H "Authorization: Bearer pk_live_…"
import requests

r = requests.get(
    "https://pepcheck.ro/api/v1/anaf/45945560/",
    headers={"Authorization": "Bearer pk_live_…"},
    timeout=30,
)
r.raise_for_status()
print(r.json())
const r = await fetch("https://pepcheck.ro/api/v1/anaf/45945560/", {
  headers: { "Authorization": "Bearer pk_live_…" },
});
const data = await r.json();
console.log(data);
GET /v1/onrc/{cui}/ 1 credit

Registrul Comerțului: denumire, număr de înmatriculare, formă juridică, cod CAEN, stare și sediu.

Parametri
ParametruUndeObligatoriuDescriere
cui în adresă Da Codul unic de înregistrare, cu sau fără prefixul RO
Exemplu
curl https://pepcheck.ro/api/v1/onrc/45945560/ \
  -H "Authorization: Bearer pk_live_…"
import requests

r = requests.get(
    "https://pepcheck.ro/api/v1/onrc/45945560/",
    headers={"Authorization": "Bearer pk_live_…"},
    timeout=30,
)
r.raise_for_status()
print(r.json())
const r = await fetch("https://pepcheck.ro/api/v1/onrc/45945560/", {
  headers: { "Authorization": "Bearer pk_live_…" },
});
const data = await r.json();
console.log(data);
GET /v1/mfp/{cui}/ 1 credit

Indicatori financiari din bilanțurile depuse la Ministerul Finanțelor: cifră de afaceri, profit net, număr de angajați, pe ani.

Parametri
ParametruUndeObligatoriuDescriere
cui în adresă Da Codul unic de înregistrare, cu sau fără prefixul RO
Exemplu
curl https://pepcheck.ro/api/v1/mfp/45945560/ \
  -H "Authorization: Bearer pk_live_…"
import requests

r = requests.get(
    "https://pepcheck.ro/api/v1/mfp/45945560/",
    headers={"Authorization": "Bearer pk_live_…"},
    timeout=30,
)
r.raise_for_status()
print(r.json())
const r = await fetch("https://pepcheck.ro/api/v1/mfp/45945560/", {
  headers: { "Authorization": "Bearer pk_live_…" },
});
const data = await r.json();
console.log(data);
GET /v1/scoring/{cui}/ 1 credit

Indicator orientativ de risc, 0–100, calculat din datele publice de mai sus. Răspunsul include componentele scorului, ca să poți arăta de ce a ieșit așa.

Parametri
ParametruUndeObligatoriuDescriere
cui în adresă Da Codul unic de înregistrare, cu sau fără prefixul RO
Exemplu
curl https://pepcheck.ro/api/v1/scoring/45945560/ \
  -H "Authorization: Bearer pk_live_…"
import requests

r = requests.get(
    "https://pepcheck.ro/api/v1/scoring/45945560/",
    headers={"Authorization": "Bearer pk_live_…"},
    timeout=30,
)
r.raise_for_status()
print(r.json())
const r = await fetch("https://pepcheck.ro/api/v1/scoring/45945560/", {
  headers: { "Authorization": "Bearer pk_live_…" },
});
const data = await r.json();
console.log(data);
GET /v1/dosare/{cui}/ 1 credit

Dosare de instanță din ECRIS, asociate firmei: număr, obiect, stadiu și instanță.

Parametri
ParametruUndeObligatoriuDescriere
cui în adresă Da Codul unic de înregistrare, cu sau fără prefixul RO
Exemplu
curl https://pepcheck.ro/api/v1/dosare/45945560/ \
  -H "Authorization: Bearer pk_live_…"
import requests

r = requests.get(
    "https://pepcheck.ro/api/v1/dosare/45945560/",
    headers={"Authorization": "Bearer pk_live_…"},
    timeout=30,
)
r.raise_for_status()
print(r.json())
const r = await fetch("https://pepcheck.ro/api/v1/dosare/45945560/", {
  headers: { "Authorization": "Bearer pk_live_…" },
});
const data = await r.json();
console.log(data);
GET /v1/company/{cui}/ 1 credit

Toate sursele într-un singur răspuns: ANAF, ONRC, MFP, dosare și scor. Un singur credit, în loc de patru apeluri separate.

Parametri
ParametruUndeObligatoriuDescriere
cui în adresă Da Codul unic de înregistrare, cu sau fără prefixul RO
Exemplu
curl https://pepcheck.ro/api/v1/company/45945560/ \
  -H "Authorization: Bearer pk_live_…"
import requests

r = requests.get(
    "https://pepcheck.ro/api/v1/company/45945560/",
    headers={"Authorization": "Bearer pk_live_…"},
    timeout=30,
)
r.raise_for_status()
print(r.json())
const r = await fetch("https://pepcheck.ro/api/v1/company/45945560/", {
  headers: { "Authorization": "Bearer pk_live_…" },
});
const data = await r.json();
console.log(data);
GET /v1/company/{cui}/pdf/ 3 credite

Raportul complet ca fișier PDF, cu antetul organizației tale, sursa și data fiecărei informații. Răspunsul este binar, nu JSON.

Parametri
ParametruUndeObligatoriuDescriere
cui în adresă Da Codul unic de înregistrare, cu sau fără prefixul RO
Exemplu
curl https://pepcheck.ro/api/v1/company/45945560/pdf/ \
  -H "Authorization: Bearer pk_live_…"
import requests

r = requests.get(
    "https://pepcheck.ro/api/v1/company/45945560/pdf/",
    headers={"Authorization": "Bearer pk_live_…"},
    timeout=30,
)
r.raise_for_status()
print(r.json())
const r = await fetch("https://pepcheck.ro/api/v1/company/45945560/pdf/", {
  headers: { "Authorization": "Bearer pk_live_…" },
});
const data = await r.json();
console.log(data);
POST /v1/pep/ 3 credite

Screening împotriva a peste 460 de liste de sancțiuni și persoane expuse politic, prin OpenSanctions.

Endpointul prelucrează date despre persoane fizice. Organizația ta trebuie să fi dat întâi declarația privind temeiul legal, iar rezultatele intră în pista de audit ca orice altă căutare.
Corpul cererii
CâmpTipObligatoriuDescriere
namestringDaNumele căutat, minimum 3 caractere
typestringNuperson (implicit) sau company
Exemplu
curl -X POST https://pepcheck.ro/api/v1/pep/ \
  -H "Authorization: Bearer pk_live_…" \
  -H "Content-Type: application/json" \
  -d '{"name": "Ion Popescu", "type": "person"}'
import requests

r = requests.post(
    "https://pepcheck.ro/api/v1/pep/",
    headers={"Authorization": "Bearer pk_live_…"},
    json={"name": "Ion Popescu", "type": "person"},
    timeout=30,
)
r.raise_for_status()
print(r.json()["matches"])
const r = await fetch("https://pepcheck.ro/api/v1/pep/", {
  method: "POST",
  headers: {
    "Authorization": "Bearer pk_live_…",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ name: "Ion Popescu", type: "person" }),
});
const data = await r.json();
console.log(data.matches);
CUI-ul se normalizează singur

RO12345678 și 12345678 ajung la același loc: prefixul și spațiile sunt eliminate înainte de interogare. Orice altceva decât cifre întoarce 400.

Fiecare apel se înregistrează

Endpointul, CUI-ul, codul de răspuns, creditele consumate, durata, adresa IP și user-agentul intră în jurnalul organizației. Ai nevoie de el la control, și îl poți folosi ca să vezi care integrare consumă cât.