# 개인통관고유부호 조회



req_pccc 로 받은 tx_id 로 처리 상태를 확인합니다. 사용자가 승인하기 전에는 인증 대기 상태를 돌려주고, 승인되면 개인통관고유부호와 주소를 반환합니다.



인증: Authorization: Bearer $APICK_API_KEY

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

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



## POST /rest/get_pccc 응답 필드

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

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

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

- `data.message` (string): 대기·준비 중이면 상태 안내, 발급된 부호가 없으면 조회된 개인통관고유부호가 없습니다.입니다. 조회 완료 응답에는 없습니다.

- `data.success` (integer): 업무 처리 결과 코드입니다. 1은 정상 결과, 0은 실패 또는 무료 응답입니다. 서비스에 따라 2·3처럼 추가 코드를 쓰므로 같은 응답의 status·msg·error 필드도 함께 확인하세요.

- `data.checked_at` (string): 정보를 확인한 시각(ISO 8601, 한국시간 +09:00)입니다. verified일 때 옵니다. 재조회 기한(24시간)의 기준입니다.

- `data.개인통관고유부호` (string): P로 시작하는 13자리 개인통관고유부호입니다. 문자열로 오며, 값이 없으면 빈 문자열이거나 필드가 생략됩니다. 같은 응답의 다른 필드와 함께 해석하세요.

- `data.이름` (string): 부호에 등록된 이름입니다. 문자열로 오며, 값이 없으면 빈 문자열이거나 필드가 생략됩니다. 같은 응답의 다른 필드와 함께 해석하세요.

- `data.주소` (string): [우편번호] 기본주소 상세주소 형식입니다. 등록된 주소가 없으면 빈 문자열입니다.

- `data.전화번호` (string): 사업장 대표 전화번호입니다. 지역번호가 포함될 수 있고, 자료에 따라 하이픈이 있거나 없을 수 있습니다.

- `data.사용여부` (string): 부호의 사용 상태입니다. 예: 사용. 사용 중이 아니면 통관에 쓸 수 없으니 사용자에게 재발급을 안내하세요.

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

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

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

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

- `api.pl_id` (integer): 포인트 차감 기록 ID입니다. 차감이 발생한 호출에만 값이 있으며, 과금 내역을 문의할 때 이 번호를 사용합니다. 무과금 응답은 -1·null이거나 필드가 생략됩니다.

## API 요청: POST /rest/get_pccc



### 입력

- `tx_id` (string, 필수): req_pccc 응답의 트랜잭션 ID 문자열로 보내며, 빼거나 빈 값으로 보내면 요청이 거부됩니다.



### 응답 명세

```json

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "tx_id": {
          "type": "string",
          "description": "요청한 거래 ID입니다."
        },
        "status": {
          "type": "string",
          "description": "pending·collecting·verified 중 하나입니다."
        },
        "message": {
          "type": "string",
          "description": "대기·준비 중이면 상태 안내, 발급된 부호가 없으면 조회된 개인통관고유부호가 없습니다.입니다. 조회 완료 응답에는 없습니다."
        },
        "success": {
          "type": "integer",
          "description": "1: 부호를 돌려준 과금 응답, 0: 대기·부호 없음·실패(과금 없음)."
        },
        "checked_at": {
          "type": "string",
          "description": "정보를 확인한 시각(ISO 8601, 한국시간 +09:00)입니다. verified일 때 옵니다. 재조회 기한(24시간)의 기준입니다."
        },
        "개인통관고유부호": {
          "type": "string",
          "description": "P로 시작하는 13자리 개인통관고유부호입니다."
        },
        "이름": {
          "type": "string",
          "description": "부호에 등록된 이름입니다."
        },
        "주소": {
          "type": "string",
          "description": "[우편번호] 기본주소 상세주소 형식입니다. 등록된 주소가 없으면 빈 문자열입니다."
        },
        "전화번호": {
          "type": "string",
          "description": "부호에 등록된 전화번호입니다."
        },
        "사용여부": {
          "type": "string",
          "description": "부호의 사용 상태입니다. 예: 사용. 사용 중이 아니면 통관에 쓸 수 없으니 사용자에게 재발급을 안내하세요."
        }
      }
    },
    "api": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        },
        "cost": {
          "type": "integer",
          "description": "차감된 포인트입니다."
        },
        "ms": {
          "type": "integer"
        },
        "pl_id": {
          "type": "integer",
          "description": "결제 기록 번호입니다. 과금 없는 대기·부호 없음 응답은 -1입니다."
        }
      }
    }
  }
}

```

### 정적 응답 예시

```json

{
  "data": {
    "tx_id": "9f2c4a7b1d8e35c60a4f7b2d1e9c80bb",
    "status": "pending",
    "message": "인증 대기중입니다.",
    "success": 0
  },
  "api": {
    "success": true,
    "cost": 0,
    "ms": 412,
    "pl_id": -1
  }
}

```

### 정적 응답 예시

```json

{
  "data": {
    "tx_id": "9f2c4a7b1d8e35c60a4f7b2d1e9c80bb",
    "status": "verified",
    "checked_at": "2026-09-19T20:14:07.318+09:00",
    "개인통관고유부호": "P123456789012",
    "이름": "홍길동",
    "주소": "[12345] 서울특별시 중구 세종대로 1 101호",
    "전화번호": "01012345678",
    "사용여부": "사용",
    "success": 1
  },
  "api": {
    "success": true,
    "cost": 20,
    "ms": 2834,
    "pl_id": 4904
  }
}

```

### 정적 응답 예시

```json

{
  "data": {
    "tx_id": "9f2c4a7b1d8e35c60a4f7b2d1e9c80bb",
    "status": "verified",
    "checked_at": "2026-09-19T20:14:07.318+09:00",
    "message": "조회된 개인통관고유부호가 없습니다.",
    "success": 0
  },
  "api": {
    "success": true,
    "cost": 0,
    "ms": 2648,
    "pl_id": -1
  }
}

```

### curl

```curl

curl --fail-with-body --request POST 'https://apick.app/rest/get_pccc' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'tx_id=9f2c4a7b1d8e35c60a4f7b2d1e9c80bb'

```

### Node.js (서버 ESM)

```javascript

const form = new FormData();
form.append("tx_id", "9f2c4a7b1d8e35c60a4f7b2d1e9c80bb");
const response = await fetch("https://apick.app/rest/get_pccc", {
  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 = [
    ("tx_id", (None, "9f2c4a7b1d8e35c60a4f7b2d1e9c80bb")),
]
response = requests.request("POST", "https://apick.app/rest/get_pccc",
    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 = [
    'tx_id' => '9f2c4a7b1d8e35c60a4f7b2d1e9c80bb',
];
$curl = curl_init('https://apick.app/rest/get_pccc');
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);

```

## 사용 예시 1. 승인 후 결과 받기

req_pccc로 받은 `tx_id`로 3~5초 간격으로 호출해 결과를 기다립니다.

```bash

curl --fail-with-body --request POST 'https://apick.app/rest/get_pccc' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'tx_id=9f2c4a7b1d8e35c60a4f7b2d1e9c80bb'

```

- `data.status`가 `pending`·`collecting`이면 과금 없이 다시 호출합니다.

- `data.status`가 `verified`이고 `data.개인통관고유부호`가 있으면 주문서에 채웁니다.

- 승인 직후 첫 호출은 최대 30초 걸릴 수 있으니 요청 시간 제한을 35초 이상으로 잡습니다. req_pccc의 `expires_at`이 지나도 대기가 이어지면 호출을 멈추고 다시 요청합니다.

## 사용 예시 2. 발급된 부호가 없는 사용자 처리

승인은 했지만 개인통관고유부호를 발급받은 적 없는 사용자를 처리합니다.

```bash

curl --fail-with-body --request POST 'https://apick.app/rest/get_pccc' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'tx_id=9f2c4a7b1d8e35c60a4f7b2d1e9c80bb'

```

- `data.message`가 "조회된 개인통관고유부호가 없습니다."이고 `data.success`가 0이면 과금되지 않았습니다. 발급 안내로 이어 주세요.

- `data.error`가 "인증 시간이 초과되었습니다."(5분 미승인)나 "조회 유효기간이 지났습니다. 다시 인증해 주세요."(24시간 경과)이면 req_pccc부터 다시 진행합니다.

## 코드·오류

### 업무 실패 응답

입력 오류·대상 없음·일시 실패는 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
  }
}

```

## 상세 기능·요금

이용 전 확인 개인통관고유부호 인증 요청(req_pccc)에서 받은 tx_id로 결과를 확인합니다. 사용자가 승인하기 전에는 status=pending을 돌려주며 과금되지 않습니다. 3~5초 간격으로 다시 호출하세요. 부호와 이름·주소·전화번호·사용여부를 돌려준 응답(data.success=1)만 건당 20P가 차감됩니다. 대기·준비 중, 정상 조회됐지만 발급된 부호가 없는 경우, 실패는 과금되지 않습니다. 승인이 끝난 결과는 확인 시각(data.checked_at)부터 24시간 동안 같은 tx_id로 다시 인증하지 않고 재조회할 수 있으며, 재조회할 때마다 과금됩니다. 24시간이 지나면 req_pccc부터 다시 진행하세요. 승인 직후 첫 호출은 결과를 준비하느라 최대 30초 걸릴 수 있습니다. 요청 시간 제한을 35초 이상으로 잡으세요. req_pccc 응답의 expires_at이 지났는데도 pending·collecting이 계속되면 호출을 멈추고 req_pccc부터 다시 진행하세요. 인증키는 서버 환경변수에 보관하고 공개 저장소·웹페이지에 넣지 마세요.

## 상세 요청

항목설정 메서드·주소POST https://apick.app/rest/get_pccc 인증 헤더Authorization: Bearer — 내 계정의 API 인증키 본문 형식multipart/form-data 요청 예시 form-data 전체 예제 보기

## 상세 응답

data.status뜻과금 pending사용자 승인 대기 중입니다. 같은 간격으로 다시 호출합니다.없음 collecting승인 후 결과를 준비하고 있습니다. 같은 간격으로 다시 호출합니다.없음 verified + data.개인통관고유부호조회 완료입니다.건당 20P verified + data.message정상 조회됐지만 발급된 부호가 없습니다.없음 만료·실패는 data.status 없이 data.error로 옵니다. 아래 오류와 복구 표를 보세요. 필드타입설명 data.tx_idstring요청한 거래 ID입니다. data.statusstringpending·collecting·verified 중 하나입니다. data.messagestring대기·준비 중이면 상태 안내, 발급된 부호가 없으면 조회된 개인통관고유부호가 없습니다.입니다. 조회 완료 응답에는 없습니다. data.checked_atstring정보를 확인한 시각(ISO 8601, 한국시간 +09:00)입니다. verified일 때 옵니다. 재조회 기한(24시간)의 기준입니다. data.개인통관고유부호stringP로 시작하는 13자리 개인통관고유부호입니다. data.이름string부호에 등록된 이름입니다. data.주소string[우편번호] 기본주소 상세주소 형식입니다. 등록된 주소가 없으면 빈 문자열입니다. data.전화번호string부호에 등록된 전화번호입니다. data.사용여부string부호의 사용 상태입니다. 예: 사용. 사용 중이 아니면 통관에 쓸 수 없으니 사용자에게 재발급을 안내하세요. data.successinteger1: 부호를 돌려준 과금 응답, 0: 대기·부호 없음·실패(과금 없음). api.costinteger차감된 포인트입니다. api.pl_idinteger결제 기록 번호입니다. 과금 없는 대기·부호 없음 응답은 -1입니다. 응답 예시 — 승인 대기 { "data": { "tx_id": "9f2c4a7b1d8e35c60a4f7b2d1e9c80bb", "status": "pending", "message": "인증 대기중입니다.", "success": 0 }, "api": { "success": true, "cost": 0, "ms": 412, "pl_id": -1 } } 응답 예시 — 조회 완료 { "data": { "tx_id": "9f2c4a7b1d8e35c60a4f7b2d1e9c80bb", "status": "verified", "checked_at": "2026-09-19T20:14:07.318+09:00", "개인통관고유부호": "P123456789012", "이름": "홍길동", "주소": "[12345] 서울특별시 중구 세종대로 1 101호", "전화번호": "01012345678", "사용여부": "사용", "success": 1 }, "api": { "success": true, "cost": 20, "ms": 2834, "pl_id": 4904 } } 응답 예시 — 발급된 부호 없음 { "data": { "tx_id": "9f2c4a7b1d8e35c60a4f7b2d1e9c80bb", "status": "verified", "checked_at": "2026-09-19T20:14:07.318+09:00", "message": "조회된 개인통관고유부호가 없습니다.", "success": 0 }, "api": { "success": true, "cost": 0, "ms": 2648, "pl_id": -1 } }

## 상세 코드·정책

오류와 복구 아래 경우는 data.error로 응답하며 과금되지 않습니다(api.cost 0). 실패 응답은 표의 HTTP 상태 코드와 함께 옵니다. 화면에 보여 줄 안내는 본문의 data.error를 쓰세요. 상황HTTPdata.error해결 tx_id가 없거나 32자리 영소문자·숫자가 아님400입력 항목이 잘못됐습니다.(tx_id)req_pccc 응답의 값을 그대로 넣습니다. 없는 tx_id이거나 다른 계정의 요청404요청을 찾을 수 없습니다.req_pccc를 호출한 계정의 API 키로 조회합니다. 5분 안에 승인하지 않아 인증 만료410인증 시간이 초과되었습니다.req_pccc부터 다시 진행합니다. API 인증키 문제가 아니므로 키를 바꾸지 마세요. 결과 재조회 기간(24시간)이 지남410조회 유효기간이 지났습니다. 다시 인증해 주세요.req_pccc부터 다시 진행합니다. API 인증키 문제가 아닙니다. 사용자가 휴대폰에서 인증을 거부함403인증이 거부되었습니다.과금되지 않습니다. 사용자에게 확인한 뒤 req_pccc부터 다시 진행합니다. 조회하지 못함424서비스 요청에 실패했습니다.사용자에게 확인한 뒤 req_pccc부터 다시 진행합니다.

## 상세 예제

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