API pública · sin auth · sin rate limit declarado (MVP)

API pública desolarscan-mx

Integra estimaciones solares en tu sitio sin pagar Aurora Solar. FastAPI con OpenAPI auto-docs, sin claves de pago, sin tracking.

OpenAPI interactivo

Swagger UI con cada endpoint. Prueba en vivo.

Abrir /docs
Código fuente

Apache 2.0. Audita cada cálculo en el repo.

Ver en GitHub
Aviso de Privacidad

LFPDPPP. Política de retención y forwarding.

Leer política
POST

/estimate

Estima generación PV anual, paneles, inversión y opcionalmente NPV/IRR para un punto en México.

Ejemplo curl
curl -X POST https://api.solarscan.mdconsultoria-ti.org/estimate \
  -H "Content-Type: application/json" \
  -d '{"lat":19.62,"lon":-99.32,"capacity_kw":5.0,"tilt_deg":20,"azimuth_deg":180,"annual_consumption_kwh":7000,"tariff_category":"1"}'
Ejemplo JavaScript (fetch)
const res = await fetch("https://api.solarscan.mdconsultoria-ti.org/estimate", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    lat: 19.62,
    lon: -99.32,
    capacity_kw: 5.0,
    tilt_deg: 20,
    azimuth_deg: 180,
    annual_consumption_kwh: 7000,
    tariff_category: "1",
  }),
});
const data = await res.json();
console.log(data.pv.annual_kwh, data.payback);
Ejemplo Python (requests)
import requests

r = requests.post(
    "https://api.solarscan.mdconsultoria-ti.org/estimate",
    json={
        "lat": 19.62,
        "lon": -99.32,
        "capacity_kw": 5.0,
        "tilt_deg": 20,
        "azimuth_deg": 180,
        "annual_consumption_kwh": 7000,
        "tariff_category": "1",
        "financial": {},  # activa NPV/IRR con defaults
    },
    timeout=30,
)
r.raise_for_status()
data = r.json()
print(data["pv"]["annual_kwh"], data["financial"]["npv_mxn"])
POST

/detect

Detecta techos en un bounding box vía OSM. Devuelve polígonos, área total y área aprovechable (≥50 m²).

Ejemplo curl
curl -X POST https://api.solarscan.mdconsultoria-ti.org/detect \
  -H "Content-Type: application/json" \
  -d '{"bbox":{"south":19.61,"west":-99.33,"north":19.63,"east":-99.31}}'
Ejemplo JavaScript (fetch)
const res = await fetch("https://api.solarscan.mdconsultoria-ti.org/detect", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    bbox: { south: 19.61, west: -99.33, north: 19.63, east: -99.31 },
  }),
});
const { polygons, usable_area_m2 } = await res.json();
Ejemplo Python (requests)
import requests

r = requests.post(
    "https://api.solarscan.mdconsultoria-ti.org/detect",
    json={"bbox": {"south": 19.61, "west": -99.33, "north": 19.63, "east": -99.31}},
    timeout=30,
)
data = r.json()
print(f"{len(data['polygons'])} polígonos · {data['usable_area_m2']} m² aprovechables")
POST

/ingest/cfe-manual

Convierte captura manual de bimestres CFE en `CFEReceiptExtraction` listo para alimentar /estimate.

Ejemplo curl
curl -X POST https://api.solarscan.mdconsultoria-ti.org/ingest/cfe-manual \
  -H "Content-Type: application/json" \
  -d '{"tariff_category":"1","periods":[{"period_label":"MAR 2026","year":2026,"month_end":3,"kwh":250}]}'
Ejemplo JavaScript (fetch)
const res = await fetch("https://api.solarscan.mdconsultoria-ti.org/ingest/cfe-manual", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    tariff_category: "1",
    periods: [
      { period_label: "MAR 2026", year: 2026, month_end: 3, kwh: 250 },
    ],
  }),
});
const extraction = await res.json();
Ejemplo Python (requests)
import requests

r = requests.post(
    "https://api.solarscan.mdconsultoria-ti.org/ingest/cfe-manual",
    json={
        "tariff_category": "1",
        "periods": [
            {"period_label": "MAR 2026", "year": 2026, "month_end": 3, "kwh": 250},
        ],
    },
    timeout=10,
)
data = r.json()
print(data["estimated_annual_kwh"], data["estimated_annual_kwh_confidence"])

Términos y reglas de uso

  • Licencia: Apache 2.0 — uso libre comercial y no comercial, incluido fork.
  • Sin auth: el MVP no requiere API key. Si abusas del rate, llamamos a tu mamá.
  • Sin tracking: no usamos cookies, analytics ni telemetría en /estimate.
  • Disclaimer del motor PV: nuestro pipeline tiene sesgo +13 a +33% vs PVGIS server-side. Documentado en la home.
solarscan-mx — Estimador solar para techos en México