등기고 API
등기고 API를 통해 부동산 등기부등본 조회, 문서함 관리, 변동 알림을 자동화하고 외부 시스템과 연동할 수 있습니다.
개요
모든 API 엔드포인트의 Base URL은 다음과 같습니다.
https://deunggigo.kr/api/v1요청/응답 Body는 모두 application/json 형식입니다.
등기부등본 열람은 비동기로 처리됩니다. 요청 시 id가 반환되며, 이후 해당 id로 결과를 폴링합니다. 처리 완료까지 수 분이 소요될 수 있습니다.
인증
API 요청은 API 키 또는 로그인 세션 쿠키 중 하나로 인증합니다. 외부 서버에서 호출할 때는 API 키를 사용하세요.
API 키는 설정 페이지 또는 API 키 관리 페이지에서 발급받습니다.
헤더 형식 (둘 중 하나 사용)
# 방법 1 - Authorization Bearer
Authorization: Bearer dgg_xxxxxxxxxxxxxxxx
# 방법 2 - X-Api-Key
X-Api-Key: dgg_xxxxxxxxxxxxxxxxcurl 예시
curl -X GET "https://deunggigo.kr/api/v1/credits/balance" \
-H "Authorization: Bearer dgg_xxxxxxxxxxxxxxxx"401 Unauthorized가 반환됩니다.크레딧
/api/v1/credits/balance잔액 조회현재 계정의 크레딧 잔액을 조회합니다.
curl -X GET "https://deunggigo.kr/api/v1/credits/balance" \
-H "Authorization: Bearer dgg_xxx"응답 200
{
"creditBalance": 15000
}/api/v1/credits/transactions거래 내역크레딧 충전/사용 내역을 페이지네이션으로 조회합니다.
Query Parameters
| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
| page | number | 1 | 페이지 번호 |
| limit | number | 20 | 페이지당 항목 수 |
curl -X GET "https://deunggigo.kr/api/v1/credits/transactions?page=1&limit=10" \
-H "Authorization: Bearer dgg_xxx"응답 200
{
"items": [
{
"id": "tx_abc123",
"type": "usage",
"amount": -50,
"balanceAfter": 14950,
"description": "등기부등본 열람 (1341-2004-008457)",
"referenceType": "inquiry",
"createdAt": "2024-06-01T09:01:24.000Z"
},
{
"id": "tx_abc124",
"type": "charge",
"amount": 10000,
"balanceAfter": 15000,
"description": "크레딧 충전",
"referenceType": "payment",
"createdAt": "2024-06-01T08:00:00.000Z"
}
],
"total": 42,
"page": 1,
"totalPages": 5
}부동산 검색
/api/v1/property-search주소 검색주소 키워드로 부동산을 검색합니다. IROS 간편검색 기반입니다.
{
"address": "서울 강남구 테헤란로 123",
"kindCls": "0",
"page": 1,
"pageSize": 50
}파라미터
| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
| address* | string | — | 주소 키워드 (지번 또는 도로명) |
| kindCls | '0'~'3' | '0' | 부동산구분. 0=전체, 1=집합건물, 2=토지, 3=건물 |
| page | number | 1 | 페이지 번호 |
| pageSize | number | 50 | 페이지당 건수 (최대 300) |
응답 200
{
"items": [
{
"uniqueNo": "1168-2024-001234",
"address": "서울특별시 강남구 테헤란로 123",
"propertyType": "집합건물",
"dong": "101동",
"ho": "501호"
}
],
"total": 15
}/api/v1/property-lookup고유번호 조회고유번호로 부동산 정보를 직접 조회합니다.
{
"uniqueNo": "1341-2004-008457"
}응답 200
{
"uniqueNo": "1341-2004-008457",
"address": "경기도 성남시 분당구 ...",
"propertyType": "집합건물"
}법인 검색·열람·발급
법인(상업)등기 API입니다. 흐름은 부동산과 동일합니다 — ①검색(corp-search) → ②법인 문서함에 담기(corp-inquiries) → ③문서함 열람/발급 실행(execute). 열람(issueType=1, 700원)과 제출용 발급(issueType=0, 1000원)을 지원합니다. 인증·과금 방식도 동일하며, 결과·PDF는 GET /api/v1/inquiries/{id}로 조회합니다.
/api/v1/corp-search법인 검색 (상호·법인등록번호)상호 또는 법인등록번호로 법인을 검색합니다. 상세검색 필터(법인구분·등기부상태·본지점) 지원.
{
"swrd": "당찬아이들",
"srchCls": "PC01",
"corpClsCd": "0",
"crgbkStcd": "0",
"hdbrcCls": "0"
}파라미터
| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
| swrd* | string | — | 검색어. 상호 또는 법인등록번호(하이픈 포함 가능) |
| srchCls | 'PC01'|'PC03' | 자동 | 검색구분. PC01=상호, PC03=법인등록번호. 미지정 시 숫자 13자리면 PC03 자동 판별 |
| corpClsCd | string | '0' | 법인구분. 0=전체, 11=주식회사, 14=유한회사, 21=사단법인 등 |
| crgbkStcd | string | '0' | 등기부상태. 0=전체, 12300=살아있는 등기, 12341=해산, 12343=청산종결, 12349=파산 |
| hdbrcCls | '0'~'2' | '0' | 본지점. 0=전체, 1=본점, 2=지점 |
응답 200
{
"success": true,
"totalCount": 1,
"results": [
{
"conm": "당찬아이들",
"romConm": "DangChan Co.,Ltd.",
"drokno": "111111-1111111",
"corpClsName": "주식회사",
"crgbkStcdName": "살아있는 등기",
"regtName": "수원지방법원 안양지원 안양등기소",
"masterNo": 1111111,
"crgNo": "1111111"
}
]
}/api/v1/corp-inquiries법인 문서함에 담기검색한 법인을 법인 문서함에 담기만 합니다(status=cart, 과금 없음). 부동산 "열람 문서 추가"와 동일한 방식입니다. 실제 열람은 이어서 POST /api/v1/bulk-inquiries/{id}/execute로 진행합니다. 문서함(bulkId) 지정 또는 기본 '법인 조회' 문서함이 자동 생성됩니다.
{
"rows": [
{ "drokno": "134111-0071315", "conm": "당찬아이들" }
],
"boxName": "내 법인 문서함"
}파라미터
| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
| rows* | object[] | — | 담을 법인 배열. 각 행은 최소 drokno(법인등록번호) 필수. corp-search 결과 행을 그대로 전달 권장 (단건은 row 하나만 전달도 가능) |
| rows[].drokno* | string | — | 법인등록번호 (문서함 열람 실행 시 이 번호로 정확검색 후 열람) |
| bulkId | string | — | (선택) 담을 법인 문서함 id. 지정 시 해당 문서함에 추가 |
| boxName | string | — | (선택) 새 법인 문서함 이름. bulkId 없이 지정하면 그 이름으로 새 문서함 생성. 둘 다 없으면 날짜별 '법인 조회' 문서함 자동 생성 |
응답 200
{
"message": "법인 문서함에 1건 추가되었습니다.",
"bulkId": "…",
"added": 1,
"duplicated": 0
}/api/v1/corp-inquiries법인 즉시 열람/발급 (execute: true)문서함에 담지 않고 바로 열람(또는 발급)합니다(크레딧 차감 + 즉시 처리). 부동산 POST /api/v1/inquiries 단건열람과 동일한 방식입니다. 1건만 가능하며, 2건 이상 보내면 400 에러가 반환됩니다. issueType으로 열람/발급을 선택합니다(기본 열람). 문서함(bulkId) 지정 또는 기본 '법인 조회' 문서함에 수납됩니다.
{
"row": { "drokno": "134111-0071315", "conm": "당찬아이들" },
"execute": true,
"issueType": "1"
}파라미터
| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
| row* | object | — | 열람할 법인 1건. drokno(법인등록번호) 필수 — 담기 모드의 rows 와 달리 단건만 받습니다 |
| row.drokno* | string | — | 법인등록번호 (이 번호로 정확검색 후 바로 열람) |
| execute* | boolean | false | true로 고정 — 즉시 열람/발급 모드를 사용함을 명시 |
| issueType | '0'|'1' | '1' | 1=열람(700원+수수료), 0=발급(제출용, 1000원+수수료). 미지정 시 열람 |
| bulkId | string | — | (선택) 수납할 법인 문서함 id. 미지정 시 기본 '법인 조회' 문서함에 자동 수납 |
| callbackUrl | string | — | (선택) 완료/실패 시 결과를 POST 받을 webhook URL(http/https). |
응답 200
{
"message": "법인등기 열람 요청이 접수되었습니다.",
"inquiryId": "…",
"inquiry": { "id": "…", "uniqueNumber": "134111-0071315", "status": "pending", "cost": 1700, "bulkId": "…" },
"bulkId": "…"
}결과·PDF는 GET /api/v1/inquiries/{inquiryId} 및 /pdf로 확인합니다.
/api/v1/bulk-inquiries/{id}/execute법인 문서함 열람/발급 실행 (일괄)법인 문서함(위에서 담은 cart 항목들)을 일괄 열람(또는 발급)합니다. 건당 수수료가 크레딧에서 차감되고 처리가 시작됩니다. 부동산 문서함과 동일한 엔드포인트이며, issueType으로 열람/발급을 선택합니다(기본 열람). 법인 문서함은 그 외 옵션(부동산구분·등기기록상태 등) 없이 전부(현재 유효사항)로 처리됩니다.
{
"inquiryIds": ["…"],
"issueType": "1"
}파라미터
| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
| inquiryIds | string[] | — | (선택) 실행할 cart 항목 id 목록. 생략하면 해당 문서함의 cart 전체를 실행 |
| issueType | '0'|'1' | '1' | 1=열람(700원+수수료), 0=발급(제출용, 1000원+수수료). 미지정 시 열람 |
응답 200
{
"success": true,
"message": "법인등기 1건 열람을 시작했습니다.",
"bulkId": "…",
"paidCount": 1,
"creditDeducted": 1700
}처리 상태·PDF는 GET /api/v1/inquiries/{inquiryId} 및 GET /api/v1/inquiries/{inquiryId}/pdf로 확인합니다(단건 열람과 동일). 문서함 전체 상태는 GET /api/v1/bulk-inquiries/{id}.
문서함 관리
/api/v1/bulk-inquiries문서함 목록생성된 문서함(대량조회) 목록을 조회합니다.
Query Parameters
| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
| page | number | 1 | 페이지 번호 |
| limit | number | 10 | 페이지당 항목 수 |
| registryType | 'real_estate'|'corporate' | 'real_estate' | 문서함 종류. corporate=법인 문서함 |
{
"items": [
{
"id": "bulk_clxyz1234",
"fileName": "강남구_조회.xlsx",
"totalCount": 50,
"completedCount": 48,
"failedCount": 2,
"status": "completed",
"createdAt": "2024-06-01T09:00:00.000Z"
}
],
"total": 5,
"page": 1,
"totalPages": 1
}/api/v1/inquiries/cart문서함 생성/항목 추가문서함을 생성하거나 기존 문서함에 항목을 추가합니다. 등기번호(고유번호)로 직접 추가하거나, 주소 검색을 통해 추가할 수 있습니다.
등기번호로 추가
items 배열에 uniqueNo를 직접 지정합니다 (14자리 숫자 검증).
{
"bulkId": "bulk_clxyz1234",
"items": [
{ "uniqueNo": "13412004008457", "address": "경기도 성남시 ...", "kindCls": "1" },
{ "uniqueNo": "1168-2024-001234", "address": "서울특별시 강남구 ...", "kindCls": "1" }
]
}새 문서함 생성과 동시에 추가
bulkId를 생략하면 새 문서함이 자동 생성됩니다. boxName으로 이름을 지정할 수 있습니다.
{
"boxName": "강남구 조회",
"items": [
{ "uniqueNo": "13412004008457", "address": "경기도 성남시 ...", "kindCls": "1" }
]
}응답 200
{
"success": true,
"bulkId": "bulk_clxyz1234",
"count": 2
}/api/v1/bulk-inquiries/{id}문서함 상세문서함의 상세 정보와 포함된 항목 목록을 조회합니다.
{
"bulkInquiry": {
"id": "bulk_clxyz1234",
"fileName": "강남구_조회.xlsx",
"totalCount": 50,
"completedCount": 48,
"failedCount": 2,
"status": "completed",
"totalCost": 4800
},
"items": [
{
"id": "clxyz1111",
"uniqueNumber": "1341-2004-008457",
"status": "completed",
"cost": 100,
"hasPdf": true,
"createdAt": "2024-06-01T09:00:00.000Z"
}
]
}/api/v1/bulk-inquiries/{id}문서함 수정 (이름 변경){
"name": "강남구 2024년 2분기"
}{
"message": "문서함이 수정되었습니다."
}/api/v1/bulk-inquiries/{id}문서함 삭제{
"message": "문서함이 삭제되었습니다."
}/api/v1/bulk-inquiries/{id}/execute일괄 열람 실행문서함에 포함된 모든 항목의 열람을 일괄 실행합니다. 항목별로 크레딧이 차감됩니다.
{
"message": "일괄 열람이 시작되었습니다.",
"totalCount": 50,
"creditDeducted": 2500
}/api/v1/bulk-inquiries/{id}/excel엑셀 다운로드문서함의 열람 결과를 엑셀 파일로 다운로드합니다.
응답: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 바이너리
/api/v1/bulk-inquiries/{id}/downloadPDF ZIP 다운로드문서함의 모든 PDF를 ZIP 파일로 다운로드합니다.
응답: application/zip 바이너리
단건 열람
/api/v1/inquiries열람 요청등기부등본 열람을 요청합니다. 비동기로 처리되며 결과는 별도 조회합니다.
주요 파라미터
| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
| issueType* | '0'|'1' | '1' | 0=발급, 1=열람 |
| searchDiv* | '1'|'2'|'3'|'4' | '1' | 1=고유번호, 2=간편검색, 3=소재지번, 4=도로명 |
| uniqueNo | string | — | 14자리 고유번호 (searchDiv=1일 때 필수) |
| address | string | — | 주소 키워드 (searchDiv=2, 3, 4일 때 필수) |
| kindCls | '0'|'1'|'2'|'3' | '0' | 부동산구분 (searchDiv=2, 3, 4 주소 조회에서 공통 사용). 0=전체, 1=집합건물, 2=토지, 3=건물. 한 주소에 토지/건물 등기부가 모두 있을 때 원하는 종류를 지정하지 않으면 검색 결과 중 항상 첫 번째 항목이 선택됩니다. |
| display | '1'|'2' | '2' | 1=현재유효사항, 2=말소사항 포함 |
| dupChk | 'Y'|'N' | 'N' | 재열람 우선 시도 여부 |
| bulkId | string | — | (선택) 넣을 문서함 id. 미지정 시 날짜별 'API 조회 YYYY-MM-DD' 문서함에 자동 수납 |
| cache | boolean | false | (선택) true면 기존 열람 이력(캐시)이 있을 때 재열람 없이 캐시가로 즉시 제공. 미지정 시 false(항상 신규 열람) |
| callbackUrl | string | — | (선택) 완료/실패 시 결과를 POST 받을 webhook URL(http/https). |
주소로 조회(searchDiv=2,3,4)할 때 같은 주소에 토지등기부와 건물등기부가 모두 존재하는 경우,kindCls로 원하는 종류를 지정하지 않으면 검색 결과 목록의 첫 번째 항목이 자동으로 선택되어 의도와 다른 등기부가 열람될 수 있습니다. 토지/건물이 혼재할 수 있는 주소는 반드시 kindCls를 2(토지) 또는 3(건물)로 지정해주세요.
bulkId를 지정하면 해당 문서함에 수납되고, 생략하면 날짜별 문서함에 자동으로 모입니다. 응답의 inquiry.bulkId로 어느 문서함에 들어갔는지 확인할 수 있습니다.
callbackUrl을 지정하면 열람/발급이 완료(또는 실패)되는 즉시 해당 URL로 결과를 POST(webhook) 합니다. 상태를 계속 폴링하지 않아도 되며, 기존 폴링(GET /api/v1/inquiries/{id})도 그대로 사용 가능합니다. 전송 본문 예: { event: "inquiry.completed", inquiryId, uniqueNumber, issueType, registryType, status, hasPdf, errorMessage } — 수신 후 inquiryId로 결과·PDF를 조회하세요. 콜백 수신이 확실하지 않을 때는 아래 조회 API로 상태를 확인해 주세요.
cache: true로 보내면 같은 등기의 기존 열람 이력(캐시)이 있을 때 인터넷등기소 재열람 없이 캐시가로 즉시 결과를 제공합니다(응답 inquiry.cached: true, status: "completed"). 캐시가 없으면 신규 열람(정상 단가)으로 처리됩니다. 생략하거나 false면 항상 신규 열람이므로 기존 연동에는 영향이 없습니다.
{
"issueType": "1",
"searchDiv": "1",
"uniqueNo": "1341-2004-008457",
"display": "2"
}응답 200
{
"message": "조회 요청이 접수되었습니다.",
"inquiry": {
"id": "clxyz1234abcd",
"uniqueNumber": "1341-2004-008457",
"issueType": "1",
"status": "pending",
"cost": 50,
"bulkId": "b1a2c3d4-..."
}
}에러 응답
{
"error": "크레딧이 부족합니다. 필요: 50원, 현재: 0원"
}{
"error": "지정한 문서함을 찾을 수 없습니다. (bulkId 확인)"
}{
"error": "동일한 등기부등본이 이미 처리 중입니다."
}/api/v1/inquiries/{id}열람 결과열람 요청의 처리 상태와 결과를 조회합니다.status가 completed 또는 failed가 될 때까지 폴링합니다.
status 값
접수 완료
처리 중
성공
실패
{
"inquiry": {
"id": "clxyz1234abcd",
"uniqueNumber": "1341-2004-008457",
"propertyType": "building",
"issueType": "1",
"status": "completed",
"cost": 50,
"pdfPath": "/downloads/registry_clxyz1234abcd.pdf",
"parsedData": {
"title_section": [...],
"exclusive_building": [...],
"section_a": [...],
"section_b": [...]
},
"createdAt": "2024-06-01T09:00:00.000Z",
"completedAt": "2024-06-01T09:01:24.000Z"
}
}/api/v1/inquiries/{id}/pdfPDF 다운로드열람 완료된 등기부등본을 PDF로 다운로드합니다.
응답: application/pdf 바이너리. 본인 소유 열람 건만 허용. PDF 미생성 또는 실패 시 404.
변동 알림
부동산 등기 변동(실거래, 등기신청사건)을 모니터링하고 SMS로 알림을 받습니다. 하루 1회 변동을 확인하며, 새 변동이 확인되면 등록된 수신자에게 문자(SMS)로 알림을 발송합니다.
/api/v1/alerts알림 목록Query Parameters
| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
| page | number | 1 | 페이지 번호 |
| limit | number | 20 | 페이지당 항목 수 |
| search | string | — | 고유번호/주소/연락처 검색 |
| status | 'active'|'inactive' | — | 활성 상태 필터 |
{
"items": [
{
"id": "alert_abc123",
"uniqueNumber": "1341-2004-008457",
"address": "경기도 성남시 분당구 ...",
"propertyType": "building",
"ownerName": "홍길동",
"isActive": true,
"createdAt": "2024-06-01T09:00:00.000Z",
"recipients": [
{ "name": "담당자", "phone": "010-1234-5678" }
]
}
],
"total": 10,
"page": 1,
"totalPages": 1
}/api/v1/alerts알림 등록부동산 변동 알림을 등록합니다. 등록 시 1건당 첫 달 요금이 크레딧에서 차감됩니다(금액은 요금표 참고).
{
"uniqueNumber": "1341-2004-008457",
"address": "경기도 성남시 분당구 ...",
"propertyType": "building",
"ownerName": "홍길동",
"recipients": [
{ "name": "담당자", "phone": "010-1234-5678" }
]
}파라미터
| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
| uniqueNumber* | string | — | 14자리 고유번호 |
| recipients* | array | — | 수신자 배열 [{name, phone}] |
| ownerName | string | — | 소유자 이름 (미전달 시 최근 열람에서 자동 추출) |
| address | string | — | 주소 |
| propertyType | string | 'building' | 부동산 유형 |
응답 200
{
"message": "알림이 등록되었습니다.",
"alert": {
"id": "alert_abc123",
"uniqueNumber": "1341-2004-008457",
"isActive": true,
"recipients": [
{ "name": "담당자", "phone": "010-1234-5678" }
]
}
}에러 응답
{
"error": "크레딧이 부족합니다."
}{
"error": "이미 등록된 부동산입니다."
}/api/v1/alerts/{id}알림 수정알림의 활성/비활성 토글, 수신자 연락처 업데이트 등을 수행합니다. 비활성 상태에서 다시 활성화할 때 월 과금이 적용될 수 있습니다.
활성/비활성 토글
{
"isActive": true
}수신자 업데이트
{
"recipients": [
{ "name": "담당자A", "phone": "010-1111-2222" },
{ "name": "담당자B", "phone": "010-3333-4444" }
]
}응답 200
{
"id": "alert_abc123",
"uniqueNumber": "1341-2004-008457",
"isActive": true,
"recipients": [
{ "name": "담당자A", "phone": "010-1111-2222" },
{ "name": "담당자B", "phone": "010-3333-4444" }
]
}/api/v1/alerts/{id}알림 삭제등록된 알림을 삭제합니다. 관련 수신자와 알림 로그도 함께 삭제됩니다.
{
"message": "알림이 삭제되었습니다."
}/api/v1/alerts/owner-name소유자 조회고유번호에 대한 소유자 이름을 최근 열람 데이터에서 조회합니다.
Query Parameters
| 파라미터 | 타입 | 기본값 | 설명 |
|---|---|---|---|
| uniqueNumber* | string | — | 고유번호 |
curl -X GET "https://deunggigo.kr/api/v1/alerts/owner-name?uniqueNumber=1341-2004-008457" \
-H "Authorization: Bearer dgg_xxx"{
"ownerName": "홍길동"
}웹훅 URL 알림
변동알림을 받을 URL을 등록·관리하는 API입니다. 현재는 등록과 테스트 발송(POST /api/v1/webhooks/{id}/test)을 지원하며, 변동 감지 이벤트 발송은 준비 중입니다.
/api/v1/webhooks웹훅 등록| 파라미터 | 타입 | 설명 | |
|---|---|---|---|
| url* | string | — | 수신 URL (http/https, 내부·사설 IP 불가) |
| name | string | — | (선택) 식별용 이름 |
| events | string[] | ['alert.detected'] | 구독 이벤트. 현재 변동알림(alert.detected)만 지원 |
{
"webhook": { "id": "wh_...", "url": "https://example.com/webhook", "events": ["alert.detected"], "isActive": true }
}/api/v1/webhooks웹훅 목록등록된 웹훅 목록을 반환합니다.
/api/v1/webhooks/{id}수정 (url / name / events / isActive)전달한 필드만 수정됩니다. isActive: false로 일시 중지할 수 있습니다.
/api/v1/webhooks/{id}삭제웹훅과 발송 로그를 함께 삭제합니다.
/api/v1/webhooks/{id}/test테스트 전송샘플 payload를 즉시 전송하고 응답(HTTP 상태·본문)을 반환합니다. 결과는 발송 로그에도 기록됩니다.
/api/v1/webhooks/{id}/logs발송 로그 조회최근 발송 결과(이벤트·응답 상태·시각)를 페이지네이션으로 조회합니다.
수신 payload
{
"event": "alert.detected",
"id": "<delivery id>",
"created_at": "2026-10-14T12:00:00.000Z",
"data": { "uniqueNumber": "1111-0000-000000", "address": "서울특별시 ○○구 ○○동", "changeSummary": "소유권 변동 감지(테스트)" }
}식별용으로 X-Deunggigo-Event, X-Deunggigo-Delivery 헤더가 함께 전송됩니다.
에러 코드
공통 에러 응답 형식
{
"error": "에러 메시지"
}HTTP 상태 코드
| 상태 코드 | 설명 |
|---|---|
| 400 | 필수 파라미터 누락 또는 잘못된 값 |
| 401 | API 키가 없거나 유효하지 않음 |
| 402 | 크레딧 부족 — 충전 후 재시도 |
| 404 | 요청한 리소스를 찾을 수 없음 |
| 409 | 중복 요청 |
| 500 | 서버 오류 — 잠시 후 재시도 |