Python 3 SDK (`httpx` / `requests` + FastAPI Webhook Receiver)
Drop this zero-boilerplate Python 3 client into Django, FastAPI, Flask, or Celery worker pipelines. Includes automatic SHA-256 pre-hashing, multipart streaming, exponential polling fallback, and constant-time HMAC-SHA256 webhook signature verification.
Production Reference Implementation
import hashlib, hmac, time, requests
class DaVinciCloudClient:
def __init__(self, api_key: str, base_url: str = "https://www.davincideluxe.fr/api/v1/cloud"):
self.base_url = base_url.rstrip("/")
self.session = requests.Session()
self.session.headers.update({"Authorization": f"Bearer {api_key}"})
def submit_job(self, bin_path: str, ecu_brand: str, ecu_family: str,
services: list[str], tuning_options: list[str] | None = None,
dtc_codes: str = "", webhook_url: str = "") -> dict:
with open(bin_path, "rb") as fh:
files = {"file": (bin_path.split("/")[-1], fh, "application/octet-stream")}
data = {
"ecu_brand": ecu_brand,
"ecu_family": ecu_family,
"services": ",".join(services),
"tuning_options": ",".join(tuning_options or []),
"dtc_codes": dtc_codes,
"webhook_url": webhook_url,
}
r = self.session.post(f"{self.base_url}/jobs", files=files, data=data, timeout=90)
r.raise_for_status()
return r.json()
def wait_and_download(self, job_id: str, out_path: str, timeout_s: int = 180) -> str:
deadline = time.time() + timeout_s
while time.time() < deadline:
st = self.session.get(f"{self.base_url}/jobs/{job_id}", timeout=20).json()
if st.get("status") == "done" and st.get("result_available"):
raw = self.session.get(f"{self.base_url}/jobs/{job_id}/result", timeout=90)
raw.raise_for_status()
with open(out_path, "wb") as f:
f.write(raw.content)
return hashlib.sha256(raw.content).hexdigest()
if st.get("status") in ("error", "rejected"):
raise RuntimeError(f"Job {job_id} failed: {st}")
time.sleep(3)
raise TimeoutError(f"Job {job_id} timed out")
@staticmethod
def verify_webhook(raw_body: bytes, sig_header: str, whsec: str) -> bool:
digest = "sha256=" + hmac.new(whsec.encode(), raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(sig_header or "", digest)
Explore All 21 Developer & SDK Guides
🛟 24h/7 Live Engineering Support (365 Days / Including All Holidays): Direct step-by-step diagnostics & calibration engineering in every language (live logs, DTC scans, photos, videos & audio supported) until your car, 24V truck, tractor or marine vessel runs 100% flawlessly.
Frequently Asked Technical Questions
Why does DaVinci Deluxe Cloud Edition (v1.0.44) require a 100% virgin original ECU readout?
Processing an unmodified factory original Bench, Boot, or OBD readout guarantees deterministic calibration of torque, DPF, EGR, AdBlue/SCR, OPF, TCU and checksum structures without inheriting corrupted edits from third-party tools.
Which are the 8 official verified domains of DaVinci Deluxe Cloud Edition?
Always verify official access via www.davincideluxe.fr, www.davincideluxe.org, www.davincideluxe.app, www.davincideluxe.software, www.davincideluxe.es, www.davincideluxe.de, www.davincideluxe.it, or www.aesoftech.eu.
Does DaVinci Deluxe Cloud Edition include 24h/7 live technical support on holidays?
Yes. Every active license across Cars, 24V Trucks & Agriculture, and Marine Boats includes 24h/7 live multilingual engineering support 365 days a year, including weekends and all holidays.