# Zapier

Zap, que toma la fecha, hora, zona y coordenadas de nacimiento del trigger, solicita al API la carta y convierte el Ascendente en el nombre del signo. La solicitud de abajo se envió a producción exactamente en la forma en que la crea el paso; los pasos en Zapier están escritos según la referencia de Zapier a partir del 2026-09-17.

<Aside type="caution" title="Necesitas un plan de pago de Zapier">
API by Zapier, Webhooks by Zapier y Formatter son aplicaciones premium. La documentación de Zapier marca las tres como no disponibles en el plan Free, y el paso Lookup Table requiere el plan Professional o superior. En Free, usa [Make](/integrations/make/) o [n8n](/integrations/n8n/).
</Aside>

Sperhu crea una clave, como se describe en la sección [Clave para automatización](/integrations/#ключ-для-автоматизації), con el alcance `chart`.

## 1. Coloca la clave en la conexión
Los encabezados ingresados en el paso Webhooks by Zapier se guardan en el propio paso, y los puede ver cualquiera que tenga acceso a Zap. API by Zapier los almacena en la conexión.

1. En la página **Apps**, haz clic en **+ Add connection** y selecciona **API by Zapier**.
2. **Tipo de autenticación**: Static Headers (API key).
3. **Encabezados**: `X-Api-Key: ` y luego tu clave, en una sola línea.
4. **Filtro de dominio**: `api.astroway.info`, para que la conexión no pueda redirigirse a otro lugar.

## 2. Llama a la carta
Agrega una acción, selecciona **API by Zapier**, el evento **API Request** y la conexión.

- **Método**: `POST`.
- **URL**:

  ```
  https://api.astroway.info/v1/chart
  ```
- **Cuerpo**: JSON de abajo con los campos del trigger en lugar de los valores.
```json
{
  "date": "1990-05-15",
  "time": "14:30:00",
  "timezone": "Europe/Kyiv",
  "latitude": "50.45",
  "longitude": "30.52"
}
```

Reemplaza cada valor con el campo correspondiente del trigger y mantén las comillas alrededor de cada uno, incluidos los números. Zapier inserta el campo asignado como texto plano y no agrega comillas por sí mismo, y la API acepta `"50.45"` como un número. No agregues la clave en los encabezados del paso: la conexión la proporciona.

Prueba el paso. La respuesta correcta comienza con `"ok": true`, y `data.input.timezoneOffset` por ejemplo equivale a `4`: el desplazamiento que tenía Kiev ese día.

## 3. Convierte el Ascendente en signo
Dos pasos de Formatter.

**Formatter, evento Numbers, conversión Spreadsheet-Style Formula.** Fórmula:

```
FLOOR(ASCENDANT / 30)
```
donde en lugar de `ASCENDANT` se sustituye `data.houses.ascendant` del paso 2. Por ejemplo da `5`.

**Formatter, evento Utilities, conversión Lookup Table.** Lookup Key es el resultado de la fórmula. Tabla:

| Key | Value |
|---|---|
| 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 |

Por ejemplo el resultado es `Virgo`. Para obtener nombres en español, escríbelos en la columna Value.

El Sol y la Luna se calculan de la misma manera. Son el primer y segundo registro en `data.planets`, cada uno con su propia `longitude`: por ejemplo 54.34 (Tauro) y 296.39 (Capricornio).

## Si usas Webhooks by Zapier
Funciona, pero la clave queda en el paso, no en la conexión. Para la carta, selecciona el evento **Custom Request**: envía el campo Data exactamente como lo ingresaste, por lo que el JSON de arriba irá sin cambios. Establece **Method** `POST` y en **Headers** agrega tanto `X-Api-Key` con tu clave como `Content-Type` con el valor `application/json`.

## Cuando el paso falla
- **`400 INVALID_FIELD` con `timezone` en `details`**: la zona asignada está vacía, es una abreviatura como `EST` o no es un nombre de zona.
- **`400` con `date` o `time` en `details`**: el formato del trigger no es `YYYY-MM-DD` / `HH:MM:SS`; agrega antes de la llamada un paso Formatter para la fecha.
- **`403 ENDPOINT_NOT_IN_SCOPE`**: el alcance de la clave no incluye `chart`.
- **`429 KEY_BUDGET_EXHAUSTED`**: la clave ha agotado su propio presupuesto; aumenta su límite en el panel de control.

La API no realiza geocodificación. Si el trigger solo tiene el nombre de un lugar, las coordenadas deben provenir del propio trigger o de un servicio de geocodificación del que tengas una clave.
