# Datero > API REST + server MCP pentru date publice românești: profiluri de firme (2,7M companii, ANAF/ONRC), nomenclatorul CAEN Rev.3, județe și localități, curs valutar BNR. Cele două canale au comportament identic (același cost, aceleași limite). Datele de referință sunt gratuite și accesibile fără autentificare; datele de firme cer o cheie API (plan Free disponibil). Base URL: https://api.datero.ro · MCP: https://api.datero.ro/mcp ## Documentație - [Introducere](https://datero.ro/docs/index.md): Datero expune date publice românești printr-un API REST și un server MCP cu comportament identic. Primul apel în 60 de secunde. - [Autentificare](https://datero.ro/docs/autentificare.md): Chei API în format dat_live_…, header Authorization: Bearer, acces anonim pentru datele de referință și OAuth pentru MCP. - [Credite și limite](https://datero.ro/docs/credite-si-limite.md): Cum funcționează creditele per organizație, planurile disponibile, rate limiting-ul și headerele de metering. - [Erori](https://datero.ro/docs/erori.md): Toate erorile sunt RFC 7807 Problem Details: catalogul de statusuri și exemple reale. - [Server MCP](https://datero.ro/docs/mcp.md): Conectează Claude, Cursor sau orice client MCP la datele Datero: setup pe client, autentificare și lista tool-urilor. ## Endpoint-uri - [Get a company by CUI](https://datero.ro/docs/api/companies/get.md): GET /v1/companies/:cui · 1 credit/apel - [Search companies](https://datero.ro/docs/api/companies/search.md): GET /v1/companies · 1 credit/apel - [Search the CAEN Rev.3 classification](https://datero.ro/docs/api/caen/search.md): GET /v1/caen-codes · gratuit - [Get a CAEN code with hierarchy and Rev.2 mapping](https://datero.ro/docs/api/caen/get.md): GET /v1/caen-codes/:code · gratuit - [List / search Romanian counties (județe)](https://datero.ro/docs/api/locations/counties.md): GET /v1/counties · gratuit - [Search Romanian localities (localități)](https://datero.ro/docs/api/locations/cities.md): GET /v1/cities · gratuit - [BNR exchange rates for one day](https://datero.ro/docs/api/fx/rates.md): GET /v1/fx-rates · gratuit - [BNR exchange-rate history for one currency](https://datero.ro/docs/api/fx/history.md): GET /v1/fx-rates/history · gratuit - [Convert an amount between currencies at the BNR rate](https://datero.ro/docs/api/fx/convert.md): GET /v1/fx-rates/convert · gratuit ## Mașini - [OpenAPI 3.1](https://api.datero.ro/openapi.json): specificația completă, cu x-credits-cost și x-mcp-tool pe fiecare operație - [llms-full.txt](https://datero.ro/llms-full.txt): toată documentația într-un singur fișier --- # Introducere Datero expune date publice românești — firme, coduri CAEN, județe și localități, curs valutar BNR — prin **două canale cu comportament identic**: un API REST și un server [MCP](/docs/mcp). Aceeași operație are același input, output, cost și aceleași limite pe ambele canale. - **Base URL:** `https://api.datero.ro` - **Format:** JSON (request și răspuns), erori [RFC 7807](/docs/erori) - **Specificație:** [OpenAPI 3.1](https://api.datero.ro/openapi.json) · [referință interactivă](https://api.datero.ro/docs) - **MCP:** `https://api.datero.ro/mcp` (Streamable HTTP) ## Primul apel în 60 de secunde Datele de referință (CAEN, localități, curs valutar) sunt **gratuite și nu cer cheie** — poți încerca direct din terminal: ```bash curl "https://api.datero.ro/v1/fx-rates?currency=EUR,USD" ``` Pentru datele de firme folosește o cheie API (apelurile anonime merg, dar doar pentru testare rapidă — vezi „Acces anonim" mai jos): 1. [Creează-ți un cont](/login) — primești automat planul Free (1.000 credite/lună). 2. Generează o cheie în [dashboard → Chei API](/dashboard/keys). 3. Trimite cheia în headerul `Authorization`: ```bash curl "https://api.datero.ro/v1/companies/2816464" \ -H "Authorization: Bearer dat_live_CHEIA_TA" ``` ## Cum citești documentația Fiecare endpoint are propria pagină cu parametri, exemple reale de request/răspuns și un **playground live** în care poți rula apeluri cu cheia ta, direct din browser. Navighează din bara laterală sau pornește de la [autentificare](/docs/autentificare) și [credite și limite](/docs/credite-si-limite). ## Pentru agenți AI Documentația este publicată și în formate machine-readable: [llms.txt](/llms.txt), [llms-full.txt](/llms-full.txt), fiecare pagină ca markdown curat (adaugă `.md` la URL) și [OpenAPI](https://api.datero.ro/openapi.json) cu extensii `x-credits-cost` / `x-mcp-tool` pe fiecare operație. Iar prin [MCP](/docs/mcp), un agent folosește API-ul fără să scrie cod. --- # Autentificare ## Chei API Cheile au formatul `dat_live__` și se creează din [dashboard → Chei API](/dashboard/keys). Secretul este afișat **o singură dată**, la creare — pe server stocăm doar un hash (SHA-256). Trimite cheia în headerul `Authorization`, pe orice endpoint: ```bash curl "https://api.datero.ro/v1/companies?q=dedeman" \ -H "Authorization: Bearer dat_live_CHEIA_TA" ``` Cheia aparține organizației tale: creditele se contorizează **per organizație**, indiferent câte chei folosești și indiferent de canal (REST sau MCP). Limita de rată (cereri/secundă) se aplică **per cheie API**. ## Acces anonim Toate endpoint-urile publice acceptă și apeluri **fără autentificare**, rate-limited per IP: pentru datele de referință (CAEN, județe/localități, curs valutar) acesta este modul normal de utilizare; pentru datele de firme e gândit doar pentru testare rapidă. În producție folosește cheia API — doar apelurile autentificate au creditele și limitele planului tău (traficul anonim are limite stricte per IP și se poate restrânge oricând). ## Bune practici - Ține cheia în variabile de mediu, nu în cod sau în repository. - Folosește chei separate pentru medii separate (dev/producție) — le poți revoca individual. - Cheia nu trebuie folosită în frontend public (oricine o poate citi din browser); fă apelurile din backend-ul tău. Excepție: [playground-ul din documentație](/docs) păstrează cheia doar în localStorage-ul browserului tău și o trimite direct către API. ## MCP Clienții MCP interactivi (Claude, Cursor…) se autentifică prin **OAuth 2.1** — clientul deschide singur fluxul de autorizare în browser. Pentru acces programatic, serverul MCP acceptă și cheia API în același header `Authorization: Bearer dat_live_…`. Detalii: [ghidul MCP](/docs/mcp). --- # Credite și limite ## Credite Fiecare apel reușit costă un număr fix de credite, afișat pe pagina fiecărui endpoint (și în OpenAPI, ca `x-credits-cost`). Datele de referință costă **0 credite**; datele de firme costă de regulă 1 credit/apel. Creditele se scad dintr-un contor lunar **per organizație**, comun pentru REST și MCP. | Plan | Credite / lună | Rate limit | Preț | | --- | --- | --- | --- | | Free | 1.000 | 10 req/s (burst 30) | gratuit | | Developer | 50.000 | 20 req/s (burst 50) | 19 €/lună | | Business | 500.000 | 50 req/s (burst 100) | 99 €/lună | | Enterprise | nelimitat | 200 req/s (burst 500) | contact | Când creditele se epuizează primești `402 Payment Required` până la resetarea lunară sau la upgrade ([prețuri](/#pricing)). ## Rate limiting Fiecare plan are o limită de cereri pe secundă cu burst (token bucket). Traficul anonim este limitat per IP. La depășire primești `429 Too Many Requests` cu header `Retry-After`. ## Headere de metering Fiecare răspuns REST include: | Header | Semnificație | | --- | --- | | `x-credits-cost` | creditele consumate de acest apel | | `x-credits-remaining` | creditele rămase în luna curentă | | `RateLimit-Limit` / `RateLimit-Remaining` | bugetul de rate limit | | `x-cache` | `HIT` dacă răspunsul a venit din cache-ul Datero | Pe MCP, aceleași informații vin în `_meta.creditsUsed` / `_meta.creditsRemaining` pe fiecare răspuns de tool. --- # Erori Toate erorile au formatul [RFC 7807 — Problem Details](https://www.rfc-editor.org/rfc/rfc7807), cu `Content-Type: application/problem+json`: ```json { "type": "about:blank", "title": "Not found", "status": 404, "detail": "CAEN \"6201\" is a Rev.2 code replaced in Rev.3 (since 2025-01-01); use: 6210" } ``` (Exemplu real: căutarea unui cod CAEN Rev.2 scos din uz răspunde 404 și îți spune succesorii Rev.3.) ## Catalog de statusuri | Status | Când apare | Ce faci | | --- | --- | --- | | `400 Bad Request` | parametri invalizi (validare schema) | corectează inputul după `detail` | | `401 Unauthorized` | cheie lipsă/invalidă pe un endpoint care cere autentificare | verifică headerul `Authorization` | | `402 Payment Required` | credite epuizate pe luna curentă | așteaptă resetarea sau fă upgrade | | `403 Forbidden` | planul tău nu include operația | vezi `x-entitlement` în OpenAPI | | `404 Not Found` | resursa nu există | — | | `429 Too Many Requests` | rate limit depășit | reia după `Retry-After` (secunde) | | `5xx` | eroare internă sau upstream | reîncearcă cu backoff; detaliile interne nu sunt expuse | ## Recomandări pentru retry Tratează `429` și `5xx` ca retriabile (exponential backoff, respectă `Retry-After`). `4xx`-urile de validare nu sunt retriabile — același input va eșua identic. --- # Server MCP Datero expune un server [MCP (Model Context Protocol)](https://modelcontextprotocol.io) — agenții AI folosesc API-ul ca set de tool-uri, fără să scrie cod HTTP. Serverul rulează pe **Streamable HTTP**: ``` https://api.datero.ro/mcp ``` Fiecare tool MCP este aceeași operație ca endpoint-ul REST echivalent: aceeași validare, același cost în credite, aceleași limite, același contor per organizație. ## Conectare din clienți **Claude (claude.ai / Claude Desktop):** Settings → Connectors → *Add custom connector* → URL: `https://api.datero.ro/mcp`. Autorizarea OAuth pornește automat. **Claude Code:** ```bash claude mcp add --transport http datero https://api.datero.ro/mcp ``` **Cursor / VS Code (sau orice client cu config JSON):** ```json { "mcpServers": { "datero": { "url": "https://api.datero.ro/mcp" } } } ``` **Acces programatic (fără OAuth):** trimite cheia API în header: ```json { "mcpServers": { "datero": { "url": "https://api.datero.ro/mcp", "headers": { "Authorization": "Bearer dat_live_CHEIA_TA" } } } } ``` ## Tool-uri disponibile | Tool | Ce face | Cost | Docs | | --- | --- | --- | --- | | `get_company` | Get a company by CUI | 1 credit | [detalii](/docs/api/companies/get) | | `search_companies` | Search companies | 1 credit | [detalii](/docs/api/companies/search) | | `search_caen_codes` | Search the CAEN Rev.3 classification | gratuit | [detalii](/docs/api/caen/search) | | `get_caen_code` | Get a CAEN code with hierarchy and Rev.2 mapping | gratuit | [detalii](/docs/api/caen/get) | | `search_counties` | List / search Romanian counties (județe) | gratuit | [detalii](/docs/api/locations/counties) | | `search_cities` | Search Romanian localities (localități) | gratuit | [detalii](/docs/api/locations/cities) | | `get_fx_rates` | BNR exchange rates for one day | gratuit | [detalii](/docs/api/fx/rates) | | `get_fx_rate_history` | BNR exchange-rate history for one currency | gratuit | [detalii](/docs/api/fx/history) | | `convert_currency` | Convert an amount between currencies at the BNR rate | gratuit | [detalii](/docs/api/fx/convert) | Lista de mai sus este generată din același registru care servește API-ul — un tool nou apare aici automat. Costurile și creditele rămase vin pe fiecare răspuns în `_meta.creditsUsed` / `_meta.creditsRemaining`. --- # Get a company by CUI Company profile sourced from Companero. Use ?include= to embed balance sheets and legal representatives. - REST: `GET https://api.datero.ro/v1/companies/:cui` - Tool MCP: `get_company` (endpoint: https://api.datero.ro/mcp) - Cost: 1 credit / apel - Autentificare: recomandată — header `Authorization: Bearer dat_live_…` (fără cheie funcționează limitat, doar rate-limited per IP) ## Parametri | Nume | În | Tip | Obligatoriu | Descriere | | --- | --- | --- | --- | --- | | `cui` | path | string | da | Company tax id (CUI), digits only. | | `include` | query | string | nu | Comma-separated sub-resources to embed, e.g. "balanceSheets,legalRepresentatives". | ## Exemplu: Profil firmă după CUI Datele de identificare, sediu și statut TVA, direct după CUI. ```bash curl "https://api.datero.ro/v1/companies/2816464" \ -H "Authorization: Bearer dat_live_CHEIA_TA" ``` Răspuns: ```json { "taxId": 2816464, "name": "DEDEMAN SRL", "companyType": "SRL", "tradeNumber": "J04/2621/1992", "county": "BACĂU", "city": "Bacău", "mainNaceCode": "4752", "registrationDate": "1993-01-27", "registrationStatus": "INREGISTRAT din data 27.01.1993", "stateRegistration": "in_operation", "address": "JUD. BACĂU, MUN. BACĂU, STR. ALEXEI TOLSTOI, NR.8", "postalCode": "600093", "legalForm": "SOCIETATE COMERCIALĂ CU RĂSPUNDERE LIMITATĂ", "ownershipForm": "PROPR.PRIVATA-CAPITAL PRIVAT AUTOHTON", "organizationForm": "PERSOANA JURIDICA", "fiscalAuthority": "Direcţia Generală de Administrare a Marilor Contribuabili", "vatPayer": true, "vatSince": null, "vatOnCollection": false, "vatSplit": false, "phone": "0234513330", "website": null } ``` Documentație completă: https://datero.ro/docs/api/companies/get · OpenAPI: https://api.datero.ro/openapi.json --- # Search companies Full-text + filtered company search, backed by Companero (Elasticsearch). - REST: `GET https://api.datero.ro/v1/companies` - Tool MCP: `search_companies` (endpoint: https://api.datero.ro/mcp) - Cost: 1 credit / apel - Autentificare: recomandată — header `Authorization: Bearer dat_live_…` (fără cheie funcționează limitat, doar rate-limited per IP) ## Parametri | Nume | În | Tip | Obligatoriu | Descriere | | --- | --- | --- | --- | --- | | `q` | query | string | nu | Free-text company name. | | `county` | query | string | nu | County name (e.g. "Cluj") or code. | | `city` | query | string | nu | | | `naceCode` | query | string | nu | CAEN code (4 digits). | | `industryId` | query | string | nu | | | `limit` | query | string | nu | 1–100, default 25. | | `offset` | query | string | nu | 0–999999, default 0. | | `sortBy` | query | string | nu | | | `sortDirection` | query | string | nu | | ## Exemplu: Căutare după denumire Full-text pe denumire; răspunsul include totalCount și un eșantion paginat. ```bash curl "https://api.datero.ro/v1/companies?q=dedeman&limit=1" \ -H "Authorization: Bearer dat_live_CHEIA_TA" ``` Răspuns: ```json { "totalCount": 4, "limit": 1, "offset": 0, "tookMs": 30, "items": [ { "taxId": 2816464, "name": "DEDEMAN SRL", "companyType": "SRL", "tradeNumber": "J04/2621/1992", "county": "BACĂU", "city": "Bacău", "mainNaceCode": "4752", "registrationDate": "1993-01-27", "stateRegistration": "in_operation", "address": "JUD. BACĂU, MUN. BACĂU, STR. ALEXEI TOLSTOI, NR.8", "vatPayer": true, "phone": "0234513330", "website": null } ] } ``` Documentație completă: https://datero.ro/docs/api/companies/search · OpenAPI: https://api.datero.ro/openapi.json --- # Search the CAEN Rev.3 classification Official Romanian CAEN Rev.3 activity classification (in force since 2025-01-01), hierarchical: section (letter A–U) → division (2 digits) → group (3) → class (4). No filters returns the whole nomenclature, paginated. Free of charge. - REST: `GET https://api.datero.ro/v1/caen-codes` - Tool MCP: `search_caen_codes` (endpoint: https://api.datero.ro/mcp) - Cost: gratuit (0 credite) - Autentificare: opțională — funcționează și fără cheie (doar rate-limited) ## Parametri | Nume | În | Tip | Obligatoriu | Descriere | | --- | --- | --- | --- | --- | | `q` | query | string | nu | Free text (activity name, diacritics-insensitive) or a code prefix. | | `code` | query | string | nu | Exact codes, comma-separated, e.g. "6210,6220". | | `type` | query | string | nu | Hierarchy level: "section", "division", "group" or "class". | | `parent` | query | string | nu | Parent code — returns its direct children, e.g. "J", "62", "620". | | `limit` | query | string | nu | 1–100, default 50. | | `offset` | query | string | nu | 0–999999, default 0. | ## Exemplu: Căutare după denumirea activității Full-text, fără diacritice — găsește grupa și clasele "software". ```bash curl "https://api.datero.ro/v1/caen-codes?q=software&limit=2" ``` Răspuns: ```json { "totalCount": 3, "limit": 2, "offset": 0, "items": [ { "code": "582", "name": "Activități de editare a produselor software", "type": "group", "description": null, "parentCode": "58" }, { "code": "5829", "name": "Activități de editare a altor produse software", "type": "class", "description": null, "parentCode": "582" } ] } ``` ## Exemplu: Copiii direcți ai unei diviziuni parent="62" listează grupele diviziunii 62. ```bash curl "https://api.datero.ro/v1/caen-codes?parent=62&type=group" ``` Răspuns: ```json { "totalCount": 3, "limit": 50, "offset": 0, "items": [ { "code": "621", "name": "Activități de programare", "type": "group", "description": null, "parentCode": "62" }, { "code": "622", "name": "Activități de consultanță în tehnologia informației și de management (gestiune și exploatare) al mijloacelor de calcul", "type": "group", "description": null, "parentCode": "62" }, { "code": "629", "name": "Alte activități de servicii privind tehnologia informației", "type": "group", "description": null, "parentCode": "62" } ] } ``` Documentație completă: https://datero.ro/docs/api/caen/search · OpenAPI: https://api.datero.ro/openapi.json --- # Get a CAEN code with hierarchy and Rev.2 mapping One CAEN Rev.3 code with its full ancestor chain, direct children and the Rev.2 codes it replaces. Looking up a dropped Rev.2 code answers 404 listing its Rev.3 successors (migration aid for pre-2025 codes). Free of charge. - REST: `GET https://api.datero.ro/v1/caen-codes/:code` - Tool MCP: `get_caen_code` (endpoint: https://api.datero.ro/mcp) - Cost: gratuit (0 credite) - Autentificare: opțională — funcționează și fără cheie (doar rate-limited) ## Parametri | Nume | În | Tip | Obligatoriu | Descriere | | --- | --- | --- | --- | --- | | `code` | path | string | da | Section letter ("J") or 2–4 digit code ("62", "620", "6210"). | ## Exemplu: Clasa 6210 cu ierarhie și echivalențe Rev.2 Răspunsul include lanțul de părinți (secțiune → diviziune → grupă) și codurile Rev.2 înlocuite. ```bash curl "https://api.datero.ro/v1/caen-codes/6210" ``` Răspuns: ```json { "code": "6210", "name": "Activități de realizare a softului la comandă (software orientat client)", "type": "class", "description": null, "parentCode": "621", "parents": [ { "code": "K", "name": "Telecomunicații; activități de programare și de consultanță în tehnologia informației; alte servicii informaționale", "type": "section", "description": null, "parentCode": null }, { "code": "62", "name": "Activități de programare și activități de consultanță în tehnologia informației", "type": "division", "description": null, "parentCode": "K" }, { "code": "621", "name": "Activități de programare", "type": "group", "description": null, "parentCode": "62" } ], "children": [], "replacesRev2Codes": [ 6201 ] } ``` Documentație completă: https://datero.ro/docs/api/caen/get · OpenAPI: https://api.datero.ro/openapi.json --- # List / search Romanian counties (județe) The 41 counties + Bucharest, with slug, plate code (e.g. "CJ"), ANAF and SIRUTA codes. No filters returns the full list; "q" is a fuzzy, diacritics-insensitive name match. Free of charge. - REST: `GET https://api.datero.ro/v1/counties` - Tool MCP: `search_counties` (endpoint: https://api.datero.ro/mcp) - Cost: gratuit (0 credite) - Autentificare: opțională — funcționează și fără cheie (doar rate-limited) ## Parametri | Nume | În | Tip | Obligatoriu | Descriere | | --- | --- | --- | --- | --- | | `q` | query | string | nu | County name, fuzzy (e.g. "cluj", "Bucuresti"). | | `id` | query | string | nu | Exact ids, comma-separated. | | `limit` | query | string | nu | 1–100, default 50. | | `offset` | query | string | nu | 0–999999, default 0. | ## Exemplu: Căutare județ după nume Match fuzzy, fără diacritice — "cluj" găsește județul CLUJ. ```bash curl "https://api.datero.ro/v1/counties?q=cluj" ``` Răspuns: ```json { "totalCount": 1, "limit": 50, "offset": 0, "items": [ { "id": 12, "name": "CLUJ", "slug": "cluj", "shortCode": "CJ", "anafCode": 12, "sirutaCode": 13 } ] } ``` Documentație completă: https://datero.ro/docs/api/locations/counties · OpenAPI: https://api.datero.ro/openapi.json --- # Search Romanian localities (localități) Romanian localities — municipalities, towns, communes, villages, Bucharest sectors — with type, county, ANAF and SIRUTA codes. Filter by "q" (name, diacritics-insensitive) and/or "county" (county ids). Free of charge. - REST: `GET https://api.datero.ro/v1/cities` - Tool MCP: `search_cities` (endpoint: https://api.datero.ro/mcp) - Cost: gratuit (0 credite) - Autentificare: opțională — funcționează și fără cheie (doar rate-limited) ## Parametri | Nume | În | Tip | Obligatoriu | Descriere | | --- | --- | --- | --- | --- | | `q` | query | string | nu | Locality name, fuzzy (e.g. "cluj napoca"). | | `id` | query | string | nu | Exact ids, comma-separated. | | `county` | query | string | nu | County ids, comma-separated (see /v1/counties). | | `limit` | query | string | nu | 1–100, default 25. | | `offset` | query | string | nu | 0–999999, default 0. | ## Exemplu: Căutare localitate după nume Răspunsul include tipul localității, județul și codurile ANAF/SIRUTA. ```bash curl "https://api.datero.ro/v1/cities?q=cluj-napoca&limit=1" ``` Răspuns: ```json { "totalCount": 1, "limit": 1, "offset": 0, "items": [ { "id": 115, "name": "Cluj-Napoca", "slug": "cluj-napoca", "type": "municipality", "countyId": 12, "countyName": "CLUJ", "countyCode": "CJ", "anafCode": 103, "sirutaCode": 54975 } ] } ``` Documentație completă: https://datero.ro/docs/api/locations/cities · OpenAPI: https://api.datero.ro/openapi.json --- # BNR exchange rates for one day Official BNR (National Bank of Romania) reference rates — RON per 1 unit of each currency. Without "date" returns the latest published fixing. BNR publishes business days only: weekend/holiday requests answer with the previous fixing and the effective "date" in the response. Free of charge. - REST: `GET https://api.datero.ro/v1/fx-rates` - Tool MCP: `get_fx_rates` (endpoint: https://api.datero.ro/mcp) - Cost: gratuit (0 credite) - Autentificare: opțională — funcționează și fără cheie (doar rate-limited) ## Parametri | Nume | În | Tip | Obligatoriu | Descriere | | --- | --- | --- | --- | --- | | `date` | query | string | nu | Requested day, YYYY-MM-DD. Default: the latest published fixing. | | `currency` | query | string | nu | Filter currencies, comma-separated ISO 4217, e.g. "EUR,USD". | ## Exemplu: Cursul EUR și USD într-o zi anume "date" în răspuns este ziua fixing-ului efectiv aplicat. ```bash curl "https://api.datero.ro/v1/fx-rates?date=2026-06-10¤cy=EUR%2CUSD" ``` Răspuns: ```json { "date": "2026-06-10", "requestedDate": "2026-06-10", "target": "RON", "source": "BNR", "items": [ { "currency": "EUR", "rate": 5.2344 }, { "currency": "USD", "rate": 4.5286 } ] } ``` Documentație completă: https://datero.ro/docs/api/fx/rates · OpenAPI: https://api.datero.ro/openapi.json --- # BNR exchange-rate history for one currency Daily BNR fixing series (business days only) for one currency against RON. Maximum range: 366 days per request — paginate by year for longer histories. Defaults: to=today, from=to−30 days. Free of charge. - REST: `GET https://api.datero.ro/v1/fx-rates/history` - Tool MCP: `get_fx_rate_history` (endpoint: https://api.datero.ro/mcp) - Cost: gratuit (0 credite) - Autentificare: opțională — funcționează și fără cheie (doar rate-limited) ## Parametri | Nume | În | Tip | Obligatoriu | Descriere | | --- | --- | --- | --- | --- | | `currency` | query | string | da | ISO 4217 currency code, e.g. "EUR". | | `from` | query | string | nu | Range start, YYYY-MM-DD. | | `to` | query | string | nu | Range end, YYYY-MM-DD. | ## Exemplu: Istoricul EUR pe un interval Doar zile bancare — weekendul lipsește din serie. ```bash curl "https://api.datero.ro/v1/fx-rates/history?currency=EUR&from=2026-06-01&to=2026-06-05" ``` Răspuns: ```json { "currency": "EUR", "target": "RON", "source": "BNR", "from": "2026-06-01", "to": "2026-06-05", "items": [ { "date": "2026-06-02", "rate": 5.2556 }, { "date": "2026-06-03", "rate": 5.2592 }, { "date": "2026-06-04", "rate": 5.2581 }, { "date": "2026-06-05", "rate": 5.2488 } ] } ``` Documentație completă: https://datero.ro/docs/api/fx/history · OpenAPI: https://api.datero.ro/openapi.json --- # Convert an amount between currencies at the BNR rate Converts an amount between any two currencies quoted by BNR (RON included), using the official fixing of the given day (default: latest). Cross rates go through RON, e.g. EUR→USD = (EUR→RON)/(USD→RON). Free of charge. - REST: `GET https://api.datero.ro/v1/fx-rates/convert` - Tool MCP: `convert_currency` (endpoint: https://api.datero.ro/mcp) - Cost: gratuit (0 credite) - Autentificare: opțională — funcționează și fără cheie (doar rate-limited) ## Parametri | Nume | În | Tip | Obligatoriu | Descriere | | --- | --- | --- | --- | --- | | `amount` | query | string | da | Amount to convert, e.g. "1500" or "99.90". | | `from` | query | string | da | Source currency, e.g. "EUR". | | `to` | query | string | da | Target currency, e.g. "RON". | | `date` | query | string | nu | Fixing day, YYYY-MM-DD. Default: the latest published fixing. | ## Exemplu: Conversie EUR → USD (cross prin RON) EUR→USD = (EUR→RON)/(USD→RON), la fixing-ul zilei cerute. ```bash curl "https://api.datero.ro/v1/fx-rates/convert?amount=2500&from=EUR&to=USD&date=2026-06-10" ``` Răspuns: ```json { "amount": 2500, "from": "EUR", "to": "USD", "date": "2026-06-10", "rate": 1.155854, "result": 2889.6348, "source": "BNR" } ``` Documentație completă: https://datero.ro/docs/api/fx/convert · OpenAPI: https://api.datero.ro/openapi.json