import requests
import time
API_KEY = "YOUR_API_KEY"
BASE = "https://api.sorsa.io/v3"
HEADERS = {"ApiKey": API_KEY}
def batch_username_to_id(handles, pause=0.05):
"""
Resolve a list of handles to user IDs.
Returns: dict mapping handle -> id (or None if lookup failed).
"""
results = {}
for handle in handles:
handle = handle.strip().lstrip("@")
try:
resp = requests.get(f"{BASE}/username-to-id/{handle}", headers=HEADERS, timeout=10)
if resp.status_code == 200:
results[handle] = resp.json()["id"]
elif resp.status_code == 404:
results[handle] = None # Account does not exist or is suspended
elif resp.status_code == 429:
time.sleep(1)
retry = requests.get(f"{BASE}/username-to-id/{handle}", headers=HEADERS, timeout=10)
results[handle] = retry.json()["id"] if retry.status_code == 200 else None
else:
results[handle] = None
except requests.RequestException:
results[handle] = None
time.sleep(pause)
return results
handles = ["NASA", "SpaceX", "Tesla", "OpenAI", "stripe"]
id_map = batch_username_to_id(handles)
for handle, uid in id_map.items():
print(f"@{handle} -> {uid or '(not found)'}")