Properties
| Name | Type | Description |
|---|---|---|
| measurement | object | |
| question | string | |
| probability | object | |
| unavailable | string | self_overlap — Le texte à juger est déjà, pour l’essentiel, dans la référence qui le juge : la mesure porterait sur elle-même. Juge un texte que la référence ne contient pas — ou retire-le du corpus d |
| explanation | object | |
| passages | array | Présent uniquement avec `unavailable: "mixed_language"` : les phrases écrites dans l’autre langue, avec leurs positions (`start`, `end`) dans le texte jugé. Les corriger ou les retirer, puis relancer. |
| label | string | Bande en clair, dérivée de `probability` : « Signe cette voix », « Plausiblement cette voix », « Ambigu », puis « Voix générique » (q1) ou « Voix étrangère » (q2). Avant le 12/10/2026 : « Auteur proba |
| band | string | La bande de `label`, en clé stable : `signature`, `plausible`, `ambiguous`, `foreign` (sur q1, `foreign` est une écriture générique ; sur q2, une autre voix). Présent exactement quand `label` l’est. D |
| confidence | string | |
| referenceLimited | boolean | |
| language | string | |
| version | string | |
| dimensions | array | Sur quoi le texte s’écarte des références : rythme, lexique, structure, signature. Ce n’est PAS la décomposition de `probability` — ces quatre-là lisent la couche stylométrique, qui pèse 20 % du score |
| dimensionsVersion | string |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/kaneme-com/json-schema/kaneme-com-public-verdict-schema.json",
"title": "PublicVerdict",
"x-generated": "2026-11-13",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/kaneme-com-openapi.json#/components/schemas/PublicVerdict",
"type": "object",
"properties": {
"measurement": {
"type": "object",
"properties": {
"version": {
"type": "string",
"const": "kaneme.measurement.v1"
},
"axis": {
"type": "string",
"enum": [
"q1",
"q2"
]
},
"contrast": {
"type": "string"
},
"display": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"calibrationLanguage": {
"type": "string",
"enum": [
"fr",
"en"
]
},
"candidateLanguage": {
"type": "string"
},
"engine": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
]
},
"model": {
"type": "string"
},
"scoreVersion": {
"type": "string"
},
"calibrationVersion": {
"type": "string"
},
"calibrationSource": {
"type": "string"
},
"limitation": {
"type": "string"
}
},
"required": [
"version",
"axis",
"contrast",
"display",
"calibrationLanguage",
"candidateLanguage",
"model",
"scoreVersion",
"calibrationVersion",
"calibrationSource",
"limitation"
],
"additionalProperties": false
},
"question": {
"type": "string",
"enum": [
"author",
"human"
]
},
"probability": {
"anyOf": [
{
"type": "number",
"minimum": 0,
"maximum": 1
},
{
"type": "null"
}
]
},
"unavailable": {
"type": "string",
"enum": [
"self_overlap",
"unsupported_language",
"voice_language_mismatch",
"mixed_language",
"embedding_layer",
"out_of_distribution",
"calibration_mismatch"
],
"description": "self_overlap — Le texte à juger est déjà, pour l’essentiel, dans la référence qui le juge : la mesure porterait sur elle-même. Juge un texte que la référence ne contient pas — ou retire-le du corpus de cette voix. · unsupported_language — Le texte ne se lit ni en français ni en anglais, même en départageant ces deux seules langues : le verdict n’est calibré que sur elles, chacune avec son propre moteur. Lis le champ `language` de la réponse avant d’appeler : hors du français et de l’anglais, ne demande pas de verdict. · voice_language_mismatch — Le texte et la voix de référence ne sont pas écrits dans la même langue : chaque moteur ne compare un texte qu’à une voix de sa langue. Juge ce texte avec une voix écrite dans sa langue — crée-la si elle n’existe pas. Ne le traduis pas pour contourner ce refus. · mixed_language — Le texte est dans la langue de la voix, mais au moins une phrase entière est dans l’autre langue servie : la mesure mêlerait deux moteurs. Corrige ou retire les passages renvoyés dans `passages` (positions dans le texte), puis relance. Les mots isolés — anglicismes, marques — et les citations entre guillemets ne déclenchent pas ce refus. · embedding_layer — La couche de mesure profonde n’a pas répondu ; sans elle, aucune probabilité n’est calibrée. Réessaie dans un instant si la couche de mesure redevient disponible. · out_of_distribution — Le panel de contraste ne couvre pas le registre de cette voix : la marge existerait, elle ne voudrait rien dire. Verse dans la voix des textes de référence plus proches du registre mesuré. · calibration_mismatch — La version du moteur ne correspond pas à une calibration validée. Attends la correction de la configuration du moteur. Ne modifie ni ne traduis le texte pour contourner ce refus."
},
"explanation": {
"type": "object",
"properties": {
"version": {
"type": "string"
},
"summary": {
"type": "string"
},
"caveat": {
"type": "string"
},
"factors": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"enum": [
"cadence",
"registre",
"structure",
"lexique"
]
},
"label": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"aligned",
"mixed",
"different",
"unmeasured"
]
},
"gap": {
"anyOf": [
{
"type": "number",
"minimum": 0,
"maximum": 1
},
{
"type": "null"
}
]
},
"detail": {
"type": "string"
}
},
"required": [
"id",
"label",
"status",
"gap",
"detail"
],
"additionalProperties": {}
}
}
},
"required": [
"version",
"summary",
"caveat",
"factors"
],
"additionalProperties": {}
},
"passages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"text": {
"type": "string"
},
"start": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"end": {
"type": "integer",
"minimum": 0,
"maximum": 9007199254740991
},
"language": {
"type": "string",
"enum": [
"fr",
"en"
]
}
},
"required": [
"text",
"start",
"end",
"language"
],
"additionalProperties": {}
},
"description": "Présent uniquement avec `unavailable: \"mixed_language\"` : les phrases écrites dans l’autre langue, avec leurs positions (`start`, `end`) dans le texte jugé. Les corriger ou les retirer, puis relancer."
},
"label": {
"type": "string",
"description": "Bande en clair, dérivée de `probability` : « Signe cette voix », « Plausiblement cette voix », « Ambigu », puis « Voix générique » (q1) ou « Voix étrangère » (q2). Avant le 12/10/2026 : « Auteur probable », « Auteur plausible », « Imposteur probable ». Absent quand `unavailable` est présent."
},
"band": {
"type": "string",
"enum": [
"signature",
"plausible",
"ambiguous",
"foreign"
],
"description": "La bande de `label`, en clé stable : `signature`, `plausible`, `ambiguous`, `foreign` (sur q1, `foreign` est une écriture générique ; sur q2, une autre voix). Présent exactement quand `label` l’est. Depuis le contrat 5.3.0."
},
"confidence": {
"type": "string",
"enum": [
"none",
"low",
"medium",
"high"
]
},
"referenceLimited": {
"type": "boolean"
},
"language": {
"type": "string"
},
"version": {
"type": "string"
},
"dimensions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"passages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"start": {
"type": "number"
},
"end": {
"type": "number"
},
"quote": {
"type": "string"
},
"observation": {
"type": "string"
},
"basis": {
"type": "string",
"enum": [
"reference",
"preference",
"observation"
]
}
},
"required": [
"start",
"end",
"quote",
"observation",
"basis"
],
"additionalProperties": false
}
},
"id": {
"type": "string",
"enum": [
"rythme",
"lexique",
"structure",
"signature"
]
},
"label": {
"type": "string"
},
"measured": {
"type": "boolean"
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
]
},
"detail": {
"type": "string"
}
},
"required": [
"id",
"label",
"measured",
"score",
"detail"
],
"additionalProperties": {}
},
"description": "Sur quoi le texte s’écarte des références : rythme, lexique, structure, signature. Ce n’est PAS la décomposition de `probability` — ces quatre-là lisent la couche stylométrique, qui pèse 20 % du score fusionné. Servies même en abstention : ce sont des faits mesurés, pas un verdict."
},
"dimensionsVersion": {
"type": "string"
}
},
"required": [
"question",
"probability",
"referenceLimited",
"version",
"dimensions",
"dimensionsVersion"
],
"additionalProperties": {}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/kaneme-com-public-verdict"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.