PMS can't acquire certificate — persistent "API rate limit exceeded" (429, code 1003)

My server can’t acquire its TLS certificate because the CSR upload to plex.tv is being rate-limited, and the limit isn’t clearing on its own. I believe I need a server-side reset.

Server details

  • Server name: SHIELD
  • Machine identifier: 981cf621528a2437ab6f0ba45886e337cfd4bfb5
  • Platform: NVIDIA SHIELD Android TV (Pro 2019), Android TV
  • PMS version: 1.43.3.10861-07dfddaeb

On every startup, PMS reports no certificate exists, submits a CSR, and immediately receives HTTP 429. As a result there is no TLS (handshake refused on 32400 locally and on my mapped public port), no plex.direct HTTPS connection is published, and remote clients can only see a plaintext http:// URI
Plex app on mobile data reports the server as unavailable, despite port forwarding being correct and externally reachable.

Exact error (from Plex Media Server.log, token redacted):

CERT: Certificate did not exist, fetching a new one.
PUT https://servers.plex.tv/api/v2/devices/981cf621528a2437ab6f0ba45886e337cfd4bfb5/certificate/csr?reason=missing&invalidIn=0
HTTP/2.0 429 response from PUT .../certificate/csr
ERROR - CERT: Error acquiring new certificate: Failed to upload CSR: 429,
<?xml version="1.0" encoding="UTF-8"?>
<errors>
  <error code="1003" message="API rate limit exceeded" status="429"/>
</errors>

During recent months, your server has been requesting new certificates constantly, up to 5 times per day. They were actually created, but your server failed to store them. So the limit was imposed.
Did you move the location of the Plex data folder away from the internal storage on the Shield?
If you did, verify that the storage file system is still healthy, and is not low on free space. And if you did not, check free space anyway.

Thanks very much for the checking!

The data folder is on internal storage (not moved), filesystem looks healthy, only 1.5 GB free, but the shield storage is small, I’ll try to make a bit more space. I think the real cause was my server crash-looping on some corrupt media files, so perhaps it wasn’t staying up long enough to persist a cert.

I’ve removed those files the server seems to be running stably and picked up a valid certificate on its own this morning, and it persisted after a server restart. Look like it might be solved - cheers!