# Constructores de sitios

Un constructor de sitios web muestra tu página en el navegador del visitante, así que la regla es opuesta a las instrucciones para automatizaciones: insertas un widget, no una clave. Ambos snippets a continuación se cargaron desde una página en un dominio de terceros en Chrome el 17-09-2026, y ambos se renderizaron.

## Inserta uno de los snippets

Un iframe normal, cuando el tamaño es conocido:

```html
<iframe src="https://api.astroway.info/v1/embed/moon-phase?theme=light&lang=uk"
        width="320" height="360" style="border:0"></iframe>
```

Un cargador (loader), cuando no quieres ajustar el tamaño: se reemplaza a sí mismo con un iframe y ajusta la altura al contenido a través de `postMessage`.

```html
<script src="https://cdn.astroway.info/embed.js"
        data-widget="moon-phase" data-lang="uk" data-theme="light"></script>
```

Quince widgets, todos los parámetros y un botón de copiar para cada uno en la página [Widgets](/products/embed-widgets/). Cualquier atributo `data-*` se convierte en un parámetro de consulta.

## Dónde insertar el código

| Constructor | Qué buscar |
|---|---|
| Wix | [elemento de inserción de código HTML](https://support.wix.com/en/article/wix-editor-embedding-a-site-or-a-widget) |
| Squarespace | [bloque de código](https://support.squarespace.com/hc/en-us/articles/205815908-Code-blocks) |
| Shopify | sección custom liquid o editor de código del tema |
| Webflow | elemento embed |
| Tilda | bloque de código HTML, T123 |

Para Wix y Squarespace, los enlaces llevan a sus ayudas; los otros tres se nombran por el nombre de la función, ya que sus páginas de ayuda no se abren con la verificación automática, y no enlazaremos a contenido no verificado.

## La clave no es necesaria y no se acepta

Los endpoints `/v1/embed/*` son públicos. Cualquier visitante vería una clave en el atributo de la página, por lo que el cargador la ignora y lo escribe en la consola.

Límites: **30 solicitudes por hora desde la IP del visitante**, las respuestas se almacenan en caché durante cinco minutos. Así, una página con muchos visitantes funciona bien, pero un solo visitante que la recarga en bucle, no.

## Qué no puede llamar la página

Solo `/v1/public/*` y `/v1/embed/*` responden a un navegador en un dominio de terceros. Todo lo demás bajo `/v1/*` rechaza el preflight: desde una página en un dominio de terceros, `POST /v1/chart` regresó sin el encabezado `access-control-allow-origin`, y Chrome lo bloqueó, mientras que `POST /v1/public/chart` desde la misma página respondió `200`.

Así que, si quieres que el visitante introduzca sus propios datos de nacimiento y vea la carta, utiliza los [endpoints sin clave](/free/) o el [widget de calculadora de carta natal](/products/embed-widgets/#окремий-віджет-калькулятор-натальної-карти), que calcula directamente en el navegador. Todo lo que requiere una clave secreta reside en el servidor: el tuyo propio o en una de las herramientas de la sección [Integraciones sin código](/integrations/).

<Aside type="note" title="Cuando una clave pública es útil">
Deberías crear una clave `pk_` si la página misma accede a `/v1/public/*` y el límite compartido por visitante no es suficiente: en un plan de pago, la clave tiene su propio límite, y la lista de orígenes la hace inútil en cualquier otro dominio. Para los widgets anteriores, no es necesaria en absoluto.
</Aside>
