# Python requests: HTTPSConnectionPool(host='api.example.com', port=443): Max retries exceeded with url: /v1 (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] ...')))

**Code:** `HTTPSConnectionPool: Max retries exceeded (SSLError)` · **Category:** SSL / TLS · **Seen on:** SSL, Python

The `requests` call failed during the TLS step and exhausted its retries; the real reason is in the nested SSLError text.

## Meaning

Read the bracketed text: CERTIFICATE_VERIFY_FAILED means trust, WRONG_VERSION_NUMBER means port/protocol, EOF means the peer closed, tlsv1 alert means protocol mismatch. Fix according to that cause; avoid `verify=False` except in short local tests.

## Common causes

- Missing/old CA bundle (certifi)
- Corporate proxy with its own root
- Server using an unsupported TLS version
- Wrong URL scheme/port
- Self-signed server certificate

## Quick fix

1. Update `certifi` and `requests`
2. Set `REQUESTS_CA_BUNDLE=/path/ca.pem` for corporate CAs
3. Use the nested message to pick the right fix from the pages above

## Detailed fix by platform

### Python

1. `REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt python app.py`

## How to diagnose

1. **Nested** — Which SSL reason?
2. **Bundle** — Updated?
3. **Proxy** — Involved?

---
Source: [WhatIsMyError](https://whatismyerror.com/errors/ssl/requests-max-retries-sslerror)
