Public API works for some months but not others

Sort:
Avatar of cheemsburger9000

When I do:

`curl -s https://api.chess.com/pub/player/cheemsburger9000/games/2024/07/pgn -v > /dev/null`

We get this output:

* Host api.chess.com:443 was resolved.
* IPv6: (none)
* IPv4: 104.18.141.67, 104.18.138.67, 104.18.137.67, 104.18.139.67, 104.18.140.67
*   Trying 104.18.141.67:443...
* ALPN: curl offers h2,http/1.1
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [1559 bytes data]
*  CAfile: /etc/ssl/certs/ca-certificates.crt
*  CApath: none
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [1210 bytes data]
* TLSv1.3 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [19 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [2519 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [78 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [52 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384 / X25519MLKEM768 / id-ecPublicKey
* ALPN: server accepted h2
* Server certificate:
*  subject: CN=chess.com
*  start date: Jul 27 12:09:27 2025 GMT
*  expire date: Oct 25 13:09:13 2025 GMT
*  subjectAltName: host "api.chess.com" matched cert's "*.chess.com"
*  issuer: C=US; O=Google Trust Services; CN=WE1
*  SSL certificate verify ok.
*   Certificate level 0: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA256
*   Certificate level 1: Public key type EC/prime256v1 (256/128 Bits/secBits), signed using ecdsa-with-SHA384
*   Certificate level 2: Public key type EC/secp384r1 (384/192 Bits/secBits), signed using ecdsa-with-SHA384
* Connected to api.chess.com (104.18.141.67) port 443
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://api.chess.com/pub/player/cheemsburger9000/games/2024/07/pgn
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [cheme: https]
* [HTTP/2] [1] [:authority: api.chess.com]
* [HTTP/2] [1] [ath: /pub/player/cheemsburger9000/games/2024/07/pgn]
* [HTTP/2] [1] [user-agent: curl/8.15.0]
* [HTTP/2] [1] [accept: */*]
} [5 bytes data]
> GET /pub/player/cheemsburger9000/games/2024/07/pgn HTTP/2
> Host: api.chess.com
> User-Agent: curl/8.15.0
> Accept: */*
>
* Request completely sent off
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [238 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [238 bytes data]
< HTTP/2 200
< date: Tue, 05 Aug 2025 22:24:52 GMT
< content-type: application/vnd.chess-pgn; charset=utf-8; charset=utf-8
< content-length: 3694868
< etag: W/"26429e6e17cd3021adbcefeb35282390"
< x-chesscom-matched: pubapi_player_games_archive_pgn
< last-modified: Tuesday, 05-Aug-2025 22:24:52 GMT+0000
< access-control-allow-origin: *
< content-disposition: attachment; filename="ChessCom_cheemsburger9000_202407.pgn"
< link: <https://api.chess.com/context/GamesPgn.jsonld>;; type="application/ld+json"
< cache-control: public, max-age=5
< expires: Tue, 05 Aug 2025 22:24:57
< x-chesscom-meta: lean=published
< x-chesscom-request-id-lb: 468b58569a09d7db274441a2f0497dba
< x-chesscom-request-id-cdn: 96a9b4f7fd07bba0-IAD
< x-chesscom-servedby: 34
< strict-transport-security: max-age=31536000; includeSubDomains
< cf-cache-status: MISS
< accept-ranges: bytes
< set-cookie: __cf_bm=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX; path=/; expires=Tue, 05-Aug-25 22:54:52 GMT; domain=.chess.com; HttpOnly; Secure; SameSite=None
< report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=ZrbjT9jEREC7oiqz0iGiV7S9527ajl7MTPTZ3dxnlk%2BDOPH0U5cTRaPzrZOCT4I9m8sBj0T4UF%2FJn1c1d9RQPI0FtZC4LZDHDKs3p3gfnZ2%2FzlCA9WeVR3sQCNSRxdc%3D"}],"group":"cf-nel","max_age":604800}
< nel: {"success_fraction":1,"report_to":"cf-nel","max_age":604800}
< server: cloudflare
< cf-ray: XXXXXXXXXXXXXXXXXXXX
< alt-svc: h3=":443"; ma=86400
<
} [5 bytes data]
* HTTP/2 stream 1 was not closed cleanly: INTERNAL_ERROR (err 2)
* Connection #0 to host api.chess.com left intact

This is reproducible on both my machine and my VPS which is in another country, through another network.

I can get, for example, 2025-06 games with curl -s https://api.chess.com/pub/player/cheemsburger9000/games/2025/06/pgn

But I've been retrying the other one nonstop with two-minute intervals between requests for the last day and I cannot get the request to complete successfully. It always sends the response up to some character, then it gets cut off. 

Is this a bug? Am I supposed to stop retrying? I'm pretty sure this is not intended on your part, as I'd probably get a 429 error or something instead, if it was related to rate limiting or something like that. 

Thanks

Avatar of TorNent

Better to ask in https://www.chess.com/clubs/forum/chess-com-developer-community

Or wait a day or two for endpoints to update. It might be resolved automatically.

Avatar of cheemsburger9000
TorNent wrote:

Better to ask in https://www.chess.com/clubs/forum/chess-com-developer-community

Or wait a day or two for endpoints to update. It might be resolved automatically.

I'm going to wait for a while and if it doesn't change I'll try the developer forum, I didn't know that was a thing. Thank you!!