autessa.meetingRecorder
Meeting recordings, transcripts, and recording configuration.
autessa.meetingRecorder.alerts.dismissMUTATE
autessa.meetingRecorder.alerts.dismiss({ alertId })Dismiss one of your meeting-recorder alerts.
User-scoped. alertId is the UUID of the alert to dismiss. Returns a single-entry object {dismissed: <boolean>}.
Request fields
- Name
alertId- Type
- string
- Description
Response fields
No fields.
autessa.meetingRecorder.alerts.dismissAllMUTATE
autessa.meetingRecorder.alerts.dismissAll()Dismiss all of your meeting-recorder alerts at once.
User-scoped; takes no request body. Returns a single-entry object with the count of dismissed alerts: {dismissed: <count>}.
Request fields
No fields.
Response fields
No fields.
autessa.meetingRecorder.alerts.listREAD
autessa.meetingRecorder.alerts.list({ unreadOnly, limit })List your meeting-recorder alerts (bot/recording notifications), optionally unread-only.
User-scoped (your alerts across all bots). unreadOnly defaults to true; limit defaults to 20. Returns a top-level array of alerts.
Request fields
- Name
unreadOnly- Type
- boolean
- Description
- Name
limit- Type
- number
- Description
Response fields
No fields.
autessa.meetingRecorder.botsMUTATE
autessa.meetingRecorder.bots({ botDisplayName, botAvatarS3Key, calendarConnectorIds, identityStrategy, strategyParams })Create a recorder bot, provisioning its AutessaDB table, tools, and processing-trigger pipeline.
Creates a bot with the given display name and identity strategy. identityStrategy chooses how the bot joins/receives meetings (e.g. WORKSPACE_OAUTH via a connected calendar, or SUBDOMAIN_MX where it receives invites at its own email — those need DNS verification via the meetingBot namespace before the table/tools are provisioned). For provisioned bots this creates: a dependent AutessaDB table (autessadbTableId), three first-class tools (summarizeLlmCallToolId, notifyToolId, purgeToolId), and three triggers (extract-audio, transcribe, summarize-and-notify) plus retention/scan schedules — all visible and editable by the user. botDisplayName is required (<=100 chars). botId is a plain UUID.
Request fields
- Name
botDisplayName- Type
- string
- Description
- Name
botAvatarS3Key- Type
- string
- Description
- Name
calendarConnectorIds- Type
- string (opaque id)[]
- Description
- Name
identityStrategy- Type
- string
- Description
- Name
strategyParams- Type
- object
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
botId- Type
- string
- Description
- Name
botEmail- Type
- string
- Description
- Name
botConnectorId- Type
- string (opaque id)
- Description
- References external connector by opaque id.
- Name
autessadbTableId- Type
- string (opaque id)
- Description
- References autessadb table by opaque id.
- Name
summarizeLlmCallToolId- Type
- string (opaque id)
- Description
- References tool by opaque id.
- Name
notifyToolId- Type
- string (opaque id)
- Description
- References tool by opaque id.
- Name
purgeToolId- Type
- string (opaque id)
- Description
- References tool by opaque id.
- Name
triggerExtractAudioId- Type
- string
- Description
- Name
triggerTranscribeId- Type
- string
- Description
- Name
triggerSummarizeAndNotifyId- Type
- string
- Description
autessa.meetingRecorder.bots.calendar.updateRecordModeMUTATE
autessa.meetingRecorder.bots.calendar.updateRecordMode({ botId, connectorId, autoRecordMode, keywords, autoInviteEnabled })Set a bot's auto-record mode for one bound calendar connector (MANUAL, INVITED_ONLY, or KEYWORD).
Requires EDITOR access. connectorId is required and must be a connector the bot is bound to and you can see. autoRecordMode is MANUAL, INVITED_ONLY, or KEYWORD; KEYWORD requires at least one non-empty keyword (matched case-insensitively against event titles). autoInviteEnabled toggles auto-inviting the bot to matching events. Returns the updated bot summary.
Request fields
- Name
botId- Type
- string
- Description
- Name
connectorId- Type
- string (opaque id)
- Description
- References external connector by opaque id.
- Name
autoRecordMode- Type
- "MANUAL" | "INVITED_ONLY" | "KEYWORD"
- Description
- Name
keywords- Type
- string[]
- Description
- Name
autoInviteEnabled- Type
- boolean
- Description
Response fields
No fields.
autessa.meetingRecorder.bots.deleteMUTATE
autessa.meetingRecorder.bots.delete({ botId })Permanently delete a bot and cascade-delete its recordings table, tools, triggers, and schedules.
Irreversible. Cancels in-flight recordings, hard-deletes the bot's AutessaDB recordings table (and its data), its three tools, retention/scan/health schedules, and the bot's connector; if it was the last bot in the company, shared per-company tools are torn down too. Requires ADMIN access. Returns a single-entry object {deleted: true}.
Request fields
- Name
botId- Type
- string
- Description
Response fields
No fields.
autessa.meetingRecorder.bots.event.inviteMUTATE
autessa.meetingRecorder.bots.event.invite({ botId, connectorId, externalEventId })Add the bot to a specific calendar event's attendee list.
Requires EDITOR access. connectorId and externalEventId are required. This only adds the bot as an attendee; the calendar scan handles actually dispatching the recorder when the meeting is near. Returns {invited: true}.
Request fields
- Name
botId- Type
- string
- Description
- Name
connectorId- Type
- string (opaque id)
- Description
- References external connector by opaque id.
- Name
externalEventId- Type
- string
- Description
Response fields
No fields.
autessa.meetingRecorder.bots.event.uninviteMUTATE
autessa.meetingRecorder.bots.event.uninvite({ botId, connectorId, externalEventId })Remove the bot from a specific calendar event's attendee list.
Requires EDITOR access. connectorId and externalEventId are required. Returns {uninvited: true}.
Request fields
- Name
botId- Type
- string
- Description
- Name
connectorId- Type
- string (opaque id)
- Description
- References external connector by opaque id.
- Name
externalEventId- Type
- string
- Description
Response fields
No fields.
autessa.meetingRecorder.bots.getREAD
autessa.meetingRecorder.bots.get({ botId })Fetch a bot's configuration plus this-month usage, quota, and health.
Requires VIEWER access. Returns the bot summary along with used/cap minutes this month, percent used, a rolled-up health status/message, and the bot's email.
Request fields
- Name
botId- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
bot- Type
- BotSummaryResponseDto
- Description
- Name
usedMinutesThisMonth- Type
- number
- Description
- Name
capMinutes- Type
- number
- Description
- Name
pctUsed- Type
- number
- Description
- Name
healthStatus- Type
- string
- Description
- Name
healthMessage- Type
- string
- Description
- Name
botEmail- Type
- string
- Description
autessa.meetingRecorder.bots.healthREAD
autessa.meetingRecorder.bots.health({ botId })Get a bot's detailed health: OAuth refresh, push-subscription expiry, and failure counts.
Requires VIEWER access. status is GREEN/YELLOW/RED/UNKNOWN. A missing health row reports UNKNOWN. Despite mutating classification upstream, this is a read of health state.
Request fields
- Name
botId- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
status- Type
- string
- Description
- Name
message- Type
- string
- Description
- Name
oauthRefreshStatus- Type
- string
- Description
- Name
oauthLastRefreshAt- Type
- string (ISO 8601)
- Description
- Name
pushSubscriptionExpiresAt- Type
- string (ISO 8601)
- Description
- Name
lastCheckedAt- Type
- string (ISO 8601)
- Description
- Name
consecutiveFailureCount- Type
- number
- Description
autessa.meetingRecorder.bots.inboundActivityREAD
autessa.meetingRecorder.bots.inboundActivity({ botId })List a bot's recent inbound webhook/email activity (newest first, up to 50).
Requires VIEWER access. Returns a top-level array of the bot's recent inbound events (calendar webhooks, inbound emails), aggregated across its connectors and capped at 50.
Request fields
- Name
botId- Type
- string
- Description
Response fields
No fields.
autessa.meetingRecorder.bots.listREAD
autessa.meetingRecorder.bots.list()List all recorder bots you can access in the company.
Returns a top-level array of bot summaries (up to 100). No request body; results are the bots you can access, with your visible calendar bindings.
Request fields
No fields.
Response fields
No fields.
autessa.meetingRecorder.bots.nameAvailableREAD
autessa.meetingRecorder.bots.nameAvailable({ name })Check whether a bot display name is available in the company, with a suggested alternative.
Company-scoped. available is true when no non-deleted bot has that name (case-insensitive); when taken, suggestion offers a numbered alternative. Read-only despite the POST shape.
Request fields
- Name
name- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
available- Type
- boolean
- Description
- Name
suggestion- Type
- string
- Description
autessa.meetingRecorder.bots.permissionsREAD
autessa.meetingRecorder.bots.permissions({ botId })List a bot's per-user permission grants.
Requires VIEWER access. Returns a top-level array of the bot's explicit per-user permission rows.
Request fields
- Name
botId- Type
- string
- Description
Response fields
No fields.
autessa.meetingRecorder.bots.upcomingMeetingsREAD
autessa.meetingRecorder.bots.upcomingMeetings({ botId, forceRefresh })List a bot's upcoming calendar meetings across its bound connectors, with per-connector fetch errors.
Requires VIEWER access. Returns upcoming events (with whether the bot is already invited) and any per-connector fetch errors. forceRefresh runs a calendar scan inline (best-effort). Note: errors here is a list of calendar fetch-error objects, not the usual string error envelope.
Request fields
- Name
botId- Type
- string
- Description
- Name
forceRefresh- Type
- boolean
- Description
Response fields
- Name
events- Type
- UpcomingEventResponseDto[]
- Description
- Name
errors- Type
- CalendarFetchErrorDto[]
- Description
autessa.meetingRecorder.bots.updateCalendarConnectorsMUTATE
autessa.meetingRecorder.bots.updateCalendarConnectors({ botId, calendarConnectorIds })Replace the set of calendar connectors a bot is bound to (limited to connectors you can see).
Requires EDITOR access. Sets the bot's visible calendar bindings to calendarConnectorIds; connectors you cannot see are left untouched, and an id you cannot access is rejected. An empty list clears your visible bindings. Returns the updated bot summary.
Request fields
- Name
botId- Type
- string
- Description
- Name
calendarConnectorIds- Type
- string (opaque id)[]
- Description
Response fields
No fields.
autessa.meetingRecorder.recordings.dispatchMUTATE
autessa.meetingRecorder.recordings.dispatch({ botId, meetingUrl, joinAtUtc, title })Dispatch the bot to record an ad-hoc meeting by URL, now or at a scheduled time.
Requires EDITOR access. meetingUrl is required; joinAtUtc (ISO-8601 UTC) schedules a future join, or omit to join now. Returns the new meeting id and detected platform. The recording processes through the bot's pipeline and lands as a row in the bot's AutessaDB table; read it with meetingRecorder.recordings.get.
Request fields
- Name
botId- Type
- string
- Description
- Name
meetingUrl- Type
- string
- Description
- Name
joinAtUtc- Type
- string
- Description
- Name
title- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
meetingId- Type
- string
- Description
- Name
platform- Type
- string
- Description
- Name
startTimeUtc- Type
- string
- Description
autessa.meetingRecorder.recordings.dispatchFromEventMUTATE
autessa.meetingRecorder.recordings.dispatchFromEvent({ botId, externalEventId, calendarId })Dispatch the bot to record a specific calendar event (resolved and scheduled asynchronously).
Requires EDITOR access. externalEventId is required; calendarId defaults to "primary". Enqueues a calendar scan that adds the bot to the event and schedules the recorder when the meeting is within the join window, so meetingId comes back null and platform is CALENDAR (the recording appears later via recordings.list/get).
Request fields
- Name
botId- Type
- string
- Description
- Name
externalEventId- Type
- string
- Description
- Name
calendarId- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
meetingId- Type
- string
- Description
- Name
platform- Type
- string
- Description
- Name
startTimeUtc- Type
- string
- Description
autessa.meetingRecorder.recordings.getREAD
autessa.meetingRecorder.recordings.get({ botId, meetingId })Fetch a recording: its AutessaDB row (transcript, summary, status columns) plus backend ref and share tokens.
Requires VIEWER access. row is the recording's AutessaDB row as a column-name to typed value map — the transcript, transcript_source, summary, status, title, and media columns live here (media columns carry presigned URLs). backendRef carries the row/table linkage; shareTokens lists active public share links; the response also returns opaque ids for the recording's chat agent and its recordings table. Poll this (watch row.status) while a recording processes.
Request fields
- Name
botId- Type
- string
- Description
- Name
meetingId- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
meetingId- Type
- string
- Description
- Name
row- Type
- object
- Description
- Name
backendRef- Type
- RecordingSummaryResponseDto
- Description
- Name
shareTokens- Type
- ShareTokenResponseDto[]
- Description
- Name
chatAgentSqid- Type
- string
- Description
- Name
recordingsTableSqid- Type
- string
- Description
autessa.meetingRecorder.recordings.listREAD
autessa.meetingRecorder.recordings.list({ botId })List all of a bot's recordings (backend references).
Requires VIEWER access. Returns a top-level array of recording backend-reference summaries (not paginated). Use meetingRecorder.recordings.get for a recording's transcript and summary.
Request fields
- Name
botId- Type
- string
- Description
Response fields
No fields.
autessa.meetingRecorder.recordings.resendNotificationsMUTATE
autessa.meetingRecorder.recordings.resendNotifications({ botId, meetingId })Re-send the per-participant recap emails for a recording.
Requires EDITOR access. Re-sends the recording's recap notifications. Returns a bare status string (e.g. "skipped" when the bot has participant emails disabled, or a send-result string).
Request fields
- Name
botId- Type
- string
- Description
- Name
meetingId- Type
- string
- Description
Response fields
No fields.
autessa.meetingRecorder.recordings.retryDiagnosisREAD
autessa.meetingRecorder.recordings.retryDiagnosis({ botId, meetingId })Diagnose why a recording failed and what retry action is applicable (read-only).
Requires EDITOR access. Classifies the failure cause from the recording's structured state (not error text) and reports whether processing can be retried and the suggested action. No mutation.
Request fields
- Name
botId- Type
- string
- Description
- Name
meetingId- Type
- string
- Description
Response fields
No fields.
autessa.meetingRecorder.recordings.retryProcessingMUTATE
autessa.meetingRecorder.recordings.retryProcessing({ botId, meetingId })Re-run a failed recording's full processing (re-pull the recording and re-process it).
Requires EDITOR access. Re-checks whether the recording can be retried; if so, re-pulls the recording ingest and re-runs processing, returning a diagnosis with the new status. If not retryable, returns the diagnosis unchanged.
Request fields
- Name
botId- Type
- string
- Description
- Name
meetingId- Type
- string
- Description
Response fields
No fields.
autessa.meetingRecorder.recordings.retrySummaryMUTATE
autessa.meetingRecorder.recordings.retrySummary({ botId, meetingId })Re-run only the summarization step for a recording.
Requires EDITOR access. Clears the summary column so the summarize-and-notify trigger re-runs the summarization. Returns the bare string "retrigger_enqueued".
Request fields
- Name
botId- Type
- string
- Description
- Name
meetingId- Type
- string
- Description
Response fields
No fields.
autessa.meetingRecorder.recordings.retryTranscriptionMUTATE
autessa.meetingRecorder.recordings.retryTranscription({ botId, meetingId })Re-run only the transcription step for a recording.
Requires EDITOR access. Clears the transcript column and re-runs transcription. Returns a bare status string: "ok", "no_row", "no_audio", or "stt_error".
Request fields
- Name
botId- Type
- string
- Description
- Name
meetingId- Type
- string
- Description
Response fields
No fields.
autessa.meetingRecorder.recordings.uploadMUTATE
autessa.meetingRecorder.recordings.upload({ botId, kind, fileType, title })Get a presigned upload link to add a pre-recorded meeting file (video or audio) to a bot.
Requires EDITOR access. kind is VIDEO or AUDIO; fileType is the file extension (required). Returns a fresh meetingId, the target column name, and a presigned upload URL. PUT the bytes to uploadUrl, then call meetingRecorder.recordings.upload.complete to register and process the recording.
Request fields
- Name
botId- Type
- string
- Description
- Name
kind- Type
- "VIDEO" | "AUDIO"
- Description
- Name
fileType- Type
- "DOCX" | "DOC" | "PDF" | "PPTX" | "XLSX" | "XLS" | "TXT" | "JSON" | "YAML" | "YML" | "XML" | "HTML" | "HTM" | "CSV" | "EML" | "MD" | "MARKDOWN" | "PNG" | "JPG" | "JPEG" | "MP4" | "AVI" | "MOV" | "WMV" | "FLV" | "MKV" | "WEBM" | "MPEG" | "MPG" | "MP3" | "M4A" | "WAV"
- Description
- Name
title- Type
- string
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
meetingId- Type
- string
- Description
- Name
columnName- Type
- string
- Description
- Name
uploadUrl- Type
- string
- Description
- Name
s3Uri- Type
- string
- Description
- Name
expiresInSeconds- Type
- number
- Description
autessa.meetingRecorder.recordings.upload.completeMUTATE
autessa.meetingRecorder.recordings.upload.complete({ botId, meetingId, s3Uri, kind })Register an uploaded recording file and kick off its processing pipeline.
Requires EDITOR access. meetingId (from recordings.upload) and s3Uri are required; kind defaults to VIDEO. Saves the backend reference and inserts an AutessaDB row (status PROCESSING) with the media column set, which fires the transcribe/summarize pipeline.
Request fields
- Name
botId- Type
- string
- Description
- Name
meetingId- Type
- string
- Description
- Name
s3Uri- Type
- string
- Description
- Name
kind- Type
- "VIDEO" | "AUDIO"
- Description
Response fields
- Name
errors- Type
- string[]
- Description
- Name
deprecationWarnings- Type
- string[]
- Description
- Name
sessionToken- Type
- string
- Description
- Name
meetingId- Type
- string
- Description
- Name
platform- Type
- string
- Description
- Name
startTimeUtc- Type
- string
- Description