Skip to main content
Question

Https connection

  • September 28, 2026
  • 1 reply
  • 15 views

Hi,
Does anyone know what causes this GraphQL query error and how to avoid it: HTTPSConnectionPool(host='api.monday.com', port=443): Max retries exceeded with url: /v2 (Caused by SSLError(SSLEOFError(8, '[SSL: UNEXPECTED_EOF_WHILE_READING] EOF occurred in violation of protocol (_ssl.c:1000)')))

I have created a Flask APP and I am using Python SDK.

1 reply

dvdsmpsn
Forum|alt.badge.img+1
  • Participating Frequently
  • September 28, 2026

That error means the TLS connection to api.monday.com was closed abruptly during the handshake or read. The problem is at the network layer: your request never reached monday's API logic, so it isn't a GraphQL or authentication error.

Most likely causes, roughly in order:

  1. Corporate proxy, firewall or TLS inspection (Zscaler, Netskope, Palo Alto, etc.). This is the most common cause. The middlebox drops or intercepts the connection, and Python's OpenSSL sees an unexpected EOF. It's especially likely if it works from a browser or your home network but not from a work machine or server.
  2. VPN or an unstable network dropping the connection mid-handshake.
  3. Stale pooled connections. If you reuse a requests.Session in a long-running loop, like iterating over every board, the server or a load balancer may close idle keep-alive connections. The next request on that socket then fails this way.
  4. Too many concurrent requests. Hammering the endpoint in parallel can get connections reset. monday normally answers rate limits with an HTTP 429, but an intermediary may just cut the connection.
  5. OpenSSL 3 strictness. Python 3.10+ with OpenSSL 3 treats a peer closing without a proper TLS close as an error, where older versions silently ignored it. This exposes problems caused by #1–#3.
  6. A transient monday.com issue. Check status.monday.com if it suddenly started failing everywhere.

Quick diagnosis:

bash

curl -v https://api.monday.com/v2
openssl s_client -connect api.monday.com:443 -servername api.monday.com
  • If both fail the same way from that machine, it's the network or proxy (#1–#2).
  • If they succeed but your script fails intermittently, it's #3–#4.

Fixes:

  • Proxy: set HTTPS_PROXY. If your company re-signs TLS, also point REQUESTS_CA_BUNDLE at the corporate root CA, or ask IT to allowlist or bypass api.monday.com.
  • Intermittent failures: add retries with backoff and keep concurrency low:

python

import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry

s = requests.Session()
retry = Retry(total=5, backoff_factor=1,
status_forcelist=[429, 500, 502, 503, 504],
allowed_methods=["POST"])
s.mount("https://", HTTPAdapter(max_retries=retry))

Only retry POSTs like this if they're read-only queries; for mutations, make sure a retry can't create duplicates.