> For the complete documentation index, see [llms.txt](https://docs.mqnicrnd5.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mqnicrnd5.com/guide/rest-api/signal-rsti-offer.md).

# 신호정보 (제공)

## 1. 신호정보 조회 API (GetSignalInfo)

### 요청 URL

```url
http://service.mqnicrnd5.com/api/v1/rtsi/offer/gsi
```

### 연계 주기

요청 시, 실시간

### 프로토콜

HTTPS

### HTTP 메서드

GET

### 데이터 포맷

{% file src="/files/1kzzNEKN8ZzX4YoS4vIz" %}

### 참고사항

API를 요청할 때 다음 예와 같이 HTTP 요청 헤더에 접근 토큰(Access Token) 을 추가해야 합니다. <mark style="color:purple;">**접근 토큰 앞에 "Bearer " 문자열을 추가해야 한다는 점에 주의하세요.**</mark>

```
> GET /api/v1/rtsi/offer/gsi?csrdId=2330100700 HTTP/2
> Host: service.mqnicrnd5.com
> User-Agent: curl/7.64.1
> Accept: */*
> Authorization: Bearer <접근 토큰>
```

### 요청 예시

```bash
 curl --location 'http://service.mqnicrnd5.com/api/v1/rtsi/offer/gsi?csrdId=2330100700' \
--header 'Authorization: Bearer <접근 토큰>'
```

### 응답 예시

```json
{
    "results": [
        {
            "nodeId": "2330100700",
            "dttm": "20251104",
            "data": [
                {
                    "timestamp": "2025-11-04 09:05:07",
                    "phaseNo": 2,
                    "sigStatus": [
                        2
                    ],
                    "leftTime": [
                        4
                    ],
                    "pedestrian": null
                },
                {
                    "timestamp": "2025-11-04 09:11:47",
                    "phaseNo": 3,
                    "sigStatus": [
                        2
                    ],
                    "leftTime": [
                        4
                    ],
                    "pedestrian": [
                        {
                            "status": 6,
                            "left_time": 12,
                            "dir_cd": 70
                        }
                    ]
                }
            ]
        }
    ]
}
```

## 2. 신호정보 이력 리스트 조회 API (GetSignalHistFilePath)

일자별로 압축한 압축 파일의 URI 리스트를 반환합니다.

### 요청 URL

```url
http://service.mqnicrnd5.com/api/v1/rtsi/offer/gshf
```

### 연계 주기

요청 시, 1일

### 프로토콜

HTTPS

### HTTP 메서드

GET

### 데이터 포맷

{% file src="/files/zbHiUjZJPcKqzgDrjVpf" %}

### 참고사항

API를 요청할 때 다음 예와 같이 HTTP 요청 헤더에 접근 토큰(Access Token) 을 추가해야 합니다. <mark style="color:purple;">**접근 토큰 앞에 "Bearer " 문자열을 추가해야 한다는 점에 주의하세요.**</mark>

```
> GET /api/v1/rtsi/offer/gshf?csrdId=2330100700 HTTP/2
> Host: service.mqnicrnd5.com
> User-Agent: curl/7.64.1
> Accept: */*
> Authorization: Bearer <접근 토큰>
```

### 요청 예시

```bash
curl --location 'http://service.mqnicrnd5.com/api/v1/rtsi/offer/gshf?csrdId=2330100700' \
--header 'Authorization: Bearer <접근 토큰>'
```

### 응답 예시

```json
{
    "results": [
        {
            "node_id": "2330100700",
            "uri": [
                {
                    "dttm": "20240613",
                    "filePath": "rtsi/2330100700/20240613/2330100700_rtsi_20240613.zip",
                },
                {
                    "dttm": "20240614",
                    "filePath": "rtsi/2330100700/20240614/2330100700_rtsi_20240614.zip",
                },
            ]
        },
    ]
}
```

## 3. 신호정보 이력 압축파일 제공 API (GetSignalHistData)

### 요청 URL

```url
http://service.mqnicrnd5.com/api/v1/rtsi/offer/gshd
```

### 연계 주기

요청 시

### 프로토콜

HTTPS

### HTTP 메서드

GET

### 데이터 포맷

{% file src="/files/VOkVQQFEsDXjppAgr6b8" %}

### 참고사항

API를 요청할 때 다음 예와 같이 HTTP 요청 헤더에 접근 토큰(Access Token) 을 추가해야 합니다. <mark style="color:purple;">**접근 토큰 앞에 "Bearer " 문자열을 추가해야 한다는 점에 주의하세요.**</mark>

```
> GET /api/v1/rtsi/offer/gshd?filePath=rtsi/1570193000/20240613/1570193000_rtsi_20240613.zip HTTP/2
> Host: service.mqnicrnd5.com
> User-Agent: curl/7.64.1
> Accept: */*
> Authorization: Bearer <접근 토큰>
```

### 요청 예시

```bash
curl --location 'http://service.mqnicrnd5.com/api/v1/rtsi/offer/gshd?filePath=rtsi/1570193000/20240613/1570193000_rtsi_20240613.zip' \
--header 'Authorization: Bearer <접근 토큰>'
```

### 응답 예시

<mark style="color:red;">추후 샘플 파일 업로드 예정입니다.</mark>

## 4. 차량 관점 실시간 신호 정보 조회 API (GetCarViewSignalInfo)

### 요청 URL

```url
http://service.mqnicrnd5.com/api/v1/rtsi/offer/gcvsi
```

### 연계 주기

요청 시, 실시간

### 프로토콜

HTTPS

### HTTP 메서드

GET

### 데이터 포맷

{% file src="/files/eBcNqumbJAldgMHmwXea" %}

### 참고사항

API를 요청할 때 다음 예와 같이 HTTP 요청 헤더에 접근 토큰(Access Token) 을 추가해야 합니다. <mark style="color:purple;">**접근 토큰 앞에 "Bearer " 문자열을 추가해야 한다는 점에 주의하세요.**</mark>

```
> GET /api/v1/rtsi/offer/gcvsi?entryLinkId=2333915902,2333916400,2333916202&csrdId=2330383800 HTTP/2
> Host: service.mqnicrnd5.com
> User-Agent: curl/7.64.1
> Accept: */*
> Authorization: Bearer <접근 토큰>
```

### 요청 예시

```bash
 curl --location 'http://service.mqnicrnd5.com/rtsi/offer/gcvsi?entryLinkId=2333915902,2333916400,2333916202&csrdId=2330383800' \
--header 'Authorization: Bearer <접근 토큰>'
```

### 응답 예시

```json
{
    "signalCarView": [
        {
            "timestamp": "2026-01-14 18:31:34.000",
            "csrdId": "2330383800",
            "entryLinkId": "2333915902",
            "phaseNo": null,
            "sigInfo": 2,
            "status": 5,
            "leftTime": 255
        },
        {
            "timestamp": "2026-01-14 18:31:34.000",
            "csrdId": "2330383800",
            "entryLinkId": "2333916400",
            "phaseNo": null,
            "sigInfo": 2,
            "status": 5,
            "leftTime": 255
        },
        {
            "timestamp": "2026-01-14 18:31:34.000",
            "csrdId": "2330383800",
            "entryLinkId": "2333916202",
            "phaseNo": null,
            "sigInfo": 2,
            "status": 4,
            "leftTime": 255
        }
    ]
}
```

## 5. 신호정보 제공 API 구현 예제

다음은 각 언어별 실시간 신호정보 제공 API 구현 예제입니다.

### 신호정보 조회 API (GetSignalInfo)

{% tabs %}
{% tab title="Java" %}

```java

import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.util.HashMap;
import java.util.Map;
import java.net.URL;

public class CallAPI {

    public static void main(String[] args) {
        String accessToken = "Bearer " + "<접근 토큰>";
        
        String csrdId = "1570062500,1570069937";
        Boolean pSignal = false;
                
        String apiURL = "http://service.mqnicrnd5.com/api/v1/rtsi/offer/gsi?"
                + "csrdId=" + csrdId + "&"
                + "pSignal=" + pSignal;

        Map<String, String> requestHeaders = new HashMap<>();
        requestHeaders.put("Authorization", accessToken);
        String responseBody = get(apiURL,requestHeaders);

        System.out.println(responseBody);
    }


    private static String get(String apiUrl, Map<String, String> requestHeaders) {
        HttpURLConnection con = connect(apiUrl);
        try {
            con.setRequestMethod("GET");
            for (Map.Entry<String, String> header : requestHeaders.entrySet()) {
                con.setRequestProperty(header.getKey(), header.getValue());
            }

            int responseCode = con.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK) { // 정상 호출
                return readBody(con.getInputStream());
            } else { // 오류 발생
                return readBody(con.getErrorStream());
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            con.disconnect();
        }
    }


    private static HttpURLConnection connect(String apiUrl) {
        try {
            URL url = new URL(apiUrl);
            return (HttpURLConnection) url.openConnection();
        } catch (MalformedURLException e) {
            throw new RuntimeException("API URL이 잘못되었습니다. : " + apiUrl, e);
        } catch (IOException e) {
            throw new RuntimeException("연결이 실패했습니다. : " + apiUrl, e);
        }
    }


    private static String readBody(InputStream body) {
        InputStreamReader streamReader = new InputStreamReader(body);


        try (BufferedReader lineReader = new BufferedReader(streamReader)) {
            StringBuilder responseBody = new StringBuilder();


            String line;
            while ((line = lineReader.readLine()) != null) {
                responseBody.append(line);
            }


            return responseBody.toString();
        } catch (IOException e) {
            throw new RuntimeException("API 응답을 읽는 데 실패했습니다.", e);
        }
    }

}

```

{% endtab %}

{% tab title="Python" %}

```python

import requests
import json

def send_get_request():

    accessToken = "Bearer " + "<접근 토큰>"

    csrdId = "1570062500,1570069937"
    pSignal = false
        
    apiURL = "http://service.mqnicrnd5.com/api/v1/rtsi/offer/gsi?" \
        + "csrdId=" + str(csrdId) + "&" \
        + "pSignal=" + str(pSignal)
   
    headers = {
        "Authorization": accessToken
    }
    
    response = requests.get(apiURL, headers=headers)
    
    print("GET Request:")
    print("Response Code:", response.status_code)
    print("Response:", response.text)

if __name__ == "__main__":
    send_get_request()


```

{% endtab %}

{% tab title="Node.js" %}

```javascript

const https = require('https');

function main() {
    const accessToken = "Bearer <접근 토큰>";
  
    const csrdId = "1570062500,1570069937";
    const pSignal = false;
    
    const apiURL = `http://service.mqnicrnd5.com/api/v1/rtsi/offer/gsi?csrdId=${csrdId}&pSignal=${pSignal}`;

    const headers = {
        'Authorization': accessToken
    };

    get(apiURL, headers)
        .then(responseBody => {
            console.log(responseBody);
        })
        .catch(error => {
            console.error('Error:', error);
        });
}

function get(apiURL, headers) {
    return new Promise((resolve, reject) => {
        const options = {
            headers: headers
        };

        https.get(apiURL, options, response => {
            let data = '';
            response.on('data', chunk => {
                data += chunk;
            });

            response.on('end', () => {
                resolve(data);
            });
        }).on('error', error => {
            reject(error);
        });
    });
}

main();

```

{% endtab %}

{% tab title="C#" %}

```csharp

using System;
using System.IO;
using System.Net;
using System.Text;

class Program
{
    static void Main(string[] args)
    {
        string accessToken = "Bearer <접근 토큰>";
        
        string csrdId = "1570062500,1570069937";
        bool pSignal = false;
        
        string apiURL = $"http://service.mqnicrnd5.com/api/v1/rtsi/offer/gsi?csrdId={csrdId}&pSignal={pSignal}";

        string responseBody = Get(apiURL, accessToken);

        Console.WriteLine(responseBody);
    }

    static string Get(string apiUrl, string accessToken)
    {
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiUrl);
            request.Method = "GET";
            request.Headers["Authorization"] = accessToken;

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            using (Stream stream = response.GetResponseStream())
            using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            {
                return reader.ReadToEnd();
            }
        }
        catch (WebException e)
        {
            using (WebResponse response = e.Response)
            using (Stream dataStream = response.GetResponseStream())
            using (StreamReader reader = new StreamReader(dataStream))
            {
                string errorResponse = reader.ReadToEnd();
                throw new Exception($"Error occurred: {errorResponse}", e);
            }
        }
    }
}

```

{% endtab %}
{% endtabs %}

### 신호정보 이력 리스트 조회 API (GetSignalHistFilePath)

{% tabs %}
{% tab title="Java" %}

```java

import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.util.HashMap;
import java.util.Map;
import java.net.URL;

public class CallAPI {

    public static void main(String[] args) {
        String accessToken = "Bearer " + "<접근 토큰>";
        
        String csrdId = "1570062500,1570069937";
        String stDttm = "202304011";
        String edDttm = "202304012";
                
        String apiURL = "http://service.mqnicrnd5.com/api/v1/rtsi/offer/gshf?"
                + "csrdId=" + csrdId + "&"
                + "stDttm=" + stDttm + "&"
                + "edDttm=" + edDttm;

        Map<String, String> requestHeaders = new HashMap<>();
        requestHeaders.put("Authorization", accessToken);
        String responseBody = get(apiURL,requestHeaders);

        System.out.println(responseBody);
    }


    private static String get(String apiUrl, Map<String, String> requestHeaders) {
        HttpURLConnection con = connect(apiUrl);
        try {
            con.setRequestMethod("GET");
            for (Map.Entry<String, String> header : requestHeaders.entrySet()) {
                con.setRequestProperty(header.getKey(), header.getValue());
            }

            int responseCode = con.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK) { // 정상 호출
                return readBody(con.getInputStream());
            } else { // 오류 발생
                return readBody(con.getErrorStream());
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            con.disconnect();
        }
    }


    private static HttpURLConnection connect(String apiUrl) {
        try {
            URL url = new URL(apiUrl);
            return (HttpURLConnection) url.openConnection();
        } catch (MalformedURLException e) {
            throw new RuntimeException("API URL이 잘못되었습니다. : " + apiUrl, e);
        } catch (IOException e) {
            throw new RuntimeException("연결이 실패했습니다. : " + apiUrl, e);
        }
    }


    private static String readBody(InputStream body) {
        InputStreamReader streamReader = new InputStreamReader(body);


        try (BufferedReader lineReader = new BufferedReader(streamReader)) {
            StringBuilder responseBody = new StringBuilder();


            String line;
            while ((line = lineReader.readLine()) != null) {
                responseBody.append(line);
            }


            return responseBody.toString();
        } catch (IOException e) {
            throw new RuntimeException("API 응답을 읽는 데 실패했습니다.", e);
        }
    }

}

```

{% endtab %}

{% tab title="Python" %}

```python

import requests
import json

def send_get_request():

    accessToken = "Bearer " + "<접근 토큰>"

    csrdId = "1570062500,1570069937"
    stDttm = "202304011"
    edDttm = "202304012"
        
    apiURL = "http://service.mqnicrnd5.com/api/v1/rtsi/offer/gshf?" \
        + "csrdId=" + str(csrdId) + "&" \
        + "stDttm=" + str(stDttm) + "&" \
        + "edDttm=" + str(edDttm) 
   
    headers = {
        "Authorization": accessToken
    }
    
    response = requests.get(apiURL, headers=headers)
    
    print("GET Request:")
    print("Response Code:", response.status_code)
    print("Response:", response.text)

if __name__ == "__main__":
    send_get_request()


```

{% endtab %}

{% tab title="Node.js" %}

```javascript

const https = require('https');

function main() {
    const accessToken = "Bearer <접근 토큰>";
  
    const csrdId = "1570062500,1570069937";
    const stDttm = "202304011";
    const edDttm = "202304012";
    
    const apiURL = `http://service.mqnicrnd5.com/api/v1/rtsi/offer/gshf?csrdId=${csrdId}&stDttm=${edDttm}&stDttm=${edDttm}`;

    const headers = {
        'Authorization': accessToken
    };

    get(apiURL, headers)
        .then(responseBody => {
            console.log(responseBody);
        })
        .catch(error => {
            console.error('Error:', error);
        });
}

function get(apiURL, headers) {
    return new Promise((resolve, reject) => {
        const options = {
            headers: headers
        };

        https.get(apiURL, options, response => {
            let data = '';
            response.on('data', chunk => {
                data += chunk;
            });

            response.on('end', () => {
                resolve(data);
            });
        }).on('error', error => {
            reject(error);
        });
    });
}

main();

```

{% endtab %}

{% tab title="C#" %}

```csharp

using System;
using System.IO;
using System.Net;
using System.Text;

class Program
{
    static void Main(string[] args)
    {
        string accessToken = "Bearer <접근 토큰>";
        
        string csrdId = "1570062500,1570069937";
        string stDttm = "202304011";
        string edDttm = "202304012";
        
        string apiURL = $"http://service.mqnicrnd5.com/api/v1/rtsi/offer/gshf?csrdId={csrdId}&stDttm={stDttm}&edDttm={edDttm}";

        string responseBody = Get(apiURL, accessToken);

        Console.WriteLine(responseBody);
    }

    static string Get(string apiUrl, string accessToken)
    {
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiUrl);
            request.Method = "GET";
            request.Headers["Authorization"] = accessToken;

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            using (Stream stream = response.GetResponseStream())
            using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            {
                return reader.ReadToEnd();
            }
        }
        catch (WebException e)
        {
            using (WebResponse response = e.Response)
            using (Stream dataStream = response.GetResponseStream())
            using (StreamReader reader = new StreamReader(dataStream))
            {
                string errorResponse = reader.ReadToEnd();
                throw new Exception($"Error occurred: {errorResponse}", e);
            }
        }
    }
}

```

{% endtab %}
{% endtabs %}

### 신호정보 이력 압축파일 제공 API (GetSignalHistData)

{% tabs %}
{% tab title="Java" %}

```java

import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.util.HashMap;
import java.util.Map;
import java.net.URL;

public class CallAPI {

    public static void main(String[] args) {
        String accessToken = "Bearer " + "<접근 토큰>";

        String filePath = "rtsi/1570193000/20240613/1570193000_rtsi_20240613.zip";

        String apiURL = "http://service.mqnicrnd5.com/api/v1/rtsi/offer/gshd?"
                + "filePath=" + filePath;

        Map<String, String> requestHeaders = new HashMap<>();
        requestHeaders.put("Authorization", accessToken);
        String responseBody = get(apiURL,requestHeaders);

        System.out.println(responseBody);
    }


    private static String get(String apiUrl, Map<String, String> requestHeaders) {
        HttpURLConnection con = connect(apiUrl);
        try {
            con.setRequestMethod("GET");
            for (Map.Entry<String, String> header : requestHeaders.entrySet()) {
                con.setRequestProperty(header.getKey(), header.getValue());
            }

            int responseCode = con.getResponseCode();
            if (responseCode == HttpURLConnection.HTTP_OK) { // 정상 호출
                return readBody(con.getInputStream());
            } else { // 오류 발생
                return readBody(con.getErrorStream());
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        } finally {
            con.disconnect();
        }
    }


    private static HttpURLConnection connect(String apiUrl) {
        try {
            URL url = new URL(apiUrl);
            return (HttpURLConnection) url.openConnection();
        } catch (MalformedURLException e) {
            throw new RuntimeException("API URL이 잘못되었습니다. : " + apiUrl, e);
        } catch (IOException e) {
            throw new RuntimeException("연결이 실패했습니다. : " + apiUrl, e);
        }
    }


    private static String readBody(InputStream body) {
        InputStreamReader streamReader = new InputStreamReader(body);


        try (BufferedReader lineReader = new BufferedReader(streamReader)) {
            StringBuilder responseBody = new StringBuilder();


            String line;
            while ((line = lineReader.readLine()) != null) {
                responseBody.append(line);
            }


            return responseBody.toString();
        } catch (IOException e) {
            throw new RuntimeException("API 응답을 읽는 데 실패했습니다.", e);
        }
    }

}

```

{% endtab %}

{% tab title="Python" %}

<pre class="language-python"><code class="lang-python">
import requests
import json

def send_get_request():

    accessToken = "Bearer " + "&#x3C;접근 토큰>"
    
<strong>    filePath = "rtsi/1570193000/20240613/1570193000_rtsi_20240613.zip"
</strong><strong>    
</strong>    apiURL = "http://service.mqnicrnd5.com/api/v1/rtsi/offer/gshd?" \
        + "filePath=" + str(filePath)
   
    headers = {
        "Authorization": accessToken
    }
    
    response = requests.get(apiURL, headers=headers)
    
    print("GET Request:")
    print("Response Code:", response.status_code)
    print("Response:", response.text)

if __name__ == "__main__":
    send_get_request()


</code></pre>

{% endtab %}

{% tab title="Node.js" %}

```javascript

const https = require('https');

function main() {
    const accessToken = "Bearer <접근 토큰>";

    const filePath = "rtsi/1570193000/20240613/1570193000_rtsi_20240613.zip";
    
    const apiURL = `http://service.mqnicrnd5.com/api/v1/rtsi/offer/gshd?filePath=${filePath}`;

    const headers = {
        'Authorization': accessToken
    };

    get(apiURL, headers)
        .then(responseBody => {
            console.log(responseBody);
        })
        .catch(error => {
            console.error('Error:', error);
        });
}

function get(apiURL, headers) {
    return new Promise((resolve, reject) => {
        const options = {
            headers: headers
        };

        https.get(apiURL, options, response => {
            let data = '';
            response.on('data', chunk => {
                data += chunk;
            });

            response.on('end', () => {
                resolve(data);
            });
        }).on('error', error => {
            reject(error);
        });
    });
}

main();

```

{% endtab %}

{% tab title="C#" %}

```csharp

using System;
using System.IO;
using System.Net;
using System.Text;

class Program
{
    static void Main(string[] args)
    {
        string accessToken = "Bearer <접근 토큰>";

        string filePath = "rtsi/1570193000/20240613/1570193000_rtsi_20240613.zip";

        string apiURL = $"http://service.mqnicrnd5.com/api/v1/rtsi/offer/gshd?filePath={filePath}";

        string responseBody = Get(apiURL, accessToken);

        Console.WriteLine(responseBody);
    }

    static string Get(string apiUrl, string accessToken)
    {
        try
        {
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(apiUrl);
            request.Method = "GET";
            request.Headers["Authorization"] = accessToken;

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            using (Stream stream = response.GetResponseStream())
            using (StreamReader reader = new StreamReader(stream, Encoding.UTF8))
            {
                return reader.ReadToEnd();
            }
        }
        catch (WebException e)
        {
            using (WebResponse response = e.Response)
            using (Stream dataStream = response.GetResponseStream())
            using (StreamReader reader = new StreamReader(dataStream))
            {
                string errorResponse = reader.ReadToEnd();
                throw new Exception($"Error occurred: {errorResponse}", e);
            }
        }
    }
}

```

{% endtab %}
{% endtabs %}

## 응답 코드

본 페이지의 제공 API 호출 시 발생할 수 있는 응답 코드입니다. 오류가 발생한 경우 아래와 같은 형식의 오류 메세지가 반환됩니다.

```json
{
    "message": "Invalid Input Value",
    "status": 400,
    "code": "C004"
}
```

<table><thead><tr><th width="110" align="center">HTTP 코드</th><th width="110" align="center">에러 코드</th><th align="center">에러 메세지</th><th align="center">설명</th></tr></thead><tbody><tr><td align="center">200</td><td align="center">-</td><td align="center">-</td><td align="center">성공</td></tr><tr><td align="center">204</td><td align="center">-</td><td align="center">-</td><td align="center">조회 대상 데이터(파일)가 존재하지 않는 경우 (응답 본문 없음)</td></tr><tr><td align="center">400</td><td align="center">C004</td><td align="center">Invalid Input Value</td><td align="center">요청 파라미터가 누락되었거나 형식·값 검증에 실패한 경우</td></tr><tr><td align="center">400</td><td align="center">C004</td><td align="center">Invalid Type Value</td><td align="center">요청 파라미터의 타입이 올바르지 않은 경우</td></tr><tr><td align="center">400</td><td align="center">C004</td><td align="center">Invalid File Path</td><td align="center">요청한 파일 경로(filePath)가 유효하지 않은 경우</td></tr><tr><td align="center">401</td><td align="center">C004</td><td align="center">Authentication Failed (인증에 실패하였습니다.)</td><td align="center">접근 토큰이 없거나 유효하지 않은(만료 포함) 경우</td></tr><tr><td align="center">401</td><td align="center">C004</td><td align="center">Access Denied (권한이 존재하지 않습니다.)</td><td align="center">해당 API에 대한 권한이 없는 경우</td></tr><tr><td align="center">404</td><td align="center">C004</td><td align="center">Not Found</td><td align="center">조회 대상 데이터 또는 파일이 존재하지 않는 경우</td></tr><tr><td align="center">404</td><td align="center">C004</td><td align="center">Page Not Found (API가 존재하지 않습니다.)</td><td align="center">요청 URL이 존재하지 않는 경우</td></tr><tr><td align="center">500</td><td align="center">C005</td><td align="center">Server Error</td><td align="center">서버 내부 오류가 발생한 경우</td></tr></tbody></table>

자세한 내용은 [Rest API 공통 가이드](/guide/common/rest-api.md)의 오류 코드 항목을 참고하세요.
