import os
import time
import requests
from urllib.parse import urlencode
BASE_URL = "https://app.uselamina.ai"
API_KEY = os.environ["LAMINA_API_KEY"]
headers = {
"x-api-key": API_KEY,
"Content-Type": "application/json",
}
# With webhook — start and forget
def run_app_with_webhook(app_id, inputs, webhook_url):
r = requests.post(
f"{BASE_URL}/api/apps/{app_id}/executions?webhook={webhook_url}",
headers=headers,
json={"inputs": inputs},
timeout=60,
)
r.raise_for_status()
return r.json()["data"]["executionId"]
# With polling — start and wait
def run_app_with_polling(app_id, inputs):
started = requests.post(
f"{BASE_URL}/api/apps/{app_id}/executions",
headers=headers,
json={"inputs": inputs},
timeout=60,
)
started.raise_for_status()
execution_id = started.json()["data"]["executionId"]
while True:
status = requests.get(
f"{BASE_URL}/api/executions/{execution_id}",
headers=headers,
timeout=60,
)
status.raise_for_status()
payload = status.json()["data"]
if payload["status"] in ("completed", "failed"):
return payload
time.sleep(5)