Skip to main content

인증

모든 요청에 X-API-Key 헤더가 필요합니다:
-H "X-API-Key: bs_live_xxxxxxxxxxxxxxxxxxxxxxxx"

일일 운세

전체 운세 조회

curl -X POST https://api.sajuapi.dev/api/daily-fortune \
  -H "Content-Type: application/json" \
  -H "X-API-Key: bs_live_xxx" \
  -d '{
    "saju": {
      "pillars": {
        "year": {
          "stem": { "hangul": "경", "hanja": "庚" },
          "branch": { "hangul": "오", "hanja": "午" }
        },
        "month": {
          "stem": { "hangul": "신", "hanja": "辛" },
          "branch": { "hangul": "사", "hanja": "巳" }
        },
        "day": {
          "stem": { "hangul": "병", "hanja": "丙" },
          "branch": { "hangul": "인", "hanja": "寅" }
        },
        "hour": {
          "stem": { "hangul": "을", "hanja": "乙" },
          "branch": { "hangul": "미", "hanja": "未" }
        }
      },
      "dayMaster": {
        "element": "fire",
        "name": "병화"
      }
    },
    "userName": "홍길동",
    "model": "haiku"
  }'

운세만 조회 (비용 절감)

curl -X POST https://api.sajuapi.dev/api/daily-fortune \
  -H "Content-Type: application/json" \
  -H "X-API-Key: bs_live_xxx" \
  -d '{
    "saju": {...},
    "userName": "홍길동",
    "type": "fortune_only"
  }'

특정 날짜

curl -X POST https://api.sajuapi.dev/api/daily-fortune \
  -H "Content-Type: application/json" \
  -H "X-API-Key: bs_live_xxx" \
  -d '{
    "saju": {...},
    "userName": "홍길동",
    "date": "2024-01-20"
  }'

다양한 모델

# Claude Haiku (가장 빠름, 가장 저렴)
curl ... -d '{"model": "haiku", ...}'

# Claude Sonnet (최고 품질)
curl ... -d '{"model": "sonnet", ...}'

# GPT-4o (균형잡힘)
curl ... -d '{"model": "gpt4o", ...}'

사주 계산

curl -X POST https://api.sajuapi.dev/api/saju \
  -H "Content-Type: application/json" \
  -H "X-API-Key: bs_live_xxx" \
  -d '{
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 14,
    "gender": "male",
    "calendarType": "solar"
  }'

출생 시간 모를 때

curl -X POST https://api.sajuapi.dev/api/saju \
  -H "Content-Type: application/json" \
  -H "X-API-Key: bs_live_xxx" \
  -d '{
    "year": 1990,
    "month": 5,
    "day": 15,
    "gender": "female"
  }'

스트리밍 (SSE)

curl -X POST https://api.sajuapi.dev/api/daily-fortune-stream \
  -H "Content-Type: application/json" \
  -H "Accept: text/event-stream" \
  -H "X-API-Key: bs_live_xxx" \
  -N \
  -d '{
    "saju": {...},
    "userName": "홍길동"
  }'
-N 플래그는 버퍼링을 비활성화하여 이벤트가 도착하는 즉시 표시합니다.

사용량 확인

curl https://api.sajuapi.dev/api/usage \
  -H "X-API-Key: bs_live_xxx"

자주 쓰는 옵션

응답을 파일로 저장

curl ... -o fortune.json

JSON 예쁘게 출력

curl ... | jq .

응답 헤더 표시

curl -i ...

# 응답 헤더에 포함되는 정보:
# X-RateLimit-Limit: 60
# X-RateLimit-Remaining: 45
# X-Request-Id: req_abc123

상세 모드 (디버그)

curl -v ...

타임아웃 설정

curl --max-time 30 ...

에러 예제

API 키 누락

curl -X POST https://api.sajuapi.dev/api/daily-fortune \
  -H "Content-Type: application/json" \
  -d '{...}'

# 응답: 401
# {"success":false,"error":{"code":"missing_api_key","message":"API 키가 필요합니다"}}

잘못된 JSON

curl -X POST https://api.sajuapi.dev/api/daily-fortune \
  -H "Content-Type: application/json" \
  -H "X-API-Key: bs_live_xxx" \
  -d 'not json'

# 응답: 400
# {"success":false,"error":{"code":"invalid_json","message":"요청 본문이 유효한 JSON이 아닙니다"}}

요청 제한 초과

# 응답: 429
# {"success":false,"error":{"code":"rate_limited","message":"요청 제한 초과","retryAfter":42}}

쉘 스크립트 예제

#!/bin/bash

API_KEY="bs_live_xxx"
BASE_URL="https://api.sajuapi.dev"

# 사주 계산
SAJU=$(curl -s -X POST "$BASE_URL/api/saju" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -d '{
    "year": 1990,
    "month": 5,
    "day": 15,
    "hour": 14,
    "gender": "male"
  }')

echo "사주 계산 완료"

# 운세 조회
FORTUNE=$(curl -s -X POST "$BASE_URL/api/daily-fortune" \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $API_KEY" \
  -d "{
    \"saju\": $(echo $SAJU | jq .data),
    \"userName\": \"홍길동\"
  }")

# 점수 추출
SCORE=$(echo $FORTUNE | jq -r '.data.todayFortune.score')
echo "오늘의 운세 점수: $SCORE"

# 조언 항목 추출
echo "해야 할 것과 피해야 할 것:"
echo $FORTUNE | jq -r '.data.todayFortune.actionItems[] | "\(.type): \(.text)"'