Submit a job
bash
curl -X POST https://driftrail.com/nerox/api/v1/jobs \
-H "Authorization: Bearer nrx_sk_..." \
-H "Content-Type: application/json" \
-d '{
"problem_type": "tsp",
"payload": {
"distance_matrix": [[0,10,15],[10,0,20],[15,20,0]]
},
"solver": "gpu",
"config": { "n_runs": 512 }
}'
# Response:
# { "job_id": "job_abc123", "status": "queued", "queued_at": "..." }Poll for result
bash
# Poll until status is "completed" or "failed"
curl https://driftrail.com/nerox/api/v1/jobs/job_abc123 \
-H "Authorization: Bearer nrx_sk_..."
# Response when done:
# {
# "job_id": "job_abc123",
# "status": "completed",
# "result": {
# "objective": 45.0,
# "solution": [0, 2, 1],
# "runtime_s": 3.2,
# "gpu_seconds": 3.2
# }
# }Submit QUBO from any language
javascript
// JavaScript / Node.js example
const response = await fetch('https://driftrail.com/nerox/api/v1/jobs', {
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.NEROX_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
problem_type: 'qubo',
payload: { Q: [[1, -2], [-2, 1]] },
solver: 'gpu',
}),
});
const { job_id } = await response.json();
// Poll for result
let result;
while (true) {
const r = await fetch(`https://driftrail.com/nerox/api/v1/jobs/${job_id}`, {
headers: { 'Authorization': `Bearer ${process.env.NEROX_API_KEY}` },
});
const data = await r.json();
if (data.status === 'completed') { result = data.result; break; }
if (data.status === 'failed') throw new Error(data.error);
await new Promise(resolve => setTimeout(resolve, 2000)); // poll every 2s
}
console.log(result.solution, result.objective);Full API reference
See the API Reference for all endpoints, request/response schemas, rate limits, and error codes. An OpenAPI 3.0 specification is available at https://driftrail.com/nerox/api/openapi.json.
