Skip to content

Nestor Serve

Submit work to dedicated, always-warm GPUs and receive the result through the API. This page covers the shortest path to a successful job.

For production details, see Integration patterns. For every endpoint and field, see the API reference.

1. Set your credentials

Nestor gives you an API key and one endpoint ID per workload. Keep the API key server-side in your secret manager.

export NESTOR_API_KEY=nsk_...
export NESTOR_ENDPOINT=ep_...

Confirm the key and discover the endpoints it can access:

curl -sS https://api.serve.nestor.software/v1/me \
  -H "Authorization: Bearer $NESTOR_API_KEY"

A 401 usually means the key contains a stray space or was truncated while being copied.

2. Prepare the workflow

For ComfyUI, enable Settings → Enable Dev mode options, then select Save (API Format). The normal Save format is a UI graph and cannot be submitted to the API.

Keep the API-format workflow in your repository. It determines the output and should be versioned with the code that submits it.

3. Submit a job

curl -sS -X POST \
  "https://api.serve.nestor.software/v1/endpoints/$NESTOR_ENDPOINT/jobs" \
  -H "Authorization: Bearer $NESTOR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: your-record-id" \
  -d @- <<'JSON'
{
  "input": { "workflow": { "...": "your API-format workflow" } },
  "metadata": { "your_id": "12345" }
}
JSON
{ "id": "job_...", "status": "queued", "created_at": "..." }

202 Accepted means the job was recorded and will run even if the submitting process disconnects. Reusing the same Idempotency-Key safely returns the original job instead of running it twice. metadata is returned unchanged on job reads and webhooks, so it is the simplest place for your own record ID.

4. Get the result

Poll the job while testing:

curl -sS "https://api.serve.nestor.software/v1/jobs/$JOB_ID" \
  -H "Authorization: Bearer $NESTOR_API_KEY"

A job moves from queued to running, then to succeeded, failed, or canceled. Successful jobs include downloadable artifacts:

{
  "status": "succeeded",
  "output": {
    "artifacts": [
      {
        "type": "image",
        "url": "https://...",
        "content_type": "image/png",
        "file_name": "output.png"
      }
    ]
  }
}

Artifact URLs expire after seven days. Copy anything you intend to keep into your own storage.

Use signed webhooks instead of continuous polling in production. The complete handler and retry behavior are in Integration patterns.

5. Inspect a job

Open the console and paste your API key. It is read-only and shows job status, timing, artifacts, endpoint capacity, and the GPU handling each active job.

For help, email sales@nestor.software with the job ID. It contains the request, image digest, node, GPU, and timing needed to trace what happened.