# Integrações sem código

Tudo nestas páginas foi executado contra a produção 2026-09-17. O workflow para n8n foi importado e executado no n8n real; os passos para Zapier e Make foram escritos com base na documentação própria destas ferramentas, e os pedidos que eles constroem foram enviados exatamente como estão.

## De onde vem a requisição

Depende disto qual chave é necessária.

- **Zapier, Make e n8n** enviam-no a partir dos seus servidores. É necessária uma chave "Apenas servidor" com o scope de endpoints e orçamento, como descrito abaixo. Instruções: [Zapier](/integrations/zapier/), [Make](/integrations/make/), [n8n](/integrations/n8n/).
- **Bubble** também envia pedidos a partir dos seus servidores, e a chave fica no header, que lá permanece: [Bubble](/integrations/bubble/).
- **FlutterFlow** compila-se numa aplicação que o utilizador mantém, por isso a chamada deve ser privada: [FlutterFlow](/integrations/flutterflow/).
- **Wix, Squarespace, Shopify, Webflow e Tilda** mostram a página no navegador do visitante. Insira o widget, não a chave: [construtores de sites](/integrations/site-builders/).
- **WordPress** faz o pedido a partir do seu próprio servidor. A chave é gerida pelo [plugin AstroWay](https://wordpress.org/plugins/astroway/).

<Aside type="caution">
A chave pública `pk_` não funciona com Zapier, Make ou n8n. Ela rejeita o pedido sem origin da sua lista, e estas ferramentas não enviam origin. A partir da página do site, ela só obtém `/v1/public/*` e `/v1/embed/*`.
</Aside>

## Chave para automação

Quem pode editar Zap, script ou workflow, vê a chave dentro. Por isso, dê a cada automação a sua própria chave e limite-a ao que ela faz.

1. No dashboard, abra [Chaves API](https://api.astroway.info/dashboard/keys) e clique em **Nova chave**. Nomeie-a pela automação, por exemplo `zapier-intake-form`.
2. No campo **Onde será usada esta chave?**, mantenha **Apenas servidor**.
3. Copie a chave. O diálogo mostra-a completamente uma vez; mais tarde está disponível através de **Mostrar** no menu da chave.
4. No menu da chave, abra **Scope de endpoints** e liste os caminhos que a automação chama, um por linha: `chart` para o mapa natal, `public/horoscope/*` para horóscopos diários.
5. No mesmo menu, abra **Definir orçamento** e indique quantos créditos esta chave pode gastar por ciclo.

Um pedido fora do scope recebe `403 ENDPOINT_NOT_IN_SCOPE`. Uma chave que esgotou o orçamento recebe `429 KEY_BUDGET_EXHAUSTED`, mesmo quando ainda há créditos na conta, por isso uma automação que entrou em loop parará no número indicado. Ambas as limitações funcionam em qualquer plano e são descritas na secção [Autenticação](/authentication/).

## Envie o momento do nascimento, não o deslocamento

O formulário dá a data, a hora do relógio e o local. Envie-os assim:

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

- **`timezone`** é o nome do fuso, e o servidor encontra sozinho o deslocamento em relação a UTC que os relógios tinham naquela data, incluindo o horário de verão. Kiev 1990-05-15 estava em UTC+4, não +3: é este o erro que o deslocamento introduzido manualmente dá. Envie `auto` para obter o fuso a partir das coordenadas.
- **Sem `timezone` e sem deslocamento**, o mapa é calculado para UTC. A resposta continua `200`, por isso verifique se o campo está mapeado.
- **`timezone` vazio** é rejeitado com `400`, porque caso contrário o campo não preenchido do formulário seria lido como UTC.
- **`date`** no formato `YYYY-MM-DD`, **`time`** no formato `HH:MM:SS`. Se o formulário os guardar de outra forma, use a formatação de data na própria ferramenta.
- **Os números podem vir como texto.** `"latitude": "50.45"` é aceite, e é assim que a maioria dos campos de formulário os envia.
- **A API não geocodifica.** As coordenadas devem vir do formulário ou de um passo de geocodificação na ferramenta. O campo `city` é apenas para legenda.

As regras para conversão de horários e datas antes de 1970 estão descritas em [formatos de campo](/agent-setup/field-formats/#timezone-nome-do-fuso-em-vez-do-deslocamento).

## Como converter longitudes em signos

`POST /v1/chart` responde em graus ao longo do zodíaco, na envoltória `{ "ok": true, "data": { ... } }`. O signo é `floor(longitude / 30)`, contando a partir de zero:

0 Carneiro, 1 Touro, 2 Gémeos, 3 Caranguejo, 4 Leão, 5 Virgem, 6 Balança, 7 Escorpião, 8 Sagitário, 9 Capricórnio, 10 Aquário, 11 Peixes.

Onde estão os três valores mais populares:

- **Sol**: registo em `data.planets` com `"name": "Sun"`, o primeiro.
- **Lua**: registo em `data.planets` com `"name": "Moon"`, o segundo.
- **Ascendente**: `data.houses.ascendant`.
- **Deslocamento usado**: `data.input.timezoneOffset`.

Para o exemplo acima: Sol 54.34, portanto Touro; Lua 296.39, Capricórnio; Ascendente 159.26, Virgem; deslocamento 4.

## Quanto isto custa

- `POST /v1/chart` custa 20 créditos. A tabela completa na página [Custo dos endpoints](/credits/).
- O mesmo pedido, enviado novamente dentro de cinco minutos, é devolvido da cache e não é deduzido. Uma execução de teste que repete o mesmo corpo não gasta orçamento.
- `GET /v1/public/horoscope/daily` não consome créditos. Sem chave ou com chave no plano Free, conta para o limite de 30 pedidos por hora por endereço IP, e as plataformas de automação partilham os seus endereços entre clientes. Uma chave num plano pago tem o seu próprio limite.
