Skip to main content

Unofficial Otter.ai CLI

Project description

otterai-cli

An unofficial command-line interface for Otter.ai.

Note: This project is not affiliated with or endorsed by Otter.ai / Aisense Inc.

Requirements

  • Python 3.10+

Installation

uv tool install otterai-cli

This makes the otter command available globally.

To update to the latest version:

uv tool upgrade otterai-cli

Or run directly without installing:

uvx --from otterai-cli otter --help

Setup

otter login

Credentials are stored in your OS keychain (macOS Keychain, Windows Credential Locker, etc.) via keyring, with ~/.otterai/config.json as fallback.

You can also use environment variables (OTTERAI_USERNAME, OTTERAI_PASSWORD), which take highest precedence.

Auth commands

otter user      # check current user
otter logout    # remove saved credentials

Usage

otter speeches list                          # list all speeches
otter speeches list --days 7                 # last 7 days
otter speeches list --folder "Work"          # by folder name
otter speeches get SPEECH_ID                 # get speech details + transcript
otter speeches download SPEECH_ID -f txt     # download as txt, pdf, mp3, docx, srt, or md
otter speeches search "keyword" SPEECH_ID    # search within a speech
otter speakers list                          # list all speakers
otter folders list                           # list all folders

Run otter --help or otter <command> --help for more options.

Important: Speech IDs (otid vs speech_id)

Otter.ai speeches have two identifiers:

  • speech_id (e.g. 22WB27HAEBEJYFCA) -- internal ID, does NOT work with API endpoints
  • otid (e.g. jqb7OHo6mrHtCuMkyLN0nUS8mxY) -- the ID used in all API calls

All CLI commands that accept a SPEECH_ID argument expect the otid value. Use otter speeches list to find otids, or otter speeches list --json | jq '.speeches[].otid' for just the IDs.

Speeches

# List all speeches
otter speeches list

# List with options
otter speeches list --page-size 10 --source owned

# List speeches from the last N days
otter speeches list --days 2

# List speeches in a specific folder (by name or ID)
otter speeches list --folder "CoverNode"

# Get a specific speech
otter speeches get SPEECH_ID

# Search within a speech
otter speeches search "search query" SPEECH_ID

# Download a speech (formats: txt, pdf, mp3, docx, srt, md)
otter speeches download SPEECH_ID --format txt

# Download as markdown (generated locally from transcript data)
otter speeches download SPEECH_ID --format md
otter speeches download SPEECH_ID --format md --output meeting-notes

# Upload an audio file
otter speeches upload recording.mp4

# Move to trash
otter speeches trash SPEECH_ID

# Rename a speech
otter speeches rename SPEECH_ID "New Title"

# Move speeches to a folder (by name or ID)
otter speeches move SPEECH_ID --folder "CoverNode"
otter speeches move ID1 ID2 ID3 --folder "CoverNode"

# Move to a new folder (auto-create if it doesn't exist)
otter speeches move SPEECH_ID --folder "New Folder" --create

Speakers

# List all speakers
otter speakers list

# Create a new speaker
otter speakers create "Speaker Name"

# Tag a speaker on transcript segments
otter speakers tag SPEECH_ID SPEAKER_ID
otter speakers tag SPEECH_ID SPEAKER_ID --all

Folders and Groups

# List folders
otter folders list

# Create a folder
otter folders create "My Folder"

# Rename a folder
otter folders rename FOLDER_ID "New Name"

# List groups
otter groups list

Configuration

# Show current config
otter config show

# Clear saved config
otter config clear

JSON Output

Most commands support --json flag for machine-readable output:

otter speeches list --json
otter speakers list --json

Development

uv sync --dev        # install dependencies
uv run pytest        # run tests

Acknowledgements

Based on gmchad/otterai-api by Chad Lohrli, with CLI functionality from PR #9 by @andrewfurman.

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

otterai_cli-0.1.1.tar.gz (79.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

otterai_cli-0.1.1-py3-none-any.whl (18.6 kB view details)

Uploaded Python 3

File details

Details for the file otterai_cli-0.1.1.tar.gz.

File metadata

  • Download URL: otterai_cli-0.1.1.tar.gz
  • Upload date:
  • Size: 79.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for otterai_cli-0.1.1.tar.gz
Algorithm Hash digest
SHA256 7fd27a4a254fe39a74e5ec07892d9a1ef00892ba722be70c9e2347153bc021b2
MD5 f8f4203a8c93c8dcc02c1207519351d1
BLAKE2b-256 654c5058c0bf1336c1da61e6742cfa2c5a9268463b10b3a6095044439847b377

See more details on using hashes here.

Provenance

The following attestation bundles were made for otterai_cli-0.1.1.tar.gz:

Publisher: publish.yml on erickhchan/otterai-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file otterai_cli-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: otterai_cli-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 18.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for otterai_cli-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 054a8ab9cdfc5816658afb0654c3ffae0e3a1305b91175831c1bfc041a6066aa
MD5 6776576daf0df613524c74b30cd1804a
BLAKE2b-256 fc148cf62f64117f7c8f99f44ae277122ae0f2b48784944911c7065820e62ebe

See more details on using hashes here.

Provenance

The following attestation bundles were made for otterai_cli-0.1.1-py3-none-any.whl:

Publisher: publish.yml on erickhchan/otterai-cli

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page