import requests
import time
def upload_with_retry(file_path, max_retries=3):
for attempt in range(max_retries):
try:
with open(file_path, 'rb') as f:
response = requests.post(
'https://lq1qmy4ici.execute-api.ap-southeast-1.amazonaws.com/prod/v1/extract/batch',
files={'file': f},
data={'user_id': 'ppu_YOUR_USER_ID'},
headers={'Authorization': 'Bearer sk_live_YOUR_API_KEY'}
)
if response.status_code == 429: # Rate limited
wait_time = int(response.json()['details']['retry_after'])
time.sleep(wait_time)
continue
response.raise_for_status()
return response.json()
except requests.exceptions.RequestException as e:
if attempt < max_retries - 1:
time.sleep(2 ** attempt) # Exponential backoff
else:
raise
upload_with_retry('statement.pdf')