Skip to main content
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:
SettingValue
MethodPOST
URLhttps://app.getmuster.io/api/v1/jobs/{{ $now.toMillis() }}/quality
Body Content TypeJSON
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.