MotaWord · Schema
InterpretSession
State record for a scheduled video interpretation session. One per project.
TranslationLocalizationAISaaSEnterprise
Properties
| Name | Type | Description |
|---|---|---|
| id | integer | |
| project_id | integer | |
| room_name | string | Deterministic LiveKit room name (e.g. `interpret-project-74`). |
| status | string | |
| mode | string | Who serves the session — `human` (a human interpreter joins) or `ai` (the AI interpreter worker joins instead). Defaults to `human`. |
| scheduled_start_at | stringnull | |
| scheduled_duration_minutes | integernull | |
| started_at | stringnull | |
| ended_at | stringnull | |
| recording_enabled | boolean | |
| recording_url | stringnull | |
| guest_token | stringnull | Opaque token used by the public guest-join link. Customers share it via a URL; it rotates via the rotate-guest-token endpoint. |
| context_note | stringnull | Customer-supplied 1-2 sentence brief shown to the interpreter before the room. |
| domain | stringnull | Domain tag like "medical" / "legal" / "business" / "general". Advisory only. |
| usage | object | Derived operational-time figures for this session, computed from the presence timeline (`interpret_session_event`). Refreshes on every session poll. Source of truth for the in-call "Remaining HH:MM" d |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/motaword/json-schema/motaword-interpret-session-schema.json",
"title": "InterpretSession",
"description": "State record for a scheduled video interpretation session. One per project.",
"x-generated": "2026-10-28",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/_original/motaword-api-openapi.yml#/components/schemas/InterpretSession",
"type": "object",
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"project_id": {
"type": "integer",
"format": "int64"
},
"room_name": {
"type": "string",
"description": "Deterministic LiveKit room name (e.g. `interpret-project-74`)."
},
"status": {
"type": "string",
"enum": [
"scheduled",
"ringing",
"live",
"ended",
"canceled"
]
},
"mode": {
"type": "string",
"description": "Who serves the session — `human` (a human interpreter joins) or `ai`\n(the AI interpreter worker joins instead). Defaults to `human`.\n",
"enum": [
"human",
"ai"
]
},
"scheduled_start_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"scheduled_duration_minutes": {
"type": [
"integer",
"null"
]
},
"started_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"ended_at": {
"type": [
"string",
"null"
],
"format": "date-time"
},
"recording_enabled": {
"type": "boolean"
},
"recording_url": {
"type": [
"string",
"null"
]
},
"guest_token": {
"type": [
"string",
"null"
],
"description": "Opaque token used by the public guest-join link. Customers share it via a URL; it rotates via the rotate-guest-token endpoint."
},
"context_note": {
"type": [
"string",
"null"
],
"description": "Customer-supplied 1-2 sentence brief shown to the interpreter before the room."
},
"domain": {
"type": [
"string",
"null"
],
"description": "Domain tag like \"medical\" / \"legal\" / \"business\" / \"general\". Advisory only."
},
"usage": {
"type": "object",
"description": "Derived operational-time figures for this session, computed from the\npresence timeline (`interpret_session_event`). Refreshes on every\nsession poll. Source of truth for the in-call \"Remaining HH:MM\"\ndisplay and for billing reconciliation. The frontend ticks\n`billable_seconds_used` locally between polls only when both\n`interpreter_present` and `customer_present` are true.\n",
"properties": {
"interpreter_present": {
"type": "boolean",
"description": "True iff at least one participant with role=vendor is currently in the LiveKit room."
},
"customer_present": {
"type": "boolean",
"description": "True iff at least one participant with role=customer is currently in the LiveKit room."
},
"billable_seconds_used": {
"type": "integer",
"description": "Total accumulated seconds during which both an interpreter and a\ncustomer were simultaneously present. Guests do not gate billing.\nAuthoritative — clients should display this verbatim and only\ntick locally between polls when both `*_present` flags are true.\n"
},
"billable_started_at": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "UTC ISO8601 timestamp marking the start of the currently open\nbillable interval (i.e. when the room most recently transitioned\nto \"interpreter + customer both present\"). Null when no billable\ninterval is currently open.\n"
},
"last_event_at": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "ISO8601 timestamp of the most recent presence event seen for this session. Useful as a cache-staleness hint."
}
}
}
}
}
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/motaword-interpret-session"
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.