For tools that don’t run Python (n8n, Flowise, Dify, Botpress), you can send quality signals directly via HTTP POST.
Endpoint
POST https://app.getmuster.io/api/v1/jobs/{job_id}/quality
Content-Type: application/json
Request body
{
"agent_id": "your-agent-name",
"job_id": "unique-job-identifier",
"overall_passed": true,
"token_input": 1247,
"token_output": 312,
"model": "gpt-4o",
"latency_ms": 1840,
"checks": [
{
"check_id": "output_not_empty",
"severity": "HIGH",
"passed": true
},
{
"check_id": "required_fields_present",
"severity": "HIGH",
"passed": true,
"expected": "vendor,total,date",
"actual": "vendor,total,date"
}
]
}
Response
{
"signal_id": "uuid",
"agent_id": "uuid",
"job_id": "your-job-id",
"overall_passed": true,
"check_count": 2,
"passed_count": 2,
"received_at": "2026-03-24T10:00:00Z"
}
The quality endpoint does not require authentication. This allows agents to post directly without managing tokens. Rate limiting applies: 1000 requests/minute per agent.
cURL example
curl -X POST https://app.getmuster.io/api/v1/jobs/job-001/quality \
-H "Content-Type: application/json" \
-d '{
"agent_id": "invoice-processor-v2",
"job_id": "job-001",
"overall_passed": true,
"checks": [
{"check_id": "output_not_empty", "severity": "HIGH", "passed": true}
]
}'
n8n example
Add an HTTP Request node at the end of your workflow:
| Setting | Value |
|---|
| Method | POST |
| URL | https://app.getmuster.io/api/v1/jobs/{{ $now.toMillis() }}/quality |
| Body Content Type | JSON |
Body:
{
"agent_id": "your-n8n-workflow-name",
"job_id": "{{ $now.toMillis() }}",
"overall_passed": {{ $node["Your Last Node"].data ? true : false }},
"checks": [
{
"check_id": "output_not_empty",
"severity": "HIGH",
"passed": {{ $node["Your Last Node"].data ? true : false }}
}
]
}
See the full n8n integration guide for more examples.