콘텐츠로 이동

API 레퍼런스

KorailClient의 공개 메서드 84개를 주제별로 나눠 설명합니다. 모든 메서드는 동기식이며 네트워크 요청이 끝날 때까지 반환하지 않습니다. 상태 표는 7.0.8 재검증을 기준으로 하며, 본문에 적힌 이전 실서버 사례는 7.0.6 시기 기록과 구별해 읽으세요.

클라이언트

KorailClient

KorailClient(
    config: KorailConfig | None = None,
    *,
    transport: BaseTransport | None = None,
)

KORAIL 코레일+ 앱 7.0.8의 확인된 요청 계약을 따르는 비공식 동기 클라이언트입니다.

config를 생략하면 기본값으로 만든 KorailConfig를 쓰며, 기본 설정에서는 DynaPath와 대기열이 켜져 있습니다. transport에 넣은 httpx 전송 계층은 KORAIL API 요청과 대기열 요청에 함께 쓰입니다. 예약·결제·환불처럼 서버 상태를 바꾸는 메서드는 호출하는 즉시 요청을 보내며, 실패해도 KORAIL API 요청을 자동으로 다시 보내지 않습니다. 다 쓴 뒤에는 close를 호출해 연결을 닫으세요.

표기

각 메서드 설명 아래의 표는 다음을 뜻합니다.

항목 뜻
로그인 호출 전에 login()이 필요한지 여부입니다. 대부분의 메서드는 로그인하지 않았으면 요청을 보내지 않고 KorailAuthError를 발생시킵니다. 그렇지 않은 메서드는 설명에 따로 적었습니다.
대기열 요청 전에 통과하는 NetFunnel 관문 이름입니다. 관문이 없으면 -입니다. 자세한 내용은 설정을 참고하세요.
상태 변경 호출하면 좌석 점유·결제·환불처럼 서버의 상태가 실제로 바뀌는지 여부입니다.
7.0.8 확인 응답 파싱은 반환 객체를 받았다는 뜻으로 모든 성공 분기를 보장하지 않습니다. 서버 거절은 서버의 오류 응답까지 확인한 경우, 미실행은 전제 자료가 없어 호출하지 않은 경우, 해당 없음은 로컬 메서드입니다. 메서드별 근거는 7.0.8 전수 확인표에 있습니다.

공통 예외

다음 예외는 여러 메서드에서 공통으로 발생할 수 있습니다. 각 메서드 설명에는 그 메서드에만 해당하는 예외를 따로 적었습니다. 예외 계층과 처리 방법은 오류 처리를 참고하세요.

예외 발생 조건
KorailTransportError 네트워크 오류가 나거나 서버가 2xx가 아닌 HTTP 상태로 응답했을 때
KorailProtocolError 요청 전 입력 검사에 실패했을 때, 응답이 JSON이 아니거나 필수 값이 없어 읽을 수 없을 때
KorailAuthError 로그인이 필요한 메서드를 로그인하지 않고 호출했을 때
KorailSessionExpiredError 서버 세션이 만료됐을 때(결과 코드 P058). 로컬 세션도 비웁니다.
KorailAppError와 하위 예외 서버가 실패(FAIL)로 응답했을 때. 결과 코드에 따라 하위 예외로 나뉩니다. 실패를 응답으로 돌려주는 메서드는 예외를 발생시키지 않습니다.
KorailDynaPathError DynaPath 보호 경로의 응답이 차단 신호였을 때
KorailDynaPathRequiredError KorailConfig(disable_dynapath=True)로 토큰이 필요한 로그인을 호출했을 때. 로그인 요청은 보내지 않습니다.
KorailNetFunnelError 대기열을 통과하지 못해 요청을 보내지 않았을 때. reserve·pay·reservation_view 관문은 대기열 서버 오류나 통과 외 응답에서, 모든 관문은 누적 대기 시간이 netfunnel_wait_limit를 넘거나 대기 응답에 입장 키가 없을 때 발생합니다. 열차 조회 관문은 대기열 서버 오류 시 대기열 없이 요청을 보냅니다.
KorailQueueRejectedError 대기열 서버가 요청을 차단했을 때(301, 302)

전체 메서드

세션·공통

로그인과 세션, 서버 상태·역 목록·운행 달력 같은 공통 정보.

메서드 설명 로그인 상태 변경 7.0.8 확인
login 회원 계정으로 로그인하고 세션을 만듭니다. 필요 없음 아니요 응답 파싱
logout 서버에 로그아웃을 요청하고 로컬 세션을 비웁니다. 필요 없음 아니요 응답 파싱
clear_session 서버에 알리지 않고 로컬 세션과 쿠키만 비웁니다. 필요 없음 아니요 해당 없음
close HTTP 연결 풀과 대기열 연결 풀을 닫습니다. 필요 없음 아니요 해당 없음
get_service_status 예매 서비스가 열려 있는지 확인합니다. 필요 없음 아니요 응답 파싱
get_app_data 앱 메인 화면이 쓰는 캐시 파일(버전 정보, 공지, 안내 문구)을 받아 옵니다. 필요 없음 아니요 응답 파싱
get_notice 앱 메인 캐시에 들어 있는 공지를 읽습니다. 필요 없음 아니요 응답 파싱
get_common_code 공통 코드 이름으로 서버의 앱 설정값을 조회합니다. 필요 없음 아니요 응답 파싱
get_uuid 서버가 발급하는 단말 검증값을 받아 옵니다. 필요 없음 아니요 응답 파싱
get_station_info 역 데이터의 판본과 수록 역 수를 조회합니다. 필요 없음 아니요 응답 파싱
get_station_data 전체 역 목록을 코드·이름·좌표와 함께 받아 옵니다. 필요 없음 아니요 응답 파싱
get_train_calendar 지금 예매할 수 있는 운행일 달력을 받아 옵니다. 필요 없음 아니요 응답 파싱
get_crew_request_list 승무원 호출 화면에 띄울 요청 사유 목록을 조회합니다. 필요 없음 아니요 응답 파싱

열차 조회·좌석

직통·환승 열차 조회, 정차역, 호차·좌석 배치, 운임.

메서드 설명 로그인 상태 변경 7.0.8 확인
search_trains 한 구간·한 날짜의 직통 열차를 한 페이지 조회합니다. 필요 없음 아니요 응답 파싱
search_transfer_trains 같은 조회 조건으로 환승 여정을 한 페이지 조회합니다. 필요 없음 아니요 응답 파싱
search_trains_with_transfer_fallback 직통 열차가 없을 때만 같은 조건으로 환승 여정을 조회합니다. 필요 없음 아니요 응답 파싱
get_transfer_stations 한 구간에서 환승할 수 있는 역 목록을 조회합니다. 필요 없음 아니요 응답 파싱
get_train_schedule 열차 한 편의 정차역과 도착·출발 시각, 지연 정보를 조회합니다. 필요 없음 아니요 응답 파싱
get_seat_cars 열차 한 편의 호차 목록과 호차별 잔여석·좌석 속성을 조회합니다. 필요 아니요 응답 파싱
get_seat_inventory 한 호차의 좌석 배치와 좌석별 판매 가능 여부를 조회합니다. 필요 아니요 응답 파싱
get_free_seat_car_info 열차 한 편의 자유석 호차 안내를 조회합니다. 필요 없음 아니요 응답 파싱
get_seat_assignment_schedule 좌석배정 예매 화면의 열차 목록을 조회합니다. 필요 없음 아니요 응답 파싱
get_merge_seats_inquiry 병합 예약으로 이어 붙일 수 있는 열차 구간과 좌석이 갈리는 중간역을 조회합니다. 필요 없음 아니요 응답 파싱
get_guide_seat_condition 도우미석 이용 안내를 조회합니다. 필요 아니요 서버 거절
get_price_fare_quote 열차 한두 편의 운임을 예매 전에 조회합니다. 필요 없음 아니요 응답 파싱

예약

결제 전 예약(홀드)을 만들고, 조회하고, 취소하기.

메서드 설명 로그인 상태 변경 7.0.8 확인
reserve 열차 한 편에 결제 전 예약(홀드)을 만듭니다. 필요 예 응답 파싱
reserve_transfer 환승 여정의 두 열차를 한 PNR로 홀드합니다. 필요 예 응답 파싱
reserve_merge 병합 예약의 후속 홀드를 만듭니다. 필요 예 응답 파싱
confirm_standby_hold 예약대기 홀드에 문자 알림과 객실 등급 변경 옵션을 저장합니다. 필요 예 응답 파싱
cancel_unpaid_hold 결제하지 않은 홀드를 취소합니다. 필요 예 응답 파싱
get_reservation_history 로그인 계정에 남아 있는 예약(결제 전 홀드 포함)을 조회합니다. 필요 아니요 응답 파싱
get_ticket_reservation_detail PNR로 예약 하나의 여정과 좌석 상세를 다시 읽습니다. 필요 아니요 응답 파싱
check_ticket_duplication 같은 PNR로 잡혀 있는 예약 건수를 조회합니다. 필요 아니요 응답 파싱
get_cart_list 로그인 계정의 장바구니를 조회합니다. 필요 아니요 응답 파싱
add_to_cart 결제 전 홀드를 장바구니에 담습니다. 필요 예 응답 파싱

결제·환불

카드 결제, 할인 재계산, 환불 수수료 조회와 환불.

메서드 설명 로그인 상태 변경 7.0.8 확인
pay_with_card 홀드를 카드로 결제합니다. 필요 예 미실행
recalculate_price 홀드의 할인 조합을 바꿔 결제 금액을 다시 계산합니다. 필요 예 서버 거절
get_refund_ticket_detail 환불할 승차권의 여정·좌석·운임 상세를 조회합니다. 필요 아니요 응답 파싱
get_refund_commission 승차권 한 장의 예상 환불액과 수수료를 조회합니다. 필요 아니요 서버 거절
refund 발권된 승차권 한 장을 환불합니다. 필요 예 미실행
verify_station_ticket_refund 역에서 발권한 승차권을 온라인으로 환불할 수 있는지와 금액을 확인합니다. 필요 아니요 미실행
execute_station_ticket_refund 역에서 발권해 확인을 마친 승차권의 환불을 요청합니다. 필요 예 미실행

승차권·계정

승차권 목록과 영수증, 포인트·마일리지·쿠폰, 여정 변경, 지연확인증.

메서드 설명 로그인 상태 변경 7.0.8 확인
get_ticket_list 로그인 계정의 승차권 목록 한 페이지를 예약별로 묶어 조회합니다. 필요 아니요 응답 파싱
get_ticket_receipt 승차권 한 장의 영수증과 결제수단을 조회합니다. 필요 아니요 응답 파싱
get_korail_point_summary 계정의 포인트, 쿠폰·지연할인권 개수, 복지 할인 자격 같은 요약 정보를 조회합니다. 필요 아니요 응답 파싱
get_mileage_history 기간 안의 마일리지 적립·사용 내역 한 페이지를 조회합니다. 필요 아니요 응답 파싱
get_discount_coupons 계정이 가진 할인쿠폰 목록 한 페이지를 조회합니다. 필요 아니요 응답 파싱
get_delay_discount_tickets 계정이 가진 지연할인권 목록을 조회합니다. 필요 아니요 응답 파싱
get_deposit_banks 입금 가능한 은행의 코드와 이름 목록을 조회합니다. 필요 아니요 응답 파싱
get_customer_trip_info 로그인 계정에 저장된 여행 편의설정을 조회합니다. 필요 아니요 응답 파싱
get_multi_child_discount_targets 다자녀 할인 대상으로 등록된 가족 구성원을 조회합니다. 필요 아니요 서버 거절
get_trip_change_dates 여정 변경으로 옮겨 갈 수 있는 날짜 목록을 조회합니다. 필요 아니요 응답 파싱
get_original_ticket_inquiry 여정 변경의 기준이 되는 원표를 조회합니다. 필요 아니요 응답 파싱
get_self_seat_change_info 자율 좌석·열차 변경으로 옮겨 갈 수 있는 승차역과 변경 사유를 조회합니다. 필요 아니요 서버 거절
get_delay_certificate 지난 승차권의 지연확인증(열차가 몇 분 늦게 도착했는지)을 조회합니다. 필요 아니요 응답 파싱
get_delay_return_receipt 열차 지연으로 돌려받은 지연료의 반환 영수증을 조회합니다. 필요 아니요 서버 거절

대리수령·셀프 체크인

승차권 전달·대리수령과 자유석 셀프 체크인.

메서드 설명 로그인 상태 변경 7.0.8 확인
get_recent_delivery_history 최근에 승차권을 전달했던 수령자 목록을 조회합니다. 필요 아니요 응답 파싱
get_delivery_recipient N카드 2인 승차권을 전달하기 전에 수령자 후보를 조회합니다. 필요 아니요 서버 거절
get_pbp_acceptance_specifications 전달한 승차권 여러 장의 대리수령 내역을 여정·좌석 단위로 조회합니다. 필요 아니요 응답 파싱
retrieve_delivered_ticket 다른 회원에게 전달한 승차권을 회수합니다. 필요 예 미실행
get_self_checkin_info 셀프 체크인으로 등록한 자유석 좌석 정보를 조회합니다. 필요 아니요 서버 거절
check_self_checkin_seat 좌석의 QR 코드를 스캔한 문자열로 셀프 체크인할 수 있는 좌석을 확인합니다. 필요 아니요 미실행
register_self_checkin check_self_checkin_seat로 확인한 좌석으로 셀프 체크인을 등록합니다. 필요 예 미실행
cancel_self_checkin 등록한 셀프 체크인을 취소합니다. 필요 예 미실행

정기권·패스·N카드·여행상품

정기권·패스 조회, N카드 구매·예약, 여행상품 예약 관리.

메서드 설명 로그인 상태 변경 7.0.8 확인
get_pass_menu 정기권·패스 메뉴 한 갈래의 화면 구성 항목을 조회합니다. 필요 없음 아니요 응답 파싱
get_pass_available_dates 정기권 상품 하나의 사용 개시 가능일과 발권 가능일을 조회합니다. 필요 없음 아니요 응답 파싱
get_pass_schedule 정기권으로 탈 수 있는 열차 스케줄 한 페이지를 조회합니다. 필요 아니요 응답 파싱
get_commuter_kind_menu 정기권 종류 하나의 안내 문구와 조회 파라미터를 받아 옵니다. 필요 없음 아니요 응답 파싱
get_commuter_info 정기권 예매에 필요한 조건을 세 단계 중 하나로 조회합니다. 필요 아니요 서버 거절
get_trip_menu 여행상품 메뉴 화면에 그릴 항목과 그 안의 문구 묶음을 조회합니다. 필요 아니요 응답 파싱
get_discount_card_usage_history N카드 한 장을 이미 사용한 여행 내역을 조회합니다. 필요 아니요 미실행
get_discount_card_schedule N카드로 아직 탈 수 있는 열차를 한 구간에 대해 조회합니다. 필요 아니요 서버 거절
register_discount_card 결제 전 N카드 구매를 만듭니다. 필요 예 미실행
extend_discount_card N카드의 유효기간을 실제로 연장합니다. 필요 예 미실행
reserve_with_discount_card N카드로 좌석을 홀드합니다. 필요 예 미실행
get_product_reservations 로그인 계정이 예약한 여행상품 목록 한 페이지를 조회합니다. 필요 아니요 응답 파싱
get_product_detail 여행상품 예약 한 건의 상세와 취소 조건을 조회합니다. 필요 아니요 응답 파싱
cancel_product_reservation 여행상품 예약을 취소합니다. 필요 예 미실행

공항버스·부가서비스

공항버스(리무진) 조회·예약과 부가서비스 메뉴·내역.

메서드 설명 로그인 상태 변경 7.0.8 확인
get_limousine_schedules 공항버스 운행 편 한 페이지를 조회합니다. 필요 없음 아니요 응답 파싱
get_limousine_seat_inventory 공항버스 한 편의 좌석 배치와 좌석별 판매 가능 여부를 조회합니다. 필요 없음 아니요 응답 파싱
reserve_limousine 공항버스 좌석을 잡아 결제 전 예약(홀드)을 만듭니다. 필요 예 응답 파싱
get_maas_menu_list 부가서비스 메뉴를 조회합니다. 전체 메뉴나 승차권 한 건에 대한 메뉴를 받을 수 있습니다. 필요 아니요 응답 파싱
get_maas_station_data 부가서비스 하나를 이용할 수 있는 역 목록을 조회합니다. 필요 없음 아니요 응답 파싱
get_maas_service_details 로그인한 계정이 신청한 부가서비스 내역을 조회합니다. 필요 아니요 응답 파싱