ⓘ

Traé los datos del tablero a donde los necesites

Precios, TIR, flujos, condiciones y series del BCRA: todo lo que ves en pantalla se puede pedir por API y llevar a una planilla, un script o tu propia herramienta.

Cómo se accede. Dos caminos. Desde el browser, con tu sesión: iniciás sesión una vez y listo. Desde un script o una planilla, con una clave de API, que no vence y no necesita browser — disponible para las cuentas plus y admin.

◈Conectarlo a tu agente (MCP)

El camino más corto: en vez de escribir consultas, le preguntás en castellano a tu propio Claude, Cursor o agente, y él consulta el tablero por vos. Necesitás dos datos: la URL y tu clave de API. Disponible para cuentas plus y admin.

/api/mcp
Claude Code — un comando y listo
claude mcp add --transport http curvas https://tu-tablero/api/mcp \
  --header "Authorization: Bearer ck_TU_CLAVE"
Claude Desktop, Cursor y cualquier cliente con archivo de configuración
{
  "mcpServers": {
    "curvas": {
      "type": "http",
      "url": "https://tu-tablero/api/mcp",
      "headers": { "Authorization": "Bearer ck_TU_CLAVE" }
    }
  }
}
Comprobar que responde, sin cliente de por medio
curl -s -X POST https://tu-tablero/api/mcp \
  -H "Authorization: Bearer ck_TU_CLAVE" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
herramientaqué hace
buscar_instrumentoResuelve un nombre a medias en tickers reales. Es la que usa el agente cuando le nombrás un bono de memoria.
tasasPrecio, TIR, TEM, TNA, duration y convexidad en vivo, de uno o de todo el mercado.
flujosEl calendario de pagos: cada fecha y su monto por 100 VN.
condicionesEl pliego: vencimiento, tasa, periodicidad, moneda, ley y jurisdicción.
historicoLa serie larga de TIR o de paridad, desde 2018 (344 y 239 instrumentos). Para ver dónde está un bono contra su propia historia.
intradiarioTIR y precio tick a tick de la rueda de hoy.
calcularPrecio → tasa, o tasa → precio, sobre el calendario real. Es la que responde «ia qué precio rinde 10 %?».
curvaLos puntos de un grupo para comparar rendimiento contra duration.
fxMEP, CCL y oficial A3500.
serie_bcraUna serie del BCRA por id (30 = CER, 44 = TAMAR, 7 = BADLAR).

Todo lo que ves es de lectura. Ninguna de las diez tools modifica nada, y tu clave nace de sólo lectura: aunque el agente quisiera, el servidor rechaza cualquier escritura.

El agente no hace las cuentas. Cada respuesta trae la TIR, la TEM y la TNA ya resueltas por el motor de valuación, con la liquidación y el tipo de cambio que se usaron. El agente cita esos números en lugar de derivarlos del precio — que es de dónde salen las tasas inventadas que suenan bien.

Rigen los mismos límites que la API: 120 llamadas por minuto (500 para admin) y 3 IPs por clave. Si además consultás por script, conviene una clave para cada cosa.

Unidades. Las tasas vienen en decimal (0.0868 es 8,68 %), salvo las series del BCRA, que vienen en porcentaje. Los precios son por 100 VN en la moneda de la especie: el ticker en pesos en ARS, la especie D en USD.

→Empezar

Iniciás sesión una vez, guardás la cookie y la mandás en cada consulta. La sesión dura 7 días.

/api/me
Iniciar sesión y guardar la cookie
curl -s -c cookies.txt \
  -X POST https://tu-tablero/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "vos@ejemplo.com", "password": "tu-password"}'
Ver quién sos y con qué rol
curl -s -b cookies.txt https://tu-tablero/api/me

⚿Claves de API

Para que un script o una planilla consulten sin iniciar sesión. Las emitís vos, desde tu cuenta, y las revocás cuando quieras. Disponibles para cuentas plus y admin.

Tus claves

Cargando…
/api/internal/api-keys/api/internal/api-keys/{kid}
Crear una clave (el secreto se muestra UNA sola vez)
curl -s -b cookies.txt \
  -X POST https://tu-tablero/api/internal/api-keys \
  -H "Content-Type: application/json" \
  -d '{"nombre": "planilla de flujos", "solo_lectura": true}'
Usarla: va en el header Authorization
curl -s -H "Authorization: Bearer ck_TU_CLAVE" \
  "https://tu-tablero/api/internal/flujos?ticker=AL30"
Ver las tuyas / revocar una
curl -s -b cookies.txt https://tu-tablero/api/internal/api-keys
curl -s -b cookies.txt -X DELETE https://tu-tablero/api/internal/api-keys/EL_ID

La clave actúa como vos: nunca da más permisos que los que tenés en el momento de usarla. Si tu cuenta cambia de rol o se desactiva, deja de funcionar sola, sin revocarla. Por defecto es de sólo lectura; una clave así no puede escribir aunque vos sí puedas.

Límites por clave. 120 llamadas por minuto para cuentas plus y 500 para admin — dos por segundo alcanzan de sobra para cualquier uso normal; el tope existe para que un bucle mal cerrado no se lleve puesto el backend. Al superarlo llega un 429 con Retry-After.

Además, cada clave se puede usar desde hasta 3 IPs distintas por semana (las cuentas admin no tienen este tope). Si tu proceso corre en varios lugares, emití una clave para cada uno: es gratis, te deja revocar sólo el que haga falta, y cada una lleva su propio presupuesto de llamadas.

≢Calculadora: precio ↔ tasa

Le mandás un precio y te devuelve la TIR, la TEM y la TNA. O al revés: le mandás una tasa y te devuelve el precio. Sobre el calendario real del activo, con la fecha de concertación y el T+x hábiles que le indiques.

/api/rf/calc/tasa/api/rf/calc/precio
Precio → tasa (T+1, convención por defecto actual/365)
curl -s -b cookies.txt -X POST https://tu-tablero/api/rf/calc/tasa \
  -H "Content-Type: application/json" \
  -d '{"ticker": "AL30D", "precio": 55.85, "t_mas": 1}'
Tasa → precio (el inverso exacto del anterior)
curl -s -b cookies.txt -X POST https://tu-tablero/api/rf/calc/precio \
  -H "Content-Type: application/json" \
  -d '{"ticker": "AL30D", "tasa": 0.0868, "modo": "tir", "t_mas": 1}'
Con fecha de concertación y otra convención de TNA
curl -s -b cookies.txt -X POST https://tu-tablero/api/rf/calc/tasa \
  -H "Content-Type: application/json" \
  -d '{"ticker": "TX28", "precio": 1739.5,
        "fecha_concertacion": "2026-09-22", "t_mas": 2,
        "conv": "30/360"}'
El ticker en pesos: el TC se aplica solo (AL30 cotiza ~85.440 ARS)
curl -s -b cookies.txt -X POST https://tu-tablero/api/rf/calc/tasa \
  -H "Content-Type: application/json" \
  -d '{"ticker": "AL30", "precio": 85440, "t_mas": 1}'

Parámetros. ticker es lo único obligatorio además del precio o la tasa. fecha_concertacion por defecto es hoy; t_mas son días hábiles AR (saltea feriados) y por defecto sigue la rueda de 24 hs del tablero; modo acepta tir, tea, tem o tna; conv acepta actual/365 (por defecto), act/360, 30/360 o cualquier días/base.

Qué gobierna la convención. conv cambia cómo se expresa la TNA; no cambia la TIR ni el precio. El descuento es siempre días calendario sobre 365 — el campo base_descuento de la respuesta lo dice explícito. Pedir act/360 esperando que cambie la TIR es el malentendido más fácil de cometer acá.

Precios en pesos de bonos en dólares. Si mandás un AL30 a 120.710 (pesos), el tipo de cambio se aplica solo: la respuesta trae precio (el que mandaste), precio_descuento (el que se usó contra los flujos) y fx_kind/fx_val para que veas cuál se aplicó. Con fx forzás mep, ccl, a3500 o none.

Es el mismo motor que el tablero. Para el mismo papel, el mismo precio y la misma rueda, esta TIR es idéntica a la que ves en pantalla — verificado sobre 971 especies con diferencia exactamente cero.

%Precios y tasas en vivo

El stock de tasas: precio, TIR por punta, TEM, TNA, duration y convexidad de cada bono, con el tipo de cambio ya aplicado.

/api/rf/tasas/api/rf/tasas/book/api/rf/tasas/intraday
Tasas de varios bonos
curl -s -b cookies.txt \
  "https://tu-tablero/api/rf/tasas?tickers=AL30,GD30,TX28&plazo=24hs"
Book depth-5 con la TIR de cada punta (bid y offer)
curl -s -b cookies.txt \
  "https://tu-tablero/api/rf/tasas/book?tickers=AL30&plazo=24hs"
Intradiario de un bono
curl -s -b cookies.txt \
  "https://tu-tablero/api/rf/tasas/intraday?ticker=AL30&plazo=24hs&limit=500"

≡Flujos de fondos

El calendario de pagos de cada bono: fecha teórica y efectiva, interés, amortización, total y valor residual. Es la fuente que usa la valuación.

/api/internal/flujos/api/internal/flujos/tickers
Flujos de un bono
curl -s -b cookies.txt \
  "https://tu-tablero/api/internal/flujos?ticker=AL30"
Qué tickers tienen flujos cargados
curl -s -b cookies.txt https://tu-tablero/api/internal/flujos/tickers

A Google Sheets. Con Apps Script lo traés directo a la hoja:

function traerFlujos(ticker) {
  var r = UrlFetchApp.fetch(
    "https://tu-tablero/api/internal/flujos?ticker=" + ticker,
    { headers: { "Authorization": "Bearer ck_TU_CLAVE" } }
  );
  var filas = JSON.parse(r.getContentText());
  var out = [["fecha", "interés", "amortización", "total"]];
  filas.forEach(function (f) {
    out.push([f.fecha_efectiva, f.interes, f.amortizacion, f.total]);
  });
  SpreadsheetApp.getActiveSheet()
    .getRange(1, 1, out.length, 4).setValues(out);
}

◫Condiciones de emisión

El pliego del instrumento: vencimiento, tasa, periodicidad, valor residual, moneda, legislación y jurisdicción de pago.

/api/internal/condiciones/api/internal/condiciones/{ticker}
Un instrumento
curl -s -b cookies.txt https://tu-tablero/api/internal/condiciones/AL30
Buscar por ticker, paginado
curl -s -b cookies.txt \
  "https://tu-tablero/api/internal/condiciones?ticker=TX&limit=50"

$Dólar y tipo de cambio

MEP, CCL, canje, A3500 y la curva de futuros de ROFEX, con su interés abierto.

/api/dolar/contratos/api/dolar/oi-matrix/api/market/fx/a3500
Contratos de futuros vigentes
curl -s -b cookies.txt https://tu-tablero/api/dolar/contratos
Matriz de interés abierto
curl -s -b cookies.txt https://tu-tablero/api/dolar/oi-matrix

⇉Curvas y forwards

La tasa forward implícita entre dos bonos, la matriz completa de un grupo y las pendientes. Acepta bid, offer o mid.

/api/analysis/forward/api/analysis/forward-curves/api/analysis/forward-slopes
Forward entre dos activos
curl -s -b cookies.txt \
  -X POST https://tu-tablero/api/analysis/forward \
  -H "Content-Type: application/json" \
  -d '{"tickers": ["S30S6", "S29E7"], "tipo_serie": "clean"}'
Matriz forward de un grupo
curl -s -b cookies.txt \
  -X POST https://tu-tablero/api/analysis/forward-curves \
  -H "Content-Type: application/json" \
  -d '{"tickers": ["S30S6","S16O6","S30O6"]}'

Son POST porque el cuerpo lleva la lista de tickers y los parámetros. No modifican nada: calculan y devuelven.

◎Break-even de flotantes

Qué sendero de TAMAR o BADLAR necesita el mercado para que un flotante cupón cero iguale a una alternativa a tasa fija.

/api/rf/tamar-be/api/rf/tamar-be/tabla/api/rf/tamar-be/universo
Todos los flotantes de una
curl -s -b cookies.txt \
  "https://tu-tablero/api/rf/tamar-be/tabla?modo=curva&tol=0.041&plazo=24hs"
Uno solo, contra un objetivo propio y con tu precio
curl -s -b cookies.txt \
  "https://tu-tablero/api/rf/tamar-be?ticker=TTD26&objetivo=0.3336&precio=169.3"

∿Series del BCRA

Las series oficiales, ya normalizadas. Las más usadas: 44 es TAMAR y 7 es BADLAR.

/api/bcra/series/{variable_id}/api/bcra/catalog/api/bcra/fixings
Serie TAMAR desde una fecha
curl -s -b cookies.txt \
  "https://tu-tablero/api/bcra/series/44?desde=2026-01-01"
Qué series hay
curl -s -b cookies.txt https://tu-tablero/api/bcra/catalog

#Cómo leer los números

Esto explica la mayoría de las confusiones.

campounidadejemplo
tir_*, teadecimal0.3152 es 31,52 %
temdecimalAño de 12 meses: (1+TEA)1/12 − 1
tnadecimalSobre el período del cupón, no sobre el plazo al vencimiento
valor_residualfracción0.64 es 64 %
tasa_interesdecimal0.0075 es 0,75 % anual
Series del BCRAporcentaje23.5625 es 23,5625 % TNA
Preciospor 100 VNEn la moneda de la especie: el ticker en pesos en ARS, la especie D en USD

Fechas. Van en ISO (2026-09-17). Cada pago tiene fecha teórica y efectiva: la efectiva es la teórica corrida al día hábil siguiente. El devengamiento corre sobre la teórica; el pago ocurre en la efectiva.

!Cuando algo falla

códigodetallequé pasóqué hacer
401unauthorizedNo hay sesión válidaVolvé a iniciar sesión
403forbiddenTu rol no alcanza para ese endpointMirá la etiqueta de acceso en la referencia
403invalid_identityEl token de sesión no verificaIniciá sesión de nuevo
403session_supersededTu sesión fue invalidadaIniciá sesión de nuevo
422—Falta un parámetro o tiene el tipo equivocadoEl cuerpo del error dice cuál
503identity_unavailableProblema de infraestructuraNo es tuyo; reintentá en un rato
404sin_flujosEse ticker no tiene calendario de pagos cargadoMirá /api/internal/flujos/tickers
409sin_tipo_de_cambioEs un bono en moneda extranjera y no hay TCPasá fx=mep|ccl|a3500, o mandá el precio ya en USD
422tir_no_convergeCon ese precio no hay TIR resolubleRevisá el precio
422tir_fuera_de_rangoLa TIR da más de 10.000 % anualCasi siempre es un precio mal tipeado
422precio_no_calculableCon esa tasa el precio no da un número usableRevisá el modo y la tasa
422modo_invalidoEl modo no es tir/tea/tem/tnaCorregí el modo
403invalid_api_keyLa clave no existe, fue revocada, o está mal copiadaEmití una nueva desde Claves de API
403api_access_deniedTu cuenta ya no tiene acceso a la APIPedí el rol plus a un administrador
403api_key_read_onlyLa clave es de sólo lectura y el método escribeEmití una clave sin sólo lectura, si tu rol lo permite
403api_key_too_many_ipsLa clave ya se usó desde demasiadas IPs distintasEmití una clave por cada lugar donde corra tu proceso
429rate_limitedSuperaste las llamadas por minuto de tu claveEl header Retry-After dice cuántos segundos esperar

Límites. El inicio de sesión acepta 20 intentos por IP y 5 por email cada 15 minutos.

☰Referencia completa

Los 195 endpoints. Buscá por ruta o por lo que hace.

rutaaccesoqué hace
POST/api/internal/admin/reseedadminOptionally truncate the listed tables, then re-seed empty tables from fixtures.
GET/api/md/alertsviewer—
POST/api/md/alertsviewer—
DELETE/api/md/alerts/{aid}viewer—
GET/api/internal/api-keysviewerLas claves del usuario. Nunca devuelve el secreto, sólo el prefijo.
POST/api/internal/api-keysviewerEmite una clave. El campo `clave` viene UNA sola vez: guardala ahora.
DELETE/api/internal/api-keys/{kid}viewerRevoca una clave. No se borra la fila: queda el rastro de que existió.
POST/api/analysis/cer-scenariosviewer—
POST/api/analysis/cer-scenarios.xlsxviewer—
POST/api/analysis/curveviewer—
POST/api/analysis/curve-customviewer—
POST/api/analysis/curve-slopeviewer—
POST/api/analysis/expectationsviewer—
POST/api/analysis/forwardviewer—
POST/api/analysis/forward-curvesviewer—
POST/api/analysis/forward-customviewer—
POST/api/analysis/forward-slopesviewer—
POST/api/analysis/fwd-matrixviewer—
POST/api/analysis/fwd-pairviewer—
POST/api/analysis/historicviewer—
POST/api/analysis/implied-fxviewer—
POST/api/analysis/inflationviewer—
POST/api/analysis/inflation.xlsxviewer—
POST/api/analysis/ratioviewer—
POST/api/analysis/relvalviewer—
GET/api/analysis/rem-datasetviewer—
POST/api/analysis/rem-refreshadminDispara el barrido completo del REM en background (1 req/min).
POST/api/analysis/seriesviewer—
POST/api/analysis/syntheticsviewer—
POST/api/analysis/var-summaryviewer—
POST/api/analysis/yield-curvesviewer—
GET/api/bcra/catalogviewer—
GET/api/bcra/fixingsviewerEstado de las series con las que se FIJAN los ajustes (TAMAR, BADLAR, CER,
POST/api/bcra/fixings/refreshadminFuerza AHORA el refresco de las series núcleo contra la API del BCRA y
GET/api/bcra/public/series/{variable_id}viewer—
GET/api/bcra/series/{variable_id}viewer—
GET/api/catalogviewer—
PUT/api/catalogadmin—
PUT/api/catalog/item/{ticker}admin—
POST/api/catalog/reclassifyadmin—
GET/api/dolar/contratosviewer—
POST/api/dolar/futuros-curvaviewer—
POST/api/dolar/futuros-histviewer—
POST/api/dolar/oficialviewer—
POST/api/dolar/oficial.xlsxviewer—
GET/api/dolar/oi-matrixviewer—
POST/api/dolar/refreshadmin—
GET/api/embiviewer—
GET/api/healthsin sesión—
GET/api/internal/mae/historyviewerIntradiario MAE (datosgrafico) de HOY con el MISMO shape que /api/md/history,
GET/api/internal/mae/vwapviewerIntradiario MAE (datosgrafico) del título `cod` para HOY: precio + VWAP acumulado.
GET/api/mae/forexviewer—
GET/api/market/fx/a3500viewerA3500 mayorista para valuación. Prioriza el SPOT MAE en vivo (UST$TM000,
GET/api/md/bookviewer—
GET/api/md/booksviewerOrder books (depth-N) de varios símbolos en UN solo hmget. `symbols` = lista
GET/api/md/caucionesviewer—
GET/api/md/cauciones.xlsxviewer—
GET/api/md/day-rangeviewerRango del día (min/max/apertura de `last`) de VARIOS símbolos en UNA
GET/api/md/dolarviewer—
GET/api/md/futurosviewer—
POST/api/md/fxviewer—
GET/api/md/historyviewer—
GET/api/md/instrumentsviewer—
GET/api/md/moversviewer—
GET/api/md/quotesviewer—
GET/api/md/quotes-scopedviewerQuotes en vivo SOLO de los símbolos pedidos (hmget), con el mismo shape de
GET/api/md/statusviewer—
GET/api/md/watchviewer—
GET/api/presetsviewer—
POST/api/presetsviewer—
DELETE/api/presets/{pid}viewer—
POST/api/refreshadmin—
GET/api/statusviewer—
GET/api/tesoro/licitacionesviewer—
GET/api/tesoro/rolloverviewer—
POST/api/tesoro/seedadmin—
GET/api/tesoro/stockviewer—
POST/api/tesoro/uploadadminCarga un Excel oficial de Finanzas. kind: 'licitaciones' (resultados) por ahora.
GET/api/tesoro/vencimientosviewer—
GET/api/tickersviewer—
POST/api/uploadadmin—
GET/api/internal/asset-groupsviewerLista los grupos con su conteo de miembros (evaluado en vivo).
POST/api/internal/asset-groupsadmin—
GET/api/internal/asset-groups/fieldsviewerCampos filtrables, operadores y los VALORES distintos por campo (para que el
POST/api/internal/asset-groups/previewviewerEvalúa criterios SIN guardar. Devuelve los candidatos (por criterios) y
GET/api/internal/asset-groups/resolveviewerA qué grupo pertenece un ticker.
DELETE/api/internal/asset-groups/{slug}admin—
PUT/api/internal/asset-groups/{slug}admin—
GET/api/internal/asset-groups/{slug}/membersviewerTickers que cumplen los criterios del grupo (membresía dinámica).
GET/api/internal/auth/admin/usersadmin—
POST/api/internal/auth/admin/users/{uid}/deactivateadmin—
POST/api/internal/auth/admin/users/{uid}/reactivateadmin—
POST/api/internal/auth/admin/users/{uid}/roleadmin—
POST/api/internal/auth/admin/users/{uid}/temp-passwordadmin—
POST/api/internal/auth/admin/users/{uid}/verifyadminMarca la cuenta como verificada A MANO (aprobación del admin).
POST/api/internal/auth/loginsin sesión—
POST/api/internal/auth/logoutsin sesiónNo-op server-side: no hay lista de revocación por-sesión (el token es
POST/api/internal/auth/registersin sesión—
POST/api/internal/auth/resend-verificationsin sesión—
POST/api/internal/auth/verifysin sesión—
GET/api/mesin sesiónReporta la identidad EFECTIVA que `_auth_gate` ya resolvió (pasos 3-4
GET/api/internal/bond-classifierviewerLista de familias desde el JSON persistido.
POST/api/internal/bond-classifier/overrideadminUpsert manual de una familia (source="manual"). Persiste y devuelve la familia.
POST/api/internal/bond-classifier/syncadminRe-deriva desde Redis, mergea con overrides manuales, persiste.
GET/api/internal/bonds/cerviewer—
POST/api/internal/bonds/ceradmin—
POST/api/internal/bonds/cer/bulk-applyadmin—
POST/api/internal/bonds/cer/seedadmin—
DELETE/api/internal/bonds/cer/{ticker}admin—
GET/api/internal/bonds/cer/{ticker}viewer—
PATCH/api/internal/bonds/cer/{ticker}admin—
PUT/api/internal/bonds/cer/{ticker}admin—
GET/api/internal/bonds/dolar-linkedviewer—
POST/api/internal/bonds/dolar-linkedadmin—
POST/api/internal/bonds/dolar-linked/bulk-applyadmin—
POST/api/internal/bonds/dolar-linked/seedadmin—
DELETE/api/internal/bonds/dolar-linked/{ticker}admin—
GET/api/internal/bonds/dolar-linked/{ticker}viewer—
PATCH/api/internal/bonds/dolar-linked/{ticker}admin—
PUT/api/internal/bonds/dolar-linked/{ticker}admin—
GET/api/internal/bonds/hard-dollarviewer—
POST/api/internal/bonds/hard-dollaradmin—
POST/api/internal/bonds/hard-dollar/bulk-applyadmin—
POST/api/internal/bonds/hard-dollar/seedadmin—
DELETE/api/internal/bonds/hard-dollar/{ticker}admin—
GET/api/internal/bonds/hard-dollar/{ticker}viewer—
PATCH/api/internal/bonds/hard-dollar/{ticker}admin—
PUT/api/internal/bonds/hard-dollar/{ticker}admin—
POST/api/internal/bonds/hd-uploadadminBulk upsert bonds_hd from an Excel file in emisiones_hd format.
GET/api/internal/bonds/lecap-boncapviewerList all LECAP/BONCAP bonds, optionally filtered by ticker.
POST/api/internal/bonds/lecap-boncapadminCreate a new LECAP/BONCAP bond.
POST/api/internal/bonds/lecap-boncap/bulk-applyadmin—
POST/api/internal/bonds/lecap-boncap/seedadminSeed the database with known LECAP/BONCAP bonds. Idempotent (upserts).
GET/api/internal/bonds/lecap-boncap/vt-mapviewerReturns a simple { ticker: valor_final } map for the frontend.
DELETE/api/internal/bonds/lecap-boncap/{ticker}adminDelete a LECAP/BONCAP bond.
GET/api/internal/bonds/lecap-boncap/{ticker}viewerGet a single LECAP/BONCAP by ticker.
PATCH/api/internal/bonds/lecap-boncap/{ticker}adminPartially update a LECAP/BONCAP bond.
PUT/api/internal/bonds/lecap-boncap/{ticker}adminCreate or update a LECAP/BONCAP bond.
GET/api/internal/bonds/on-corpviewer—
POST/api/internal/bonds/on-corpadmin—
POST/api/internal/bonds/on-corp/bulk-applyadmin—
POST/api/internal/bonds/on-corp/seedadmin—
DELETE/api/internal/bonds/on-corp/{ticker}admin—
GET/api/internal/bonds/on-corp/{ticker}viewer—
PATCH/api/internal/bonds/on-corp/{ticker}admin—
GET/api/internal/bonds/tamarviewer—
POST/api/internal/bonds/tamaradmin—
POST/api/internal/bonds/tamar/bulk-applyadmin—
POST/api/internal/bonds/tamar/seedadmin—
DELETE/api/internal/bonds/tamar/{ticker}admin—
GET/api/internal/bonds/tamar/{ticker}viewer—
PATCH/api/internal/bonds/tamar/{ticker}admin—
PUT/api/internal/bonds/tamar/{ticker}admin—
GET/api/internal/cer-flows/bondsviewerReturn CER bonds as BondRef-compatible objects derived from cer_flujos.
POST/api/internal/cer-flows/bulk-applyadminApply a draft diff: upsert rows and delete keys in a single transaction.
GET/api/internal/cer-flows/calendarviewerReturn upcoming CER coupon payments grouped by payment date.
GET/api/internal/cer-flows/flowsviewerPaginated list of CER coupon flows, optionally filtered by ticker and date range.
POST/api/internal/cer-flows/importadminUpload an Excel file (calendario-de-pagos sheet) and bulk-upsert its rows
POST/api/internal/cer-flows/seed-from-fileadminSeed cer_flujos from a local file path accessible to the container.
GET/api/internal/cer-flows/tickersviewerReturn the sorted list of unique tickers stored in cer_flujos.
GET/api/internal/condicionesviewerList all condiciones, optionally filtered by ticker.
POST/api/internal/condiciones/adminCreate a single condicion de emision (ticker required). 409 if it exists.
POST/api/internal/condiciones/bulk-applyadminApply a draft diff: upsert condiciones and delete tickers in one transaction.
POST/api/internal/condiciones/seed-from-fileadminSeed condiciones from a local file path (admin/dev only).
POST/api/internal/condiciones/sync-alladminSync all tickers from condiciones_emision to bond tables.
POST/api/internal/condiciones/uploadadminIngesta ACUMULATIVA de condiciones desde Excel. **Nunca borra.**
DELETE/api/internal/condiciones/{ticker}adminDelete a single condicion de emision.
GET/api/internal/condiciones/{ticker}viewerGet a single condicion de emision by ticker.
PATCH/api/internal/condiciones/{ticker}adminPartially update a condicion de emision (only provided fields). 404 if missing.
POST/api/internal/condiciones/{ticker}/sync-to-bondsadminSync one ticker from condiciones_emision to bond tables.
GET/api/internal/dlk-flows/viewer—
POST/api/internal/dlk-flows/bulk-applyadminApply a draft diff: upsert rows and delete keys in a single transaction.
POST/api/internal/dlk-flows/uploadadmin—
GET/api/internal/flujosviewerLista plana de flujos (ordenada por ticker, fecha, cupón).
POST/api/internal/flujos/bulk-applyadminAplica un diff de borrador: upsert de filas y baja de claves en una sola
POST/api/internal/flujos/floater-runadminDispara la revaluación de floaters cupón cero AHORA y devuelve el resumen.
GET/api/internal/flujos/floater-statusviewerResumen de la última valuación de floaters cupón cero (TEA/TEM + flujo
GET/api/internal/flujos/tickersviewer—
POST/api/internal/flujos/uploadadminSube un Excel (hoja 'calendario-de-pagos') y lo ACUMULA sobre flujos_fondos.
GET/api/internal/inflation/sourcesviewer{ ipc_published:[{month,value}], rem:{ name, percentiles:[...], path:[{month, <pct>...}] } }
GET/api/internal/matriz/catalogviewerBuscador del universo, por ticker, nombre o categoría.
GET/api/internal/matriz/healthviewerEstado de la sesión, sin tirar un login nuevo si ya hay cookie.
GET/api/internal/matriz/vwapviewerLas últimas `days` ruedas del instrumento, con su VWAP corrido.
POST/api/mcpviewerÚnico endpoint del servidor MCP. JSON-RPC 2.0 sobre POST.
GET/api/rf/paramsviewerParámetros de valuación guardados (los que el backend usa: tamar/badlar
PUT/api/rf/paramsadminGuarda los parámetros globales y revalúa los floaters cupón cero con la
GET/api/rf/sintetico/serieviewerSerie de un sintético (bono × futuro): últimas `ruedas` de cierre + el
GET/api/rf/tamar-beviewerBreak-even de `ticker` contra un rendimiento `objetivo` (TEA DECIMAL).
GET/api/rf/tamar-be/tablaviewerBreak-even de TODOS los flotantes elegibles en UNA llamada.
GET/api/rf/tamar-be/universoviewerFlotantes sobre los que hoy se puede calcular: cupón cero Tamar/Badlar.
GET/api/rf/tasasviewerStock de tasas vivo desde Redis (rates:live + rates:meta). fast_json:
GET/api/rf/tasas/bookviewerBook depth-5 enriquecido con tasas por nivel (rates_stock.rates_for_book),
GET/api/rf/tasas/intradayviewerTIR (TEA) intradiaria de UN ticker: el intradiario de market data valuado tick a
POST/api/rf/calc/precioviewerTasa -> precio. Inverso exacto de /tasa: la salida de uno, metida en el
POST/api/rf/calc/tasaviewerPrecio -> TIR/TEA, TEM y TNA sobre el calendario real del activo.
Generado desde las rutas reales del backend — 2026-09-20.