# 코드 없는 통합

이 페이지들의 모든 내용은 2026-09-17 프로덕션을 기준으로 작성됐어. n8n용 워크플로우는 가져와서 실제 n8n에서 실행했어; Zapier와 Make용 단계는 각각의 도구 문서를 참고해서 작성했고, 그들이 만드는 요청은 바로 이 형태로 전송돼.

## 요청은 어디서 오는가

이에 따라 어떤 키가 필요한지가 결정돼.

- **Zapier, Make і n8n** 은(는) 자체 서버에서 보낸다. 아래에 설명된 대로 엔드포인트 영역과 예산이 포함된 “서버 전용” 키가 필요해. 안내: [Zapier](/integrations/zapier/), [Make](/integrations/make/), [n8n](/integrations/n8n/).
- **Bubble** 도 자체 서버에서 요청을 보내고, 키는 헤더에 들어가며 그대로 남아 있어: [Bubble](/integrations/bubble/).
- **FlutterFlow** 는 사용자가 보유한 앱으로 컴파일되므로 호출을 프라이빗하게 해야 해: [FlutterFlow](/integrations/flutterflow/).
- **Wix, Squarespace, Shopify, Webflow і Tilda** 는 방문자의 브라우저에 페이지를 표시해. 위젯을 삽입하고, 키는 넣지 마: [사이트 빌더](/integrations/site-builders/).
- **WordPress** 는 네 자체 서버에서 호출해. 키 관리는 [AstroWay 플러그인](https://wordpress.org/plugins/astroway/)이 담당해.

<Aside type="caution">
공개 키 `pk_` 는 Zapier, Make 혹은 n8n에서 작동하지 않아. origin 없이 요청을 거부하고, 이 도구들은 origin을 보내지 않아. 사이트 페이지에서는 `/v1/public/*` 와 `/v1/embed/*` 만 가져와.
</Aside>

## 자동화용 키

Zap, 스크립트, 워크플로우를 편집할 수 있는 사람은 모두 키를 내부에서 볼 수 있어. 그래서 각 자동화마다 별도 키를 만들고, 그 키가 하는 일에만 제한을 걸어.

1. 대시보드에서 [API-키](https://api.astroway.info/dashboard/keys)를 열고 **새 키** 를 클릭해. 자동화 이름으로 지정해, 예를 들어 `zapier-intake-form`.
2. **이 키를 어디에 사용할 건가요?** 필드에서 **서버 전용** 을 유지해.
3. 키를 복사해. 대화창에 한 번 전체가 표시되고, 이후에는 키 메뉴의 **보이기** 로 확인할 수 있어.
4. 키 메뉴에서 **엔드포인트 영역** 을 열고 자동화가 호출하는 경로를 한 줄에 하나씩 적어: `chart` 은 탄생 차트용, `public/horoscope/*` 은 일일 운세용.
5. 같은 메뉴에서 **예산 설정** 을 열고, 이 키가 사이클당 사용할 수 있는 크레딧 양을 지정해.

목록에 없는 호출은 `403 ENDPOINT_NOT_IN_SCOPE` 를 반환해. 예산을 다 쓴 키는 `429 KEY_BUDGET_EXHAUSTED` 를 반환하는데, 계정에 크레딧이 남아 있어도 마찬가지야. 그래서 무한 루프에 빠진 자동화는 지정된 횟수에서 멈춰. 두 제한 모두 어떤 요금제에서도 적용되며, [인증](/authentication/) 섹션에 설명돼 있어.

## 출생 순간을 보내고, 오프셋은 보내지 마

폼은 날짜, 시계 시간, 위치를 제공해. 다음과 같이 보내줘:

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

- **`timezone`** 은 영역 이름이고, 서버가 해당 날짜의 시계가 가졌던 UTC 오프셋과 서머타임을 자동으로 찾아. 예를 들어 키예프는 1990-05-15에 UTC+4였고 +3이 아니야: 수동으로 입력한 오프셋이 이런 오류를 일으켜. `auto` 로 보내면 좌표에서 영역을 가져와.
- **`timezone` 없이 오프셋 없이** 하면 차트는 UTC 기준으로 계산돼. 응답은 여전히 `200` 이라서, 필드가 매핑됐는지 확인해.
- **빈 `timezone`** 은 `400` 으로 거부돼, 그렇지 않으면 비어있는 폼 필드가 UTC로 해석될 테니까.
- **`date`** 는 `YYYY-MM-DD` 형식, **`time`** 은 `HH:MM:SS` 형식으로 보내. 폼이 다른 형식으로 저장한다면, 도구 자체에서 날짜 포맷을 맞춰.
- **숫자는 문자열로 올 수 있어.** `\"latitude\": \"50.45\"` 도 받아들여, 대부분의 폼 필드가 이렇게 보낸다.
- **API는 지오코딩을 하지 않아.** 좌표는 폼이나 도구의 지오코딩 단계에서 받아와야 해. `city` 필드는 단순히 라벨일 뿐.

1970년 이전 시계와 날짜 변환 규칙은 [필드 포맷](/agent-setup/field-formats/#timezone-назва-зони-замість-зсуву) 에 설명돼 있어.

## 경도를 별자리로 변환하는 방법

`POST /v1/chart` 은 황도에 따라 각도로 응답하고, `{ "ok": true, "data": { ... } }` 형태의 래퍼에 담겨. 별자리는 `floor(longitude / 30)` 로 계산하고, 0부터 시작해:

0 양자리, 1 황소자리, 2 쌍둥이자리, 3 게자리, 4 사자자리, 5 처녀자리, 6 천칭자리, 7 전갈자리, 8 사수자리, 9 염소자리, 10 물병자리, 11 물고기자리.

가장 흔한 세 값은 다음에 있어:

- **태양**: `data.planets` 에서 `"name": "Sun"` 로 첫 번째 항목.
- **달**: `data.planets` 에서 `"name": "Moon"` 로 두 번째 항목.
- **상승점**: `data.houses.ascendant`.
- **사용된 오프셋**: `data.input.timezoneOffset`.

위 예시에서는: 태양 54.34 → 황소자리; 달 296.39 → 염소자리; 상승점 159.26 → 처녀자리; 오프셋 4.

## 비용은 얼마야

- `POST /v1/chart` 은 20 크레딧이 소모돼. 전체 표는 [엔드포인트 비용](/credits/) 페이지에 있어.
- 같은 요청을 5분 이내에 다시 보내면 캐시에서 반환돼서 크레딧이 차감되지 않아. 같은 본문을 반복하는 테스트 실행은 예산을 소모하지 않아.
- `GET /v1/public/horoscope/daily` 은 크레딧을 사용하지 않아. 키 없이 또는 Free 요금제 키로는 IP당 시간당 30 요청 제한에 포함돼, 자동화 플랫폼은 주소를 클라이언트 간에 나눠 쓰지. 유료 요금제 키는 별도 제한을 가져.
