AI Logo
AI Exporter Hub

Rate Limiting & 429 Error Handling

Understand rate limiting, avoid 429 errors, and configure request delays for stable batch exports

This document explains what rate limiting is, why 429 errors occur, and how to configure the extension to avoid them during batch exports.


What is Rate Limiting?

Rate limiting is a mechanism used by APIs (like ChatGPT’s API) to prevent too many requests from being sent in a short period of time.

When you export chats in bulk, the extension makes multiple API requests to fetch conversation data. If these requests are sent too quickly, ChatGPT’s server may respond with a 429 error (Too Many Requests), temporarily blocking further requests.


Why Does This Happen?

Common Scenarios

  • Large batch exports: Exporting 50+ conversations at once
  • Fast consecutive exports: Running multiple exports back-to-back without waiting
  • Network conditions: Unstable connections may trigger retries, increasing request frequency
  • ChatGPT server load: During peak hours, rate limits may be stricter

What Happens When You Hit 429?

When a 429 error is detected:

  • ✅ The sync stops immediately to prevent further blocking
  • ✅ Already exported chats are saved successfully
  • ⚠️ A warning message appears: “Rate limit (429) detected. Sync stopped.”

How to Avoid 429 Errors

The extension includes a Request Delay feature that adds a random pause between API requests, reducing the chance of hitting rate limits.

Configuration Location

Open the extension’s Options Page → Scroll to Step 4: More Configuration → Find Request Delay (Rate Limiting) section.

Rate Limit Configuration


Request Delay Settings

Default Values

  • Min Delay: 1.0 seconds
  • Max Delay: 1.5 seconds

The extension will wait a random time between 1.0s and 1.5s after each API request.

When to Adjust

SituationRecommended Settings
Normal use (< 50 chats)Min: 1.0s, Max: 1.5s (default)
Large exports (50-100 chats)Min: 1.5s, Max: 2.5s
Very large exports (100+ chats)Min: 2.0s, Max: 3.5s
Already hit 429 errorMin: 2.5s, Max: 4.0s

💡 Tip: Higher delays = slower export but more stable. Lower delays = faster but higher risk of 429 errors.


What to Do If You Get a 429 Error

Step 1: Wait Before Retrying

After hitting a 429 error, wait at least 5-10 minutes before trying again. This allows ChatGPT’s rate limit to reset.

Step 2: Increase Delay Settings

Before retrying:

  1. Open Options PageMore Configuration
  2. Increase Min Delay to 2.0s or higher
  3. Increase Max Delay to 3.5s or higher
  4. Click Begin Sync again

Step 3: Enable “Skip Already Exported”

To avoid re-exporting chats that were already saved:

  1. Check “Skip already synced records” in More Configuration
  2. This ensures only new chats are exported, reducing total requests

Step 4: Export in Smaller Batches

Instead of exporting all chats at once:

  • Export Current Page Only (13 chats at a time)
  • Wait a few minutes between batches
  • Gradually export all conversations

How the Extension Handles 429 Errors

Automatic Detection

The extension monitors all API responses. When a 429 error is detected:

  • ✅ Sync stops immediately
  • ✅ Already processed chats are saved
  • ✅ Failed chats are recorded in the failed list
  • ⚠️ A clear warning message is displayed

What Gets Saved?

  • Successfully exported chats: Saved to Obsidian as Markdown files
  • Failed chats: Listed in the Failed Records section for retry later
  • Export history: Recorded in Sync History with status details

Understanding the Configuration UI

Request Delay Section

┌─────────────────────────────────────────────┐
│ Request Delay (Rate Limiting)               │
│                                             │
│ Add random delay between API requests to    │
│ avoid 429 rate limit errors. If you         │
│ encounter 429 errors, increase these values.│
│                                             │
│ Min Delay (seconds)    Max Delay (seconds)  │
│ [  1.0  ]              [  1.5  ]            │
│                                             │
│ Current range: 1.0s - 1.5s per request      │
└─────────────────────────────────────────────┘

How It Works

For each conversation export:

  1. Fetch conversation data from ChatGPT API
  2. Save to Markdown file
  3. Wait random time (between Min and Max delay)
  4. Proceed to next conversation

This prevents requests from being sent too quickly.


Best Practices

  1. First-time export: Use default settings (1.0s - 1.5s)
  2. Enable “Skip Already Exported”: Avoid duplicate exports
  3. Monitor progress: Watch for 429 warnings
  4. If 429 occurs: Wait 5-10 minutes, increase delays, retry

✅ For Large Exports (100+ chats)

  1. Set Min Delay: 2.0s, Max Delay: 3.5s
  2. Export during off-peak hours (late night or early morning)
  3. Split into smaller batches if needed

❌ What NOT to Do

  • ❌ Don’t run multiple exports simultaneously
  • ❌ Don’t retry immediately after 429 error
  • ❌ Don’t set delays too low (< 0.5s) for large exports
  • ❌ Don’t clear browser cache (loses export history)

Troubleshooting

”I keep getting 429 errors even with high delays”

Possible causes:

  • ChatGPT server is under heavy load
  • Your account has stricter rate limits
  • Network issues causing request retries

Solutions:

  • Wait longer between export attempts (15-30 minutes)
  • Export during off-peak hours
  • Contact support if issue persists

”Export is too slow with high delays”

This is expected behavior. Higher delays = more stable but slower exports.

Options:

  • Accept slower speed for stability
  • Export in smaller batches with lower delays
  • Export during times when you don’t need immediate results

”Some chats failed but others succeeded”

This is normal. The extension saves what it can before stopping.

Next steps:

  1. Check Failed Records section to see which chats failed
  2. Wait 5-10 minutes
  3. Increase delay settings
  4. Enable “Skip Already Exported”
  5. Retry export

Technical Details

Why Random Delays?

Using a random delay (instead of fixed delay) helps avoid synchronized request patterns that might trigger rate limits more easily.

Example:

  • Fixed 1.5s delay: Requests at 0s, 1.5s, 3.0s, 4.5s… (predictable pattern)
  • Random 1.0-1.5s delay: Requests at 0s, 1.2s, 2.6s, 4.3s… (irregular pattern)

Where Delays Are Applied

Delays are added in three key areas:

  1. Regular conversation exports (pages mode)
  2. Project conversation exports
  3. Group chat exports

Each export type respects the configured delay settings.


Still Having Issues?

If you continue experiencing 429 errors after:

  • Increasing delay settings
  • Waiting between retries
  • Exporting in smaller batches

Please contact support with:

  • Your delay settings
  • Number of chats being exported
  • Time of day when error occurred
  • Screenshot of error message

We’re happy to help troubleshoot further.


Summary

ActionPurpose
Configure delaysPrevent 429 errors by spacing out requests
Increase delays if 429 occursGive ChatGPT server more breathing room
Enable “Skip Already Exported”Avoid re-exporting and reduce total requests
Wait before retryingAllow rate limit to reset
Export in batchesReduce load on ChatGPT API

By properly configuring request delays, you can export large numbers of conversations reliably without hitting rate limits.


Need more help? Contact Support