메인 콘텐츠로 건너뛰기
MeterEngine API(/v1/ 아래 모든 경로)는 4xx와 5xx 오류를 같은 JSON 형식으로 돌려줍니다. 인증, 권한, 요청 한도 오류도 같습니다. 오류 처리는 HTTP 상태와 응답 본문의 code로 나눕니다.

오류 응답 형식

키 없이 요청을 보내면 오류 응답이 어떻게 생겼는지 바로 볼 수 있습니다.
입력 값이 틀린 400 응답에는 어느 값이 왜 틀렸는지가 errors에 실립니다.
string
필수
오류 종류입니다. 오류별 처리는 이 값으로 나눕니다. 값은 소문자와 밑줄로 된 문자열입니다(예: validation_error).
string
필수
code마다 정해진 한국어 문구입니다. 사람이 읽으라고 넣은 값이며 예고 없이 바뀝니다.
object[]
틀린 값의 목록입니다. 400 응답에만 실리고, 목록이 비면 필드 자체가 빠집니다.
message로 분기하지 마세요. 문구는 예고 없이 바뀝니다. 분기는 언제나 code로 하고, message는 로그와 화면 표시에만 쓰세요.
이벤트 배치(POST /v1/event-batches)는 원소 하나가 거절돼도 HTTP 200으로 답하고, 거절된 원소의 results[].error에 같은 형식의 오류를 싣습니다. 배치 응답 읽는 법은 사용량 이벤트 보내기를 보세요.

자주 만나는 code

401: 인증 실패

401 응답에는 언제나 WWW-Authenticate: Bearer 헤더가 붙습니다. 키 없이 보낸 요청은 경로가 없어도 404가 아니라 401을 받습니다. 키 발급과 폐기는 API 키 발급과 첫 호출을 보세요.

403: 권한 밖의 요청

조회는 read, 고객 등록과 이벤트 전송은 ingest, 그 밖의 변경은 admin 권한이 필요합니다. 요청 본문 검사가 권한 검사보다 먼저 돌기 때문에, 권한이 없는 키로 형식이 틀린 본문을 보내면 403보다 400을 먼저 받습니다. API 키 관리, 토스페이먼츠 키 저장, 구성원 관리, 감사 기록 조회는 콘솔에 로그인한 상태에서만 됩니다. API 키로 부르면 403 permission_denied로 거절됩니다. 테스트 환경 키와 실제 환경 키는 발급한 환경에 고정되어 있어 X-MeterEngine-Environment 헤더를 따로 넣지 않아도 됩니다. 자세한 내용은 업무 환경을 보세요. 승인 전이거나 거절, 정지된 도입사는 API 요청에 403 organization_not_active를 받습니다.

400: 요청 값 오류

event_too_old, invalid_billable_metric, invalid_price_rate처럼 기능마다 정해진 400 code도 있습니다. 뜻과 할 일은 각 기능 페이지와 API 참조에 있습니다.

그 밖의 공통 code

API 참조의 code 목록에는 environment_not_ready도 있지만, 지금은 어떤 요청에서도 나오지 않습니다.

다시 보낼지 판단하기

아래 표는 연동 코드를 짤 때 권하는 기준입니다. 같은 요청을 다시 보내는 것이 안전한지는 멱등 규칙에 달려 있으니 함께 보세요.
결제 요청(POST /v1/invoices/{id}/payment-attempts)은 멱등 키가 없습니다. 500이나 503을 받았거나 응답을 받지 못했으면 다시 요청하기 전에 결제 시도를 먼저 조회하세요. 자세한 내용은 첫 결제 요청과 결과 확인을 보세요.
이벤트에서 다시 보내지 말아야 할 거절 code와 보내지 못한 이벤트를 쌓아 두는 방법은 재전송 설계를 보세요. 응답 본문이 JSON이 아니면 code를 읽지 말고 HTTP 상태만으로 판단하세요.

X-Request-ID로 요청 찾기

모든 /v1/ 응답에는 X-Request-ID 헤더가 붙습니다. 값은 MeterEngine이 요청마다 새로 만드는 UUID이고, 요청에 같은 이름의 헤더를 넣어도 쓰지 않습니다. 오류 응답에도 붙으므로 연동 쪽 로그에 HTTP 상태, code와 함께 남겨 두세요.

감사 기록에서 찾기

이벤트 수집을 뺀 API 요청은 콘솔의 ‘감사 기록’ 화면에 결과가 남습니다. 조회 요청도 남습니다.
1

업무 환경을 맞춘다

콘솔에 로그인한 뒤 화면 위 ‘업무 환경’을 요청에 쓴 키의 환경으로 고릅니다. 테스트 환경 키(me_test_)로 보낸 요청이면 ‘테스트 환경’입니다. 감사 기록은 업무 환경마다 따로 보입니다.
2

요청 ID로 검색한다

왼쪽 메뉴에서 ‘감사 기록’을 엽니다. ‘행동 또는 대상 검색’ 칸에 X-Request-ID 값을 넣고 ‘조건 적용’을 누릅니다.
3

결과를 확인한다

기록을 펼치면 메서드와 경로, HTTP 상태, 실행 주체가 보입니다. 4xx와 5xx는 ‘요청 거절/오류’로 표시됩니다.
감사 기록에 남지 않는 요청이 있습니다.
  • 키 없이 보냈거나 틀린 키로 보내 401을 받은 요청
  • 이벤트 수집 요청(POST /v1/events, POST /v1/event-batches)

이벤트 수집 요청 찾기

이벤트 수집 요청(POST /v1/events, POST /v1/event-batches)은 감사 기록에 남지 않습니다. 저장된 이벤트와 수집 거절 기록에 그 요청의 request_id(응답의 X-Request-ID와 같은 값)와 transaction_id가 남으니 이것으로 찾으세요. 수집 거절 검색의 month는 이벤트가 일어난 달이 아니라 거절을 기록한 달(KST)입니다. 생략하면 이번 달입니다. 거절 기록에는 이벤트 원문과 properties가 남지 않습니다. 응답 본문에만 보이는 오류는 MeterEngine 쪽에 다시 찾을 기록이 없습니다. 그 응답 본문과 X-Request-ID를 연동 쪽 로그에 남겨 두세요.
콘솔의 ‘수집 거절’, ‘이벤트 매핑 진단’ 화면과 이벤트 상세는 감사 기록에서 확인하라고 안내하지만, 지금은 수집 요청이 감사 기록에 나오지 않습니다.

문의할 때 적을 값

API 동작을 문의할 때는 아래 값을 함께 적어 주세요. 문의 경로와 적으면 안 되는 정보는 소개 페이지의 문의 절을 보세요.
  • 요청한 시각(KST)
  • HTTP 상태와 응답의 code
  • 응답 헤더 X-Request-ID
  • 이벤트라면 transaction_id
API 키, 토스페이먼츠 키, 고객 정보는 적지 마세요.