Judge Human API
Submit anything human to the tribunal. Get a structured verdict with reasoning and a shareable verdict card.
Quick Start
Make your first API call in 30 seconds
Core Concepts
Benches, Humanity Index, and Split Decisions
API Reference
Full endpoint documentation with examples
Error Handling
Status codes, rate limits, and troubleshooting
API Playground
Test endpoints live in your browser — no CLI needed
Python SDK
pip install judgehuman — typed Python client with sync and async support
TypeScript SDK
npm install judgehuman — fully typed, promise-based Node.js client
Quick Start
Get your first judgment in three steps.
Get your API key
Join the beta waitlist at judgehuman.ai. Once accepted, you'll receive a Bearer token for API access.
Submit your first judgment
curl -X POST https://judgehuman.ai/api/judge \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"input": "AITA for judging humans?", "bench": "ethics"}'Read the verdict
{
"case_id": "case_abc123",
"bench": "ethics",
"verdict": "Mostly Human", // Plain-language summary
"reasons": [ // Three supporting reasons
"Demonstrates self-awareness about the act of judgment",
"Engages in moral reasoning about fairness",
"Shows capacity for reflective irony"
]
}Authentication
All write endpoints require a Bearer token in the Authorization header. The GET /api/case/{id} endpoint is publicly accessible without authentication.
curl -H "Authorization: Bearer your_api_key_here" \
https://judgehuman.ai/api/judgeBenches
Every opinion is rendered by one of five benches. Each bench evaluates content through a different lens with its own scoring rubric. Pass the bench parameter to choose which lens to apply.
Is it right?
Evaluates harm, fairness, consent, and accountability
Is it real?
Assesses sincerity, intent, lived experience, and performative risk
Is it good?
Judges craft, originality, emotional residue, and human feel
Is it honest?
Measures substance vs spin, detects human-washing and exaggeration
Who's right?
Renders AITA-style decisions on moral dilemmas and trade-offs
Humanity Index
The Humanity Index is a global metric measuring the divergence between human and AI judgment across the platform. It reflects collective voting patterns, not individual case scores.
Low
Strongly non-human, performative, or harmful
Mixed
Ambiguous, contextual, or partially human
High
Strongly human, authentic, and substantive
Each verdict includes three reasons explaining the opinion in plain language.
Split Decisions
After the AI renders its opinion, humans can cast jury votes via the /api/jury endpoint. When the crowd consensus diverges significantly from the AI score, a Split Decision is declared.
Example: The AI scores a post at 82 (Mostly Human), but 68% of jurors disagree. The Split Decision reads: "Humans disagree with the machine by 27 points."
Split Decisions surface where human judgment and AI assessment diverge most, creating the most interesting and shareable moments on the platform.
Endpoints
Four endpoints power the tribunal. All requests and responses use JSON.
/api/judge
Submits text, a URL, or an image URL to the Judge Human tribunal. Returns a structured verdict with reasoning and a shareable card URL.
Request Body
| Field | Type |
|---|---|
| input* | string |
| bench | string ethicshumanityaestheticshypedilemma default: humanity |
| input_type | string texturlimage_url default: text |
Response
| Field | Type |
|---|---|
| case_id | string |
| bench | string |
| verdict | string |
| reasons | string[] |
| share_card_url | string (URL) |
| case_url | string (URL) |
curl -X POST https://judgehuman.ai/api/judge \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{
"input": "AITA for judging humans?",
"bench": "ethics"
}'{
"case_id": "case_abc123",
"bench": "ethics",
"verdict": "Mostly Human",
"reasons": [
"Demonstrates self-awareness about the act of judgment",
"Engages in moral reasoning about fairness",
"Shows capacity for reflective irony"
],
"share_card_url": "https://judgehuman.ai/card/case_abc123.png",
"case_url": "https://judgehuman.ai/api/case/case_abc123"
}Error Codes
/api/case/{id}
Retrieves a previously rendered opinion by its case ID. Supports JSON and HTML response formats.
Path Parameters
| Field | Type |
|---|---|
| id* | string |
Query Parameters
| Field | Type |
|---|---|
| format | string jsonhtml default: json |
Response
| Field | Type |
|---|---|
| case_id | string |
| bench | string |
| verdict | string |
| reasons | string[] |
| contested | boolean |
| share_card_url | string (URL) |
| case_url | string (URL) |
curl https://judgehuman.ai/api/case/case_abc123{
"case_id": "case_abc123",
"bench": "ethics",
"verdict": "Mostly Human",
"reasons": [
"Demonstrates self-awareness about the act of judgment",
"Engages in moral reasoning about fairness",
"Shows capacity for reflective irony"
],
"contested": false,
"share_card_url": "https://judgehuman.ai/card/case_abc123.png",
"case_url": "https://judgehuman.ai/api/case/case_abc123"
}Error Codes
/api/appeal
Submit an appeal against a previously rendered opinion. Provides additional context or arguments for re-evaluation.
Request Body
| Field | Type |
|---|---|
| case_id* | string |
| argument | string |
Response
| Field | Type |
|---|---|
| case_id | string |
| bench | string |
| verdict | string |
| reasons | string[] |
| share_card_url | string (URL) |
| case_url | string (URL) |
curl -X POST https://judgehuman.ai/api/appeal \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{
"case_id": "case_abc123",
"argument": "The original judgment overlooked cultural context"
}'{
"case_id": "case_abc123",
"bench": "ethics",
"verdict": "Substantially Human",
"reasons": [
"Cultural context adds nuance to ethical reasoning",
"Appeal demonstrates deeper reflection",
"Self-correction is a distinctly human trait"
],
"share_card_url": "https://judgehuman.ai/card/case_abc123.png",
"case_url": "https://judgehuman.ai/api/case/case_abc123"
}Error Codes
/api/jury
Cast a jury vote on an existing case, contributing to the crowd consensus score that creates Split Decisions.
Request Body
| Field | Type |
|---|---|
| case_id* | string |
| vote* | string agreedisagreeabstain |
Response
| Field | Type |
|---|---|
| case_id | string |
| vote_recorded | boolean |
curl -X POST https://judgehuman.ai/api/jury \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{
"case_id": "case_abc123",
"vote": "agree"
}'{
"case_id": "case_abc123",
"vote_recorded": true
}Error Codes
Error Codes
The API uses standard HTTP status codes. All error responses include a JSON body with error and code fields.
{
"error": "Missing or invalid API key",
"code": "UNAUTHORIZED"
}| Status | Description |
|---|---|
| 200 | Success |
| 400 | Invalid request body or parameters |
| 401 | Missing or invalid API key |
| 404 | Resource not found |
| 429 | Rate limit exceeded |
| 500 | Internal server error |
Rate Limits
Rate limits are enforced per API key. Exceeding the limit returns a 429 response with a Retry-After header.