# n8n

Workflow con cuatro nodos: a la entrada los datos de nacimiento, en el medio el gráfico natal con la API, a la salida los signos del Sol, la Luna y el Ascendente. Se ha importado a n8n 2.39.7 y ejecutado contra producción el 2026-09-17, y el resultado de abajo es exactamente lo que devolvió.

Primero, crea una clave como se describe en la sección [Clave para automatización](/integrations/#clave-para-automatización), con el ámbito `chart`.

## 1. Añade la clave como credential

La clave se almacena en el almacenamiento de credenciales de n8n, no en el nodo, por lo que no aparece en el workflow exportado.

1. Crea en n8n una nueva credential de tipo **Header Auth**.
2. **Name**: `X-Api-Key`.
3. **Value**: tu clave.
4. Guárdala con el nombre **AstroWay API key**. El workflow de abajo busca la credential exactamente con este nombre.

## 2. Importa el workflow

Descarga [n8n-natal-chart.json](/integrations/n8n-natal-chart.json), abre un workflow vacío e inserta el contenido del archivo en el lienzo o utiliza la importación desde archivo en el menú del workflow.

Dentro hay cuatro nodos:

- **Start**, nodo Manual Trigger: inicia el workflow durante la prueba.
- **Birth data**, nodo Edit Fields (Set): `date`, `time`, `timezone`, `latitude` y `longitude` de una persona.
- **AstroWay chart**, nodo HTTP Request: llama a `POST /v1/chart`.
- **Big three**, nodo Edit Fields (Set): convierte las longitudes en nombres de signos.

## 3. Ejecuta

Ejecuta el workflow. **Big three** devuelve:

```json
{
  "sun": "Taurus",
  "moon": "Capricorn",
  "rising": "Virgo",
  "offset_used": 4
}
```

`offset_used` es el desplazamiento desde UTC que el servidor encontró para `Europe/Kyiv` el 1990-05-15: 4, no 3, que es el que normalmente se escribe manualmente.

## Cómo está configurado el nodo HTTP Request

- **Method**: `POST`.
- **URL**:

  ```
  https://api.astroway.info/v1/chart
  ```

- **Authentication**: Generic Credential Type.
- **Generic Auth Type**: Header Auth, credential **AstroWay API key**.
- **Send Body**: habilitado.
- **Body Content Type**: JSON.
- **Specify Body**: Using JSON.

El cuerpo se define con una expresión, por lo que los valores de cualquier nodo anterior se pasan tal cual:

```js
{{ JSON.stringify({ date: $json.date, time: $json.time, timezone: $json.timezone, latitude: $json.latitude, longitude: $json.longitude }) }}
```

## Cómo se calculan los signos

Cada campo en **Big three** es una expresión. El signo es igual a la longitud dividida entre 30 y redondeada hacia abajo, como índice en la lista:

```js
{{ ['Aries','Taurus','Gemini','Cancer','Leo','Virgo','Libra','Scorpio','Sagittarius','Capricorn','Aquarius','Pisces'][Math.floor($json.data.houses.ascendant / 30)] }}
```

Para el Sol y la Luna, la longitud se toma de `$json.data.planets.find(p => p.name === 'Sun').longitude` y lo mismo con `'Moon'`.

## Usa tus propios datos

Reemplaza **Start** y **Birth data** con el trigger que realmente usas: un formulario, un webhook o una nueva fila de tabla, y mapea sus campos con los cinco nombres anteriores. Dos cosas que deberías verificar:

- **El `timezone` no puede estar vacío.** Un valor vacío es rechazado con `400`, así que mapea el campo o pon `auto` si las coordenadas son fiables.
- **Las coordenadas son obligatorias.** La API no geocodifica el nombre de la ciudad; si el formulario solo pregunta por el lugar, añade un paso de geocodificación antes de **AstroWay chart**.

<Aside type="note">
Una llamada fuera del ámbito de la clave detiene la ejecución con `403 ENDPOINT_NOT_IN_SCOPE`, y una clave sin presupuesto con `429 KEY_BUDGET_EXHAUSTED`. Ambos están diseñados para esto: aumenta el límite en el dashboard, no repitas la llamada.
</Aside>
