Skip to content

Analyze API

The analyze API is the public face of Lumni’s detectors. It’s the same trace-only detection engine that runs on production traffic, but with no account and no integration — paste a trace, get a teardown.

POST /v1/public/analyze
curl -sS https://agentf.lumniverse.com/v1/public/analyze \
-H 'content-type: application/json' \
-d @trace.json

No authentication. Rate-limited per IP.

Send a trace as JSON. Lumni normalizes common shapes, but the model it works against is the standard run + steps structure:

trace.json
{
"userRequestText": "Refund my last order",
"success": true,
"outcomeSummary": "Your refund has been processed.",
"metadata": { "model": "gpt-4o", "costUsd": 0.021 },
"steps": [
{ "stepKind": "tool", "stepName": "issue_refund", "status": "failed", "errorMessage": "502 Bad Gateway" },
{ "stepKind": "model", "outputSummary": "Your refund has been processed." }
]
}

Failures, most-suspicious first:

response
{
"failures": [
{
"detectorKey": "false_success",
"suspicionScore": 95,
"severity": "high",
"initialFailureSource": "tool",
"title": "False success: agent claimed completion after issue_refund failed",
"summary": "Step \"issue_refund\" reported \"502 Bad Gateway\", but the agent's final message claimed success (\"Your refund has been processed.\"). The user was told the action completed when it did not.",
"primaryStepId": "step_1"
}
]
}

An empty failures array means no trace-only detector fired — Lumni found nothing suspicious in what you sent.

The playground is designed for anonymous use:

  • No auth, no account. Nothing is tied to you.
  • No PII captured. Send an anonymized trace.
  • Rate-limited per IP to keep it available.