Assessment
CompanyAISpeechLanguage-LearningPronunciation
Properties
| Name | Type | Description |
|---|---|---|
| id | string | Request id (`req_…`). |
| language | string | |
| locale | string | |
| model_version | string | The model that scored this request. |
| task | string | |
| status | string | `completed`, `unassessable` or `partial`. |
| assessable | boolean | |
| reason | stringnull | Why the recording was not assessable, e.g. `no_speech / no_audio`, `too_short`, `different_content`, `language_model_not_installed`, `unsupported_phonetic_symbols`, `no_calibrated_units`. |
| scores | object | |
| words | array | |
| syllables | array | Mandarin only. |
| heard | object | What the engine estimates was said: `syllables[]` (Mandarin) or `phonetic_transcription`. |
| duration_seconds | numbernull | |
| timing_ms | integer | Engine processing time. |
| timing | objectnull | Mandarin pause and speaking-rate measurements. |
| model | object | Model metadata: id, calibration notes, limitations. |
| warnings | array | |
| billing | object | |
| raw | object | Engine diagnostics. Not a stable contract. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/toneperfect/main/json-schema/toneperfect-assessment-schema.json",
"title": "Assessment",
"x-generated": "2026-10-08",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/toneperfect-openapi.json#/components/schemas/Assessment",
"type": "object",
"required": [
"id",
"assessable",
"scores",
"billing"
],
"properties": {
"id": {
"type": "string",
"description": "Request id (`req_…`)."
},
"language": {
"type": "string"
},
"locale": {
"type": "string"
},
"model_version": {
"type": "string",
"description": "The model that scored this request."
},
"task": {
"type": "string"
},
"status": {
"type": "string",
"description": "`completed`, `unassessable` or `partial`."
},
"assessable": {
"type": "boolean"
},
"reason": {
"type": [
"string",
"null"
],
"description": "Why the recording was not assessable, e.g. `no_speech / no_audio`, `too_short`, `different_content`, `language_model_not_installed`, `unsupported_phonetic_symbols`, `no_calibrated_units`."
},
"scores": {
"$ref": "#/$defs/Scores"
},
"words": {
"type": "array",
"items": {
"$ref": "#/$defs/Word"
}
},
"syllables": {
"type": "array",
"items": {
"$ref": "#/$defs/Syllable"
},
"description": "Mandarin only."
},
"heard": {
"type": "object",
"description": "What the engine estimates was said: `syllables[]` (Mandarin) or `phonetic_transcription`.",
"additionalProperties": true
},
"duration_seconds": {
"type": [
"number",
"null"
]
},
"timing_ms": {
"type": "integer",
"description": "Engine processing time."
},
"timing": {
"type": [
"object",
"null"
],
"description": "Mandarin pause and speaking-rate measurements.",
"additionalProperties": true
},
"model": {
"type": "object",
"description": "Model metadata: id, calibration notes, limitations.",
"additionalProperties": true
},
"warnings": {
"type": "array",
"items": {
"type": "string"
}
},
"billing": {
"$ref": "#/$defs/Billing"
},
"raw": {
"description": "Engine diagnostics. Not a stable contract."
}
},
"additionalProperties": true,
"$defs": {
"Billing": {
"type": "object",
"required": [
"credits",
"balance_credits"
],
"properties": {
"credits": {
"type": "integer",
"minimum": 0,
"description": "Credits charged by this request (0 when failed or unassessable)."
},
"balance_credits": {
"type": "integer",
"description": "Remaining plan balance."
},
"free_credits": {
"type": "integer",
"description": "Remaining free trial credits (every account starts with 50)."
},
"source": {
"type": "string",
"enum": [
"free",
"plan"
],
"description": "Which balance paid for this request. Free credits are spent first."
}
}
},
"Component": {
"type": "object",
"description": "A Mandarin syllable component (initial, final or tone).",
"properties": {
"expected": {
"type": [
"string",
"integer",
"null"
]
},
"heard": {
"type": [
"string",
"integer",
"null"
]
},
"agrees_with_prompt": {
"type": "boolean"
},
"score": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100
},
"confidence": {
"type": "string"
},
"alternatives": {
"type": "array",
"items": {
"type": "object",
"properties": {
"label": {
"type": [
"string",
"integer"
]
},
"probability": {
"type": "number"
}
}
},
"description": "Ranked candidate labels with probabilities."
},
"decision": {
"type": "string",
"description": "Correction decision: `review` (strong evidence of an error), `uncertain`, `no_correction`; `unassessable`, `partial` and `legacy_correction` also occur. Treat any other value as no decision."
},
"advice": {
"type": [
"string",
"null"
]
}
},
"additionalProperties": true
},
"Phone": {
"type": "object",
"description": "One sound. Mandarin rows describe a syllable component (`dimension` initial, final or tone; tones are integers 1–5). Other languages describe a phoneme with timing and an alignment operation.",
"properties": {
"dimension": {
"type": "string"
},
"expected": {
"type": [
"string",
"integer",
"null"
]
},
"heard": {
"type": [
"string",
"integer",
"null"
]
},
"score": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100
},
"decision": {
"type": "string",
"description": "Correction decision: `review` (strong evidence of an error), `uncertain`, `no_correction`; `unassessable`, `partial` and `legacy_correction` also occur. Treat any other value as no decision."
},
"flagged": {
"type": "boolean"
},
"start_ms": {
"type": "integer"
},
"end_ms": {
"type": "integer"
},
"operation": {
"type": [
"string",
"null"
],
"description": "Alignment operation (M match, S substitution, …). Non-Mandarin packs."
},
"diagnosis_status": {
"type": "string",
"description": "`experimental` for non-Mandarin phoneme evidence."
}
},
"additionalProperties": true
},
"Scores": {
"type": "object",
"description": "0–100 display grades. Unsupported dimensions are null; null is never a zero score. `integrity` is completeness.",
"properties": {
"overall": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100
},
"pronunciation": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100
},
"initial": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100
},
"final": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100
},
"tone": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100
},
"integrity": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100
},
"fluency": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100
},
"rhythm": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100
}
},
"additionalProperties": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100
}
},
"Syllable": {
"type": "object",
"properties": {
"index": {
"type": "integer"
},
"expected": {
"type": "object",
"properties": {
"pinyin": {
"type": "string"
},
"initial": {
"type": [
"string",
"null"
]
},
"final": {
"type": "string"
},
"tone": {
"type": "integer"
}
}
},
"span_ms": {
"type": "array",
"items": {
"type": [
"integer",
"null"
]
},
"minItems": 2,
"maxItems": 2
},
"score": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100
},
"components": {
"type": "object",
"properties": {
"initial": {
"$ref": "#/$defs/Component"
},
"final": {
"$ref": "#/$defs/Component"
},
"tone": {
"$ref": "#/$defs/Component"
}
}
}
},
"additionalProperties": true
},
"Word": {
"type": "object",
"properties": {
"word": {
"type": "string",
"description": "The word (a character in Mandarin)."
},
"pinyin": {
"type": "string",
"description": "Mandarin: numbered pinyin of the syllable."
},
"expected_ipa": {
"type": "string",
"description": "Other languages: expected pronunciation."
},
"score": {
"type": [
"number",
"null"
],
"minimum": 0,
"maximum": 100
},
"start_ms": {
"type": [
"integer",
"null"
]
},
"end_ms": {
"type": [
"integer",
"null"
]
},
"decision": {
"type": "string",
"description": "Other languages: the word-level correction decision. Correction decision: `review` (strong evidence of an error), `uncertain`, `no_correction`; `unassessable`, `partial` and `legacy_correction` also occur. Treat any other value as no decision."
},
"omission_suspected": {
"type": "boolean"
},
"phones": {
"type": "array",
"items": {
"$ref": "#/$defs/Phone"
}
}
},
"additionalProperties": true
}
}
}
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/toneperfect-assessment"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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.