CAA login and private HTTP/2 are now the defaults in instagrapi 3.0.0.
Breaking changes
Client()uses curl for private requests;curl_cffiis installed by a normal package installation.login()uses CAA directly, with no automatic fallback to the old password endpoint.- The previous flow remains available as
login_legacy()with the same arguments and existing fallbacks.
The default Android app profile is now Instagram 446.0.0.49.77, with the previous 428 profile retained for explicit selection and saved settings (#2792).
Migration
- Existing settings with an explicit
private_transportkeep that choice. To move those settings to curl, callset_retry_config(private_transport="curl")after loading them. - Saved app profiles without a matching Bloks hash produce an actionable error before CAA requests. Use
load_settings(path, override_app_version=True)to select the supported app profile while keeping hardware and device identifiers, or supply the matching hash. - Private HTTP/2 uses libcurl. A system curl executable and Python h2 are not required. Public browser impersonation remains a separate optional extra.
Read the migration guide.
Validation
- Full offline suite: 871 passed, 3 skipped; supported Python and clean-install CI passed.
- Fresh live sample: 10/10 CAA logins, current-user checks and session restorations. All 90 private responses used HTTP/2; no HTTP 429 or legacy-login requests.
- Live checks retained assigned proxies and device identifiers and explicitly selected the supported 446 app profile. Results apply to this ten-account sample.
Implemented in #2795.