Skip to main content
POST
https://sajuapi.dev
/
v1
/
fortunes
/
daily-stream
일일 운세 스트리밍
curl --request POST \
  --url https://sajuapi.dev/v1/fortunes/daily-stream \
  --header 'X-API-Key: <api-key>'
운세 생성 과정을 실시간으로 스트리밍하여 사용자 경험을 개선합니다.

요청

일반 /v1/fortunes/daily 엔드포인트와 동일한 파라미터를 사용합니다.

응답 (Server-Sent Events)

event: start
data: {"type": "start", "requestId": "req_abc123", "model": "haiku"}

event: partial
data: {"type": "partial", "data": {"todayFortune": {"actionItems": [...]}}}

event: partial
data: {"type": "partial", "data": {"investmentFortune": {...}}}

event: complete
data: {"type": "complete", "data": {...}, "meta": {...}}

data: [DONE]

클라이언트 구현 예시

function useDailyFortuneStream(birthDate: string) {
  const [fortune, setFortune] = useState(null);
  const [isLoading, setIsLoading] = useState(true);

  useEffect(() => {
    const eventSource = new EventSource(
      `/v1/fortunes/daily-stream?birthDate=${birthDate}`,
      { headers: { 'X-API-Key': API_KEY } }
    );

    eventSource.addEventListener('partial', (e) => {
      const partial = JSON.parse(e.data);
      setFortune(prev => ({ ...prev, ...partial.data }));
    });

    eventSource.addEventListener('complete', (e) => {
      const complete = JSON.parse(e.data);
      setFortune(complete.data);
      setIsLoading(false);
      eventSource.close();
    });

    return () => eventSource.close();
  }, [birthDate]);

  return { fortune, isLoading };
}

캐시된 응답

캐시 히트 시 단일 complete 이벤트로 즉시 응답합니다:
event: complete
data: {"type": "complete", "data": {...}, "meta": {"cached": true, "costPerCall": 0}}

data: [DONE]