APIFuseAPIFuseDocs

Getting started

  • 개요
  • 빠른 시작

Authentication

  • Managed key
  • Scope

Errors

  • 에러 모델
  • 재시도

Webhooks

  • 개요
  • 서명 검증

API reference

  • 아마존 재팬
  • 배달의민족 프로바이더
  • 빗썸
  • Buyee
  • 캐치테이블 음식점 검색 및 예약
  • 차란 커머스
  • 당근 공개 매물
  • 다이소 상품 및 매장 데이터
  • 다나와 가격 비교
  • Demaecan
  • 에키탄
  • 여기어때 국내 숙소
  • Google Flights
  • 한강 수위
  • 핫페퍼 구루메(Hot Pepper Gourmet) 프로바이더
  • 현대카드
  • 인천공항 여객편 운항현황
  • Jalan
  • 일본 국회 회의록
  • 일본 재난 알림
  • 일본 EDINET 공시 서류
  • 일본 e-Gov 법령
  • 일본 e-Stat
  • 일본 gBizINFO (경제산업성 법인정보)
  • 일본 GSI 지오코딩
  • 일본 e-Gov 오픈데이터
  • Japan Post ZIP
  • 일본 공휴일
  • JMA Weather
  • 카카오맵 장소 검색과 길찾기
  • 카카오 T 택시 호출
  • 카카오톡 네이티브 메시징
  • 한국 주소 검색
  • AirKorea 실시간 대기오염 정보
  • 전국 동물병원
  • 한국 아파트 전월세 실거래가
  • 한국 아파트 매매 실거래가
  • 나라장터 입찰공고
  • 한국 박스오피스
  • 건축물대장 (Korea Building Register)
  • 전국 버스 도착정보
  • Korea Business Verify
  • 대한민국 캠핑장
  • 한국 DART 기업 재무정보
  • DART 기업 정보
  • 한국 문화행사(한눈에 보는 문화정보)
  • 한국 재난 알림
  • 한국 응급의료기관
  • 한국 ETF
  • 한국 전기차 충전소
  • 한국 환율 (한국수출입은행)
  • 한국 고속도로 교통
  • 금융상품 비교공시 (금융감독원 금융상품한눈에)
  • 한국 주유소 유가
  • 국가유산 정보 (국가유산청)
  • Korea Holiday
  • Korea Hospital Info
  • 전국 고속·시외버스 시간표
  • 한국 토지 매매 실거래가
  • 식약처 의약품 안전정보
  • 식약처 식품 안전 정보
  • 생활쓰레기 배출정보
  • 국가법령정보 검색·조회
  • NEIS 학교 급식 식단
  • 배송사 목록 및 택배 배송 조회
  • 전국 주차장
  • 공연예술 정보 (KOPIS)
  • Korea Pharmacy
  • 한국 인구 통계
  • 한국 주식시장지수
  • 한국 주식 시세
  • 전국 상가업소 정보
  • 한국 유기동물 (국가동물보호정보시스템)
  • 한국 관광정보 (한국관광공사)
  • 한국 열차 시간표
  • 한국 기상청 예보 데이터
  • Korea Weather Forecast
  • 대한민국 복지서비스
  • K-Startup
  • LH 청약 공고
  • 마켓컬리 상품 데이터
  • Mercari
  • 모두의주차장
  • 네이버 블로그 검색
  • 네이버 항공권 API
  • 네이버 지역 검색
  • 네이버 지도
  • 네이버 뉴스 검색
  • NHK 편성표
  • NOL 숙소
  • 오늘의집 스토어 및 콘텐츠
  • 라쿠텐 북스
  • 라쿠텐 이치바
  • 라쿠텐 레시피
  • 라쿠텐 트래블
  • SEC EDGAR Filings
  • 서울 따릉이
  • 서울 실시간 혼잡도
  • 서울 지하철 실시간 도착
  • 신한은행
  • 신한카드
  • Skiplagged
  • Steam 스토어
  • SUUMO
  • 스윙 택시
  • Tabelog
  • TableCheck
  • 업비트
  • Visit Japan Web (일본 입국 수속 서비스)
  • Weverse 프로바이더
  • 야후! 쇼핑 (일본)
  • Yogiyo
  • ZOZOTOWN

Guides

  • APIFuse 문서
  • 시작하기
  • 인증과 connection
  • 플레이그라운드
  • OpenAPI와 스키마 아티팩트
  • MCP 엔드포인트
  • 개발자 MCP 가이드
  • 스키마 번들과 변환 경고
  • Next.js App Router 연동
  • FastAPI 연동
  • 에러 처리
  • 자주 묻는 질문
  • 추가 리소스

Changelog

  • 체인지로그
APIFuseAPIFuse
문서서비스플레이그라운드상태
로그인회원가입

Guides

에러 처리

APIFuse 에러 응답을 읽고 재시도할 실패와 업스트림 서비스가 거절한 요청을 구분하는 방법.

모든 APIFuse 에러 응답은 세 가지를 알려줍니다: 무슨 일이 있었는지(code, message), 누가 요청을 멈췄는지(source), 동일한 재시도가 성공할 수 있는지(retryable). HTTP 상태 코드를 패턴 매칭하는 대신 이 필드들을 사용하세요.

에러 응답 형태

json
{
  "error": {
    "code": "UPSTREAM_REJECTED",
    "message": "The requested time slot overlaps an existing reservation.",
    "retryable": false,
    "source": "upstream_rule",
    "fix": "Pick a slot that does not overlap the account's existing reservations.",
    "requestId": "req_1a2b3c"
  }
}
필드의미
code안정적인 기계 판독용 코드. operation별 코드는 각 operation 레퍼런스 페이지에 나열됩니다.
message사람이 읽는 요약.
retryablefalse면 동일한 재시도는 성공할 수 없습니다 — 요청을 바꾸세요. true면 나중에 재시도하면 성공할 수 있습니다.
source누가 요청을 멈췄는지 (아래 참조).
fix요청을 성공시키려면 무엇을 바꿔야 하는지 (알 수 있는 경우).
requestId지원팀에 문의할 때 함께 전달하세요.

일부 에러 응답은 source와 retryable을 생략할 수 있습니다. 없을 때는 아래 상태 클래스를 기준으로 처리하세요.

플랫폼 수준 에러(잘못된 Connection ID, 상대 서비스 연결 타임아웃, 취소된 요청)는 같은 필드를 최상위에 담는 평평한 body를 사용합니다: {"error", "code", "message", "action", "retryable", "source", "request_id"}. 공식 SDK는 두 형태를 모두 읽습니다.

누가 요청을 멈췄는가

source의미대응
client요청 자체를 바꿔야 합니다 (잘못된 입력, 없거나 만료된 Connection).요청을 고치거나 다시 연결한 뒤 호출하세요.
upstream_rule상대 서비스가 요청을 이해했고 자체 규칙에 따라 거절했습니다 — 품절, 겹치는 예약, 계정 상태 제한 등.사유를 사용자에게 보여주거나 요청을 바꾸세요. 동일하게 재시도하면 같은 답이 돌아옵니다.
upstream_failure상대 서비스가 오작동했거나 응답하지 않았습니다.백오프를 두고 재시도하세요.
apifuseAPIFuse가 요청을 완료하지 못했습니다.백오프를 두고 재시도하고, 지속되면 requestId와 함께 지원팀에 문의하세요.

상태 클래스

상태분류일반적인 source
400, 401, 404요청을 바꿔야 함client
409, 410, 422상대 서비스가 자체 규칙으로 거절upstream_rule
429레이트 리밋 — Retry-After를 지키세요upstream_rule
502, 504업스트림 오작동 또는 타임아웃upstream_failure
500, 503APIFuse 측 결함apifuse

409는 장애가 아닙니다: 상대 서비스는 정상이며 확정적인 답을 준 것입니다. 재시도할 에러가 아니라 애플리케이션 데이터로 다루세요 (예: "이미 예약된 시간대입니다"를 표시).

안전한 재시도

  • retryable: false 응답은 절대 자동 재시도하지 마세요.
  • 429는 Retry-After 간격 후에, 502/503/504는 지수 백오프로 재시도하세요.
  • 공식 TypeScript/Python SDK는 이 규칙을 자동으로 따르며, 던져진 에러에서 error.retryable과 error.source를 읽을 수 있습니다.
ts
import { ApiFuseClient, ApiFuseError } from "@apifuse/sdk";

const client = new ApiFuseClient({ apiKey: process.env.APIFUSE_API_KEY! });

async function reserve(input: Record<string, unknown>) {
  try {
    return await client.call.invoke("catchtable", "reserve", input);
  } catch (error) {
    if (
      error instanceof ApiFuseError &&
      error.source === "upstream_rule" &&
      error.retryable === false
    ) {
      // 확정적 거절 — 재시도하지 말고 사용자에게 사유를 보여주세요.
      // (429 레이트 리밋도 source가 "upstream_rule"이지만 retryable이라
      // 위 가드가 재시도 경로에 남겨둡니다.)
      return { refused: true, reason: error.message, suggestion: error.fix };
    }
    throw error;
  }
}