import requests
import time
API_KEY = "your_api_key"
BASE = "https://api.modelbeam.ai"
HEADERS = {
"Authorization": f"Bearer {API_KEY}",
"Accept": "application/json",
"Content-Type": "application/json"
}
# 1. Discover models
models_resp = requests.get(
f"{BASE}/api/v1/client/models",
headers=HEADERS,
params={"filter[inference_types]": "txt2img"}
)
models = models_resp.json()["data"]
model_slug = models[0]["slug"]
defaults = models[0]["info"]["defaults"]
# 2. Check price
payload = {
"prompt": "a sunset over mountains",
"model": model_slug,
"width": defaults["width"],
"height": defaults["height"],
"steps": defaults["steps"],
"guidance": 1,
"seed": -1
}
price_resp = requests.post(
f"{BASE}/api/v1/client/txt2img/price-calculation",
headers=HEADERS,
json=payload
)
price = price_resp.json()["data"]["price"]
print(f"Cost: ${price}")
# 3. Generate image
gen_resp = requests.post(
f"{BASE}/api/v1/client/txt2img",
headers=HEADERS,
json=payload
)
request_id = gen_resp.json()["data"]["request_id"]
print(f"Job submitted: {request_id}")
# 4. Poll for result
while True:
status_resp = requests.get(
f"{BASE}/api/v1/client/request-status/{request_id}",
headers=HEADERS
)
data = status_resp.json()["data"]
if data["status"] == "done":
print(f"Result: {data['result_url']}")
break
if data["status"] == "error":
raise Exception("Generation failed")
print(f"Status: {data['status']}, Progress: {data.get('progress', 0)}%")
time.sleep(3)