Better rate limit error message for peertube-cli #6442

Open
opened 2026-02-22 12:54:57 -05:00 by deekerman · 3 comments
Owner

Originally created by @matthijskooijman on GitHub (Feb 1, 2026).

Describe the current behavior

I am using peertube-cli to do some bulk video uploads. This caused 429 rate limit exceeded errors for me.

Looking at the logs and source, it seems that after the upload the status is polled to see when the upload is completed. These are spaced 50ms apart, which mean that the default 50 requests / 10s (200ms / request) can be violated. Edit: Seems incorrect, see first comment.

Here's the loop: github.com/Chocobozzz/PeerTube@b1ed99d964/packages/server-commands/src/videos/videos-command.ts (L481-L485)

Steps to reproduce

  • Install a default docker-based peertube
  • Upload a bunch of files in succession:
❯ for file in *.ts; do peertube-cli upload --video-name "$file" --file "$(pwd)/$file"; done
Uploading 2026-01-23_12-59-44.ts video...                                                             
Video 2026-01-23_12-59-44.ts uploaded.                                                                
Uploading 2026-01-23_13-05-46.ts video...                                                             
Video 2026-01-23_13-05-46.ts uploaded.                                                                
Uploading 2026-01-23_14-06-48.ts video...                                                             
Video 2026-01-23_14-06-48.ts uploaded.                                                                
Cannot upload video: Expected status 200, got 429.                      
The server responded: "Too many requests, please try again later.".

This happened for me with TS files about 500-700MB in size.

From the server log from the first upload:

peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:37:48.306 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:48 +0000] "GET /api/v1/oauth-clients/local HTTP/1.1" 200 99 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:37:48.904 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:48 +0000] "POST /api/v1/users/token HTTP/1.1" 200 194 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:37:48.987 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:48 +0000] "GET /api/v1/users/me HTTP/1.1" 200 2135 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:37:54.823 info: Processing torrent in job 672e56ef-cc72-4fdc-a2e3-d332d00efb0f.
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:37:54.833 info: Creating transcription job for https://televisie.planb.coop/videos/watch/6949aae0-b5de-4f27-be26-0df90d2ba24b
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:37:54.845 info: Video with name 2026-01-23_12-59-44.ts and uuid 6949aae0-b5de-4f27-be26-0df90d2ba24b created.
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:37:54.846 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:54 +0000] "POST /api/v1/videos/upload HTTP/1.1" 200 102 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:37:54.881 info: Creating torrent /data/torrents/dd73ef20-fc11-4f5a-8462-52ca95a5e3bb-720.torrent.
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:37:54.938 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:54 +0000] "GET /api/v1/videos/6949aae0-b5de-4f27-be26-0df90d2ba24b HTTP/1.1" 200 3618 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:37:55.497 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:55 +0000] "GET /api/v1/oauth-clients/local HTTP/1.1" 200 99 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:37:55.640 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:55 +0000] "POST /api/v1/users/token HTTP/1.1" 200 194 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:37:55.872 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:55 +0000] "GET /api/v1/users/me HTTP/1.1" 200 2135 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:15.955 info: Processing torrent in job 712a710e-d6ff-4888-a949-2d5bb791a57e.
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:15.967 info: Video with name 2026-01-23_13-05-46.ts and uuid fe540f50-dbd5-4816-b930-76c8cf305dd7 created.
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:15.969 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:15 +0000] "POST /api/v1/videos/upload HTTP/1.1" 200 102 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:15.971 info: Creating transcription job for https://televisie.planb.coop/videos/watch/fe540f50-dbd5-4816-b930-76c8cf305dd7
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:16.270 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:16 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:16.397 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:16 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:16.498 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:16 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:16.602 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:16 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:16.700 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:16 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:16.832 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:16 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:16.947 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:16 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:17.069 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:17 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:17.180 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:17 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:17.312 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:17 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:17.407 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:17 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:17.513 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:17 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:17.615 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:17 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-"

... Then a few uploads later ...

peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:56.194 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:56 +0000] "GET /api/v1/videos/e4430bce-13f7-4a02-a9f7-b979af8c97d4 HTTP/1.1" 200 3624 "-" "-"
peertube-1  | [televisie.planb.coop:443] 2026-02-01 19:38:56.744 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:56 +0000] "GET /api/v1/oauth-clients/local HTTP/1.1" 429 42 "-" "-"

Describe the expected behavior

Files should just upload.

Additional information

I would suggest fixing this by increasing the delay in the loop. I tried 250ms, which seems to fix the issue for me (at the expense of worst-case 200ms extra latency per video, which seems very acceptable).

Edit: Seems incorrect, see first comment.

  • PeerTube instance: Not public yet
❯ peertube-cli --version
1.0.3
Originally created by @matthijskooijman on GitHub (Feb 1, 2026). ### Describe the current behavior I am using `peertube-cli` to do some bulk video uploads. This caused 429 rate limit exceeded errors for me. ~~Looking at the logs and source, it seems that after the upload the status is polled to see when the upload is completed. These are spaced 50ms apart, which mean that the default 50 requests / 10s (200ms / request) can be violated.~~ *Edit: Seems incorrect, see first comment.* Here's the loop: https://github.com/Chocobozzz/PeerTube/blob/b1ed99d96478d57e43321755f2d4e2e3674bb592/packages/server-commands/src/videos/videos-command.ts#L481-L485 ### Steps to reproduce - Install a default docker-based peertube - Upload a bunch of files in succession: ``` ❯ for file in *.ts; do peertube-cli upload --video-name "$file" --file "$(pwd)/$file"; done Uploading 2026-01-23_12-59-44.ts video... Video 2026-01-23_12-59-44.ts uploaded. Uploading 2026-01-23_13-05-46.ts video... Video 2026-01-23_13-05-46.ts uploaded. Uploading 2026-01-23_14-06-48.ts video... Video 2026-01-23_14-06-48.ts uploaded. Cannot upload video: Expected status 200, got 429. The server responded: "Too many requests, please try again later.". ``` This happened for me with TS files about 500-700MB in size. From the server log from the first upload: ``` peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:37:48.306 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:48 +0000] "GET /api/v1/oauth-clients/local HTTP/1.1" 200 99 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:37:48.904 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:48 +0000] "POST /api/v1/users/token HTTP/1.1" 200 194 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:37:48.987 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:48 +0000] "GET /api/v1/users/me HTTP/1.1" 200 2135 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:37:54.823 info: Processing torrent in job 672e56ef-cc72-4fdc-a2e3-d332d00efb0f. peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:37:54.833 info: Creating transcription job for https://televisie.planb.coop/videos/watch/6949aae0-b5de-4f27-be26-0df90d2ba24b peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:37:54.845 info: Video with name 2026-01-23_12-59-44.ts and uuid 6949aae0-b5de-4f27-be26-0df90d2ba24b created. peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:37:54.846 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:54 +0000] "POST /api/v1/videos/upload HTTP/1.1" 200 102 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:37:54.881 info: Creating torrent /data/torrents/dd73ef20-fc11-4f5a-8462-52ca95a5e3bb-720.torrent. peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:37:54.938 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:54 +0000] "GET /api/v1/videos/6949aae0-b5de-4f27-be26-0df90d2ba24b HTTP/1.1" 200 3618 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:37:55.497 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:55 +0000] "GET /api/v1/oauth-clients/local HTTP/1.1" 200 99 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:37:55.640 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:55 +0000] "POST /api/v1/users/token HTTP/1.1" 200 194 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:37:55.872 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:37:55 +0000] "GET /api/v1/users/me HTTP/1.1" 200 2135 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:15.955 info: Processing torrent in job 712a710e-d6ff-4888-a949-2d5bb791a57e. peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:15.967 info: Video with name 2026-01-23_13-05-46.ts and uuid fe540f50-dbd5-4816-b930-76c8cf305dd7 created. peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:15.969 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:15 +0000] "POST /api/v1/videos/upload HTTP/1.1" 200 102 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:15.971 info: Creating transcription job for https://televisie.planb.coop/videos/watch/fe540f50-dbd5-4816-b930-76c8cf305dd7 peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:16.270 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:16 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:16.397 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:16 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:16.498 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:16 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:16.602 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:16 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:16.700 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:16 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:16.832 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:16 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:16.947 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:16 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:17.069 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:17 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:17.180 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:17 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:17.312 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:17 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:17.407 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:17 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:17.513 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:17 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:17.615 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:17 +0000] "GET /api/v1/videos/fe540f50-dbd5-4816-b930-76c8cf305dd7 HTTP/1.1" 200 2993 "-" "-" ... Then a few uploads later ... peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:56.194 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:56 +0000] "GET /api/v1/videos/e4430bce-13f7-4a02-a9f7-b979af8c97d4 HTTP/1.1" 200 3624 "-" "-" peertube-1 | [televisie.planb.coop:443] 2026-02-01 19:38:56.744 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:19:38:56 +0000] "GET /api/v1/oauth-clients/local HTTP/1.1" 429 42 "-" "-" ``` ### Describe the expected behavior Files should just upload. ### Additional information ~~I would suggest fixing this by increasing the delay in the loop. I tried 250ms, which seems to fix the issue for me (at the expense of worst-case 200ms extra latency per video, which seems very acceptable).~~ *Edit: Seems incorrect, see first comment.* * PeerTube instance: Not public yet ``` ❯ peertube-cli --version 1.0.3 ```
Author
Owner

@matthijskooijman commented on GitHub (Feb 1, 2026):

Hm, even with the 250ms wait, I still got some sporadic 429 responses, but it seems now on the login, so maybe I'm triggering the log rate limit now:

^[[2Kpeertube-1  | [televisie.planb.coop:443] 2026-02-01 20:59:29.095 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:20:59:29 +0000] "GET /api/v1/oauth-clients/local HTTP/1.1" 200 99 "-" "-"
[2Kpeertube-1  | [televisie.planb.coop:443] 2026-02-01 20:59:29.165 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:20:59:29 +0000] "POST /api/v1/users/token HTTP/1.1" 429 42 "-" "-"

In fact, looking back at my original log, the rate limit was on /api/v1/oauth-clients/local which probably means I was triggering the log rate limit all the time. And increasing the wait time did not actually help (I think it was more related to how soon I started test attempts after each other, since the login limit is 15/5min).

So I guess my suggested fix will not help. Instead, I can imagine a fix is either:

  1. On a rate limit, wait a while and retry, or
  2. Provide some better feedback to the user, indicating that a rate limit is tripped and provide some guidance on which?
@matthijskooijman commented on GitHub (Feb 1, 2026): Hm, even with the 250ms wait, I still got some sporadic 429 responses, but it seems now on the login, so maybe I'm triggering the log rate limit now: ``` ^[[2Kpeertube-1 | [televisie.planb.coop:443] 2026-02-01 20:59:29.095 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:20:59:29 +0000] "GET /api/v1/oauth-clients/local HTTP/1.1" 200 99 "-" "-" [2Kpeertube-1 | [televisie.planb.coop:443] 2026-02-01 20:59:29.165 info: 2a10:3781:3fba:0:ec7:28ce:d420:1fa6 - - [01/Feb/2026:20:59:29 +0000] "POST /api/v1/users/token HTTP/1.1" 429 42 "-" "-" ``` In fact, looking back at my original log, the rate limit was on `/api/v1/oauth-clients/local` which probably means I was triggering the log rate limit all the time. And increasing the wait time did not actually help (I think it was more related to how soon I started test attempts after each other, since the login limit is 15/5min). So I guess my suggested fix will not help. Instead, I can imagine a fix is either: 1. On a rate limit, wait a while and retry, or 2. Provide some better feedback to the user, indicating that a rate limit is tripped and provide some guidance on which?
Author
Owner

@Chocobozzz commented on GitHub (Feb 2, 2026):

Hello,

Please increase rate limits on the server: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L20

@Chocobozzz commented on GitHub (Feb 2, 2026): Hello, Please increase rate limits on the server: https://github.com/Chocobozzz/PeerTube/blob/develop/config/production.yaml.example#L20
Author
Owner

@matthijskooijman commented on GitHub (Feb 2, 2026):

Thanks, I had actually raised the limit already to doublecheck that it was indeed the login rate limit that was triggered (forgot to mention that in my previous comment). Even though that is the most proper fix, I could still think that peertube-cli could be improved to make the experience more streamlined, in the two ways of the previous comment.

Maybe this issue could be reopened for that, but I can also imagine that this is not something that has any priority and leaving it closed is also fine.

@matthijskooijman commented on GitHub (Feb 2, 2026): Thanks, I had actually raised the limit already to doublecheck that it was indeed the login rate limit that was triggered (forgot to mention that in my previous comment). Even though that is the most proper fix, I could still think that peertube-cli could be improved to make the experience more streamlined, in the two ways of the previous comment. Maybe this issue could be reopened for that, but I can also imagine that this is not something that has any priority and leaving it closed is also fine.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/PeerTube#6442
No description provided.