Response status code does not indicate success: 429 (Too Many Requests) #113

Open
opened 2025-12-21 08:38:29 +00:00 by baldurscock · 7 comments

Hi, just downloaded this and get this error just after the logged in successfully:

Exception caught: Response status code does not indicate success: 429 (Too Many Requests).

StackTrace: at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
at OF_DL.Helpers.APIHelper.BuildHeaderAndExecuteRequests(Dictionary2 getParams, String endpoint, HttpClient client) at OF_DL.Helpers.APIHelper.GetAllSubscriptions(Dictionary2 getParams, String endpoint, Boolean includeRestricted, IDownloadConfig config)
Exception caught: Object reference not set to an instance of an object.

StackTrace: at OF_DL.Program.DownloadAllData(APIHelper m_ApiHelper, Auth Auth, Config Config)
at OF_DL.Program.Main(String[] args)

Hi, just downloaded this and get this error just after the logged in successfully: Exception caught: Response status code does not indicate success: 429 (Too Many Requests). StackTrace: at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() at OF_DL.Helpers.APIHelper.BuildHeaderAndExecuteRequests(Dictionary`2 getParams, String endpoint, HttpClient client) at OF_DL.Helpers.APIHelper.GetAllSubscriptions(Dictionary`2 getParams, String endpoint, Boolean includeRestricted, IDownloadConfig config) Exception caught: Object reference not set to an instance of an object. StackTrace: at OF_DL.Program.DownloadAllData(APIHelper m_ApiHelper, Auth Auth, Config Config) at OF_DL.Program.Main(String[] args)
Collaborator

How many accounts are you subscribed to?

How many accounts are you subscribed to?
melithine added the
needs-info
label 2025-12-22 19:22:28 +00:00

Hi, I'd like to add some info to this post in hopes we can get it fixed. I get this same error, but only after I click "Download Purchased Tab".

I only have 5 active subscriptions, but I have paid content from more than 40 creators. Its definitely more than 40 because that's when the program quits and shows this error.

Checking folders for Users in Purchased Tab
Folder for redacted already created
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for Deleted User - 145950824
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
Created folder for redacted
    Exception caught: Response status code does not indicate success: 429 (Too Many Requests).

StackTrace:    at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
   at OF_DL.Helpers.APIHelper.BuildHeaderAndExecuteRequests(Dictionary`2 getParams, String endpoint, HttpClient client)
   at OF_DL.Helpers.APIHelper.GetPurchasedTab(String endpoint, String folder, IDownloadConfig config, Dictionary`2 users)
Exception caught: Object reference not set to an instance of an object.

StackTrace:    at OF_DL.Program.DownloadAllData(APIHelper m_ApiHelper, Auth Auth, Config Config)
   at OF_DL.Program.Main(String[] args)

Press any key to exit.

So it seems to start throwing 429 errors when you try to go over 40 I'm guessing. Hopefully this helps fix the issue!

EDIT: To add, I am using CDM keys that I've generated on my own. All other content I scrape, downloads and plays perfectly fine.

Hi, I'd like to add some info to this post in hopes we can get it fixed. I get this same error, but only after I click "Download Purchased Tab". I only have 5 active subscriptions, but I have paid content from more than 40 creators. Its definitely more than 40 because that's when the program quits and shows this error. ``` Checking folders for Users in Purchased Tab Folder for redacted already created Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for Deleted User - 145950824 Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Created folder for redacted Exception caught: Response status code does not indicate success: 429 (Too Many Requests). StackTrace: at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() at OF_DL.Helpers.APIHelper.BuildHeaderAndExecuteRequests(Dictionary`2 getParams, String endpoint, HttpClient client) at OF_DL.Helpers.APIHelper.GetPurchasedTab(String endpoint, String folder, IDownloadConfig config, Dictionary`2 users) Exception caught: Object reference not set to an instance of an object. StackTrace: at OF_DL.Program.DownloadAllData(APIHelper m_ApiHelper, Auth Auth, Config Config) at OF_DL.Program.Main(String[] args) Press any key to exit. ``` So it seems to start throwing 429 errors when you try to go over 40 I'm guessing. Hopefully this helps fix the issue! EDIT: To add, I am using CDM keys that I've generated on my own. All other content I scrape, downloads and plays perfectly fine.
Collaborator

Can someone experiencing this attachment a verbose log so we can see what's going on?

Can someone experiencing this attachment a verbose log so we can see what's going on?

Can someone experiencing this attachment a verbose log so we can see what's going on?

I've got you. My honest guess is that its making too many requests in a short amount of time. Wonder if it'd be feasible to add a cooldown timer of some sorts.

OFDL20251231.txt

EDIT: I'm not gonna pretend I know anything about how this downloader works, but looking through the log I see requests looking like this 69 different times all in the span of 15ish seconds before it starts to actually get the posts/messages from the creators. I'm guessing that has something to do with the dynamic rules trying to find the right data.

2025-12-31 23:50:05.902 -07:00 [DBG] Calling BuildHttpRequestMessage
2025-12-31 23:50:05.902 -07:00 [DBG] Calling GetDynamicHeaders
2025-12-31 23:50:05.902 -07:00 [DBG] Path: /api2/v2/users/list?x[]=33892183
2025-12-31 23:50:05.902 -07:00 [DBG] Query Params: ?
2025-12-31 23:50:05.902 -07:00 [DBG] Using cached dynamic rules
2025-12-31 23:50:05.902 -07:00 [DBG] Full request URL: https://onlyfans.com/api2/v2/users/list?x[]=33892183?

But towards the end when it crashes, it looks like its trying to make a request to limit=50&order=publish_date_desc&format=infinite&skip_users=all again even though it did it at the beginning already.

// last user it grabs
2025-12-31 23:50:31.931 -07:00 [DBG] Download path: __user_data__/sites/OnlyFans/siridahl
2025-12-31 23:50:31.931 -07:00 [DBG] Folder for siridahl already created
2025-12-31 23:50:31.931 -07:00 [DBG] Calling GetUserInfo: /users/siridahl
2025-12-31 23:50:31.931 -07:00 [DBG] Calling BuildHttpRequestMessage
2025-12-31 23:50:31.931 -07:00 [DBG] Calling GetDynamicHeaders
2025-12-31 23:50:31.931 -07:00 [DBG] Path: /api2/v2/users/siridahl
2025-12-31 23:50:31.931 -07:00 [DBG] Query Params: ?limit=50&order=publish_date_asc
2025-12-31 23:50:31.931 -07:00 [DBG] Using cached dynamic rules
2025-12-31 23:50:31.931 -07:00 [DBG] Full request URL: https://onlyfans.com/api2/v2/users/siridahl?limit=50&order=publish_date_asc
// this is the request that crashes
2025-12-31 23:50:31.985 -07:00 [DBG] Download path: __user_data__/sites/OnlyFans/
2025-12-31 23:50:31.993 -07:00 [DBG] Calling GetPurchasedTab - /posts/paid/all
2025-12-31 23:50:31.993 -07:00 [DBG] Calling BuildHeaderAndExecuteRequests
2025-12-31 23:50:31.993 -07:00 [DBG] Calling BuildHttpRequestMessage
2025-12-31 23:50:31.993 -07:00 [DBG] Calling GetDynamicHeaders
2025-12-31 23:50:31.993 -07:00 [DBG] Path: /api2/v2/posts/paid/all
2025-12-31 23:50:31.993 -07:00 [DBG] Query Params: ?limit=50&order=publish_date_desc&format=infinite&skip_users=all
2025-12-31 23:50:31.993 -07:00 [DBG] Using cached dynamic rules
2025-12-31 23:50:31.993 -07:00 [DBG] Full request URL: https://onlyfans.com/api2/v2/posts/paid/all?limit=50&order=publish_date_desc&format=infinite&skip_users=all
2025-12-31 23:50:32.103 -07:00 [ERR] Exception caught: Response status code does not indicate success: 429 (Too Many Requests).
> Can someone experiencing this attachment a verbose log so we can see what's going on? I've got you. My honest guess is that its making too many requests in a short amount of time. Wonder if it'd be feasible to add a cooldown timer of some sorts. [OFDL20251231.txt](/attachments/fc3e3253-6d33-4193-bb2f-3f7889169bd3) EDIT: I'm not gonna pretend I know anything about how this downloader works, but looking through the log I see requests looking like this 69 different times all in the span of 15ish seconds before it starts to actually get the posts/messages from the creators. I'm guessing that has something to do with the dynamic rules trying to find the right data. ``` 2025-12-31 23:50:05.902 -07:00 [DBG] Calling BuildHttpRequestMessage 2025-12-31 23:50:05.902 -07:00 [DBG] Calling GetDynamicHeaders 2025-12-31 23:50:05.902 -07:00 [DBG] Path: /api2/v2/users/list?x[]=33892183 2025-12-31 23:50:05.902 -07:00 [DBG] Query Params: ? 2025-12-31 23:50:05.902 -07:00 [DBG] Using cached dynamic rules 2025-12-31 23:50:05.902 -07:00 [DBG] Full request URL: https://onlyfans.com/api2/v2/users/list?x[]=33892183? ``` But towards the end when it crashes, it looks like its trying to make a request to `limit=50&order=publish_date_desc&format=infinite&skip_users=all` again even though it did it at the beginning already. ``` // last user it grabs 2025-12-31 23:50:31.931 -07:00 [DBG] Download path: __user_data__/sites/OnlyFans/siridahl 2025-12-31 23:50:31.931 -07:00 [DBG] Folder for siridahl already created 2025-12-31 23:50:31.931 -07:00 [DBG] Calling GetUserInfo: /users/siridahl 2025-12-31 23:50:31.931 -07:00 [DBG] Calling BuildHttpRequestMessage 2025-12-31 23:50:31.931 -07:00 [DBG] Calling GetDynamicHeaders 2025-12-31 23:50:31.931 -07:00 [DBG] Path: /api2/v2/users/siridahl 2025-12-31 23:50:31.931 -07:00 [DBG] Query Params: ?limit=50&order=publish_date_asc 2025-12-31 23:50:31.931 -07:00 [DBG] Using cached dynamic rules 2025-12-31 23:50:31.931 -07:00 [DBG] Full request URL: https://onlyfans.com/api2/v2/users/siridahl?limit=50&order=publish_date_asc // this is the request that crashes 2025-12-31 23:50:31.985 -07:00 [DBG] Download path: __user_data__/sites/OnlyFans/ 2025-12-31 23:50:31.993 -07:00 [DBG] Calling GetPurchasedTab - /posts/paid/all 2025-12-31 23:50:31.993 -07:00 [DBG] Calling BuildHeaderAndExecuteRequests 2025-12-31 23:50:31.993 -07:00 [DBG] Calling BuildHttpRequestMessage 2025-12-31 23:50:31.993 -07:00 [DBG] Calling GetDynamicHeaders 2025-12-31 23:50:31.993 -07:00 [DBG] Path: /api2/v2/posts/paid/all 2025-12-31 23:50:31.993 -07:00 [DBG] Query Params: ?limit=50&order=publish_date_desc&format=infinite&skip_users=all 2025-12-31 23:50:31.993 -07:00 [DBG] Using cached dynamic rules 2025-12-31 23:50:31.993 -07:00 [DBG] Full request URL: https://onlyfans.com/api2/v2/posts/paid/all?limit=50&order=publish_date_desc&format=infinite&skip_users=all 2025-12-31 23:50:32.103 -07:00 [ERR] Exception caught: Response status code does not indicate success: 429 (Too Many Requests). ```

Just want to report that this does seem to be fixed.

So last night, I updated to 1.9.20 and re ran the download purchased tab. It worked! It did spit out a handful of "429 too many requests" but it moved past it and proceeded to download all of my paid content. It worked one time.

Now its spitting out the same message then crashing like it was before.

2026-01-05 09:49:59.004 -07:00 [ERR] Exception caught: Response status code does not indicate success: 429 (Too Many Requests).

StackTrace:    at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode()
   at OF_DL.Helpers.APIHelper.BuildHeaderAndExecuteRequests(Dictionary`2 getParams, String endpoint, HttpClient client)
   at OF_DL.Helpers.APIHelper.GetPurchasedTab(String endpoint, String folder, IDownloadConfig config, Dictionary`2 users)
2026-01-05 09:49:59.006 -07:00 [ERR] Exception caught: Object reference not set to an instance of an object.

StackTrace:    at OF_DL.Program.DownloadAllData(APIHelper m_ApiHelper, Auth Auth, Config Config)
   at OF_DL.Program.Main(String[] args)

Then I realized what the real issue was, rules.json was updated but the program never updated the rules.json (or at least it doesn't attempt to when doing the download purchased tab)

Other than that, this spits out in the console when doing the action.

image.png

Aside from the console bleed, I think its safe to say this issue can be marked as resolved!

Just want to report that this does seem to be fixed. So last night, I updated to 1.9.20 and re ran the download purchased tab. It worked! It did spit out a handful of "429 too many requests" but it moved past it and proceeded to download all of my paid content. It worked one time. Now its spitting out the same message then crashing like it was before. ``` 2026-01-05 09:49:59.004 -07:00 [ERR] Exception caught: Response status code does not indicate success: 429 (Too Many Requests). StackTrace: at System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode() at OF_DL.Helpers.APIHelper.BuildHeaderAndExecuteRequests(Dictionary`2 getParams, String endpoint, HttpClient client) at OF_DL.Helpers.APIHelper.GetPurchasedTab(String endpoint, String folder, IDownloadConfig config, Dictionary`2 users) 2026-01-05 09:49:59.006 -07:00 [ERR] Exception caught: Object reference not set to an instance of an object. StackTrace: at OF_DL.Program.DownloadAllData(APIHelper m_ApiHelper, Auth Auth, Config Config) at OF_DL.Program.Main(String[] args) ``` Then I realized what the real issue was, rules.json was updated but the program never updated the rules.json (or at least it doesn't attempt to when doing the download purchased tab) Other than that, this spits out in the console when doing the action. [![image.png](/attachments/61c82f6e-3953-4432-bc5f-30030888c487)](url) Aside from the console bleed, I think its safe to say this issue can be marked as resolved!
115 KiB
Collaborator

rules.json is never updated by OF-DL. The dynamic rules are fetched automatically (but not stored on your computer) when OF-DL runs. If the dynamic rules source (this website) is ever offline, rules.json is used instead as a backup.

rules.json is never updated by OF-DL. The dynamic rules are fetched automatically (but not stored on your computer) when OF-DL runs. If the dynamic rules source (this website) is ever offline, rules.json is used instead as a backup.
melithine added
triaged-and-escalated
and removed
needs-info
labels 2026-02-18 17:01:04 +00:00
Collaborator

This should be relatively easy to fix now that the codebase has been refactored. We can add our own rate limiting in ApiService at the service level to ensure that all API calls are slowed down by OF-DL. We could do the same in DownloadService if needed.

I don't have the capacity to work on this now due to the major features currently in progress, but it should be an easy fix to implement.

This should be relatively easy to fix now that the codebase has been refactored. We can add our own rate limiting in ApiService at the service level to ensure that all API calls are slowed down by OF-DL. We could do the same in DownloadService if needed. I don't have the capacity to work on this now due to the major features currently in progress, but it should be an easy fix to implement.
whimsical-c4lic0 added this to the Development Board project 2026-02-19 18:58:44 +00:00
whimsical-c4lic0 moved this to To Do in Development Board on 2026-02-19 19:09:56 +00:00
whimsical-c4lic0 moved this to Backlog in Development Board on 2026-02-19 19:11:14 +00:00
whimsical-c4lic0 moved this to To Do in Development Board on 2026-02-19 19:12:06 +00:00
Sign in to join this conversation.
4 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sim0n00ps/OF-DL#113
No description provided.