B2B Revenue Autopilot Kit

Seguridad operativa · 20 de octubre de 2026 · 9 min de lectura

La clave de API es lo único de tu prospección que puede costarte dinero mientras duermes

Un flujo de n8n equivocado devuelve cero filas y lo notas. Una clave de API mal encerrada no avisa: cobra. Esto es lo que hacemos antes de importar cualquier flujo que use Google Places y DeepSeek —restricciones, topes, alertas y una prueba de tres peticiones— con las tarifas y los tramos gratuitos de Places leídos en la lista oficial el 20 de octubre de 2026.

1. Lo que de verdad se rompe: el orden de los hechos

En una instalación de prospección hay tres activos y solo uno tiene riesgo financiero:

Y hay un detalle que sorprende a casi todos: Google exige una tarjeta vinculada incluso para usar el tramo gratuito. Sin facturación activa la clave responde 403 con REQUEST_DENIED y el flujo se ve «roto» cuando en realidad está sin habilitar. Por eso el orden correcto es: facturación → API habilitada → clave restringida → tope de cuota → y solo entonces importar.

2. El tramo gratuito real de Places (verificado hoy, no de memoria)

La lista de precios global de Google Maps Platform, consultada el 20/10/2026, muestra el tope gratuito por SKU y por mes, no un cupo único de cuenta. En la API de Places (nueva) lo relevante para prospección es esto (USD por cada 1.000 solicitudes, primer tramo):

SKUGratis al mes1.000 solicitudes
Text Search Essentials (solo IDs)ilimitado0,00
Text Search Pro5.00032,00
Text Search Enterprise1.00035,00
Text Search Enterprise + Atmosphere1.00040,00
Place Details Pro5.00017,00
Place Details Enterprise1.00020,00

La consecuencia práctica: si tu máscara de campos pide teléfono o sitio web, la solicitud se factura a Enterprise —35,00 USD por 1.000— y tienes 1.000 solicitudes gratis al mes, que a 20 resultados por página son del orden de 20.000 negocios. Una corrida diaria de 60 prospectos consume 3 solicitudes: USD 0,105. Lo medimos: es exactamente lo que costó una corrida real de nuestro kit.

Anotamos también la alternativa honesta, porque es más barata: Text Search solo IDs (gratis, ilimitado) para obtener los placeId y después Place Details Enterprise (1.000 gratis, 20,00 USD por 1.000). Sale a USD 1,00 por 1.000 leads en vez de 1,75. No es el camino por defecto del kit porque son dos peticiones por página en vez de una: duplica la superficie de fallo, los tiempos y los puntos donde hay que reintentar. Cuando el volumen justifique ese ahorro, el cambio está documentado y es una edición de la máscara y del nodo, no una reescritura.

3. Encerrar la clave de Google en cinco pasos

  1. Proyecto y facturación. Crea un proyecto solo para esto y vincula la tarjeta. El tramo gratuito existe, pero la facturación tiene que estar activa.
  2. Habilita la API correcta. En la biblioteca busca Places API (New) —la que dice «(New)», no «Places API» a secas— y habilítala. Son APIs distintas con cuotas y respuestas distintas; es el error número uno de la puesta en marcha.
  3. Restringe la clave por API. En la clave, Restricciones de API: marca solo Places API (New). Si esa clave se filtra, no puede gastar en Maps, Rutas ni Gemini.
  4. Restricciones de aplicación: depende de dónde corra n8n. Si tu n8n es Cloud, no tiene IP fija: deja «Ninguna» y compensa con cuota y alertas. Si es self-hosted con IP fija, restringe por IP y cualquier uso desde otro sitio devuelve 403.
  5. Tope de cuota y alerta de presupuesto. En Cuotas, fija un máximo diario para Text Search mientras pruebas (200 solicitudes/día es un cinturón razonable). Aparte, en Facturación → Presupuestos y alertas, pon una alerta de 1 USD al 50 %/90 %/100 %. El tope corta el grifo; la alerta te avisa antes de que lo notes en la tarjeta.

4. DeepSeek: prepago, y por qué eso cambia el riesgo

DeepSeek funciona con saldo prepago: cargas, por ejemplo, 5 USD y no hay forma de que una clave filtrada te cobre más que ese saldo. Eso lo hace estructuralmente más seguro que una API con tarjeta al portador. Lo que sí conviene hacer:

5. La prueba de tres peticiones (60 segundos, antes de importar)

Tener una clave no es tenerla bien. Estas tres peticiones —a mano, con curl— separan los tres modos de fallo que después se confunden con «el flujo no funciona»:

# 1) ¿La clave vive y la API está habilitada? Esperado: 200
curl -s -o /dev/null -w "%{http_code}\n" \
  "https://places.googleapis.com/v1/places:searchText" \
  -H "Content-Type: application/json" \
  -H "X-Goog-Api-Key: $PLACES_KEY" \
  -H "X-Goog-FieldMask: places.id,places.displayName" \
  -d '{"textQuery":"dentistas en Providencia, Santiago","pageSize":1}'

# 2) ¿El campo caro está permitido con esta clave? Esperado: 200 (y factura Enterprise)
#    Cambia el FieldMask por: places.id,places.displayName,places.nationalPhoneNumber,places.websiteUri

# 3) ¿La restricción por API funciona? Esperado: 403 PERMISSION_DENIED
curl -s "https://maps.googleapis.com/maps/api/geocode/json?address=Santiago&key=$PLACES_KEY" | head -20

Si la 1 da 403 REQUEST_DENIED, falta facturación o la API no está habilitada. Si da 400 con un mensaje de máscara, el problema es el FieldMask, no la clave. Si la 3 devuelve 200, tu clave no está restringida por API: vuelve al paso 3.

En el kit esta comprobación no se hace a mano: scripts/selftest.sh llama a los dos servicios con tus claves del .env y escribe OK o FALLA con el código HTTP exacto antes de que importes nada. Arreglar las claves ahí ahorra el 90 % de los diagnósticos posteriores.

6. Lo que no se hace nunca

El kit incluye el auto-diagnóstico que valida las dos claves, la receta de topes de gasto del primer mes y los códigos HTTP de Places explicados uno por uno. Ver qué incluye →