Download Configuration

0 Cameras
Clips will be saved here. Folders will be created automatically.
Log in to view and select your cameras.
Advanced Throttling & Pagination Settings
2.0s
Community recommended: 2.0s to prevent Blink API HTTP 429 rate limiting.
Blinkpy default is 10 pages (~250 clips). Set to 0 to download all historical clips.

Download Status

IDLE
Ready to download 0%
0 Total Found
0 Downloaded
0 Skipped (Existing)
0 Failed

Activity Log

--:--:-- Blink Bulk Downloader initialized. Ready.

Blinkpy Bulk Downloader Guide

Everything you need to know about downloading historical Blink clips, 2FA, rate limiting, and local storage.

🔐 Authentication & 2FA

Blink uses OAuth 2.0 with Two-Factor Authentication. When you log in with your email and password:

  • Blink will send a 6-digit PIN to your phone (SMS) or email address.
  • Enter the PIN in the 2FA prompt modal to finish connecting.
  • Your session token is saved locally to blink_session.json so you don't need to re-enter your password or 2FA next time!

⚡ Overcoming the 10-Page Limit

In the standard blinkpy library, download_videos() defaults to stopping after only 10 pages (~250 clips) and only checks the last 30 seconds if no date is specified!

  • Our downloader queries from epoch 0 (or your selected date range).
  • It continuously paginates until no more clips exist, ensuring your complete video history is retrieved.

⏱️ Rate Limiting & Throttling

Blink aggressively rate limits accounts that make rapid automated requests:

  • A delay of 1.5 to 2.5 seconds between clip downloads is community-recommended.
  • If Blink returns HTTP 429 (Too Many Requests), our engine automatically applies exponential backoff and retries safely.

💾 Cloud vs. Sync Module 2 USB Storage

Blink saves videos either to Cloud Subscription or Local USB Storage:

  • Cloud Subscription (Plus/Basic): Downloaded directly via Blink's cloud video endpoints.
  • Sync Module 2 Local USB Storage: Downloaded by requesting the Sync Module to upload the clip manifest and stream each file. Both storage types are supported seamlessly.

🔄 Pause, Resume & Persistent Ledger

You can pause and resume downloads at any time, even across sessions:

  • The app maintains a persistent ledger (.blink_download_manifest.json) inside your destination folder tracking all completed clips.
  • Pause / Resume: Hit Pause during a download to hold progress safely, and click Resume when you're ready to proceed.
  • New Sessions: If you close the app or return days later, the ledger remembers which clips are already completed and skips them instantly.
  • Redownload Everything: Need a fresh copy of everything? Click the Redownload Everything button to bypass the ledger and force-download all clips.

💻 Headless CLI Mode

Prefer running via the command line or scheduled cron jobs?

# Run interactively in the terminal:
./run.sh --cli

# Or run with custom arguments:
./venv/bin/python main.py --cli --dest ~/BlinkClips --since 2024-01-01 --delay 2