DoConure

Python

import os
import requests

BASE_URL = "https://app.doconure.com"
API_KEY = os.environ["DOCONURE_API_KEY"]

def generate(template_id: str, data: dict, version: int | None = None) -> bytes:
    settings = {"templateId": template_id}
    if version is not None:
        settings["templateVersion"] = version
    payload = {"data": data, "settings": settings}

    r = requests.post(
        f"{BASE_URL}/api/v1/compose/documents/generate",
        headers={"Authorization": f"Bearer {API_KEY}",
                 "Content-Type": "application/json"},
        json=payload,
        timeout=120,
    )
    if r.status_code != 200:
        err = r.json()
        raise RuntimeError(f"{err['code']}: {err['message']}")

    print("rendered with template version", r.headers["X-Template-Version"])
    return r.content