Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.getmuster.io/llms.txt

Use this file to discover all available pages before exploring further.

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.