# Construtores de sites

Construtor de sites mostra a sua página no navegador do visitante, portanto a regra é oposta às instruções para automações: tu inseres o widget, e não a chave. Ambos os snippets abaixo foram carregados a partir de uma página em um domínio externo no Chrome 2026-09-17, e ambos foram renderizados.

## Inserir um dos snippets

Iframe comum, quando o tamanho é conhecido:

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

Carregador, quando não quiser ajustar o tamanho: ele substitui-se por um iframe e ajusta a altura ao conteúdo através de `postMessage`.

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

Quinze widgets, todos os parâmetros e um botão de cópia para cada um na página [Widgets](/products/embed-widgets/). Qualquer atributo `data-*` torna-se um parâmetro de pedido.

## Onde inserir o código

| Construtor | O que procurar |
|---|---|
| Wix | [elemento de inserção de código HTML](https://support.wix.com/en/article/wix-editor-embedding-a-site-or-a-widget) |
| Squarespace | [bloco de código](https://support.squarespace.com/hc/en-us/articles/205815908-Code-blocks) |
| Shopify | secção custom liquid ou editor de código do tema |
| Webflow | elemento embed |
| Tilda | bloco de código HTML, T123 |

Para Wix e Squarespace os links levam à sua documentação; os outros três são nomeados pela função, pois as suas páginas de documentação não são abertas automaticamente na verificação, e não vamos linkar para algo não verificado.

## Chave não necessária e não aceita

Os endpoints `/v1/embed/*` são públicos. A chave no atributo da página seria vista por cada visitante, portanto o carregador a ignora e escreve sobre isso no console.

Limites: **30 pedidos por hora por IP do visitante**, as respostas são cacheadas durante cinco minutos. Assim, uma página com muitos visitantes sente-se bem, enquanto um único visitante que a recarrega em loop não.

## O que a página não pode chamar

O navegador em um domínio diferente responde apenas a `/v1/public/*` e `/v1/embed/*`. Tudo o resto sob `/v1/*` é rejeitado no preflight: a partir de uma página em um domínio externo, `POST /v1/chart` retornou sem o cabeçalho `access-control-allow-origin`, e o Chrome o bloqueou, enquanto `POST /v1/public/chart` a partir da mesma página respondeu com `200`.

Portanto, se quiser que o visitante insira os próprios dados de nascimento e veja o mapa, utiliza [os endpoints sem chave](/free/) ou [o widget calculadora de mapa natal](/products/embed-widgets/#окремий-віджет-калькулятор-натальної карти), que calcula diretamente no navegador. Tudo o que requer uma chave secreta vive no servidor: o seu próprio ou numa das ferramentas da secção [Integrações sem código](/integrations/).

<Aside type="note" title="Коли стане в пригоді публічний ключ">
A chave `pk_` deve ser criada se a página própria aceder a `/v1/public/*` e o limite partilhado por visitante for insuficiente: num plano pago, a chave tem o seu próprio limite, e a lista de origens torna-a inútil em qualquer outro domínio. Para os widgets acima, ela não é necessária de forma alguma.
</Aside>
