import os import time import uuid import requests base = "https://dataviz.karthiks.co" headers = {"Authorization": f"Bearer {os.environ['CHART_DOCTOR_API_TOKEN']}"} submission_headers = { **headers, "X-OpenRouter-Key": os.environ["OPENROUTER_API_KEY"], "Idempotency-Key": uuid.uuid4().hex, } # Retain submission_headers across network retries of this same submission. with open("chart.png", "rb") as chart: response = requests.post( f"{base}/api/v1/jobs", headers=submission_headers, files={"chart": ("chart.png", chart, "image/png")}, data={"prompt": "Make the comparison easier to read"}, timeout=60, ) response.raise_for_status() job = response.json() deadline = time.monotonic() + 1800 while job["status"] in {"queued", "processing"}: if time.monotonic() > deadline: raise TimeoutError(f"Job still running: {job['job_id']}") time.sleep(3) response = requests.get(base + job["status_url"], headers=headers, timeout=30) response.raise_for_status() job = response.json() if job["status"] != "ready": raise RuntimeError(job.get("error") or "Repair failed to start") response = requests.get(base + job["download_url"], headers=headers, timeout=60) response.raise_for_status() with open("improved.png", "wb") as output: output.write(response.content) print(job["result_kind"], job.get("error"), job.get("usage"))