SSpiderIQ
SSpiderIQ

Docs / api-reference/catalog-evals-opvs

Catalog Evals (OPVS)

2 endpoints from the published OpenAPI import.

POST/api/v1/catalog/models/{model_ref}/evals

Contribute Eval

Contribute a machine-eval aggregate (kind:auto) or human rating (kind:human).

Upserts into the kind-scoped partial-unique key space so a re-report of the same (model_ref, task_type, source[, rated_by]) updates in place and the two kinds never collide (G4). kind:human requires the master/super_admin actor; a broker key is 403'd.

Parameters

NameInTypeRequiredDescription
model_refpathstringtrue
Try it
Query

Examples

cURL
curl -X POST 'https://spideriq.ai/api/v1/catalog/models/{model_ref}/evals' \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "kind": "string",
  "source": "string",
  "task_type": "string",
  "runs": 0,
  "successes": 0,
  "failures": 0,
  "no_gate_runs": 0,
  "success_rate": 0.0,
  "avg_cost_usd": 0.0,
  "avg_turns": 0.0,
  "avg_gate_duration_ms": 0,
  "method": "string",
  "window_first_run_at": "2026-01-01T00:00:00Z",
  "window_last_run_at": "2026-01-01T00:00:00Z",
  "confidence": "string",
  "stars": 0.0,
  "rated_by": "string",
  "review_text": "string",
  "provenance": {}
}'
Python
import httpx

resp = httpx.post(
    "https://spideriq.ai/api/v1/catalog/models/{model_ref}/evals",
    headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
    json={"kind": "string", "source": "string", "task_type": "string", "runs": 0, "successes": 0, "failures": 0, "no_gate_runs": 0, "success_rate": 0.0, "avg_cost_usd": 0.0, "avg_turns": 0.0, "avg_gate_duration_ms": 0, "method": "string", "window_first_run_at": "2026-01-01T00:00:00Z", "window_last_run_at": "2026-01-01T00:00:00Z", "confidence": "string", "stars": 0.0, "rated_by": "string", "review_text": "string", "provenance": {}},
)
resp.raise_for_status()
print(resp.json())
JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/catalog/models/{model_ref}/evals", {
  method: "POST",
  headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
  body: JSON.stringify({"kind": "string", "source": "string", "task_type": "string", "runs": 0, "successes": 0, "failures": 0, "no_gate_runs": 0, "success_rate": 0.0, "avg_cost_usd": 0.0, "avg_turns": 0.0, "avg_gate_duration_ms": 0, "method": "string", "window_first_run_at": "2026-01-01T00:00:00Z", "window_last_run_at": "2026-01-01T00:00:00Z", "confidence": "string", "stars": 0.0, "rated_by": "string", "review_text": "string", "provenance": {}})
});
const data = await resp.json();
console.log(data);
Go
package main

import (
	"net/http"
	"strings"
)

func main() {
	body := strings.NewReader(`{"kind": "string", "source": "string", "task_type": "string", "runs": 0, "successes": 0, "failures": 0, "no_gate_runs": 0, "success_rate": 0.0, "avg_cost_usd": 0.0, "avg_turns": 0.0, "avg_gate_duration_ms": 0, "method": "string", "window_first_run_at": "2026-01-01T00:00:00Z", "window_last_run_at": "2026-01-01T00:00:00Z", "confidence": "string", "stars": 0.0, "rated_by": "string", "review_text": "string", "provenance": {}}`)
	req, _ := http.NewRequest("POST", "https://spideriq.ai/api/v1/catalog/models/{model_ref}/evals", body)
	req.Header.Set("Authorization", "Bearer <token>")
	req.Header.Set("Content-Type", "application/json")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}

Responses

StatusDescription
201Successful Response
422Validation Error
PATCH/api/v1/catalog/models/{model_ref}/evals/{eval_id}

Patch Eval

Update one eval row by id (COALESCE-preserve — only supplied fields change).

The periodic auto rollup PATCHes its own auto rows; it can NEVER reach a human row — a "broker" actor is 403'd from touching kind='human' (G4 at the API layer). Identity columns (model_ref / kind / source / task_type) are immutable.

Parameters

NameInTypeRequiredDescription
model_refpathstringtrue
eval_idpathintegertrue
Try it
Query

Examples

cURL
curl -X PATCH 'https://spideriq.ai/api/v1/catalog/models/{model_ref}/evals/{eval_id}' \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "runs": 0,
  "successes": 0,
  "failures": 0,
  "no_gate_runs": 0,
  "success_rate": 0.0,
  "avg_cost_usd": 0.0,
  "avg_turns": 0.0,
  "avg_gate_duration_ms": 0,
  "method": "string",
  "window_first_run_at": "2026-01-01T00:00:00Z",
  "window_last_run_at": "2026-01-01T00:00:00Z",
  "confidence": "string",
  "stars": 0.0,
  "review_text": "string",
  "provenance": {}
}'
Python
import httpx

resp = httpx.patch(
    "https://spideriq.ai/api/v1/catalog/models/{model_ref}/evals/{eval_id}",
    headers={"Authorization": "Bearer <token>", "Content-Type": "application/json"},
    json={"runs": 0, "successes": 0, "failures": 0, "no_gate_runs": 0, "success_rate": 0.0, "avg_cost_usd": 0.0, "avg_turns": 0.0, "avg_gate_duration_ms": 0, "method": "string", "window_first_run_at": "2026-01-01T00:00:00Z", "window_last_run_at": "2026-01-01T00:00:00Z", "confidence": "string", "stars": 0.0, "review_text": "string", "provenance": {}},
)
resp.raise_for_status()
print(resp.json())
JavaScript
const resp = await fetch("https://spideriq.ai/api/v1/catalog/models/{model_ref}/evals/{eval_id}", {
  method: "PATCH",
  headers: { "Authorization": "Bearer <token>", "Content-Type": "application/json" },
  body: JSON.stringify({"runs": 0, "successes": 0, "failures": 0, "no_gate_runs": 0, "success_rate": 0.0, "avg_cost_usd": 0.0, "avg_turns": 0.0, "avg_gate_duration_ms": 0, "method": "string", "window_first_run_at": "2026-01-01T00:00:00Z", "window_last_run_at": "2026-01-01T00:00:00Z", "confidence": "string", "stars": 0.0, "review_text": "string", "provenance": {}})
});
const data = await resp.json();
console.log(data);
Go
package main

import (
	"net/http"
	"strings"
)

func main() {
	body := strings.NewReader(`{"runs": 0, "successes": 0, "failures": 0, "no_gate_runs": 0, "success_rate": 0.0, "avg_cost_usd": 0.0, "avg_turns": 0.0, "avg_gate_duration_ms": 0, "method": "string", "window_first_run_at": "2026-01-01T00:00:00Z", "window_last_run_at": "2026-01-01T00:00:00Z", "confidence": "string", "stars": 0.0, "review_text": "string", "provenance": {}}`)
	req, _ := http.NewRequest("PATCH", "https://spideriq.ai/api/v1/catalog/models/{model_ref}/evals/{eval_id}", body)
	req.Header.Set("Authorization", "Bearer <token>")
	req.Header.Set("Content-Type", "application/json")
	resp, _ := http.DefaultClient.Do(req)
	defer resp.Body.Close()
}

Responses

StatusDescription
200Successful Response
422Validation Error