Check Status
Check all jobs associated with a submitted task.
Authorization
bearer In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
curl -X POST "https://example.com/api/v2/status" \ -H "Content-Type: application/json" \ -d '{ "subscription_key": "your-subscription-key" }'{ "error": "NO_SUCH_TASK", "jobs": [ { "uuid": "123e4567-e89b-12d3-a456-426614174000", "status": "Waiting", "queue_length": 0 } ], "message": "string"}Identifier
Send jobs.subscription_key from the generation response. Do not send the top-level uuid or an entry from jobs.uuids to this endpoint.
Job states
Each entry in jobs reports one of four states:
| State | Meaning |
|---|---|
Waiting | Queued, or waiting for a job it depends on. |
Generating | A worker is running the job. |
Done | Results for this job can be downloaded. |
Failed | The job stopped and will not produce results. |
While a job is Waiting, the response may also carry queue_length, an approximate count of jobs ahead of it. The field is omitted once the job leaves the queue.
Examples Input
curl --fail-with-body --request POST 'https://api.hyper3d.com/api/v2/status' \
--header "Authorization: Bearer ${RODIN_API_KEY}" \
--header 'Content-Type: application/json' \
--data '{"subscription_key":"subscription-key-from-generation-response"}'
import os
import requests
api_key = os.environ["RODIN_API_KEY"]
response = requests.post(
"https://api.hyper3d.com/api/v2/status",
headers={"Authorization": f"Bearer {api_key}"},
json={"subscription_key": "subscription-key-from-generation-response"},
timeout=30,
)
response.raise_for_status()
print(response.json())
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
"time"
)
func main() {
body, err := json.Marshal(map[string]string{
"subscription_key": "subscription-key-from-generation-response",
})
if err != nil {
panic(err)
}
req, err := http.NewRequest(http.MethodPost, "https://api.hyper3d.com/api/v2/status", bytes.NewReader(body))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("RODIN_API_KEY"))
req.Header.Set("Content-Type", "application/json")
client := &http.Client{Timeout: 30 * time.Second}
response, err := client.Do(req)
if err != nil {
panic(err)
}
defer response.Body.Close()
responseBody, err := io.ReadAll(response.Body)
if err != nil {
panic(err)
}
if response.StatusCode >= 400 {
panic(fmt.Sprintf("HTTP %d: %s", response.StatusCode, responseBody))
}
fmt.Println(string(responseBody))
}
Response
{
"jobs": [
{
"uuid": "223e4567-e89b-12d3-a456-426614174000",
"status": "Done"
}
]
}
Polling and errors
The endpoint returns HTTP 201 on a successful query. HTTP 400 indicates an invalid body, 401 indicates missing or invalid authentication, and 429 indicates throttling. Start after 5 seconds, back off to at most 30 seconds, honor Retry-After, stop on any Failed job, and impose a client-side deadline.