# API Reference

Video Inference API는 Roboflow Python SDK와 REST API를 통해 사용할 수 있습니다.

### 기본 URL

API는 다음 URL을 사용합니다:

```
https://api.roboflow.com
```

### API 메서드

roboflow Pip 패키지를 통해 video inference에 접근하는 것을 강력히 권장합니다.\
\
다음의 raw Video Inference API는 `https://api.roboflow.com` 에는 세 가지 메서드가 있습니다:

<table><thead><tr><th>메서드</th><th>설명</th></tr></thead><tbody><tr><td><code>POST</code> <code>/video_upload_signed_url/?api_key={{WORKSPACE_API_KEY}}</code></td><td><p>이 엔드포인트는 사용자가 비디오를 업로드할 수 있는 서명된 URL을 반환합니다.<br><br>이 엔드포인트는 다음과 같이 파일 이름이 포함된 JSON 입력을 받습니다</p><pre><code>{
    "file_name": "my_video_file.mp4"
}
</code></pre><p>서명된 URL이 반환됩니다</p><pre class="language-json"><code class="lang-json">{
    "signed_url": "https://storage.googleapis.com/roboflow_video_inference_input/GNPwawe7dxWthlZZ24r72VRTV852/oct27_video_file.mp4?X-Goog-Algorithm=GOOG4-RSA-SHA256&#x26;X-Goog-Credential=roboflow-staging%40appspot.gserviceaccount.com%2F2023110......."
}
</code></pre><p><br>그런 다음 원하는 업로드 프로그램(예: cURL)을 사용해 서명된 URL로 비디오 파일을 PUT할 수 있습니다.</p><pre class="language-bash"><code class="lang-bash">curl -X PUT "my_signed_url" \
-H "Content-Type: application/octet-stream" \
--data-binary "@your_video.mp4"
</code></pre></td></tr><tr><td><code>POST</code> <code>/videoinfer/?api_key={{WORKSPACE_API_KEY}}</code></td><td><p>이 엔드포인트는 처리할 비디오 inference 작업을 예약하기 위한 JSON 입력을 받습니다. INPUT_URL은 공개적으로 접근 가능한 어떤 URL이든 될 수 있으며, 먼저 서명된 URL을 만들고 그다음 Roboflow에 비디오를 업로드할 필요가 없습니다.</p><p>요청 본문의 예시는 아래와 같습니다:</p><pre><code>{
    "input_url": "{{INPUT_URL}}",
    "infer_fps": 5,
    "models": [
        {
            "model_id": "rock-paper-scissors-presentation",
            "model_version": "4",
            "inference_type": "object-detection",
            "inference_params": {"confidence": 0.4}
        }
    ]
}
</code></pre><p>다음을 참고해 주세요 <code>models[*].inference_params</code> 는 선택 사항입니다.</p><p>응답은 다음과 같은 JSON 문자열입니다</p><pre class="language-json"><code class="lang-json">{
    "job_id": "fec28362-f7d9-4cc0-a805-5e94495d063d",
    "message": "이 엔드포인트는 videojob을 생성합니다"
}
</code></pre><p><br>다음 항목에서 여러 모델을 지정할 수 있습니다. <code>models</code> 배열.  <code>infer_fps</code> 필드는 최소한 다음 값으로 설정되어야 합니다. <code>1</code> 그리고 그 값은 비디오 프레임 속도를 초과해서는 안 됩니다. 대부분의 사용 사례에서 비디오 프레임 속도는 다음 값의 정확한 배수입니다. <code>infer_fps</code> .</p></td></tr><tr><td><code>GET</code> <code>/videoinfer/?api_key={{WORKSPACE_API_KEY}}&#x26;job_id={{JOB_ID}}</code></td><td>이 엔드포인트는 작업의 현재 상태를 반환합니다. 이 엔드포인트에는 rate limit이 있으므로 1분에 한 번보다 자주 이 엔드포인트를 조회하지 마세요.<br><br>작업이 성공하면 반환된 JSON의 <code>status</code> 키는 0으로 설정되고, <code>output_signed_url</code> 키에는 video inference 결과를 다운로드할 링크가 포함됩니다.<br><br>만약 <code>status</code> 가 1로 설정되어 있으면 작업 처리가 완료되지 않았음을 의미합니다. 그보다 큰 값은 작업 실패를 의미합니다.</td></tr><tr><td></td><td></td></tr></tbody></table>

에서 저장된 JSON 파일을 다운로드한 후에는 `output_signed_url` location, 해당 파일을 파싱하여 inference 정보를 얻을 수 있습니다. json 파일의 형식은 [여기에 설명되어 있습니다](https://inference.roboflow.com/workflows/definitions/).
