oneapi
Sign in
Financiar v1 / TitluriStat

Government bond auctions

The results of issuance auctions: how much was announced, how much was bid, how much was allotted and at what yield, price or discount. 1,834 auctions since April 2005, with the NBR's 34 fields translated into named structures.

The source's codes read along two axes, and that is where the shape of the response comes from: cerere is what was bid, adjudecat is what was accepted, each with the nominal value and the net cost, broken down into competitive bids (own account / clients' account) and non-competitive ones.

The currency is NOT published in this series. Unlike the exchange series, issues have no denomination field. And the series almost certainly contains euro-denominated issues too: 118 auctions (6.4%) have a yield far below the median of their month — 21 August 2026 gives 3.23% and 3.97% in the same week in which the rest are allotted at 6.7%. Almost certainly is not a figure you put in a field, so the route does not invent a moneda and sums nothing across auctions. Whoever adds them up, adds them up knowing.

The first nine auctions are in old lei (11 April – 20 June 2005): 500,000,000,000 against 150,000,000 after 1 July, and the individual nominal value goes from 100,000,000 to 10,000 — exactly the 10,000 ratio. The values come as published, with epoca and factor_denominare alongside.

An auction can fail: 159 of 1,834 (8.7%) allotted nothing. They are flagged nereusita, so that they do not enter a yield average as if they had had one. And 72.7% are reopenings — the residual maturity is shorter than the original, flagged reluare.

suprasubscriere and raport_prospect are computed by us, not published. The first has a declared trap: the NBR publishes total demand in two mutually exclusive fields — nominal value on 1,458 auctions, net cost on the other 376 — so suprasubscriere_baza says which one it was computed on. The medians genuinely differ: 1.66 on the nominal basis, 2.04 on net cost. raport_prospect (allotted / announced) has a median of 1.02, with 925 auctions above the announcement and 309 below.

In 2006 there is no auction at all in the series: 13 in 2005, then nothing until 2007.

GET
https://oneapi.ro/api/financiar/v1/titluri-stat/emisiuni

Query parameters

NameTypeDescriptionAccepted values
de_larequired string Required, YYYY-MM-DD. Cannot be in the future. e.g. 2024-06-15e.g. 2024-01-02
pana_laoptional string | null Optional. Defaults to the last auction day. At most 366 days. e.g. 2024-06-30e.g. 2024-03-29e.g. 2024-06-15

How it behaves

  • Issuance auction results: how much was announced, bid for, allotted, and at what yield, price or discount. 1,834 auctions since April 2005, with the NBR's 34 opaque field codes translated into named structures.
  • The source codes read along two axes, and that is where the response shape comes from: cerere is what was bid for, adjudecat is what was accepted, each with nominal value and net cost, broken down into competitive offers (own account / client account) and non-competitive ones. cost_net / nominal gives the category's average price — verified: 871,953,200 / 840,000,000 = 1.0380 against the published average price of 103.83.
  • The currency is NOT published in this series. Unlike the exchange-operations series, auctions carry no denomination field. And the series almost certainly contains euro issues too: 118 auctions (6.4%) show yields far below their month's median — 21 August 2026 gives 3.23% and 3.97% in the same week the rest cleared at 6.7%. Almost certainly is not a figure you put in a field, so this route does not invent a moneda and never sums anything across auctions: a total would mix currencies. Anyone who adds them up does so knowingly.
  • The first nine auctions are in old lei (11 April – 20 June 2005): 500,000,000,000 against 150,000,000 after 1 July, with the individual face value going from 100,000,000 to 10,000 — exactly the 10,000 ratio. Values are returned as published: silently converted, they would no longer match the NBR's own page. epoca and factor_denominare say what to multiply by to reach today's lei.
  • An auction can fail: 159 of 1,834 (8.7%) allotted nothing. They are flagged nereusita and carry no yield — an average that counts them as zeros is wrong.
  • 72.7% are reopenings: more is issued from a series that already exists, so residual maturity is shorter than the original. The reluare field marks them.
  • suprasubscriere carries a declared trap: the NBR publishes total demand in two mutually exclusive fields — nominal value for 1,458 auctions, net cost for the other 376, never both. That is why suprasubscriere_baza says which one it was computed on, and the medians genuinely differ: 1.66 on a nominal basis, 2.04 on net cost.
  • raport_prospect (allotted / announced) has a median of 1.02, with 925 auctions above the announcement and 309 below: the Treasury frequently takes more than it announced, and it shows.
  • There is no auction at all in 2006: 13 in 2005, then nothing until 2007. An interval inside 2006 gets a 404 fara_licitatii, not in_afara_acoperirii — the year sits in the middle of the series.

What it is for

  • The real cost at which the state borrows, auction by auction.
  • Market appetite for sovereign debt, tracked through oversubscription.
  • The issuance calendar, and how far allotment strayed from what the prospectus announced.

Response structure

FieldTypeDescription
data.de_la string Start of the interval the response covers.
data.pana_la string End of the interval the response covers, inclusive.
data.licitatii[].data string The auction day.
data.licitatii[].linie integer Which auction of that day — some days have two. The key is the date plus this line number.
data.licitatii[].instrument string obligatiuni (coupon-bearing), certificate_discont, or nedeterminat for the 51 that carry no price field to tell them apart.
data.licitatii[].epoca string ROL or RON — which currency the values are written in.
data.licitatii[].factor_denominare integer 10000 in the old-lei era, 1 after. What to multiply the values by to reach today's lei.
data.licitatii[].maturitate.zile integer The series' original maturity, in days.
data.licitatii[].maturitate.ani string The same in years (divided by 365.25) — for reading, not for exact computation.
data.licitatii[].maturitate.reziduala_zile integer How long the series still has to run from settlement. Shorter than the original on reopenings.
data.licitatii[].maturitate.reluare boolean true on a reopening.
data.licitatii[].decontare_zile integer The lag between auction and settlement.
data.licitatii[].cupon string The coupon rate, percent per year. null for discount bills.
data.licitatii[].dobanda_acumulata_titlu string
data.licitatii[].oferta.anuntat string The amount from the prospectus.
data.licitatii[].oferta.subscris string The nominal value bid for. null for the 376 auctions where the NBR published only the net cost of demand — that sits in cerere.total.cost_net.
data.licitatii[].oferta.adjudecat string The nominal value accepted.
data.licitatii[].oferta.nereusita boolean true when nothing was allotted.
data.licitatii[].oferta.suprasubscriere string How many times demand exceeded the allotment. Computed by us.
data.licitatii[].oferta.suprasubscriere_baza string nominal or cost_net — which basis the ratio could be computed on.
data.licitatii[].oferta.raport_prospect string Allotted / announced. Above 1 means more was taken than announced.
data.licitatii[].oferta.valoare_nominala_titlu string
data.licitatii[].oferta.oferta_minima string
data.licitatii[].cerere object What was bid for: nominal and cost_net, in total, competitive (own account / client account) and non-competitive.
data.licitatii[].cerere.total.nominal string Value in current prices, not deflated.
data.licitatii[].cerere.total.cost_net null Net cost, after what is offset has been deducted.
data.licitatii[].cerere.competitive.nominal string Value in current prices, not deflated.
data.licitatii[].cerere.competitive.cost_net string Net cost, after what is offset has been deducted.
data.licitatii[].cerere.competitive_cont_propriu.nominal string Value in current prices, not deflated.
data.licitatii[].cerere.competitive_cont_propriu.cost_net string Net cost, after what is offset has been deducted.
data.licitatii[].cerere.competitive_cont_clienti.nominal string Value in current prices, not deflated.
data.licitatii[].cerere.competitive_cont_clienti.cost_net string Net cost, after what is offset has been deducted.
data.licitatii[].cerere.necompetitive.nominal string Value in current prices, not deflated.
data.licitatii[].cerere.necompetitive.cost_net null Net cost, after what is offset has been deducted.
data.licitatii[].adjudecat object What was accepted, with the same breakdown.
data.licitatii[].adjudecat.total.nominal string Value in current prices, not deflated.
data.licitatii[].adjudecat.total.cost_net string Net cost, after what is offset has been deducted.
data.licitatii[].adjudecat.competitive.nominal string Value in current prices, not deflated.
data.licitatii[].adjudecat.competitive.cost_net string Net cost, after what is offset has been deducted.
data.licitatii[].adjudecat.competitive_cont_propriu.nominal string Value in current prices, not deflated.
data.licitatii[].adjudecat.competitive_cont_propriu.cost_net string Net cost, after what is offset has been deducted.
data.licitatii[].adjudecat.competitive_cont_clienti.nominal string Value in current prices, not deflated.
data.licitatii[].adjudecat.competitive_cont_clienti.cost_net string Net cost, after what is offset has been deducted.
data.licitatii[].adjudecat.necompetitive.nominal string Value in current prices, not deflated.
data.licitatii[].adjudecat.necompetitive.cost_net string Net cost, after what is offset has been deducted.
data.licitatii[].randament object The average and the highest accepted yield, percent per year.
data.licitatii[].randament.mediu string Area of residence (urban or rural).
data.licitatii[].randament.maxim string Largest value in the interval.
data.licitatii[].pret object The average and the highest accepted price, as a percentage of face value.
data.licitatii[].pret.mediu string Area of residence (urban or rural).
data.licitatii[].pret.maxim string Largest value in the interval.
data.licitatii[].discont object The average and maximum discount rate. Discount bills only.
data.licitatii[].discont.mediu null Area of residence (urban or rural).
data.licitatii[].discont.maxim null Largest value in the interval.
data.licitatii[].coeficient_marginal object How much was allotted from the offers sitting at the marginal level, separately for competitive and non-competitive.
data.licitatii[].coeficient_marginal.competitive string
data.licitatii[].coeficient_marginal.necompetitive string
meta.sursa string The official source the data comes from, with its licence where one is required.
meta.acoperire.de_la string The first period we have data for.
meta.acoperire.pana_la string The last period we have data for.
meta.acoperire.licitatii integer
meta.licitatii integer
meta.nereusite integer
meta.zile_interval integer How many calendar days the requested interval spans.
meta.nota_moneda string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_denominare string The 2005 denomination (1 new leu = 10,000 old lei) and what it means for comparisons.
meta.nota_structura string How to read the structure in the response and which levels must not be added.
meta.nota_calculate string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_subscris string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_nereusite string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.nota_2006 string A note on how to read the response: a caveat, a convention or a limit of the source.
meta.fara_date string data is null and this says why. The interval falls entirely outside the series. The interval is inside the coverage but no auction was held in it (the 2006 case).
meta.fara_date_cod string The short, STABLE word for the reason, for clients that branch on it in code: fara_date is prose and may be rephrased, this is not.

Response examples

GEThttps://oneapi.ro/api/financiar/v1/titluri-stat/emisiuni?de_la=2024-06-15&pana_la=2024-06-30
{
    "data": {
        "de_la": "2024-06-15",
        "pana_la": "2024-06-30",
        "licitatii": [
            {
                "data": "2024-06-17",
                "linie": 1,
                "instrument": "obligatiuni",
                "epoca": "RON",
                "factor_denominare": 1,
                "maturitate": {
                    "zile": 3934,
                    "ani": "10.77",
                    "reziduala_zile": 3696,
                    "reluare": true
                },
                "decontare_zile": 4,
                "cupon": "7.10",
                "dobanda_acumulata_titlu": "312.32",
                "oferta": {
                    "anuntat": "500000000.00",
                    "subscris": "1239870000.00",
                    "adjudecat": "1022500000.00",
                    "nereusita": false,
                    "suprasubscriere": "1.21",
                    "suprasubscriere_baza": "nominal",
                    "raport_prospect": "2.05",
                    "valoare_nominala_titlu": "5000.00",
                    "oferta_minima": "5000.00"
                },
                "cerere": {
                    "total": {
                        "nominal": "1239870000.00",
                        "cost_net": null
                    },
                    "competitive": {
                        "nominal": "1042500000.00",
                        "cost_net": "1059899000.00"
                    },
                    "competitive_cont_propriu": {
                        "nominal": "1042500000.00",
                        "cost_net": "1059899000.00"
                    },
                    "competitive_cont_clienti": {
                        "nominal": "0.00",
                        "cost_net": "0.00"
                    },
                    "necompetitive": {
                        "nominal": "197370000.00",
                        "cost_net": null
                    }
                },
                "adjudecat": {
                    "total": {
                        "nominal": "1022500000.00",
                        "cost_net": "1039720140.00"
                    },
                    "competitive": {
                        "nominal": "897500000.00",
                        "cost_net": "912614890.00"
                    },
                    "competitive_cont_propriu": {
                        "nominal": "897500000.00",
                        "cost_net": "912614890.00"
                    },
                    "competitive_cont_clienti": {
                        "nominal": "0.00",
                        "cost_net": "0.00"
                    },
                    "necompetitive": {
                        "nominal": "125000000.00",
                        "cost_net": "127105250.00"
                    }
                },
                "randament": {
                    "mediu": "6.86",
                    "maxim": "6.86"
                },
                "pret": {
                    "mediu": "101.68",
                    "maxim": "101.65"
                },
                "discont": {
                    "mediu": null,
                    "maxim": null
                },
                "coeficient_marginal": {
                    "competitive": "100.00",
                    "necompetitive": "63.33"
                }
            }
        ]
    },
    "meta": {
        "sursa": "BNR — licitaţii de titluri de stat (baza de date interactivă).",
        "acoperire": {
            "de_la": "2005-04-11",
            "pana_la": "2026-09-23",
            "licitatii": 1838
        },
        "licitatii": 5,
        "nereusite": 1,
        "zile_interval": 16,
        "nota_moneda": "Seria de emisiuni NU publică denominarea, iar 118 licitaţii din 1.834 (6,4%) au randamentul mult sub mediana lunii lor — aproape sigur emisiuni în euro. De aceea nu există câmp `moneda` şi nu se însumează nimic peste licitaţii: un total ar amesteca monede.",
        "nota_denominare": "Primele nouă licitaţii (11 aprilie – 20 iunie 2005) sunt în lei vechi. Valorile sunt cele publicate, netransformate; `epoca` şi `factor_denominare` spun cu ce se înmulţeşte pentru a ajunge în lei de azi.",
        "nota_structura": "`cerere` e ce s-a cerut, `adjudecat` e ce s-a acceptat — fiecare cu `nominal` şi `cost_net`, pe competitive (cont propriu / contul clienţilor) şi necompetitive. `cost_net / nominal` dă preţul mediu al categoriei.",
        "nota_calculate": "`suprasubscriere` şi `raport_prospect` sunt calculate de noi. BNR publică cererea totală în două câmpuri care se exclud — valoare nominală la 1.458 de licitaţii, cost net la 376 — deci `suprasubscriere_baza` spune pe care s-a calculat; medianele istorice diferă real: 1,66 nominal, 2,04 cost net. `raport_prospect` are mediana 1,02.",
        "nota_subscris": "`oferta.subscris` e valoarea nominală cerută. E `null` la cele 376 de licitaţii pentru care BNR a publicat doar costul net al cererii — acela stă în `cerere.total.cost_net`, nu s-a pierdut.",
        "nota_nereusite": "Licitaţia cu `nereusita: true` n-a adjudecat nimic — 8,7% din toate. Nu are randament, deci nu intră într-o medie.",
        "nota_2006": "În 2006 nu există nicio licitaţie în serie: 13 în 2005, apoi nimic până în 2007."
    }
}

Error codes

CodeSlugWhen it occurs
401neautentificatToken missing, invalid, expired or revoked.
403feature_indisponibilThe current plan does not include the feature the route depends on.
422validareinterval_prea_lung beyond 366 days, a malformed date, pana_la before de_la, or an interval in the future.
429cota_depasitaThe plan's monthly quota has been exceeded (see Retry-After).

All errors share the same shape. eroare.cod is stable and is the value you should branch on in code — not the text in mesaj, which may change.

{
    "eroare": {
        "cod": "validare",
        "mesaj": "interval_prea_lung beyond 366 days, a malformed date, pana_la before de_la, or an interval in the future.",
        "detalii": {
            "de_la": [
                "The value sent does not satisfy the parameter rule."
            ]
        }
    }
}