Documentație API


Informații generale

API-ul CompanyInfo.ro respectă arhitectura REST și pune la dispoziție informații despre companii în format JSON .

Sunt necesare următoarele:

Autentificarea

Pentru a folosi API-ul CompanyInfo.ro trebuie să aveți o cheie de autentificare. Aceasta se generează din contul dvs.

Cheia se va trimite în header-ul Authorization sub forma:

Authorization: Bearer {my_super_secret_key}

Dacă cheia de autentificare nu este trimisă / este invalidă, API-ul răspunde cu codul 401 Unauthorized și conținutul:

{
    "message": "the authorization token is not valid"
}

Rate Limits

Traficul către API-ul CompanyInfo.ro este supus unui rate limiting și unui număr de credite lunare (dacă este cazul), conform abonamentului ales.

Dacă Rate Limits este depășit, API-ul răspunde cu codul 429 Too Many Requests și conținutul:

{
    "message": "API rate limit exceeded, slow down your horses or upgrade to a better plan"
}

Este recomandat să monitorizați folosirea API-ului din aplicația dvs. și să aveți implementat un mecanism de Retry cu Backoff exponențial în cazul acestor erori. Dacă observați totuși că nevoia business-ului dvs. este mai mare, este recomandat să faceți upgrade abonamentului dvs.

Dacă numărul de credite incluse lunar în abonament este depășit, API-ul răspunde cu codul 429 Too Many Requests și conținutul:

{
    "message": "monthly credits consumed, consider upgrading your plan"
}

Este recomandat să monitorizați folosirea API-ului din aplicația dvs. cu ajutorul header-ului de răspuns X-Companyinfo-Remaining-Credits si să declanșați o alertă / notificare când numărul de credite rămase este scăzut. Dacă observați totuși că nevoia business-ului dvs. este mai mare, este recomandat să faceți upgrade abonamentului dvs.

Obiectul Companie

  • id number required

    ID-ul persoanei juridice.

  • name string required

    Numele persoanei juridice.

  • tradeRegisterNo string optional

    Numărul de înregistrare la O.N.R.C.

  • registrationDate string required

    Data înregistrării.

  • active boolean required

    Statusul indică dacă persoana juridică este activă la data curentă.
    De exemplu, o persoană juridică care a fost radiată sau cu activitatea suspendată, va fi "inactivă".

  • caen string optional

    Codul CAEN (principal) al persoanei juridice.

  • phone string optional

    Numărul telefon de contact.

  • vat object required

    Informații despre statusul de plătitor TVA.

    • id string required

      Identificator TVA. Este ID-ul persoanei juridice, eventual cu prefix „RO”, dacă este plătitoare de TVA la data din parametrul query.

    • cashAccountingEnabled boolean required

      Indică dacă persoana juridică este plătitoare de TVA „la încasare”.

    • date string required

      Data la care s-a interogat statusul de plătitor de TVA.

  • address object required

    Adresa socială.

    • streetName string required

      Numele străzii.

    • streetNo string optional

      Numărul străzii.

    • block string optional

      Numărul blocului.

    • apt string optional

      Numărul apartamentului.

    • floor string optional

      Numărul etajului.

    • city string required

      Numele orașului / localității.

    • region string required

      Numele județului.

    • zipcode string optional

      Codul poștal (numeric, format din 6 cifre).

    • extraDetail string optional

      Detaliu suplimentar — poate conține, de exemplu, numele clădirii.

Vizualizare companie

GET /v1/companies/{id}

Parametrii Path


id string required

ID-ul companiei (CUI / CIF).

Exemplu: „12345” / „RO12345” / „RO 12345”.

Parametrii Query


date string optional

Data pentru care se face interogarea în vederea obținerii identificatorului TVA.

Notă: o companie poate fi / deveni plătitoare / neplătitoare de TVA la o anumită dată. În funcție de această dată, identificatorul TVA poate conține (sau nu) prefixul „RO”.

Are formatul YYYY-MM-DD.

Valoarea implicită este data curentă.

Exemplu: „2025-12-31”.


curl --location 'https://api.companyinfo.ro/v1/companies/{id}' \
--header 'Authorization: Bearer {my_super_secret_key}'

package main

import (
   "fmt"
   "io"
   "net/http"
)

func main() {
   const apiKey = "my_super_secret_key"
   companyID := "123456"

   apiURL := "https://api.companyinfo.ro/v1/companies/" + companyID

   req, _ := http.NewRequest(http.MethodGet, apiURL, nil)
   req.Header.Add("Authorization", "Bearer " + apiKey)
   req.Header.Add("Accept", "application/json")

   res, err := http.DefaultClient.Do(req)
   if err != nil {
      panic(err)
   }
   defer res.Body.Close()

   body, _ := io.ReadAll(res.Body)
   fmt.Println("Company Info:")
   fmt.Println(string(body))
}

import requests

api_key = "my_super_secret_key"
company_id = "123456"

api_url = f"https://api.companyinfo.ro/v1/companies/{company_id}"

headers = {
    "Authorization": f"Bearer {api_key}",
    "Accept": "application/json"
}

response = requests.get(api_url, headers=headers)

if response.status_code == 200:
    data = response.json()
    print("Company Info:")
    print(data)
else:
    print(f"API Error ({response.status_code}): {response.text}")

const apiKey = "my_super_secret_key";
const companyId = "123456";

const apiUrl = `https://api.companyinfo.ro/v1/companies/${companyId}`;

fetch(apiUrl, {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Accept": "application/json"
  }
})
  .then(response => {
    if (!response.ok) {
      throw new Error(`API Error (${response.status}): ${response.statusText}`);
    }
    return response.json();
  })
  .then(data => {
    console.log("Company Info:", data);
  })
  .catch(error => {
    console.error("An error ocurred:", error.message);
  });

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class CompanyInfoExample {

    public static void main(String[] args) {
        String apiKey = "my_super_secret_key";
        String companyId = "123456";
        String apiUrl = "https://api.companyinfo.ro/v1/companies/" + companyId;

        HttpClient client = HttpClient.newHttpClient();

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(apiUrl))
                .header("Authorization", "Bearer " + apiKey)
                .header("Accept", "application/json")
                .GET()
                .build();

        try {
            HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());

            int statusCode = response.statusCode();
            if (statusCode == 200) {
                System.out.println("Company Info:");
                System.out.println(response.body());
            } else {
                System.out.println("API Error (" + statusCode + "):");
                System.out.println(response.body());
            }

        } catch (Exception e) {
            System.out.println("An error occurred:");
            e.printStackTrace();
        }
    }
}

Răspuns


200 OK

API-ul răspunde cu datele companiei.

{
    "company": object
}

400 Bad Request

API-ul răspunde cu un mesaj de eroare (dacă formatul datei din query param este invalid).

{
    "message": "string"
}

404 Not Found

API-ul răspunde cu un mesaj de eroare (dacă compania nu este găsită).

{
    "message": "string"
}
{
    "company": {
        "id": 123456,
        "name": "FOO S.R.L.",
        "tradeRegisterNo": "J2020010000400",
        "active": true,
        "caen": "9876",
        "registrationDate": "2020-02-15",
        "phone": "0211234567",
        "vat": {
            "id": "RO123456",
            "cashAccountingEnabled": false,
            "date": "2026-01-05"
        },
        "address": {
            "streetName": "Str. Lorem Ipsum",
            "streetNo": "10-12",
            "block": "11A",
            "apt": "20",
            "floor": "2",
            "city": "Sector 1",
            "region": "Bucureşti",
            "zipcode": "012345",
            "extraDetail": "Sky Building"
        }
    }
}
{
    "message": "invalid date"
}
{
    "message": "company not found"
}

Listare companii

GET /v1/companies?id[]={id1}&id[]={id2}&id[]={id3}

Parametrii Query


id[] array of strings required

ID-ul companiilor interogate (CUI / CIF).

Exemplu: „12345” / „RO12345” / „RO 12345”.

Un minim de 1 de ID trebuie specificat.

Un maxim de 100 de ID-uri pot fi interogate.

date string optional

Data pentru care se face interogarea în vederea obținerii identificatorului TVA.

Notă: o companie poate fi / deveni plătitoare / neplătitoare de TVA la o anumită dată. În funcție de această dată, identificatorul TVA poate conține (sau nu) prefixul „RO”.

Are formatul YYYY-MM-DD.

Valoarea implicită este data curentă.

Exemplu: „2025-12-31”.


curl --location 'https://api.companyinfo.ro/v1/companies?id[]={id1}&id={id2}' \
--header 'Authorization: Bearer {my_super_secret_key}'

package main

import (
   "fmt"
   "io"
   "net/http"
)

func main() {
   const apiKey = "my_super_secret_key"
   companyID1 := "123456"
   companyID2 := "987654"

   apiURL := "https://api.companyinfo.ro/v1/companies?id[]=" + companyID1 + "&id[]=" + companyID2

   req, _ := http.NewRequest(http.MethodGet, apiURL, nil)
   req.Header.Add("Authorization", "Bearer " + apiKey)
   req.Header.Add("Accept", "application/json")

   res, err := http.DefaultClient.Do(req)
   if err != nil {
      panic(err)
   }
   defer res.Body.Close()

   body, _ := io.ReadAll(res.Body)
   fmt.Println("Companies Info:")
   fmt.Println(string(body))
}

import requests

api_key = "my_super_secret_key"
company_id_1 = "123456"
company_id_2 = "987654"

api_url = f"https://api.companyinfo.ro/v1/companies?id[]={company_id_1}&id[]={company_id_2}"

headers = {
    "Authorization": f"Bearer {api_key}",
    "Accept": "application/json"
}

response = requests.get(api_url, headers=headers)

if response.status_code == 200:
    data = response.json()
    print("Companies Info:")
    print(data)
else:
    print(f"API Error ({response.status_code}): {response.text}")

const apiKey = "my_super_secret_key";
const companyId1 = "123456";
const companyId2 = "987654";

const apiUrl = `https://api.companyinfo.ro/v1/companies?id[]=${companyId1}&id[]=${companyId2}`;

fetch(apiUrl, {
  method: "GET",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Accept": "application/json"
  }
})
  .then(response => {
    if (!response.ok) {
      throw new Error(`API Error (${response.status}): ${response.statusText}`);
    }
    return response.json();
  })
  .then(data => {
    console.log("Companies Info:", data);
  })
  .catch(error => {
    console.error("An error ocurred:", error.message);
  });

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class CompanyInfoExample {

    public static void main(String[] args) {
        String apiKey = "my_super_secret_key";
        String companyId1 = "123456";
        String companyId2 = "987654";
        String apiUrl = "https://api.companyinfo.ro/v1/companies?id[]=" + companyId1 + "&id[]=" + companyId2;

        HttpClient client = HttpClient.newHttpClient();

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create(apiUrl))
                .header("Authorization", "Bearer " + apiKey)
                .header("Accept", "application/json")
                .GET()
                .build();

        try {
            HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());

            int statusCode = response.statusCode();
            if (statusCode == 200) {
                System.out.println("Companies Info:");
                System.out.println(response.body());
            } else {
                System.out.println("API Error (" + statusCode + "):");
                System.out.println(response.body());
            }

        } catch (Exception e) {
            System.out.println("An error occurred:");
            e.printStackTrace();
        }
    }
}

Răspuns


200 OK

API-ul răspunde cu datele companiilor găsite.

Notă: doar companiile găsite sunt returnate, din acest motiv, de exemplu, dacă nicio companie nu este găsita, un array gol este returnat.

{
    "companies": array of objects
}

400 Bad Request

API-ul răspunde cu un mesaj de eroare (dacă formatul datei din query param este invalid sau dacă nr. minim/maxim de ID-uri din query param nu este respectat).

{
    "message": "string"
}
{
    "companies": [
        {
            "id": 123456,
            "name": "FOO S.R.L.",
            "tradeRegisterNo": "J2020010000400",
            "active": true,
            "caen": "9876",
            "registrationDate": "2020-02-15",
            "phone": "0211234567",
            "vat": {
                "id": "RO123456",
                "cashAccountingEnabled": false,
                "date": "2026-01-05"
            },
            "address": {
                "streetName": "Str. Lorem Ipsum",
                "streetNo": "10-12",
                "block": "11A",
                "apt": "20",
                "floor": "2",
                "city": "Sector 1",
                "region": "Bucureşti",
                "zipcode": "012345",
                "extraDetail": "Sky Building"
            }
        },
        {
            "id": 987654,
            "name": "BAR S.R.L.",
            "tradeRegisterNo": "J2021010000400",
            "active": true,
            "registrationDate": "2024-07-15",
            "vat": {
                "id": "987654",
                "cashAccountingEnabled": false,
                "date": "2026-01-05"
            },
            "address": {
                "streetName": "Str. Lorem",
                "streetNo": "5",
                "city": "Sector 2",
                "region": "Bucureşti"
            }
        }
    ]
}
{
    "message": "invalid date"
}

Response Headers

API-ul CompanyInfo.ro răspunde cu următoarele header-e custom:

Nume Header Descriere
X-Companyinfo-Remaining-Credits Numărul de credite rămase pentru luna curentă conform abonamentului tău.
În cazul în care te apropii de 0, poți declanșa o alertă în sistemul tău, de exemplu.
Dacă consumi înainte de vreme creditele abonamentului tău, poți face oricând upgrade tipului de abonament din contul tău.
X-Companyinfo-Correlation-Id Un identificator unic pentru traseul cererii în sistemul nostru.
Îl poți loga în cazul apariției unor probleme neașteptate, de exemplu.