Skip to main content

API 키

모든 API 요청은 X-API-Key 헤더를 통한 API 키 인증이 필요합니다.
curl -X POST https://api.sajuapi.dev/api/daily-fortune \
  -H "X-API-Key: bs_live_xxxxxxxxxxxxxxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{...}'

키 종류

종류접두사환경요청 제한
Livebs_live_프로덕션1,000 요청/분
Testbs_test_개발100 요청/분
테스트 키는 목업 데이터를 반환하며 비용이 청구되지 않습니다. 개발 중에 사용하세요.

API 키 발급받기

대시보드에서 발급

  1. dashboard.sajuapi.dev에 로그인
  2. 설정API 키로 이동
  3. 새 키 생성 클릭
  4. 키를 즉시 복사 (다시 표시되지 않음)

API로 발급 (프로그래밍 방식)

curl -X POST https://api.sajuapi.dev/api/keys \
  -H "Authorization: Bearer your_access_token" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "프로덕션 키",
    "type": "live",
    "permissions": ["fortune:read", "saju:calculate"]
  }'

키 권한

권한설명
fortune:read일일 운세 엔드포인트 접근
saju:calculate사주 계산
stream:read스트리밍 엔드포인트 접근
usage:read사용량 통계 조회

보안 모범 사례

API 키는 서버 측에서만 사용해야 합니다. 클라이언트 애플리케이션의 경우, 백엔드에 프록시 엔드포인트를 생성하세요.
// ❌ 잘못된 예: 브라우저에 노출됨
fetch('https://api.sajuapi.dev/api/daily-fortune', {
  headers: { 'X-API-Key': 'bs_live_xxx' }  // DevTools에서 보임!
});

// ✅ 올바른 예: 백엔드를 통해 프록시
fetch('/api/fortune', { method: 'POST' });
프로덕션 키를 90일마다 교체하세요. 다운타임 없는 교체를 위해 최대 3개의 활성 키를 동시에 가질 수 있습니다.
키를 코드가 아닌 환경 변수에 저장하세요.
# .env
SAJU_API_KEY=bs_live_xxxxxxxxxxxxxxxxxxxxxxxx
const apiKey = process.env.SAJU_API_KEY;
서비스별로 최소한의 필요 권한만 가진 별도의 키를 생성하세요.

에러 응답

상태 코드에러설명
401missing_api_keyAPI 키가 제공되지 않음
401invalid_api_keyAPI 키가 잘못되었거나 존재하지 않음
401expired_api_keyAPI 키가 폐기되었거나 만료됨
403insufficient_permissions키에 필요한 권한이 없음
{
  "success": false,
  "error": {
    "code": "invalid_api_key",
    "message": "제공된 API 키가 유효하지 않습니다",
    "hint": "키가 'bs_live_' 또는 'bs_test_'로 시작하는지 확인하세요"
  }
}

SDK 인증

import { SajuClient } from '@sajuapi/sdk';

const client = new SajuClient({
  apiKey: process.env.SAJU_API_KEY
});

const fortune = await client.getDailyFortune({
  saju: {...},
  userName: '홍길동'
});