rtcStats · Schema
EnrichResponse
POST /v1.0/enrich response: the scores and observations projection, plus the processor version and a generation timestamp.
WebRTCObservabilityMonitoringDebuggingReal-Time CommunicationVideoVoiceArtificial IntelligenceMCPDeveloper Tools
Properties
| Name | Type | Description |
|---|---|---|
| data | object | |
| processorVersion | string | Version of the @rtcstats/rtcstats-processor package that produced the analysis (semver, e.g. 1.9.0). |
| generatedAt | integer | Unix epoch time in milliseconds when the response was generated. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/rtcstats/main/json-schema/rtcstats-enrich-response-schema.json",
"title": "EnrichResponse",
"description": "POST /v1.0/enrich response: the scores and observations projection, plus the processor version and a generation timestamp.",
"x-generated": "2026-09-28",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/rtcstats-rtcstats-api-api-openapi.yml#/components/schemas/EnrichResponse",
"type": "object",
"required": [
"data",
"processorVersion",
"generatedAt"
],
"properties": {
"data": {
"$ref": "#/$defs/EnrichData"
},
"processorVersion": {
"type": "string",
"description": "Version of the @rtcstats/rtcstats-processor package that produced the analysis (semver, e.g. 1.9.0)."
},
"generatedAt": {
"type": "integer",
"format": "int64",
"description": "Unix epoch time in milliseconds when the response was generated."
}
},
"$defs": {
"EnrichData": {
"type": "object",
"description": "Scores, per-severity observation counts, trimmed observations, and user-agent data. No stored-session fields.",
"required": [
"scores",
"observationsCount",
"observations",
"userAgentData"
],
"properties": {
"scores": {
"$ref": "#/$defs/Scores"
},
"observationsCount": {
"$ref": "#/$defs/ObservationsCount"
},
"observations": {
"type": "array",
"description": "Flat, SQL-friendly observation records. Absent or non-finite values are omitted, never null.",
"items": {
"$ref": "#/$defs/Observation"
}
},
"userAgentData": {
"type": "object",
"additionalProperties": true,
"description": "Browser, platform, hardware and screen information. Empty object when the dump carries none."
}
}
},
"Observation": {
"type": "object",
"description": "A single trimmed observation: flat and SQL-friendly. Only type and severity are always present; every other field is included only when it has a finite value, never as null.",
"required": [
"type",
"severity"
],
"properties": {
"type": {
"type": "string",
"description": "Observation type key, e.g. 'turnNoConfig'. The full catalog is available from GET /v1.0/observations."
},
"severity": {
"type": "string",
"enum": [
"critical",
"high",
"medium",
"low",
"info"
],
"description": "Severity of the observation."
},
"category": {
"type": "string",
"enum": [
"connections",
"streams",
"devices",
"datachannels",
"logs",
"pairs"
],
"description": "Category the observation belongs to."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tags attached to the observation (e.g. network, audio, video, connectivity, security)."
},
"firstSeenAt": {
"type": "integer",
"format": "int64",
"description": "Epoch timestamp (ms) of the first occurrence, truncated to a whole millisecond. Omitted when unknown or non-finite."
},
"url": {
"type": "string",
"description": "Related URL when applicable (e.g. the TURN server URL)."
},
"property": {
"type": "string",
"description": "The specific property the observation refers to (e.g. audioLevel)."
},
"valueInCount": {
"type": "number",
"description": "Observation value as a count (e.g. number of duplicated lines or occurrences)."
},
"valueInPercent": {
"type": "number",
"description": "Observation value as a percentage (e.g. audio/video loss, frames dropped)."
},
"averageInMs": {
"type": "number",
"description": "Average value in milliseconds (e.g. jitter, rtt, encode/decode time)."
},
"maxInMs": {
"type": "number",
"description": "Maximum value in milliseconds."
},
"durationInMs": {
"type": "number",
"description": "Duration in milliseconds (e.g. TURN/STUN delay, signaling time)."
},
"durationInSeconds": {
"type": "number",
"description": "Duration in seconds."
},
"durationInPercent": {
"type": "number",
"description": "Duration of the observation as a percentage of the call."
}
}
},
"ObservationsCount": {
"type": "object",
"description": "Observation counts grouped by severity. The five values sum to the length of the observations array.",
"required": [
"critical",
"high",
"medium",
"low",
"info"
],
"properties": {
"critical": {
"type": "integer"
},
"high": {
"type": "integer"
},
"medium": {
"type": "integer"
},
"low": {
"type": "integer"
},
"info": {
"type": "integer"
}
}
},
"Scores": {
"type": "object",
"description": "The five scores produced by the analyzer. Each is a number or null.",
"required": [
"experienceScore",
"audioScore",
"videoScore",
"connectivityScore",
"observationsScore"
],
"properties": {
"experienceScore": {
"type": [
"number",
"null"
],
"format": "float",
"description": "Overall experience score (0-100). Null when there is no media data to score against."
},
"audioScore": {
"type": [
"number",
"null"
],
"format": "float",
"description": "Audio quality score (1-5). Null when no audio stream is present."
},
"videoScore": {
"type": [
"number",
"null"
],
"format": "float",
"description": "Video quality score (1-5). Null when no video stream is present."
},
"connectivityScore": {
"type": [
"number",
"null"
],
"format": "float",
"description": "Connectivity score (1-5). Null when no peer connection produced a connectivity score."
},
"observationsScore": {
"type": [
"number",
"null"
],
"description": "Aggregated severity score derived from observations. Null when unavailable."
}
}
}
}
}
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/rtcstats-enrich-response"
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.