# Video import via CLI (/docs/context-capture/video-import-cli)



Video import via CLI [#video-import-via-cli]

Import recordings directly from your terminal with `ox import`. Paste a Loom or Cap URL, submit it for processing, and track status without leaving your editor.

Quick start [#quick-start]

```bash
# Import a Loom recording
ox import https://www.loom.com/share/abc123def456 --title "Sprint Planning"

# Import a Cap recording
ox import https://cap.link/abc123 --title "Bug Walkthrough"

# Import any direct video URL
ox import https://example.com/meeting.mp4 --title "Team Standup"
```

How it works [#how-it-works]

When you run `ox import` with a URL:

1. The CLI submits the URL to SageOx for processing
2. SageOx downloads the video, transcribes it, extracts keyframes, and generates summaries
3. Artifacts commit to your Team Context
4. Your AI coworkers can reference the recording in future sessions

<Mermaid
  chart="graph LR
    A[ox import URL] --> B[Cloud Processing]
    B --> C[Transcription]
    C --> D[Keyframe Extraction]
    D --> E[Summarization]
    E --> F[Team Context]"
/>

Commands [#commands]

Import a video URL [#import-a-video-url]

```bash
ox import <url> [flags]
```

| Flag      | Description                                 |
| --------- | ------------------------------------------- |
| `--title` | Display title for the recording             |
| `--team`  | Team ID (auto-discovered from current repo) |
| `--json`  | Output as JSON                              |

**Examples:**

```bash
# Loom share link
ox import https://www.loom.com/share/abc123 --title "Architecture Review"

# Cap share link
ox import https://cap.link/xyz789 --title "Design Walkthrough"

# Direct video URL
ox import https://storage.example.com/recording.mp4 --title "Customer Call"
```

Check processing status [#check-processing-status]

Track a recording's progress through the pipeline:

```bash
ox import --status <recording_id>
```

| Flag       | Description                              |
| ---------- | ---------------------------------------- |
| `--status` | Recording ID to check                    |
| `--watch`  | Poll until processing completes or fails |
| `--json`   | Output as JSON (JSONL in watch mode)     |

**Examples:**

```bash
# Check status once
ox import --status rec_01HQXYZ123

# Watch until complete
ox import --status rec_01HQXYZ123 --watch

# JSON output for scripting
ox import --status rec_01HQXYZ123 --json
```

**Sample output:**

```
Recording: rec_01HQXYZ123
Title:     Sprint Planning
Status:    processing
Duration:  342s

Processing Steps
  ✓ download             complete
  ✓ transcription        complete
  ◐ keyframes            in_progress
  · summarization        pending
```

List recordings [#list-recordings]

See all recordings for your team:

```bash
ox import --list
```

| Flag     | Description                                 |
| -------- | ------------------------------------------- |
| `--list` | Show all team recordings                    |
| `--team` | Team ID (auto-discovered from current repo) |
| `--json` | Output as JSON                              |

**Sample output:**

```
ID                                       TITLE                          STATUS       CREATED
---------------------------------------- ------------------------------ ------------ --------------------
rec_01HQXYZ123                           Sprint Planning                ready        2026-03-20 14:30
rec_01HQABC456                           Bug Repro: Cart Total          processing   2026-03-20 15:45
rec_01HQDEF789                           Architecture Overview          ready        2026-03-19 10:00
```

Supported sources [#supported-sources]

| Source           | URL format                                |
| ---------------- | ----------------------------------------- |
| **Loom**         | `https://www.loom.com/share/...`          |
| **Cap**          | `https://cap.link/...`                    |
| **Direct video** | Any URL ending in `.mp4`, `.webm`, `.mov` |

Team discovery [#team-discovery]

The CLI auto-discovers your team from the current repo. If you're outside a SageOx project or want to import to a different team:

```bash
# Specify team explicitly
ox import https://loom.com/share/abc --team team_01HQ123

# Or run from inside an initialized repo
cd ~/projects/my-app
ox import https://loom.com/share/abc
```

Scripting [#scripting]

Use `--json` for machine-readable output:

```bash
# Import and capture recording ID
RECORDING_ID=$(ox import https://loom.com/share/abc --title "Demo" --json | jq -r '.recording_id')

# Wait for processing to complete
ox import --status "$RECORDING_ID" --watch --json | while read -r line; do
  STATUS=$(echo "$line" | jq -r '.status')
  echo "Status: $STATUS"
  if [ "$STATUS" = "ready" ]; then
    echo "Processing complete!"
    break
  fi
done
```

What's next [#whats-next]

* [Video Import Overview](/docs/context-capture/video-import) — all import methods
* [Cap Setup](/docs/context-capture/video-import-cap) — optimal recording settings
* [Using in Coding Sessions](/docs/context-capture/video-import-coding) — how AI coworkers use recordings
* [ox import reference](/docs/cli/import) — full CLI reference
