Documentation
Device Diagnostics
Preview: features and APIs may change.
PDF uses your browser’s print dialog. It is not a hosted export service.
When a Device misbehaves, start from two server-side facts: its canonical state, and the developer-safe logs of the Project Environment it belongs to. Both come from the Control API, and the Device itself is never queried. The same steps work from your own server and from an AI client through the MCP Guide.
What you need#
- The Device id (
dev_…), its Project id and its Environment id. - An access token for your account with the
device.readandlogs.readGrants in that Project Environment.
Read the Device's canonical state#
GET /v1/devices/{device_id} returns the Device as OneSay knows it. The Control
API, not the Device, is the source of this state: a Device that cannot reach
OneSay still has its last recorded state here.
Search the developer-safe logs#
GET /v1/logs?project_id=…&environment_id=… lists the Project Environment's
developer-safe logs, a page at a time: pass next_cursor back as cursor while
has_more is true. An entry has an event, a severity, a time, a latency, the
ids of the resources it concerns (look for your device_id there) and safe
fields such as an error_code. It never carries audio, a transcript or a
credential.
Each entry names its request_id (req_…). GET /v1/logs/{request_id}
returns that request's timeline, which shows where a failing call stopped.
With an AI client#
onesay.devices.diagnosetakesdevice_id,project_idandenvironment_id(and optionallycursorandlimit). It returns one object with the Device's canonical state undergetDeviceand one page of logs underlistDeveloperLogs.onesay.logs.timelinetakes arequest_idfrom those logs.- The
diagnose_deviceprompt walks a client through these steps, using this page.
Both tools are R1: they need a token and change nothing.
What these steps do not cover#
Board hardware, firmware and radio quality are diagnosed by the device's OS and board vendor, not by the Platform. A Device's own local logs never reach OneSay unless the device runtime sends them.
View original Markdown
# Device Diagnostics
When a Device misbehaves, start from two server-side facts: its canonical state,
and the developer-safe logs of the Project Environment it belongs to. Both come
from the Control API, and the Device itself is never queried. The same steps work
from your own server and from an AI client through the [MCP Guide](MCP_GUIDE.md).
## What you need
- The Device id (`dev_…`), its Project id and its Environment id.
- An access token for your account with the `device.read` and `logs.read`
Grants in that Project Environment.
## Read the Device's canonical state
`GET /v1/devices/{device_id}` returns the Device as OneSay knows it. The Control
API, not the Device, is the source of this state: a Device that cannot reach
OneSay still has its last recorded state here.
## Search the developer-safe logs
`GET /v1/logs?project_id=…&environment_id=…` lists the Project Environment's
developer-safe logs, a page at a time: pass `next_cursor` back as `cursor` while
`has_more` is true. An entry has an event, a severity, a time, a latency, the
ids of the resources it concerns (look for your `device_id` there) and safe
fields such as an `error_code`. It never carries audio, a transcript or a
credential.
Each entry names its `request_id` (`req_…`). `GET /v1/logs/{request_id}`
returns that request's timeline, which shows where a failing call stopped.
## With an AI client
- `onesay.devices.diagnose` takes `device_id`, `project_id` and
`environment_id` (and optionally `cursor` and `limit`). It returns one object
with the Device's canonical state under `getDevice` and one page of logs
under `listDeveloperLogs`.
- `onesay.logs.timeline` takes a `request_id` from those logs.
- The `diagnose_device` prompt walks a client through these steps, using this
page.
Both tools are R1: they need a token and change nothing.
## What these steps do not cover
Board hardware, firmware and radio quality are diagnosed by the device's OS and
board vendor, not by the Platform. A Device's own local logs never reach OneSay
unless the device runtime sends them.