# Job Status Endpoint Documentation ## 1. Overview The `/v1/toolkit/job/status` endpoint is part of the Toolkit API and is used to retrieve the status of a specific job. It fits into the overall API structure as a utility endpoint for monitoring and managing jobs submitted to the various media processing endpoints. ## 2. Endpoint **URL Path:** `/v1/toolkit/job/status` **HTTP Method:** `POST` ## 3. Request ### Headers - `x-api-key` (required): The API key for authentication. ### Body Parameters The request body must be a JSON object with the following parameter: - `job_id` (string, required): The unique identifier of the job for which the status is requested. The `validate_payload` directive in the routes file enforces the following JSON schema for the request body: ```python { "type": "object", "properties": { "job_id": { "type": "string" } }, "required": ["job_id"], } ``` ### Example Request ```json { "job_id": "e6d7f3c0-9c9f-4b8a-b7c3-f0e3c9f6b9d7" } ``` ```bash curl -X POST \ -H "x-api-key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"job_id": "e6d7f3c0-9c9f-4b8a-b7c3-f0e3c9f6b9d7"}' \ http://your-api-endpoint/v1/toolkit/job/status ``` ## 4. Response ### Success Response The success response will contain the job status file content directly, as shown in the example response from `app.py`: ```json { "endpoint": "/v1/toolkit/job/status", "code": 200, "id": null, "job_id": "e6d7f3c0-9c9f-4b8a-b7c3-f0e3c9f6b9d7", "response": { "job_status": "done", "job_id": "e6d7f3c0-9c9f-4b8a-b7c3-f0e3c9f6b9d7", "queue_id": 140368864456064, "process_id": 123456, "response": { "endpoint": "/v1/media/transcribe", "code": 200, "id": "transcribe_job_123", "job_id": "e6d7f3c0-9c9f-4b8a-b7c3-f0e3c9f6b9d7", "response": "Transcription completed successfully.", "message": "success", "pid": 123456, "queue_id": 140368864456064, "run_time": 5.234, "queue_time": 1.123, "total_time": 6.357, "queue_length": 0, "build_number": "1.0.0" } }, "message": "success", "pid": 123456, "queue_id": 140368864456064, "run_time": 0.001, "queue_time": 0.0, "total_time": 0.001, "queue_length": 0, "build_number": "1.0.0" } ``` ### Error Responses - **404 Not Found**: If the job with the provided `job_id` is not found, the response will be: ```json { "error": "Job not found", "job_id": "e6d7f3c0-9c9f-4b8a-b7c3-f0e3c9f6b9d7" } ``` - **500 Internal Server Error**: If an unexpected error occurs while retrieving the job status, the response will be: ```json { "error": "Failed to retrieve job status: ", "code": 500 } ``` ## 5. Error Handling - **Missing or Invalid Parameters**: If the `job_id` parameter is missing or invalid, the request will be rejected with a 400 Bad Request error. - **Job Not Found**: If the job with the provided `job_id` is not found, a 404 Not Found error will be returned. - **Unexpected Errors**: Any unexpected errors that occur during the retrieval of the job status will result in a 500 Internal Server Error response. The main application context (`app.py`) includes error handling for queue overflow situations, where a 429 Too Many Requests error is returned if the maximum queue length is reached. ## 6. Usage Notes - Ensure that you have a valid API key for authentication. - The `job_id` parameter must be a valid UUID string representing an existing job. - This endpoint does not perform any media processing; it only retrieves the status of a previously submitted job. ## 7. Common Issues - Providing an invalid or non-existent `job_id`. - Attempting to retrieve the status of a job that has already been processed and removed from the system. ## 8. Best Practices - Use this endpoint to monitor the progress of long-running jobs or to check the status of completed jobs. - Implement proper error handling in your client application to handle different error scenarios, such as job not found or unexpected errors. - Consider rate-limiting or implementing a queue system on the client side to avoid overwhelming the API with too many requests.