Ir al contenido
CDTEC IF · API para clientes

Ejemplos

Los mismos tres casos en curl, Python y JavaScript: probar la llave, listar sectores y bajar la humedad de suelo de una quincena con paginación.

En todos, reemplaza LLAVE por tu llave (mejor desde una variable de entorno) y los ids por los tuyos (los obtienes de /campos y /campos/{campoId}/sectores).

1. Probar la llave

curl -sS -H "X-Api-Key: $LLAVE" https://api.cdtecif.cl/v1/cuenta

2. Campos y sectores

CAMPO=$(curl -sS -H "X-Api-Key: $LLAVE" https://api.cdtecif.cl/v1/campos | jq -r '.data[0].id')
curl -sS -H "X-Api-Key: $LLAVE" "https://api.cdtecif.cl/v1/campos/$CAMPO/sectores" \
  | jq '.data[] | {id, nombre, superficieTeorica, telemetria}'

3. Humedad de suelo por día, con paginación

SECTOR=66f2c0a2b3d4e5f6a7b8c9d1
Q="sectorId=$SECTOR&tipoSensor=Soil%20Moisture&granularidad=dia"
Q="$Q&desde=2026-10-01T00:00:00-03:00&hasta=2026-10-16T00:00:00-03:00&limite=1000"
CURSOR=""
while :; do
  R=$(curl -sS -H "X-Api-Key: $LLAVE" "https://api.cdtecif.cl/v1/lecturas?$Q${CURSOR:+&cursor=$CURSOR}")
  echo "$R" | jq -r '.data[] | [.fecha, .profundidad, .promedio, .unidad] | @tsv'
  CURSOR=$(echo "$R" | jq -r '.paginacion.siguienteCursor // empty')
  [ -z "$CURSOR" ] && break
done

4. Clima de una estación y riegos de un campo

# Todas las variables de clima por hora, última semana
curl -sS -H "X-Api-Key: $LLAVE" \
  "https://api.cdtecif.cl/v1/estaciones/$ESTACION/clima?granularidad=hora&desde=2026-10-07T00:00:00-03:00&hasta=2026-10-14T00:00:00-03:00"

# Solo la lluvia, por día (usa `suma`)
curl -sS -H "X-Api-Key: $LLAVE" \
  "https://api.cdtecif.cl/v1/estaciones/$ESTACION/clima?tipoSensor=Rain&desde=2026-10-01T00:00:00-03:00&hasta=2026-11-01T00:00:00-03:00"

# Riegos de octubre de un sector
curl -sS -H "X-Api-Key: $LLAVE" \
  "https://api.cdtecif.cl/v1/campos/$CAMPO/riegos?sectorId=$SECTOR&desde=2026-10-01T00:00:00-03:00&hasta=2026-11-01T00:00:00-03:00"

5. Sincronización incremental (patrón recomendado)

Para mantener una copia local al día sin gastar cuota:

  1. Una vez al día: /campos, sus /sectores y /equipos (cambian poco).
  2. Cada hora, por sector: /lecturas por hora desde el último inicio guardado menos 3 horas (las últimas lecturas pueden completarse después) hasta ahora. Sobrescribe las filas por (inicio, tipoSensor, profundidad).
  3. Cada hora, por campo: /riegos desde ayer hasta mañana (así entran los programados y se actualizan los que terminaron).

Con 20 sectores y 3 tipos de sensor son 60 peticiones por hora, muy por debajo del tope.