Skip to main content

Get Job Status

GET https://api.usenexio.com/api/v1/jobs/{eval_id}
Retrieve the current status and results of a submitted evaluation job. Use this endpoint to poll for results if you did not provide a webhook_url when submitting the job.
This endpoint is planned. The job submission endpoint (POST /api/v1/jobs) is live in production. Polling support is coming soon — use webhook_url on job submission for now.

Request

Path Parameters

eval_id
string
required
The evaluation identifier returned by POST /api/v1/jobs.Example: eval_7xKp2mNc

Headers

HeaderRequiredValue
X-API-KeyYesYour API key

Example Request

curl https://api.usenexio.com/api/v1/jobs/eval_7xKp2mNc \
  -H "X-API-Key: nx_live_YOUR_KEY"

Response

200 OK — Evaluation in progress

{
  "eval_id": "eval_7xKp2mNc",
  "status": "processing"
}

200 OK — Evaluation completed

eval_id
string
The evaluation identifier.
status
string
"queued", "processing", "completed", or "failed".
pool_size
number
Total candidates in the pool before filtering.
filtered
number
Candidates removed during the filter stage.
candidates
array
Ranked list of candidates. Present when status is "completed".
audit
string
URL to the full audit trace. Present when status is "completed".
{
  "eval_id": "eval_7xKp2mNc",
  "status": "completed",
  "pool_size": 1847,
  "filtered": 53,
  "candidates": [
    {
      "tier": "STRONG_FIT",
      "name": "Hartford Financial",
      "confidence": "HIGH",
      "scores": {
        "appetite": "L1",
        "coverage": "L2",
        "financial": "L1",
        "pricing": "L1",
        "placement": "L1",
        "service": "L2"
      },
      "reasoning": "Strong CA prof. liability appetite, $10–15M band..."
    }
  ],
  "audit": "https://api.usenexio.com/traces/eval_7xKp2mNc"
}

Status Values

StatusMeaning
queuedJob received and waiting to be processed
processingWorker is actively running the evaluation pipeline
completedEvaluation finished successfully; results available
failedEvaluation failed; check error field for details

Polling Guidance

If polling (rather than using webhooks), use exponential backoff:
TypeScript
async function pollEvaluation(evalId: string, apiKey: string) {
  const maxAttempts = 10
  let delay = 2000 // start at 2 seconds

  for (let attempt = 0; attempt < maxAttempts; attempt++) {
    const response = await fetch(
      `https://api.usenexio.com/api/v1/jobs/${evalId}`,
      { headers: { "X-API-Key": apiKey } }
    )
    const data = await response.json()

    if (data.status === "completed" || data.status === "failed") {
      return data
    }

    await new Promise((resolve) => setTimeout(resolve, delay))
    delay = Math.min(delay * 1.5, 30000) // cap at 30 seconds
  }

  throw new Error("Evaluation timed out")
}
For most use cases, webhooks are simpler and more efficient than polling. Consider polling only when you cannot expose a public HTTPS endpoint for webhooks.