# 등기·증명서 발급확인



증명서 오른쪽 아래에 인쇄된 발급확인번호(12자리)로 그 증명서가 실제로 발급된 것인지 확인합니다. 발급 사실과 함께 증명서 종류·발급일·등기소를 돌려줍니다. 부동산·법인·동산채권담보 등기사항증명서를 지원합니다.



인증: Authorization: Bearer $APICK_API_KEY

본문 있는 REST 요청: multipart/form-data. GET 본문 및 MCP JSON-RPC 규격은 해당 명세를 따릅니다.

인증키는 서버에 보관하세요. 모든 예제는 정적 자료입니다.



## POST /rest/registry_doc_verify 응답 필드

- `data` (object): 요청 처리 결과 묶음입니다. 조회한 값·작업 상태·오류 설명이 이 안에 들어 있으며, 실제 하위 필드 구성은 서비스마다 다릅니다. 값이 없으면 null·빈 배열·필드 생략 중 해당 서비스의 규칙을 따릅니다.

- `data.verified` (boolean): 발급 사실이 확인됐는지 여부입니다. status가 confirmed일 때만 true입니다. true = 이 필드가 나타내는 조건이 성립한 경우, false = 성립하지 않은 경우입니다. 두 값 모두 정상 응답에 올 수 있으며, 값이 없으면 필드가 생략되거나 null일 수 있습니다.

- `data.status` (string): 현재 처리 상태 코드입니다. 괄호 안 설명은 이 서비스에서의 상태 의미이며, 값별 다음 행동은 이 문서의 상태 표를 확인하세요. 상태가 바뀌면 같은 경로를 다시 조회합니다.

- `data.message` (string): 결과를 사용자에게 보여 줄 때 그대로 쓸 수 있는 문장입니다. 문자열로 오며, 값이 없으면 빈 문자열이거나 필드가 생략됩니다. 같은 응답의 다른 필드와 함께 해석하세요.

- `data.kind` (string): 확인한 문서 종류입니다. 문자열로 오며, 값이 없으면 빈 문자열이거나 필드가 생략됩니다. 같은 응답의 다른 필드와 함께 해석하세요.

- `data.document` (string): 증명서 종류입니다. 예: 등기사항전부증명서(현재 유효사항). 확인되지 않으면 null입니다. null 허용.

- `data.issued_date` (string): 발급일입니다. YYYY-MM-DD 형식이며 확인되지 않으면 null입니다. null 허용.

- `data.registry_office` (string): 발급한 등기소입니다. 확인되지 않으면 null입니다. 문자열로 오며, 값이 없으면 빈 문자열이거나 필드가 생략됩니다. 같은 응답의 다른 필드와 함께 해석하세요. null 허용.

- `api` (object): API 호출 메타데이터입니다. 이번 요청의 서버 처리 성공 여부(api.success), 실제 차감 포인트(api.cost), 결제 기록 ID(api.pl_id)를 담습니다. 처리 시간(api.ms)은 응답에 포함된 경우에만 제공됩니다. 업무 결과는 data에서 확인합니다.

- `api.cost` (integer): 이번 호출에서 실제로 차감된 포인트입니다. 유료 성공 응답에서만 단가만큼 차감되며, 실패·무료 조회·같은 요청의 멱등 재전송은 0입니다. 화면의 표시 단가와 실제 차감액이 다를 수 있으므로 정산은 이 값을 기준으로 합니다.

- `api.success` (boolean): API 서버가 이번 요청을 정상 처리했는지 여부입니다. true여도 업무 결과가 실패일 수 있으므로 data.success·data.status와 함께 판단합니다. 인증 실패·잘못된 입력·서버 오류 응답에서는 false입니다.

- `api.ms` (integer): 서버가 요청을 받아 응답 본문을 만들기까지 걸린 처리 시간(밀리초)입니다. 네트워크 왕복 시간과 클라이언트 대기 시간은 포함되지 않습니다.

## API 요청: POST /rest/registry_doc_verify



### 입력

- `issue_no` (string, 필수): 발급확인번호 12자리. 하이픈·공백 표기도 받습니다 (예: 2024-1234-5678)

- `kind` (string, 선택): 문서 종류 (기본 realestate) 문자열로 보내며, 생략하면 서버 기본값이 적용되거나 해당 조건이 해제됩니다. 가능한 값은 3가지입니다. realestate = realestate 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. corporate = corporate 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. movable = movable 값을 뜻하며, 같은 응답의 다른 필드와 함께 해석하세요. 허용값: realestate, corporate, movable



### 응답 명세

```json

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "verified": {
          "type": "boolean",
          "description": "발급 사실이 확인됐는지 여부입니다. status가 confirmed일 때만 true입니다."
        },
        "status": {
          "type": "string",
          "description": "확인 결과 코드입니다. 아래 표를 참고하세요."
        },
        "message": {
          "type": "string",
          "description": "결과를 사용자에게 보여 줄 때 그대로 쓸 수 있는 문장입니다."
        },
        "kind": {
          "type": "string",
          "description": "확인한 문서 종류입니다."
        },
        "document": {
          "type": "string",
          "description": "증명서 종류입니다. 예: 등기사항전부증명서(현재 유효사항). 확인되지 않으면 null입니다.",
          "nullable": true
        },
        "issued_date": {
          "type": "string",
          "description": "발급일입니다. YYYY-MM-DD 형식이며 확인되지 않으면 null입니다.",
          "nullable": true
        },
        "registry_office": {
          "type": "string",
          "description": "발급한 등기소입니다. 확인되지 않으면 null입니다.",
          "nullable": true
        }
      }
    },
    "api": {
      "type": "object",
      "properties": {
        "cost": {
          "type": "integer",
          "description": "차감된 포인트입니다. 실패한 응답은 0입니다."
        },
        "success": {
          "type": "boolean"
        },
        "ms": {
          "type": "integer",
          "description": "처리 시간(밀리초)입니다."
        }
      }
    }
  }
}

```

### 정적 응답 예시

```json

{
  "data": {
    "verified": true,
    "status": "confirmed",
    "message": "발급 사실을 확인했습니다.",
    "kind": "realestate",
    "document": "등기사항전부증명서(현재 유효사항)",
    "issued_date": "2024-10-02",
    "registry_office": "서울중앙지방법원 등기국"
  },
  "api": {
    "cost": 60,
    "success": true,
    "ms": 410
  }
}

```

### curl

```curl

curl --fail-with-body --request POST 'https://apick.app/rest/registry_doc_verify' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'issue_no=2024-1234-5678' \
  --form-string 'kind=realestate'

```

### Node.js (서버 ESM)

```javascript

const form = new FormData();
form.append("issue_no", "2024-1234-5678");
form.append("kind", "realestate");
const response = await fetch("https://apick.app/rest/registry_doc_verify", {
  method: "POST",
  headers: { Authorization: "Bearer " + process.env.APICK_API_KEY },
  body: form,
  signal: AbortSignal.timeout(120_000),
});
if (!response.ok) throw new Error(`HTTP ${response.status}: ${await response.text()}`);
const result = await response.json();
console.log(result);

```

### python

```python

import os
import requests
parts = [
    ("issue_no", (None, "2024-1234-5678")),
    ("kind", (None, "realestate")),
]
response = requests.request("POST", "https://apick.app/rest/registry_doc_verify",
    headers={"Authorization": "Bearer " + os.environ["APICK_API_KEY"]},
    files=parts,
    timeout=(10, 120))
response.raise_for_status()
result = response.json()
print(result)

```

### php

```php

<?php
$headers = ["Authorization: Bearer " . getenv("APICK_API_KEY")];
$form = [
    'issue_no' => '2024-1234-5678',
    'kind' => 'realestate',
];
$curl = curl_init('https://apick.app/rest/registry_doc_verify');
curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => $headers,
    CURLOPT_POSTFIELDS => $form,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CONNECTTIMEOUT => 10, CURLOPT_TIMEOUT => 120,
]);
$body = curl_exec($curl);
if ($body === false) { throw new RuntimeException(curl_error($curl)); }
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($status >= 400) { throw new RuntimeException($body); }
$result = json_decode($body, true, 512, JSON_THROW_ON_ERROR);
print_r($result);

```

## 코드·오류

### 업무 실패 응답

입력 오류·대상 없음·일시 실패는 data.error(사유)와 data.success=0으로 오며 api.cost는 0(과금 없음)입니다. HTTP 상태는 400·404·408·424 중 하나입니다. 입력 오류는 값을 고쳐 다시 요청하고, 408·424는 잠시 후 한 번 다시 시도하세요.

```json

{
  "data": {
    "error": "입력값을 확인해 주세요.",
    "success": 0
  },
  "api": {
    "success": true,
    "cost": 0,
    "ms": 5
  }
}

```

## 상세 기능·요금

이용 전 확인 성공한 확인 한 건당 60P가 차감됩니다. 실제 차감액은 응답의 api.cost에서 확인하세요. 발급일로부터 3개월이 지난 번호는 발급 사실을 확인할 수 없습니다. 오래 보관한 증명서의 확인이 필요하면 발급일을 먼저 확인하세요. 발급확인번호는 확인에 쓸 수 있는 횟수가 정해져 있습니다. 같은 번호를 반복해서 확인하면 count_exhausted가 돌아올 수 있습니다. 확인 결과는 발급 사실과 서지 정보뿐입니다. 증명서 원문(PDF)과 기재 내용(소유자·권리관계 등)은 제공하지 않습니다. 인증키는 서버 환경변수에 보관하고 공개 저장소·웹페이지에 넣지 마세요.

## 상세 요청

항목설정 메서드·주소POST https://apick.app/rest/registry_doc_verify 인증 헤더Authorization: Bearer — 내 계정의 API 인증키 본문 형식multipart/form-data kind 허용값 값문서 realestate부동산 등기사항증명서 (기본값) corporate법인 등기사항증명서 movable동산·채권담보 등기사항증명서 번호가 12자리가 아니면 확인을 시도하지 않고 바로 실패합니다. 확인 횟수를 아끼려면 번호를 먼저 검사하세요. 요청 예시 form-data 전체 예제 보기

## 상세 응답

필드타입설명 data.verifiedboolean발급 사실이 확인됐는지 여부입니다. status가 confirmed일 때만 true입니다. data.statusstring확인 결과 코드입니다. 아래 표를 참고하세요. data.messagestring결과를 사용자에게 보여 줄 때 그대로 쓸 수 있는 문장입니다. data.kindstring확인한 문서 종류입니다. data.documentstring증명서 종류입니다. 예: 등기사항전부증명서(현재 유효사항). 확인되지 않으면 null입니다. data.issued_datestring발급일입니다. YYYY-MM-DD 형식이며 확인되지 않으면 null입니다. data.registry_officestring발급한 등기소입니다. 확인되지 않으면 null입니다. api.costinteger차감된 포인트입니다. 실패한 응답은 0입니다. api.msinteger처리 시간(밀리초)입니다. status 값 값의미 confirmed발급 사실이 확인됐습니다. not_found발급일로부터 3개월이 지났거나 발급되지 않은 번호입니다. count_exhausted확인 가능 횟수를 모두 사용한 번호입니다. invalid_format번호 형식이 맞지 않습니다. not_opened등기기록이 개설되지 않은 증명서로 발급된 번호입니다. 동산·채권담보에서만 나옵니다. unknown발급 사실을 확인하지 못했습니다. 번호를 다시 확인하세요. { "data": { "verified": true, "status": "confirmed", "message": "발급 사실을 확인했습니다.", "kind": "realestate", "document": "등기사항전부증명서(현재 유효사항)", "issued_date": "2024-10-02", "registry_office": "서울중앙지방법원 등기국" }, "api": { "cost": 60, "success": true, "ms": 410 } } verified가 false인 응답은 오류가 아니라 확인 결과입니다. status·message를 그대로 보여 주면 됩니다.

## 상세 예제

호출 예시 같은 요청을 JavaScript와 Python으로 옮긴 예시입니다. 키는 환경변수 APICK_API_KEY 에서 읽습니다. JavaScript 예시 form-data 전체 예제 보기 Python 예시 form-data 전체 예제 보기
