production
EnterVoice
Product stage supplied by founder; this API resolves supplied transcripts, not audio.
- Developer API
- Available · intent resolution
- Input
client_transcript
Human input. Your application.
Turn a voice transcript or movement event into an action you control.
The API resolves intent. Your application chooses when and how to execute it. Start with a working rule, then replace the input and handler with your own adapters.
Developer API v1 · Stateless · No API key for public intent resolution. Product acquisition services are separate; this API does not transcribe audio, analyze camera frames or measure the body.
Six channels. One explicit contract.
production
Product stage supplied by founder; this API resolves supplied transcripts, not audio.
client_transcriptbeta
Product stage supplied by founder; this API resolves supplied gesture identifiers, not camera frames.
client_gestureresearch
Active university R&D reported by founder; no sensing API available.
unavailableroadmap
No sensing API available.
unavailableroadmap
No sensing API available.
unavailableroadmap
No sensing API available.
unavailableSmall inputs. Deliberate effects.
Choose a match phrase or gesture, enable or disable each rule and optionally set a minimum confidence. Matching is case-insensitive with normalized whitespace; all matching enabled rules emit intents in the order supplied. A confidence threshold requires a confidence score from your input adapter.
navigation.opentarget: application-relative path
client_handler_required
text.inserttext: plain text
client_handler_required
media.playtarget: registered media identifier
client_handler_required
media.pausetarget: registered media identifier
client_handler_required
scene.focustarget: registered scene identifier
client_handler_required
workflow.triggertarget: registered workflow identifier; parameters: string map
client_handler_required
Navigation targets are application-relative. Media, scenes and workflows use registered identifiers. Workflow parameters are a bounded string map. The server never evaluates code, runs shell commands or calls arbitrary webhooks.
Try the real API
Edit the complete rule below. Resolve sends this JSON to the site's API; use sample text and avoid personal or health information.
Ready. No microphone or camera permission required.
Choose a template, customize a rule, then resolve.Use the tools you already build with.
entersense --url https://ursly.io capabilities
entersense --url https://ursly.io templates
entersense --url https://ursly.io resolve --file rule.jsonDownload the binary for your platform, verify SHA-256, then run entersense --help. Supply the request above as rule.json. URLs, timeouts, input files and JSON output are explicit; no hidden retries or shell execution.
import { EnterSenseClient } from "@entersense/sdk";
const client = new EnterSenseClient({ baseUrl: "https://ursly.io" });
const result = await client.resolve(request);
// Execute only through a handler you explicitly register.
client.registerHandler("text.insert", action => {
editor.insertText(action.text);
});Typed requests and errors, injectable fetch, bounded timeouts and explicit handler registration. Read the manual for cancellation and dispatch semantics.
TypeScript manual ↓from entersense import EnterSenseClient
client = EnterSenseClient(base_url="https://ursly.io")
result = client.resolve(request)
print(result)Standard-library transport, configurable timeout, structured errors and registered handlers. No runtime dependency or implicit action execution.
Python manual ↓Generated from the running service contracts.
This reference is exported from the Worker’s registered Rust handlers and schema types on every build. The live specification identifies the deployed contract. Versioned intent routes are public and stateless; contact routes have independent consent and origin rules.
/api/healthhealth
{
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
}/api/inquiriescontact
{
"additionalProperties": false,
"properties": {
"capitalRange": {
"type": [
"string",
"null"
]
},
"consent": {
"type": "boolean"
},
"email": {
"type": "string"
},
"kind": {
"type": "string"
},
"language": {
"type": "string"
},
"message": {
"type": "string"
},
"name": {
"type": "string"
},
"organization": {
"type": "string"
}
},
"required": [
"name",
"email",
"kind",
"language",
"consent"
],
"type": "object"
}{
"properties": {
"status": {
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
}{
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
}/api/newsletternewsletter
{
"additionalProperties": false,
"properties": {
"consent": {
"type": "boolean"
},
"email": {
"type": "string"
},
"language": {
"type": "string"
}
},
"required": [
"email",
"language",
"consent"
],
"type": "object"
}{
"properties": {
"status": {
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
}{
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
}/api/openapi.jsonopenapi
/api/v1/actionsget_actions
{
"properties": {
"actions": {
"items": {
"$ref": "#/components/schemas/ActionDefinition"
},
"type": "array"
},
"version": {
"type": "string"
}
},
"required": [
"version",
"actions"
],
"type": "object"
}/api/v1/capabilitiesget_capabilities
{
"properties": {
"capabilities": {
"items": {
"$ref": "#/components/schemas/Capability"
},
"type": "array"
},
"version": {
"type": "string"
}
},
"required": [
"version",
"capabilities"
],
"type": "object"
}/api/v1/resolvepost_resolve
{
"additionalProperties": false,
"properties": {
"input": {
"$ref": "#/components/schemas/Input"
},
"rules": {
"items": {
"$ref": "#/components/schemas/Rule"
},
"maxItems": 32,
"type": "array"
}
},
"required": [
"input",
"rules"
],
"type": "object"
}{
"properties": {
"execution": {
"type": "string"
},
"intents": {
"items": {
"$ref": "#/components/schemas/Intent"
},
"type": "array"
},
"status": {
"type": "string"
}
},
"required": [
"status",
"intents",
"execution"
],
"type": "object"
}{
"properties": {
"error": {
"$ref": "#/components/schemas/ErrorDetail"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"$ref": "#/components/schemas/ErrorDetail"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"$ref": "#/components/schemas/ErrorDetail"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"$ref": "#/components/schemas/ErrorDetail"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"$ref": "#/components/schemas/ErrorDetail"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"$ref": "#/components/schemas/ErrorDetail"
}
},
"required": [
"error"
],
"type": "object"
}/api/v1/templatesget_templates
{
"properties": {
"templates": {
"items": {
"$ref": "#/components/schemas/Template"
},
"type": "array"
},
"version": {
"type": "string"
}
},
"required": [
"version",
"templates"
],
"type": "object"
}/api/v1/validatepost_validate
{
"additionalProperties": false,
"properties": {
"input": {
"$ref": "#/components/schemas/Input"
},
"rules": {
"items": {
"$ref": "#/components/schemas/Rule"
},
"maxItems": 32,
"type": "array"
}
},
"required": [
"input",
"rules"
],
"type": "object"
}{
"properties": {
"valid": {
"type": "boolean"
}
},
"required": [
"valid"
],
"type": "object"
}{
"properties": {
"error": {
"$ref": "#/components/schemas/ErrorDetail"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"$ref": "#/components/schemas/ErrorDetail"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"$ref": "#/components/schemas/ErrorDetail"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"$ref": "#/components/schemas/ErrorDetail"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"$ref": "#/components/schemas/ErrorDetail"
}
},
"required": [
"error"
],
"type": "object"
}{
"properties": {
"error": {
"$ref": "#/components/schemas/ErrorDetail"
}
},
"required": [
"error"
],
"type": "object"
}No matching endpoint.
{
"Accepted": {
"properties": {
"status": {
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
"Action": {
"oneOf": [
{
"additionalProperties": false,
"properties": {
"target": {
"type": "string"
},
"type": {
"enum": [
"navigation.open"
],
"type": "string"
}
},
"required": [
"target",
"type"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"text": {
"type": "string"
},
"type": {
"enum": [
"text.insert"
],
"type": "string"
}
},
"required": [
"text",
"type"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"target": {
"type": "string"
},
"type": {
"enum": [
"media.play"
],
"type": "string"
}
},
"required": [
"target",
"type"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"target": {
"type": "string"
},
"type": {
"enum": [
"media.pause"
],
"type": "string"
}
},
"required": [
"target",
"type"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"target": {
"type": "string"
},
"type": {
"enum": [
"scene.focus"
],
"type": "string"
}
},
"required": [
"target",
"type"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"parameters": {
"additionalProperties": {
"type": "string"
},
"propertyNames": {
"type": "string"
},
"type": "object"
},
"target": {
"type": "string"
},
"type": {
"enum": [
"workflow.trigger"
],
"type": "string"
}
},
"required": [
"target",
"type"
],
"type": "object"
}
]
},
"ActionDefinition": {
"properties": {
"execution": {
"type": "string"
},
"payload": {
"type": "string"
},
"type": {
"type": "string"
}
},
"required": [
"type",
"payload",
"execution"
],
"type": "object"
},
"Actions": {
"properties": {
"actions": {
"items": {
"$ref": "#/components/schemas/ActionDefinition"
},
"type": "array"
},
"version": {
"type": "string"
}
},
"required": [
"version",
"actions"
],
"type": "object"
},
"ApiError": {
"properties": {
"error": {
"$ref": "#/components/schemas/ErrorDetail"
}
},
"required": [
"error"
],
"type": "object"
},
"Capabilities": {
"properties": {
"capabilities": {
"items": {
"$ref": "#/components/schemas/Capability"
},
"type": "array"
},
"version": {
"type": "string"
}
},
"required": [
"version",
"capabilities"
],
"type": "object"
},
"Capability": {
"properties": {
"acquisition": {
"type": "string"
},
"apiAvailable": {
"type": "boolean"
},
"note": {
"type": "string"
},
"productStage": {
"type": "string"
},
"sense": {
"type": "string"
}
},
"required": [
"sense",
"productStage",
"apiAvailable",
"acquisition",
"note"
],
"type": "object"
},
"ContactApiError": {
"properties": {
"error": {
"type": "string"
}
},
"required": [
"error"
],
"type": "object"
},
"ErrorDetail": {
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
},
"Input": {
"oneOf": [
{
"additionalProperties": false,
"properties": {
"confidence": {
"format": "double",
"maximum": 1,
"minimum": 0,
"type": [
"number",
"null"
]
},
"sense": {
"enum": [
"voice"
],
"type": "string"
},
"transcript": {
"type": "string"
}
},
"required": [
"transcript",
"sense"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"confidence": {
"format": "double",
"maximum": 1,
"minimum": 0,
"type": [
"number",
"null"
]
},
"gesture": {
"type": "string"
},
"sense": {
"enum": [
"motion"
],
"type": "string"
}
},
"required": [
"gesture",
"sense"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"sense": {
"enum": [
"smell"
],
"type": "string"
}
},
"required": [
"sense"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"sense": {
"enum": [
"taste"
],
"type": "string"
}
},
"required": [
"sense"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"sense": {
"enum": [
"view"
],
"type": "string"
}
},
"required": [
"sense"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"sense": {
"enum": [
"touch"
],
"type": "string"
}
},
"required": [
"sense"
],
"type": "object"
}
]
},
"InquiryRequest": {
"additionalProperties": false,
"properties": {
"capitalRange": {
"type": [
"string",
"null"
]
},
"consent": {
"type": "boolean"
},
"email": {
"type": "string"
},
"kind": {
"type": "string"
},
"language": {
"type": "string"
},
"message": {
"type": "string"
},
"name": {
"type": "string"
},
"organization": {
"type": "string"
}
},
"required": [
"name",
"email",
"kind",
"language",
"consent"
],
"type": "object"
},
"Intent": {
"properties": {
"action": {
"$ref": "#/components/schemas/Action"
},
"ruleId": {
"type": "string"
}
},
"required": [
"ruleId",
"action"
],
"type": "object"
},
"ResolveRequest": {
"additionalProperties": false,
"properties": {
"input": {
"$ref": "#/components/schemas/Input"
},
"rules": {
"items": {
"$ref": "#/components/schemas/Rule"
},
"maxItems": 32,
"type": "array"
}
},
"required": [
"input",
"rules"
],
"type": "object"
},
"ResolveResponse": {
"properties": {
"execution": {
"type": "string"
},
"intents": {
"items": {
"$ref": "#/components/schemas/Intent"
},
"type": "array"
},
"status": {
"type": "string"
}
},
"required": [
"status",
"intents",
"execution"
],
"type": "object"
},
"Rule": {
"additionalProperties": false,
"properties": {
"action": {
"$ref": "#/components/schemas/Action"
},
"enabled": {
"type": "boolean"
},
"id": {
"type": "string"
},
"match": {
"type": "string"
},
"minConfidence": {
"format": "double",
"maximum": 1,
"minimum": 0,
"type": [
"number",
"null"
]
}
},
"required": [
"id",
"match",
"action"
],
"type": "object"
},
"SignupRequest": {
"additionalProperties": false,
"properties": {
"consent": {
"type": "boolean"
},
"email": {
"type": "string"
},
"language": {
"type": "string"
}
},
"required": [
"email",
"language",
"consent"
],
"type": "object"
},
"Template": {
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"request": {
"$ref": "#/components/schemas/ResolveRequest"
}
},
"required": [
"id",
"name",
"request"
],
"type": "object"
},
"Templates": {
"properties": {
"templates": {
"items": {
"$ref": "#/components/schemas/Template"
},
"type": "array"
},
"version": {
"type": "string"
}
},
"required": [
"version",
"templates"
],
"type": "object"
},
"ValidationResponse": {
"properties": {
"valid": {
"type": "boolean"
}
},
"required": [
"valid"
],
"type": "object"
}
}Intent requests accept JSON only, up to 32 KiB and 32 rules. Invalid requests return a structured error, future senses return sense_unavailable, and rate limiting returns 429. Avoid automatic retries for action-producing calls; applications must decide whether a repeated input is safe. HTTP timeouts never prove that a request was not processed.
Each response documents its status codes above. SDKs expose both HTTP status and the server error code. Public intent requests are not persisted by the resolver; infrastructure may retain operational request metadata. Do not submit protected health information.
A measured path forward.
Planning targets, not release promises. Each sensing release depends on research, consent, evaluation and operational readiness. Production voice, beta motion and university smell research are founder-reported product stages; the developer API documents its own implemented scope.
Q4 2026 · Current delivery
Q1 2027 · Proposed research milestone
Q2 2027 · Proposed, validation dependent
Q3 2027 · Proposed, validation dependent
Trust is work that can be evidenced.
These are readiness targets, not current certifications or audit results. Health deployments remain out of scope until their obligations and safeguards are established.
Roadmap target · no report issued
Q4 2026: scope systems, owners and controls. Q1 2027 onward: collect operating evidence, review access, incidents and vendors. Engage an independent CPA for a Type II examination only after readiness and an agreed observation period.
Release gate: An issued independent report covering the stated system and period; no certification badge before evidence.
Roadmap target · not certified
Establish an information security management system, risk treatment plan, statement of applicability, internal audit and management review. Include the 2024 amendment in the standards review.
Release gate: Independent certification for a defined scope, after internal readiness; schedule is not yet committed.
Applicability review · no PHI service offered
Determine covered-entity/business-associate roles before health deployments. Assess risks and safeguards, retention, incident response and eligible providers; execute required business associate agreements before handling protected health information.
Release gate: A scoped legal and security readiness review with operational safeguards and required agreements. HHS does not require or recognize a blanket Security Rule certification.
Reproducible releases.
Platform binaries, SDK packages and documentation are built in GitHub Actions. Every listed download has a version, source commit and SHA-256 checksum. Packages are distributed from this site; the source repository is private.
Checking published release manifest…