작업 상태·결과
제출한 작업의 진행 상태를 확인하고 결과 본문을 가져옵니다.
1. 작업 상태 조회GET / v1/ jobs/ {job_ id}
GEThttps://api.xdata.kr/v1/jobs/{job_id}X-Env-Scope: sandbox
샌드박스입니다. 실제 기관을 호출하지 않는 모의 응답이며 일일 한도가 없습니다.
작업 제출로 받은 작업 아이디의 진행 상태를 확인합니다.
- status 가 SUCCEEDED 가 되면 결과 조회를 호출합니다. [작업 결과 조회]
- status 가 FAILED 또는 TIMEOUT 이면 error 에 원인 코드(code)와 재시도 여부(retryable)가 담깁니다.
- 진행 중에는 retry_after_seconds 만큼 기다렸다 다시 조회하고, progress_message 를 화면에 보여 주세요. 종료되면 두 값이 null 이 됩니다.
- error.retryable 이 false 이면 같은 작업을 다시 제출하지 마세요. 발행·신청처럼 되돌릴 수 없는 작업은 요청이 이미 기관에 닿았을 수 있습니다. [재시도]
- 다른 조직·환경의 작업이거나 없는 작업이면 404 JOB_NOT_FOUND 입니다. 존재 여부를 알려 주지 않으려고 같은 응답으로 답합니다.
Request
| 순번 | 변수명 | 필수 | 설명 |
|---|---|---|---|
| Authorization | Y | API 자격증명입니다. client_id 와 client_secret 을 콜론으로 이어 Base64 로 인코딩해 보냅니다. | |
| X- | Y | 호출 환경입니다.
| |
| X- | N | 추적 아이디입니다. 지정하지 않으면 서버가 발급합니다. |
| 순번 | 변수명 | 타입 | 길이 | 필수 | 설명 |
|---|---|---|---|---|---|
| job_ | string | 30 | Y | 작업 제출 응답으로 받은 작업 아이디입니다. |
추가 파라미터가 없습니다. params 는 {} 로 보냅니다.
bash
curl --request GET \
--url 'https://api.xdata.kr/v1/jobs/{job_id}' \
--header 'Authorization: Basic {base64(client_id:client_secret)}' \
--header 'X-Env-Scope: sandbox'Response
| 순번 | 변수명 | 타입 | 길이 | 설명 |
|---|---|---|---|---|
| job_ | string | 30 | 작업 아이디입니다. | |
| status | string | - | 작업 상태입니다.
| |
| env_ | string | - | 요청에 사용한 환경입니다. | |
| provider | string | - | 요청한 기관입니다. | |
| action | string | - | 요청한 작업입니다. | |
| submitted_ | string | - | 제출 일시입니다. | |
| started_ | string | - | 실행 시작 일시입니다. 시작 전에는 null 입니다. | |
| finished_ | string | - | 종료 일시입니다. 종료 전에는 null 입니다. | |
| retry_ | number | - | 재시도 횟수입니다. | |
| progress | number | - | 진행률(0~100)입니다. 10~25 는 대기 중(아직 시작 전), 30~90 은 처리 중, 100 은 종료입니다. 값이 뒤로 가지 않습니다. | |
| progress_ | string | - | 지금 단계를 알려 주는 문구입니다. 화면에 그대로 보여 주면 됩니다. 종료되면 null 입니다. | |
| retry_ | number | - | 다음 상태 조회까지 권장 대기 시간(초)입니다. 종료되면 null 이며, 더 조회하지 않아도 됩니다. | |
| error | object | - | 실패·시간 초과일 때만 채워집니다. code · message · retryable · provider_error_ref 와 기관 쪽 HTTP 상태(upstream_status, 없으면 null)를 담습니다. 요청 오류 응답과 달리 trace_id 는 없습니다. |
json
{
"job_id": "job_01JC8YH8R0E1ABCDEFGHJKMNPQ",
"status": "RUNNING",
"env_scope": "real_test",
"provider": "hometax",
"action": "hometax.etax.invoice.search_list",
"submitted_at": "2026-05-27T12:34:56+09:00",
"started_at": "2026-05-27T12:34:57+09:00",
"finished_at": null,
"retry_count": 0,
"progress": 45,
"progress_message": "인증 처리 중...",
"retry_after_seconds": 2,
"error": null
}| 순번 | 오류 코드 | 발생 조건 |
|---|---|---|
| JOB_ | 없는 작업 아이디, 또는 다른 조직·환경의 작업 — HTTP 404 |
2. 작업 결과 조회GET / v1/ jobs/ {job_ id}/ result
GEThttps://api.xdata.kr/v1/jobs/{job_id}/resultX-Env-Scope: sandbox
샌드박스입니다. 실제 기관을 호출하지 않는 모의 응답이며 일일 한도가 없습니다.
성공한 작업의 결과 본문을 가져옵니다.
- status 가 SUCCEEDED 일 때만 결과 본문이 반환됩니다.
- 그 밖의 상태에서는 409 JOB_INVALID_TRANSITION 또는 404 JOB_NOT_FOUND 입니다.
- 엑셀 같은 파일을 만드는 작업은 result.data 대신 result.download_url 이 내려옵니다. 이 주소는 15분 동안만 유효합니다.
Request
| 순번 | 변수명 | 필수 | 설명 |
|---|---|---|---|
| Authorization | Y | API 자격증명입니다. client_id 와 client_secret 을 콜론으로 이어 Base64 로 인코딩해 보냅니다. | |
| X- | Y | 호출 환경입니다.
| |
| X- | N | 추적 아이디입니다. 지정하지 않으면 서버가 발급합니다. |
| 순번 | 변수명 | 타입 | 길이 | 필수 | 설명 |
|---|---|---|---|---|---|
| job_ | string | 30 | Y | 작업 제출 응답으로 받은 작업 아이디입니다. |
추가 파라미터가 없습니다. params 는 {} 로 보냅니다.
bash
curl --request GET \
--url 'https://api.xdata.kr/v1/jobs/{job_id}/result' \
--header 'Authorization: Basic {base64(client_id:client_secret)}' \
--header 'X-Env-Scope: sandbox'Response
| 순번 | 변수명 | 타입 | 길이 | 설명 |
|---|---|---|---|---|
| job_ | string | 30 | 작업 아이디입니다. | |
| status | string | - | 작업 상태입니다.
| |
| result. | string | - | 결과 스키마 이름입니다. | |
| result. | object | - | 결과 본문입니다. 파일로 내려받는 결과는 이 필드 대신 result.download_url 이 옵니다. | |
| result. | string | - | 파일 결과를 내려받는 서명된 주소입니다. 15분 동안만 유효하며, 만료되면 결과를 다시 조회해 새 주소를 받습니다. | |
| finished_ | string | - | 종료 일시입니다. |
json
{
"job_id": "job_01JC8YH8R0E1ABCDEFGHJKMNPQ",
"status": "SUCCEEDED",
"result": {
"schema": "hometax.etax.invoice.search_list.v1",
"data": {
"...": "..."
}
},
"finished_at": "2026-05-27T12:35:42+09:00"
}| 순번 | 오류 코드 | 발생 조건 |
|---|---|---|
| JOB_ | SUCCEEDED 가 아닌 상태에서 결과를 조회 — HTTP 409 | |
| JOB_ | 없는 작업 아이디 — HTTP 404 |