API 요청
/rest/hipass_unpaid요청 파라미터 1개 · 필수 1
car_no- 예시
12가3456
응답 필드 10개
datadata.resultdata.result.car_nodata.result.unpaid_targetdata.result.unpaid_countdata.result.checked_atapiapi.costapi.successapi.ms차량번호 하나로 고속도로 하이패스 미납통행료 대상 여부와 미납 건수를 확인합니다. 차량을 사고팔기 전이나 통행료를 납부하기 전에 미납이 있는지 빠르게 확인할 때 씁니다.
https://apick.app/rest/hipass_unpaid미납이 있는 조회 한 건당 60P가 차감됩니다. 실제 차감액은 응답의 api.cost에서 확인하세요.
미납이 없으면 unpaid_target=false, 건수 0으로 응답하며 과금되지 않습니다.
차량번호 형식이 맞지 않거나 조회에 실패하면 과금되지 않습니다.
이 API는 미납 여부와 건수만 제공합니다. 통행일시·구간·금액 같은 미납 내역은 제공하지 않습니다.
/rest/hipass_unpaidcar_no12가3456datadata.resultdata.result.car_nodata.result.unpaid_targetdata.result.unpaid_countdata.result.checked_atapiapi.costapi.successapi.msPOST https://apick.app/rest/hipass_unpaidAuthorization: Bearer — 내 계정의 API 인증키multipart/form-data차량번호로 미납 여부를 확인하는 예입니다. 미납이 있으면 과금되는 실제 요청입니다.
상황별로 보내는 값과 응답에서 확인할 값을 모았습니다. 언어 탭에서 그대로 복사해 쓸 수 있습니다.
중고차 거래 전이나 통행료 납부 안내 전에 미납이 있는지 확인합니다.
/rest/hipass_unpaidcurl --fail-with-body --request POST 'https://apick.app/rest/hipass_unpaid' \
--header "Authorization: Bearer $APICK_API_KEY" \
--form-string 'car_no=12가3456'const form = new FormData();
form.append("car_no", "12가3456");
const response = await fetch("https://apick.app/rest/hipass_unpaid", {
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);import os
import requests
parts = [
("car_no", (None, "12가3456")),
]
response = requests.request("POST", "https://apick.app/rest/hipass_unpaid",
headers={"Authorization": "Bearer " + os.environ["APICK_API_KEY"]},
files=parts,
timeout=(10, 120))
response.raise_for_status()
result = response.json()
print(result)<?php
$headers = ["Authorization: Bearer " . getenv("APICK_API_KEY")];
$form = [
'car_no' => '12가3456',
];
$curl = curl_init('https://apick.app/rest/hipass_unpaid');
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.result.unpaid_target이 true이면 미납이 있습니다. data.result.unpaid_count로 건수를 안내하세요.unpaid_target이 false, api.cost가 0입니다.번호판에 지역명이 남아 있는 차량은 표기 그대로 보냅니다. 공백은 넣어도 자동으로 지워집니다.
/rest/hipass_unpaidcurl --fail-with-body --request POST 'https://apick.app/rest/hipass_unpaid' \
--header "Authorization: Bearer $APICK_API_KEY" \
--form-string 'car_no=서울12가3456'const form = new FormData();
form.append("car_no", "서울12가3456");
const response = await fetch("https://apick.app/rest/hipass_unpaid", {
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);import os
import requests
parts = [
("car_no", (None, "서울12가3456")),
]
response = requests.request("POST", "https://apick.app/rest/hipass_unpaid",
headers={"Authorization": "Bearer " + os.environ["APICK_API_KEY"]},
files=parts,
timeout=(10, 120))
response.raise_for_status()
result = response.json()
print(result)<?php
$headers = ["Authorization: Bearer " . getenv("APICK_API_KEY")];
$form = [
'car_no' => '서울12가3456',
];
$curl = curl_init('https://apick.app/rest/hipass_unpaid');
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_code가 INPUT_INVALID이면 번호판 표기를 다시 확인합니다. 영문·특수문자는 넣지 않습니다.data.error_code가 UPSTREAM_FAILED이면 과금되지 않으니 잠시 후 같은 값으로 다시 요청합니다.HTTP 성공과 업무 결과를 구분하세요. 경로별 응답 필드와 예시는 위 요청과 응답에 함께 있습니다.
{
"data": {
"result": {
"car_no": "12가3456",
"unpaid_target": true,
"unpaid_count": 2,
"checked_at": "2026-10-20T00:30:00.000Z"
}
},
"api": { "cost": 60, "success": true, "ms": 900 }
}
등록되지 않은 차량번호도 형식만 맞으면 미납 없음(unpaid_target=false)으로 응답합니다. 차량 존재 여부를 확인하는 용도로는 쓰지 마세요.
응답을 아래 순서로 확인하세요. 결과 유무와 과금 여부는 서로 다릅니다.
data.error(사유 문구)와 data.success=0을 돌려줍니다. HTTP 상태는 사유에 따라 400·404·408·424 중 하나입니다.api.cost는 0이며 과금되지 않습니다. data.error 문구를 그대로 기록하고 사용자에게 보여 주세요.{
"data": {
"error": "입력값을 확인해 주세요.",
"success": 0
},
"api": {
"success": true,
"cost": 0,
"ms": 5
}
}실패하면 data.error(안내 문구)와 data.error_code가 오며 과금되지 않습니다.
car_no를 보내지 않았습니다.12가3456) 다시 보냅니다. 영문·특수문자는 넣지 않습니다.FORM_DATA_INVALIDFORM_DATA_FIELD_CONFLICTMULTIPART_LIMIT_OR_PARSE_ERROR실제 차감 금액은 응답의 api.cost로 확인하세요. 상세 요금은 요금정책에서 볼 수 있습니다.