# 차량 침수차 여부 조회



차량번호 또는 차대번호로 자동차의 침수 여부를 조회합니다.



인증: Authorization: Bearer $APICK_API_KEY

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

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



## POST /rest/get_car_flooding 응답 필드

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

- `data.result` (integer): 조회 결과 본문입니다. 서비스가 찾은 실제 데이터가 들어 있으며, 자료가 없거나 조회에 실패하면 null이거나 필드가 생략됩니다.

- `data.msg` (string): 처리 결과를 사람이 읽을 수 있는 문장으로 설명합니다. 성공·실패 사유가 담기며, 오류 코드는 별도 필드에서 확인합니다.

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

- `data.error` (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_car_flooding



### 입력

- `type` (string, 필수): 조회 기준을 고릅니다. 1이면 차대번호(VIN), 2면 자동차등록번호를 사용합니다. 선택한 값과 실제 입력 필드가 다르면 조회되지 않습니다.

- `value` (string, 필수): 조회할 차량 식별자입니다. type=1이면 17자리 차대번호(VIN), type=2면 자동차등록번호를 넣습니다. type과 값의 형식이 다르면 조회되지 않습니다.



### 응답 명세

```json

{
  "type": "object",
  "properties": {
    "data": {
      "type": "object",
      "properties": {
        "result": {
          "type": "integer",
          "description": "조회 결과입니다. 0: 침수 이력 없음, 1: 침수 이력 있음."
        },
        "msg": {
          "type": "string",
          "description": "조회 결과 안내 문구입니다. 화면에 그대로 보여 줄 수 있습니다."
        },
        "success": {
          "type": "integer",
          "description": "1이면 정상 조회되어 과금된 응답, 0이면 실패(과금 없음)입니다."
        },
        "error": {
          "type": "string",
          "description": "실패 사유입니다. 이 필드가 있으면 과금되지 않습니다."
        }
      }
    },
    "api": {
      "type": "object",
      "properties": {
        "success": {
          "type": "boolean"
        },
        "cost": {
          "type": "integer",
          "description": "차감된 포인트입니다. 실패하면 0입니다."
        },
        "ms": {
          "type": "integer",
          "description": "처리 시간(밀리초)입니다."
        },
        "pl_id": {
          "type": "integer",
          "description": "결제 기록 번호입니다. 문의할 때 함께 알려 주세요. 실패 응답에는 없습니다."
        }
      }
    }
  }
}

```

### 정적 응답 예시

```json

{
  "data": {
    "result": 0,
    "msg": "침수사고내역이 없습니다",
    "success": 1
  },
  "api": {
    "success": true,
    "cost": 10,
    "ms": 156,
    "pl_id": 8417706
  }
}

```

### curl

```curl

curl --fail-with-body --request POST 'https://apick.app/rest/get_car_flooding' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'type=1' \
  --form-string 'value=KMHD341CBNU123456'

```

### Node.js (서버 ESM)

```javascript

const form = new FormData();
form.append("type", "1");
form.append("value", "KMHD341CBNU123456");
const response = await fetch("https://apick.app/rest/get_car_flooding", {
  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 = [
    ("type", (None, "1")),
    ("value", (None, "KMHD341CBNU123456")),
]
response = requests.request("POST", "https://apick.app/rest/get_car_flooding",
    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 = [
    'type' => '1',
    'value' => 'KMHD341CBNU123456',
];
$curl = curl_init('https://apick.app/rest/get_car_flooding');
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. 차대번호로 침수 이력 확인

중고차 매물의 차대번호(17자리)를 알고 있을 때 가장 정확한 방법입니다.

```bash

curl --fail-with-body --request POST 'https://apick.app/rest/get_car_flooding' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'type=1' \
  --form-string 'value=KMHD341CBNU123456'

```

- `data.result`가 1이면 침수 이력이 있습니다. 0이면 없습니다. 이력 유무와 관계없이 성공하면 과금됩니다.

- `data.msg`는 안내 문구라 바뀔 수 있으니 판정에는 `data.result`만 씁니다.

- `value`는 그대로 조회하므로 앞뒤 공백 없이 정확히 17자로 보냅니다.

## 사용 예시 2. 차량번호로 침수 이력 확인

번호판만 알 때 씁니다.

```bash

curl --fail-with-body --request POST 'https://apick.app/rest/get_car_flooding' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'type=2' \
  --form-string 'value=12가3456'

```

- `data.error`가 있으면 과금되지 않습니다. "필수 입력값이 없습니다."(HTTP 400)이면 입력값을 고치고, "알 수 없는 이유로 실패했습니다."(HTTP 424)이면 잠시 후 다시 요청합니다.

- 응답은 최대 30초까지 걸릴 수 있으니 요청 시간 제한을 35초 이상으로 잡습니다.

## 코드·오류

### 업무 실패 응답

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

```

## 상세 기능·요금

이용 전 확인 조회에 성공하면 침수 이력 유무와 관계없이 한 건당 10P가 차감됩니다. 실제 차감액은 응답의 api.cost에서 확인하세요. 입력값이 잘못됐거나 조회에 실패하면 data.error로 응답하며 과금되지 않습니다(api.cost 0). 차대번호(17자리)나 차량번호 중 하나로 조회합니다. 번호판이 바뀐 차량처럼 차량을 정확히 특정해야 하면 차대번호를 쓰세요. 응답 시간은 보통 5초 이내이고 최대 30초입니다. 요청 시간 제한을 35초 이상으로 잡으세요. 인증키는 서버 환경변수에 보관하고 공개 저장소·웹페이지에 넣지 마세요.

## 상세 요청

항목설정 메서드·주소POST https://apick.app/rest/get_car_flooding 인증 헤더Authorization: Bearer — 내 계정의 API 인증키 본문 형식multipart/form-data 요청 예시 차대번호로 조회하는 예입니다. 성공 시 과금되는 실제 요청입니다. form-data 전체 예제 보기 차량번호로 조회하려면 type=2, value=12가3456처럼 보냅니다. 요금은 같습니다.

## 상세 응답

필드타입설명 data.resultinteger조회 결과입니다. 0: 침수 이력 없음, 1: 침수 이력 있음. data.msgstring조회 결과 안내 문구입니다. 화면에 그대로 보여 줄 수 있습니다. data.successinteger1이면 정상 조회되어 과금된 응답, 0이면 실패(과금 없음)입니다. data.errorstring실패 사유입니다. 이 필드가 있으면 과금되지 않습니다. api.costinteger차감된 포인트입니다. 실패하면 0입니다. api.msinteger처리 시간(밀리초)입니다. api.pl_idinteger결제 기록 번호입니다. 문의할 때 함께 알려 주세요. 실패 응답에는 없습니다. { "data": { "result": 0, "msg": "침수사고내역이 없습니다", "success": 1 }, "api": { "success": true, "cost": 10, "ms": 156, "pl_id": 8417706 } } 판단은 data.result로 합니다. data.msg 문구는 바뀔 수 있으므로 문자열 비교로 판정하지 마세요. data.result가 1이면 data.msg를 함께 보여 주어 사용자가 내용을 확인하게 하세요.

## 상세 코드·정책

오류와 복구 아래 경우는 data.error로 응답하며 과금되지 않습니다(api.cost 0). 실패 응답은 표의 HTTP 상태 코드와 함께 옵니다. 화면에 보여 줄 안내는 본문의 data.error를 쓰세요. 상황HTTPdata.error해결 type이 1·2가 아님, value가 비었음, 차대번호가 17자가 아님400필수 입력값이 없습니다.type과 value를 고쳐 다시 요청합니다. 차대번호의 앞뒤 공백도 확인합니다. 일시적 조회 실패·30초 안에 결과 없음424알 수 없는 이유로 실패했습니다.잠시 후 같은 값으로 다시 요청합니다.

## 상세 예제

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