개발가이드자동차 검사이력 조회

자동차 검사이력 조회

본인 간편인증 후 한국교통안전공단의 자동차 검사이력 조회 자료를 확인합니다. 차량번호: 조회한 자동차등록번호 검사이력: 정기검사 이력. 없으면 빈 배열이다.

기능·제공 범위

인증Authorization: Bearer
요청 본문form-data
제공 경로2개

접수 → 사용자 인증 → 상태 확인 → 결과 받기 순서로 연동합니다. 아래 경로별 설명에서 대기·실패·만료 상태를 구분하세요.

기능·요금·이용 조건 자세히 보기

조회 자료 제공 기관은 한국교통안전공단 입니다. 본인 인증은 한 번만 하면 되고, 담당 기관은 엔드포인트로 자동 선택됩니다.

한 번 인증으로 차량 통합이력조회 전체를 받으려면 차량 통합이력조회를 쓰세요. 묶음 조회는 결과 단가 1092P이고, 지금 이 조회는 60P입니다.

인증요청 → 사용자 승인 → 정보조회 → 정보제공 4단계이며, 과금은 인증요청 발송 성공결과 최초 제공 두 번만 발생합니다. 그 사이 반복 조회는 무과금입니다.

/rest/req_vehicle_inspection
20P · 인증요청 5분 유효
/rest/get_vehicle_inspection
60P × 데이터셋 1 × 조회범위 단위 · 결과 24시간 보관

이름·생년월일·휴대전화번호와 간편인증 방식을 입력하면 사용자에게 간편인증 요청을 보내고, 결과 조회에 사용할 transactionId 를 즉시 반환합니다.

인증요청과 결과조회는 완전히 분리되어 있습니다. 이 호출은 인증요청만 보내고 transactionId 를 즉시 반환합니다. 결과는 사용자가 승인한 뒤 /rest/get_vehicle_inspection 에 transactionId 를 넣어 확인합니다. 조회 항목마다 담당 기관이 다르지만, 인증기관은 엔드포인트로 자동 선택되므로 기관을 지정하는 파라미터는 없습니다. 이 응답의 expiresAt 까지만 승인할 수 있습니다. 남은 시간을 화면에 표시하고, 만료되면 사용자가 다시 요청할 수 있게 해 주세요.

2단계 · 결과조회 엔드포인트

Method
URL
POST
https://apick.app/rest/get_vehicle_inspection
이 API 는 polling 용도입니다. 호출 자체는 언제든 무료이며, 실제 결과가 최초로 반환되는 1회에만 과금됩니다. 같은 transactionId 로 다시 조회하면 charged=false 로 추가 과금이 없습니다. 인증 대기(AUTH_WAITING)·조회 중(COLLECTING)·실패(FAILED)·만료(AUTH_EXPIRED) 응답은 과금되지 않습니다. 결과를 받을 때까지 안심하고 반복 조회하세요. 결과가 준비된 뒤에는 조회 시각 기준 24시간 동안 재조회할 수 있습니다. 이 기간의 재조회는 무과금입니다. 응답에는 실제 정보를 확인한 시각이 checkedAt 으로 포함됩니다. 저장해 둔 값을 돌려주는 것이 아니라 그 시점에 확인한 값입니다. 폴링은 resultAvailable=true 를 받는 순간 멈추세요. 최대 시간은 expiresAt(인증 대기)까지이고, 그 뒤로는 결과가 나올 때까지입니다. 자세한 값은 호출 제한과 재시도를 참고하세요. 조회 항목이 여러 개인 상품은 일부만 성공하면 PARTIAL_SUCCESS 로 반환하며, 이때도 실제 조회된 데이터가 있으면 최초 1회 과금됩니다. 어느 항목이 성공·실패했는지는 sources 에 표시됩니다.
결과 단가는 60P × 데이터셋 수(1) × 조회범위 단위 수입니다 (조회범위 옵션 없음 → 1단위). 조회범위는 인증 요청할 때 정하며, 좁히면 단가도 내려갑니다.

빠른 시작

인증키를 Authorization: Bearer 헤더에 넣고 아래 예제의 입력값을 바꾸세요. 요청 본문은 폼 항목별로 전달합니다.

POST /rest/req_vehicle_inspection
curl --request POST 'https://apick.app/rest/req_vehicle_inspection' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'name=홍길동' \
  --form-string 'birthDate=19900101' \
  --form-string 'phone=01011112222' \
  --form-string 'authProvider=kakao' \
  --form-string 'carNumber=HRD-0000-0000' \
  --form-string 'rrn=1234567890'

요청

multipart/form-data · 파일과 텍스트를 같은 요청에 담습니다. Content-Type의 boundary는 사용 중인 라이브러리가 설정합니다. 숫자·불리언도 폼에서는 문자열로 전송하며 서버가 항목 타입에 맞게 해석합니다.

POST /rest/req_vehicle_inspection
폼 항목
타입
필수
설명·허용값
name
string
필수
이름
birthDate
string
필수
생년월일 8자리(YYYYMMDD)
phone
string
필수
휴대전화 번호 (본인 명의, 숫자만)
authProvider
string
필수
간편인증 방식 (아래 지원 목록 참고)
carNumber
string
필수
자동차등록번호
rrn
string
필수
주민등록번호 13자리 또는 뒤 7자리
POST /rest/get_vehicle_inspection
폼 항목
타입
필수
설명·허용값
transactionId
string
필수
/rest/req_vehicle_inspection 가 반환한 트랜잭션 ID

1단계 · 조회 인증 요청

Method
URL
POST
https://apick.app/rest/req_vehicle_inspection
Header
이름
필수
설명
Authorization
O
Bearer 인증키
모든 입력은 하위 객체 없이 최상위 이름 그대로 보냅니다. user·requestData·options 같은 묶음은 쓰지 않습니다. 형식별 예시는 요청 본문 형식을 참고하세요. 조회 항목마다 필요한 추가 입력 이 다릅니다. 값이 비어 있으면 인증을 보내지 않고 무과금으로 거절하며, 이때는 결과 단가도 발생하지 않습니다.
간편인증 방식(authProvider)
인증 방식
kakao
카카오톡
naver
네이버
toss
토스
pass
통신사 PASS
samsung
삼성패스
kb
KB국민은행
shinhan
신한은행
hana
하나은행
woori
우리은행
ibk
IBK기업은행
nh
NH농협은행
kakaobank
카카오뱅크
banksalad
뱅크샐러드
Header
이름
필수
설명
Authorization
O
Bearer 인증키
본문은 transactionId 하나입니다. 결과조회 엔드포인트는 인증요청과 이 되는 /rest/get_vehicle_inspection 이며, 다른 항목의 엔드포인트로 조회하면 실패합니다. 조회 시각 기준 24시간이 지나면 RESULT_EXPIRED 가 반환됩니다. 이때는 인증요청부터 다시 시작해야 하며, 인증요청 단가(20P)가 다시 발생합니다.

응답

각 API의 성공 응답은 아래 JSON 구조 또는 파일 본문으로 반환됩니다. 파일 요청도 실패하면 JSON 오류가 올 수 있으므로 HTTP 상태와 Content-Type을 함께 확인하세요.

Body
이름
타입
설명
data
Object
인증 요청 결과
schemaVersion
String
결과 스키마 버전 (고정값: "1.0")
transactionId
String
결과 조회에 사용하는 트랜잭션 ID
product
String
조회 항목 코드. 결과조회에도 같은 값이 오므로 어느 항목의 결과인지 대조할 수 있습니다.
status
String
처리 상태 (AUTH_REQUESTED: 인증 요청 완료)
message
String
상태 메시지 (고정값: "인증 대기중입니다.")
approvals
Integer
필요한 간편인증 승인 횟수. 조회 항목 하나당 1회입니다.
resultAvailable
Boolean
결과 데이터 포함 여부. 인증 요청 응답은 항상 false 입니다.
charged
Boolean
이번 호출의 과금 발생 여부. 실제 발송에 성공하면 true 입니다.
expiresAt
String
인증 유효 기한(ISO 8601). 이 시각까지 승인하지 못하면 인증 실패 처리됩니다.
success
Integer
과금 여부
0: 실패 또는 재사용(무과금)
1: 발송 성공(과금)
api
Object
API 호출 공통 데이터
success
Boolean
API 서버 정상 응답 여부
cost
Integer
API 호출 요금
ms
Integer
API 응답 시간
pl_id
Integer
API 결제 로그 ID
처리 상태(status)
의미
과금
AUTH_REQUESTED
조회 인증 요청 (/rest/req_vehicle_inspection 응답)
인증요청 시 과금
AUTH_WAITING
사용자 인증 대기중
무과금
AUTH_COMPLETED
승인 완료, 조회 시작 전
무과금
COLLECTING
조회 결과를 준비하는 중
무과금
SUCCESS
모든 항목 조회 완료
최초 1회만
PARTIAL_SUCCESS
일부 항목만 조회 완료 (sources 참고)
최초 1회만
AUTH_REJECTED
사용자가 인증을 거부
무과금
AUTH_EXPIRED
제한 시간 안에 승인하지 않음
무과금
FAILED
조회 실패
무과금
Body
이름
타입
설명
data
Object
상태·결과
schemaVersion
String
결과 스키마 버전 (고정값: "1.0")
transactionId
String
트랜잭션 ID
product
String
조회 항목 코드. 인증요청 응답과 같은 값입니다.
status
String
처리 상태 (위 표 참고)
resultAvailable
Boolean
실제 결과 포함 여부. 과금 여부도 이 값으로 결정됩니다.
charged
Boolean
이번 호출의 과금 발생 여부. 최초 결과 반환에서만 true 입니다.
sources
Array
항상 포함됩니다. 값이 없으면 빈 배열 [] 입니다. 항목이 여러 개인 상품에서 어느 것이 성공·실패했는지 알려줍니다. 각 항목은 source(제공 기관명), type(데이터 종류), status(SUCCESS/FAILED). 수집이 끝나기 전에는 아직 확정되지 않은 기관이 FAILED 로 보일 수 있습니다.
progress
Object
진행률(COLLECTING 일 때). total(전체 항목), completed(완료 항목)
checkedAt
String
실제 정보를 확인한 시각. 한국시간(UTC+09:00) ISO 8601 이며 재조회 유효기간의 기준입니다.
resultExpiresAt
String
결과 재조회 만료 시각. 한국시간(UTC+09:00) ISO 8601 입니다.
errorCode
String
오류 구분. RESULT_EXPIRED(재조회 기간 만료) / AUTH_EXPIRED / AUTH_REJECTED / COLLECT_FAILED
result
Object
조회된 결과 묶음. 실제 데이터가 있을 때만 포함됩니다.
vehicleInspection
Object
이 조회 항목의 결과입니다. 항목은 결과 규격을 참고하세요.
message
String
상태 메시지
success
Integer
과금 여부
0: 결과 없음 또는 재조회(무과금)
1: 최초 결과 반환(과금)
api
Object
API 호출 공통 데이터
success
Boolean
API 서버 정상 응답 여부
cost
Integer
API 호출 요금
ms
Integer
API 응답 시간
pl_id
Integer
API 결제 로그 ID

결과 규격

result.vehicleInspection
경로
타입
값 존재
설명
예시
차량번호
String
O
조회한 자동차등록번호
233도5724
검사이력
Array<Object>
O
정기검사 이력. 없으면 빈 배열이다.
번호
String
O
순번
1
검사구분
String
O
검사 구분
정기검사
검사일
String
O
검사일
2025-05-07
검사소
String
O
검사소명
○○검사소
검사유효기간
String
O
검사 유효기간
2025-05-07 ~ 2030-05-06
타입 읽는 법String 은 문자열, Integer 는 소수점 없는 정수(원 단위 금액 포함), Boolean 은 true/false, Object 는 이름이 있는 하위 항목 묶음, Array<Object> 는 같은 구조가 여러 건 오는 목록, Array<String> 은 문자열 목록입니다. String(YYYY-MM-DD) 처럼 괄호가 붙으면 그 형식의 문자열이라는 뜻이고 날짜 타입이 아닙니다. 값 존재O는 정상 결과에 있는 항목, 조건부는 해당 정보가 있을 때 제공하는 항목입니다. 누락·빈 문자열·빈 배열·0·null의 의미는 항목별 설명을 따릅니다. 부모 항목이 없으면 그 하위 항목도 없습니다. 예시 — 응답에 들어오는 형태 그대로의 값입니다. 실제 조회 결과가 아니며 개인을 특정할 수 없는 가상의 값입니다. 이 열이 비어 있으면 하위 항목이 있는 묶음이거나 값이 빠질 수 있는 항목입니다. 들여쓰기된 항목은 바로 위 부모 안에 들어 있는 하위 항목입니다. 경로 표기에서 . 는 하위 항목, [ ] 를 붙인 항목은 그 안에 여러 건이 오는 목록이라는 뜻입니다.

코드·오류

HTTP 상태와 서비스별 결과 필드를 함께 확인하세요. 오류 필드는 API에 따라 data.code, data.error_code, data.error 또는 result.error에 표시됩니다. 인증 오류와 업무 처리 오류의 응답 구조는 다를 수 있습니다.

폼 입력 오류
error.code
HTTP
확인할 내용
FORM_DATA_INVALID
400
필드 이름·값의 타입·배열 인덱스를 확인하세요. 인덱스는 0부터 연속으로 사용하며 0~9999, 중첩은 최대 12단계입니다.
FORM_DATA_FIELD_CONFLICT
400
같은 항목의 중복 지정 또는 일반 값과 중첩 경로의 충돌을 제거하세요.
MULTIPART_LIMIT_OR_PARSE_ERROR
400·413
올바른 boundary와 필드·파일 크기를 확인하세요. 폼 항목은 최대 100,000개이며 서비스별 파일·본문 크기 제한도 적용됩니다.

전체 예제

POST /rest/req_vehicle_inspection
curl --request POST 'https://apick.app/rest/req_vehicle_inspection' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'name=홍길동' \
  --form-string 'birthDate=19900101' \
  --form-string 'phone=01011112222' \
  --form-string 'authProvider=kakao' \
  --form-string 'carNumber=HRD-0000-0000' \
  --form-string 'rrn=1234567890'
POST /rest/get_vehicle_inspection
curl --request POST 'https://apick.app/rest/get_vehicle_inspection' \
  --header "Authorization: Bearer $APICK_API_KEY" \
  --form-string 'transactionId=9f2c4a7b1d8e35c60a4f7b2d1e9c803a'
응답 예시

{
    "data": {
        "schemaVersion": "1.0",
        "transactionId": "9f2c4a7b1d8e35c60a4f7b2d1e9c803a",
        "product": "vehicle_inspection",
        "status": "AUTH_REQUESTED",
        "resultAvailable": false,
        "charged": true,
        "sources": [],
        "message": "인증 대기중입니다.",
        "expiresAt": "2026-09-20T05:24:07+09:00",
        "success": 1
    },
    "api": {
        "success": true,
        "cost": 20,
        "ms": 1284,
        "pl_id": 4902
    }
}
            
인증 대기중 (무과금)

{
    "data": {
        "schemaVersion": "1.0",
        "transactionId": "9f2c4a7b1d8e35c60a4f7b2d1e9c803a",
        "product": "vehicle_inspection",
        "status": "AUTH_WAITING",
        "resultAvailable": false,
        "charged": false,
        "sources": [],
        "message": "인증 대기중입니다.",
        "expiresAt": "2026-09-20T05:24:07+09:00",
        "success": 0
    },
    "api": {
        "success": true,
        "cost": 0,
        "ms": 42,
        "pl_id": -1
    }
}
            
조회 중 (무과금)

{
    "data": {
        "schemaVersion": "1.0",
        "transactionId": "9f2c4a7b1d8e35c60a4f7b2d1e9c803a",
        "product": "vehicle_inspection",
        "status": "COLLECTING",
        "resultAvailable": false,
        "charged": false,
        "sources": [],
        "progress": { "total": 1, "completed": 0 },
        "message": "정보를 조회하고 있습니다.",
        "success": 0
    },
    "api": {
        "success": true,
        "cost": 0,
        "ms": 38,
        "pl_id": -1
    }
}
            
조회 완료 (과금)

{
    "data": {
        "schemaVersion": "1.0",
        "transactionId": "9f2c4a7b1d8e35c60a4f7b2d1e9c803a",
        "product": "vehicle_inspection",
        "status": "SUCCESS",
        "resultAvailable": true,
        "charged": true,
        "sources": [
            { "source": "한국교통안전공단", "type": "CAR365_VEHICLE_HISTORY", "status": "SUCCESS" }
        ],
        "checkedAt": "2026-09-20T04:47:33+09:00",
        "resultExpiresAt": "2026-09-21T04:47:33+09:00",
        "result": {
            "vehicleInspection": {
                "차량번호": "233도5724",
                "검사이력": [
                    {
                        "번호": "1",
                        "검사구분": "정기검사",
                        "검사일": "2025-05-07",
                        "검사소": "○○검사소",
                        "검사유효기간": "2025-05-07 ~ 2030-05-06"
                    }
                ]
            }
        },
        "message": "인증이 완료되었습니다.",
        "success": 1
    },
    "api": {
        "success": true,
        "cost": 60,
        "ms": 318,
        "pl_id": 4903
    }
}
            
위 값은 응답 구조를 보여주기 위한 예시입니다. 값은 가상이지만 필드 구성과 타입은 실제 응답과 같습니다. 전체 항목은 결과 규격을 참고하세요. expiresAt 은 SUCCESS 응답에 없습니다. 인증 대기 기한(AUTH_WAITING)에만 있고, 결과를 받은 뒤에는 resultExpiresAt 이 그 역할을 대신합니다. 둘 중 어느 것이 오는지로 "지금이 승인 대기인지 결과 보관 기간인지"를 구분할 수 있습니다.