# Integraciones sin código

Todo en estas páginas se ejecutó contra producción el 2026-09-17. El workflow para n8n se importó y ejecutó en un n8n real; los pasos para Zapier y Make se escribieron según la documentación propia de estas herramientas, y las solicitudes que componen se enviaron exactamente de esa manera.

## Origen de la solicitud

Esto determina qué clave se necesita.

- **Zapier, Make y n8n** envían solicitudes desde sus servidores. Se necesita una clave "Solo servidor" con ámbito de endpoints y presupuesto, como se describe a continuación. Instrucciones: [Zapier](/integrations/zapier/), [Make](/integrations/make/), [n8n](/integrations/n8n/).
- **Bubble** también envía solicitudes desde sus servidores, y la clave está en el encabezado que permanece allí: [Bubble](/integrations/bubble/).
- **FlutterFlow** se compila en una aplicación que mantiene el usuario, por lo que la llamada debe ser privada: [FlutterFlow](/integrations/flutterflow/).
- **Wix, Squarespace, Shopify, Webflow y Tilda** muestran la página en el navegador del visitante. Inserta el widget, no la clave: [constructores de sitios web](/integrations/site-builders/).
- **WordPress** realiza la llamada desde tu propio servidor. La clave es gestionada por el [plugin AstroWay](https://wordpress.org/plugins/astroway/).

<Aside type="caution">
La clave pública `pk_` no funciona con Zapier, Make o n8n. Rechaza la solicitud sin origin de su lista, y estas herramientas no envían origin. Desde la página del sitio solo obtiene `/v1/public/*` y `/v1/embed/*`.
</Aside>

## Clave para automatización

Cualquiera que pueda editar un Zap, script o workflow, ve la clave dentro. Por eso, dale a cada automatización su propia clave y límala a lo que hace.

1. En el panel, abre [claves de API](https://api.astroway.info/dashboard/keys) y haz clic en **Nueva clave**. Nómbrala según la automatización, por ejemplo `zapier-intake-form`.
2. En el campo **¿Dónde se usará esta clave?**, deja **Solo servidor**.
3. Copia la clave. El diálogo la muestra completamente una sola vez; más tarde está disponible a través de **Mostrar** en el menú de la clave.
4. En el menú de la clave, abre **Ámbito de endpoints** y enumera las rutas que llama la automatización, una por línea: `chart` para el natal, `public/horoscope/*` para los horóscopos diarios.
5. En el mismo menú, abre **Establecer presupuesto** y especifica cuántos créditos puede gastar esta clave por ciclo.

Una llamada fuera de la lista recibe `403 ENDPOINT_NOT_IN_SCOPE`. Una clave que agotó el presupuesto recibe `429 KEY_BUDGET_EXHAUSTED`, incluso cuando la cuenta aún tiene créditos, por lo que una automatización que se bucle se detendrá en el número especificado. Ambas limitaciones funcionan en cualquier tarifa y se describen en la sección [Autenticación](/authentication/).

## Envíe el momento de nacimiento, no el desplazamiento

El formulario proporciona fecha, hora del reloj y lugar. Envíalos así:

```json
{
  "date": "1990-05-15",
  "time": "14:30:00",
  "timezone": "Europe/Kyiv",
  "latitude": 50.45,
  "longitude": 30.52
}
```

- **`timezone`** es el nombre de la zona, y el servidor encuentra el desplazamiento de UTC que tenían los relojes esa fecha, incluyendo el horario de verano. Kiev 1990-05-15 estaba en UTC+4, no +3: ese es el error exacto que da el desplazamiento ingresado manualmente. Envía `auto` para tomar la zona de las coordenadas.
- **Sin `timezone` y sin desplazamiento**, el gráfico se calcula para UTC. La respuesta sigue siendo `200`, así que verifica que el campo esté mapeado.
- **`timezone` vacío** se rechaza con `400`, porque de lo contrario el campo del formulario no completado se leería como UTC.
- **`date`** en formato `YYYY-MM-DD`, **`time`** en formato `HH:MM:SS`. Si el formulario los guarda de otra manera, usa el formato de fecha en la propia herramienta.
- **Los números pueden venir como texto.** `"latitude": "50.45"` se acepta, y así lo envían la mayoría de los campos de formulario.
- **La API no geocodifica.** Las coordenadas deben venir del formulario o del paso de geocodificación en la herramienta. El campo `city` es solo para etiquetar.

Las reglas para convertir horas y fechas antes de 1970 se describen en [formatos de campo](/agent-setup/field-formats/#timezone-nombre-de-zona-en-lugar-de-desplazamiento).

## Cómo convertir longitudes a signos

`POST /v1/chart` responde en grados a lo largo del zodíaco, en el envoltorio `{ "ok": true, "data": { ... } }`. El signo es `floor(longitud / 30)`, contando desde cero:

0 Aries, 1 Tauro, 2 Géminis, 3 Cáncer, 4 Leo, 5 Virgo, 6 Libra, 7 Escorpio, 8 Sagitario, 9 Capricornio, 10 Acuario, 11 Piscis.

Dónde están los tres valores más populares:

- **Sol**: entrada en `data.planets` con `"name": "Sun"`, la primera.
- **Luna**: entrada en `data.planets` con `"name": "Moon"`, la segunda.
- **Ascendente**: `data.houses.ascendant`.
- **Desplazamiento usado**: `data.input.timezoneOffset`.

Para el ejemplo anterior: Sol 54.34, por lo tanto Tauro; Luna 296.39, Capricornio; Ascendente 159.26, Virgo; desplazamiento 4.

## Cuánto cuesta

- `POST /v1/chart` cuesta 20 créditos. La tabla completa en la página [Costo de endpoints](/credits/).
- La misma solicitud enviada nuevamente dentro de cinco minutos se devuelve desde la caché y no se deduce. Una ejecución de prueba que repite el mismo cuerpo no gasta presupuesto.
- `GET /v1/public/horoscope/daily` no consume créditos. Sin clave o con clave en la tarifa Free, se cuenta en el límite de 30 solicitudes por hora desde la dirección IP, y las plataformas de automatización comparten sus direcciones entre clientes. Una clave en tarifa paga tiene su propio límite.
