Vued API Reference
Self-contained reference with best practices and examples for coding agents.Canonical references:docs/local-api-sdk-mcp.md,vued-python-sdk/vued/client.py,web-client/electron/main.js,Vued-Agent/server/routers/public_api.py. If this page contradicts source, trust source and report the stale doc.
Overview
Vued has two public access paths:| Path | Base | Use for |
|---|---|---|
| Cloud API | https://vued-office-api-dev.onrender.com/v1 | Auth, org discovery, metadata writes, signed audio URLs, API keys, webhooks, semantic vector refs. |
| Local desktop API | http://127.0.0.1:<discovered_port> | Decrypted meetings, transcripts, search, and file names. Requires unlocked desktop. |
vued.Vued.
CLI/MCP: vued mcp starts a stdio MCP proxy to the local desktop /mcp endpoint.
Installation
Minimal Working Example
Pick Your Pattern
1. Decrypted retrieval for agents
Use this when an LLM must answer from meeting text.- Desktop must be open and unlocked.
- Prefer
searchfor exact names, phrases, decisions, and topics. - Use
semantic_searchfor fuzzy memory retrieval. - Use
get_meetingafter search/list to fetch full transcript text.
2. Cloud metadata and admin operations
Use this for writes and non-plaintext metadata.org_idis required for org-scoped cloud calls.- Public API keys return
secretonce. - File/folder names may be encrypted in cloud responses; local
list_filesgives plaintext.
3. Signed audio URLs
Use this when an app needs retained audio.- URLs are short-lived.
- Signed audio URLs include a
.m4adownload filename hint, and the response includesfilenameandmime. - Transcript audio can include
offset_secsandsuggested_clip_secs. - Audio retention is currently one day.
4. Local MCP
Use this when a coding agent should search decrypted Vued memory directly.| Tool | Use |
|---|---|
search | Keyword search local decrypted meetings/transcripts. |
semantic_search | Semantic search with local plaintext hydration. |
list_meetings | Browse local meetings by time/source/room/microphone/file. |
get_meeting | Fetch one meeting plus transcript. |
get_transcript | Fetch one transcript event plus parent meeting ref. |
/mcp unless source adds it. Checked server source currently defines local MCP only.
Authentication
Cloud:- SDK reads discovery automatically.
- Manual callers read
local-api.json. - Send
Authorization: Bearer <authToken>.
| Source | Meaning |
|---|---|
VUED_LOCAL_API_URL + VUED_LOCAL_API_TOKEN | Explicit local daemon. |
VUED_LOCAL_API_DISCOVERY | Explicit discovery file. |
App support local-api.json | Default desktop discovery. |
SDK Methods
Local plaintext:| Method | Args | Returns |
|---|---|---|
search(q, type=None, include_transcript=True, limit=20) | keyword query; optional source filter | Page of {meeting, matches}. |
semantic_search(q, type=None, limit=5) | natural-language query | Page of semantic chunks; local results include hydrated text/events. |
list_meetings(type=None, started_after=None, started_before=None, room_id=None, microphone_id=None, file_id=None, limit=100, cursor=None) | filters and pagination | Page of meetings. |
get_meeting(meeting_id) | meeting UUID | {meeting, transcript}. |
get_transcript(transcript_id) | transcript event UUID | {event, meeting}. |
list_files(type=None, q=None, parent_id=None, root_only=None, visibility=None, record_id=None, created_after=None, created_before=None, updated_after=None, updated_before=None, sort=None, limit=50, cursor=None) | filters and pagination | Page of decrypted files/folders. |
get_file(file_id) | file/folder UUID | File object. |
| Method | Args | Returns |
|---|---|---|
list_orgs(**filters) | limit, cursor | Page of orgs. |
get_meeting_audio(meeting_id) | meeting UUID | Signed audio URL object. |
get_transcript_audio(transcript_id) | transcript event UUID | Signed audio URL object. |
create_file(name="Untitled", type="folder", parent_id=None, visibility="org") | node fields | File object. |
update_file(file_id, name=None, parent_id=UNSET, visibility=None) | patch fields | File object. |
list_file_grants(file_id, limit=50, cursor=None) | file UUID | Page of grants. |
grant_file(file_id, user_id) | file UUID, user UUID | Grant object. |
revoke_file_grant(file_id, user_id) | file UUID, user UUID | {deleted}. |
download_file(file_id) | file UUID | ZIP bytes. |
list_speakers(q=None, limit=50, cursor=None) | filters | Page of speakers. |
get_speaker(speaker_id) | speaker UUID | Speaker object. |
list_rooms(q=None, limit=50, cursor=None) | filters | Page of rooms. |
get_room(room_id) | room UUID | Room object. |
create_room(display_name, microphone_id) | room fields | Room object. |
update_room(room_id, display_name=None, microphone_id=None, is_primary=None, participant_user_ids=None) | patch fields | Room object. |
list_microphones(limit=50, cursor=None) | pagination | Page of microphones. |
get_microphone(microphone_id) | device ID | Microphone object. |
list_users(q=None, limit=50, cursor=None) | filters | Page of users. |
get_user(user_id) | user UUID | User object. |
list_api_keys(limit=50, cursor=None) | pagination | Page of API key metadata. |
create_api_key(name="Public API key", expires_at=None, scopes=None) | key fields | {token, secret}. |
revoke_api_key(key_id) | key UUID | {deleted}. |
list_webhooks(limit=50, cursor=None) | pagination | Page of webhooks. |
create_webhook(name="Webhook", url, events=None, payload_fields=None, disabled=False) | webhook fields | Webhook with one-time secret. |
update_webhook(webhook_id, name=None, url=None, events=None, payload_fields=None, disabled=None) | patch fields | Webhook. |
delete_webhook(webhook_id) | webhook ID | {deleted}. |
Request Parameters
Common:| Parameter | Type | Meaning |
|---|---|---|
type | manual | automatic | null | Meeting source filter. |
limit | integer | Page/result size. |
cursor | string | null | Pagination cursor from prior response. |
started_after, started_before | ISO string or epoch | Meeting start bounds. |
created_after, created_before | ISO string or epoch | File creation bounds. |
updated_after, updated_before | ISO string or epoch | File update bounds. |
Response Schemas
Page:| Value | Meaning |
|---|---|
diarized | Meeting-local cluster only. |
anonymous | Persistent anonymous speaker profile. |
named | Named speaker profile. |
Error Handling
| Status | Meaning |
|---|---|
400 | Invalid request or local API error. |
401 | Missing/invalid bearer token. |
403 | Missing scope or org access. |
404 | Object not found or not visible. |
410 | Audio expired/unavailable. |
424 | Cloud response contains encrypted fields; use local API or X-Vued-Allow-Encrypted: true. |
503 | Desktop local API unavailable. |
Common Mistakes
Do not:- Use cloud endpoints for decrypted transcript text. Use local
search,get_meeting, orget_transcript. - Assume local API works without Vued Desktop open and unlocked.
- Invent
GET /v1/meetingson cloud; meeting plaintext list is local-only. - Treat
automaticmeetings as a separate public object type. Public APIs expose them astype: "automatic"meetings. - Use remote
/mcp; checked source defines local/mcponly. - Expect public API key secrets to be recoverable after creation.
- Pass
parent_id=Nonetoupdate_fileunless moving to root. Omitparent_idto keep the parent. - Use table names such as
ambient_segmentation_candidatesin public inputs. Usetype="automatic".
Complete Examples
Keyword search then fetch transcript
Semantic search with local hydration
List meetings with pagination
Create a webhook and verify signatures
Expose Vued to an OpenAI-style tool loop
Resources
- Human guide:
docs/local-api-sdk-mcp.md - Docs index:
docs/llms.txt - SDK README:
vued-python-sdk/README.md - Quickstart:
vued-python-sdk/examples/quickstart.py