import requests
import time
from datetime import datetime, timezone
BASE = "https://api.truedy.ai/api/public/v1"
def truedy_request(api_key: str, method: str, path: str, **kwargs):
url = f"{BASE}{path}"
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
for _ in range(3): # retries for 429
r = requests.request(method, url, headers=headers, **kwargs)
if r.status_code == 429:
body = r.json()
reset_at = body.get("error", {}).get("details", {}).get("reset_at")
if reset_at:
try:
reset_dt = datetime.fromisoformat(reset_at.replace("Z", "+00:00"))
wait = max(1, (reset_dt - datetime.now(timezone.utc)).total_seconds())
except Exception:
wait = 60
else:
wait = 60
time.sleep(min(wait, 120))
continue
if r.status_code == 402:
body = r.json()
err = body.get("error", {})
raise Exception(f"402 {err.get('code')}: {err.get('message')} redirect_url={err.get('details', {}).get('redirect_url')}")
r.raise_for_status()
return r.json() if r.content else {}
# Example: list agents
data = truedy_request("YOUR_API_KEY", "GET", "/agents")
print(data["data"])