# Fallstricke

Davon ist nichts ein Fehler. Es ist ein Verhalten, über das es besser ist, sich aus der Dokumentation zu informieren, als aus der Analyse einer fremden Antwort.

## In der Antwort gibt es ein zusätzliches Feld `_footer`

Der kostenlose Tarif und **jeder** Aufruf ohne Schlüssel erhalten im Körper ein zusätzliches Feld `_footer` mit einer Signatur. Bezahlschlüssel sehen das nicht. Wenn dein Parser streng mit überflüssigen Feldern ist, ist das das Erste, worüber er stolpert.

## Ein identischer Aufruf innerhalb des Cache-Fensters kostet nichts

Ein identischer Aufruf innerhalb des Cache-Fensters gibt `X-Cache: HIT` zurück, und ein solcher Aufruf **zieht keine Credits ab**: in der Antwort ist `X-Credits-Used: 0`, und der verbleibende Betrag wird zurückgegeben. Du kannst also den Kosten nicht messen, indem du denselben Aufruf wiederholst: du zahlst einmal.

## Sandbox-Schlüssel verbrauchen nichts

`aw_test_*` zieht überhaupt keine Credits ab und zählt nicht zum Kontingent des Kontos. Das ist keine "kleine Quote", sondern null. Du solltest darauf entwickeln, und `aw_live_*` nur dann verwenden, wenn du die Abrechnung überprüfst.

## Unbekannte Felder werden still ignoriert

Der Körper akzeptiert zusätzliche Schlüssel und ignoriert sie. Die Ausnahme sind explizit abgelehnte Kurzschreibweisen (`lat`, `tz` und der Rest, siehe [Feldformate](/agent-setup/field-formats/)). Ein Tippfehler im Feldnamen wird daher normalerweise nicht bemerkt: du erhältst `200` und ein Chart, das ohne deinen Parameter berechnet wurde.

<Aside type="caution">
Der teuerste Fall dieser Art: `city` sieht wie eine Adresse aus, kodiert aber nichts. Ohne `latitude` und `longitude` gibt es kein Chart.
</Aside>

## Jenseits des Polarkreises wird die Häusersystem-Logik ausgetauscht

Für Quadrantensysteme bei `|latitude| > 66.5°` gibt Swiss Ephemeris still Porphyry zurück. Wir verbergen das nicht: in der Antwort erscheint ein `warning`-Feld. Whole Sign und Equal funktionieren auf jeder Breite.

Ein ähnlicher Fall wurde mit einer Ablehnung geschlossen: unbekannte `houseSystem`-Codes geben nicht länger Placidus unter einem anderen Namen zurück, sondern liefern `400`.

## Ein Schlüssel hat drei unabhängige Grenzen

Browser-Schlüssel `pk_` und geheime `aw_` können gleichzeitig drei Einschränkungen haben, und sie ersetzen sich nicht gegenseitig:

| Grenze | Was es sagt | Ablehnung |
|---|---|---|
| Domain-Liste | woher aufgerufen werden kann | `403 ORIGIN_REQUIRED` / `ORIGIN_NOT_ALLOWED` |
| `credits_cap_cycle` | wie viel dieser Schlüssel ausgeben kann | `429 KEY_BUDGET_EXHAUSTED` |
| `allowed_endpoints` | was genau aufgerufen werden kann | `403 ENDPOINT_NOT_IN_SCOPE` |

Der Endpunkt-Bereich **befreit** nicht dienstspezifische Lesevorgänge: ein auf `embed/*` eingeschränkter Schlüssel kann nicht einmal seine eigenen Statistiken lesen. Das ist beabsichtigt, Details in der [Authentifizierung](/authentication/).

## Eine Änderung am Schlüssel wirkt sich ab dem nächsten Aufruf aus

Schlüssel werden für 60 Sekunden gecacht, aber jede Änderung über `PATCH /v1/keys/{id}` setzt den Cache sofort zurück. Eine Minute warten ist nicht nötig.
