# Codevrije integraties

Alles op deze pagina's is uitgevoerd tegen productie 2026-09-17. Workflow voor n8n is geïmporteerd en gestart in echte n8n; stappen voor Zapier en Make zijn geschreven volgens de eigen documentatie van deze tools, en de verzoeken die ze samenstellen, worden precies op deze manier verzonden.

## Waar komt het verzoek vandaan

Dit bepaalt welke sleutel nodig is.

- **Zapier, Make en n8n** sturen deze vanaf hun servers. Een sleutel “Alleen server” met een endpoint‑gebied en budget is nodig, zoals hieronder beschreven. Instructies: [Zapier](/integrations/zapier/), [Make](/integrations/make/), [n8n](/integrations/n8n/).
- **Bubble** stuurt ook verzoeken vanaf zijn servers, en de sleutel zit in de header die daar blijft: [Bubble](/integrations/bubble/).
- **FlutterFlow** wordt gecompileerd naar een app die de gebruiker bezit, dus de oproep moet privé zijn: [FlutterFlow](/integrations/flutterflow/).
- **Wix, Squarespace, Shopify, Webflow en Tilda** tonen de pagina in de browser van de bezoeker. Voeg de widget in, niet de sleutel: [site‑builders](/integrations/site-builders/).
- **WordPress** maakt een verzoek vanaf je eigen server. De sleutel wordt beheerd door de [AstroWay‑plugin](https://wordpress.org/plugins/astroway/).

<Aside type="caution">
Publieke sleutel `pk_` werkt niet met Zapier, Make of n8n. Hij weigert een verzoek zonder origin uit zijn lijst, en deze tools sturen geen origin. Van de site haalt hij alleen `/v1/public/*` en `/v1/embed/*`.
</Aside>

## Sleutel voor automatisering

Iedereen die een Zap, script of workflow kan bewerken, ziet de sleutel intern. Geef daarom elke automatisering een eigen sleutel en beperk deze tot wat hij doet.

1. Open in het dashboard de [API‑sleutels](https://api.astroway.info/dashboard/keys) en klik op **Nieuwe sleutel**. Noem hem naar de automatisering, bijvoorbeeld `zapier-intake-form`.
2. In het veld **Waar zal deze sleutel worden gebruikt?** laat je **Alleen server** staan.
3. Kopieer de sleutel. Het dialoogvenster toont hem één keer volledig; later is hij beschikbaar via **Tonen** in het sleutelmenu.
4. Open in het sleutelmenu **Endpoint‑gebied** en lijst de paden op die de automatisering aanroept, één per regel: `chart` voor de geboortehoroscoop, `public/horoscope/*` voor dagelijkse horoscopen.
5. Open in hetzelfde menu **Budget instellen** en geef aan hoeveel credits deze sleutel per cyclus mag uitgeven.

Een oproep buiten de lijst krijgt `403 ENDPOINT_NOT_IN_SCOPE`. Een sleutel die het budget heeft uitgeput krijgt `429 KEY_BUDGET_EXHAUSTED`, zelfs als er nog credits op het account staan, dus een automatisering die in een lus terechtkomt stopt bij het opgegeven aantal. Beide beperkingen gelden voor elk tarief en worden beschreven in de sectie [Authenticatie](/authentication/).

## Stuur geboortemoment, niet offset

Het formulier geeft datum, tijd op de klok en locatie. Stuur ze als volgt:

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

- **`timezone`** is de zone‑naam, en de server bepaalt zelf de offset ten opzichte van UTC die de klokken van die datum hadden, inclusief zomertijd. Kiev leefde op 1990-05-15 op UTC+4, niet +3: zo’n fout ontstaat door handmatig ingevoerde offset. Stuur `auto` om de zone uit de coördinaten te halen.
- **Zonder `timezone` en zonder offset** wordt de kaart berekend voor UTC. Het antwoord is nog steeds `200`, dus controleer dat het veld is gematcht.
- **Lege `timezone`** wordt afgewezen met `400`, omdat een leeg formulier veld anders als UTC zou worden gelezen.
- **`date`** in het formaat `YYYY-MM-DD`, **`time`** in het formaat `HH:MM:SS`. Als het formulier ze anders opslaat, gebruik dan de datumopmaak in het instrument zelf.
- **Getallen kunnen als tekst komen.** `\"latitude\": \"50.45\"` wordt geaccepteerd, en zo sturen de meeste formulier‑velden hun waarden.
- **API doet geen geocodering.** Coördinaten moeten uit het formulier komen of uit een geocode‑stap in het instrument. Het veld `city` is alleen een label.

Regels voor het omzetten van klokken en data vóór 1970 staan beschreven in de [veldformaten](/agent-setup/field-formats/#timezone-назва-зони-замість-зсуву).

## Hoe converteer je lengtegraden naar tekens

`POST /v1/chart` antwoordt in graden langs de dierenriem, verpakt in `{ "ok": true, "data": { ... } }`. Het teken is `floor(longitude / 30)`, geteld vanaf nul:

0 Ram, 1 Stier, 2 Tweelingen, 3 Kreeft, 4 Leeuw, 5 Maagd, 6 Weegschaal, 7 Schorpioen, 8 Boogschutter, 9 Steenbok, 10 Waterman, 11 Vissen.

Waar de drie populairste waarden liggen:

- **Zon**: record in `data.planets` met `"name": "Sun"`, eerste.
- **Maan**: record in `data.planets` met `"name": "Moon"`, tweede.
- **Ascendant**: `data.houses.ascendant`.
- **Gebruikte offset**: `data.input.timezoneOffset`.

Voor het bovenstaande voorbeeld: Zon 54.34, dus Stier; Maan 296.39, Steenbok; Ascendant 159.26, Maagd; offset 4.

## Hoeveel kost dit

- `POST /v1/chart` kost 20 credits. De volledige tabel staat op de pagina [Kosten van endpoints](/credits/).
- Hetzelfde verzoek, opnieuw verzonden binnen vijf minuten, wordt uit de cache gehaald en kost niets. Een testrun die dezelfde payload herhaalt, verbruikt geen budget.
- `GET /v1/public/horoscope/daily` verbruikt geen credits. Zonder sleutel of met een sleutel op het Free‑tarief wordt het geteld binnen een limiet van 30 verzoeken per uur per IP‑adres, en automatisatieplatformen delen hun adressen tussen klanten. Een sleutel op een betaald tarief heeft een eigen limiet.
