SunTrace3D Partner API umožňuje generovat HD 3D modely měst, počítat výnos solární energie a vkládat interaktivní 3D prohlížeče na váš web. Všechny endpointy používají JSON a standardní HTTP metody.
Zobrazit jako Markdown (strojově čitelné)SunTrace3D API je RESTful služba pro programový přístup ke generování 3D modelů měst a výpočtům solární energie. API je navrženo pro partnery, kteří chtějí integrovat solární analýzu do svých aplikací, webů nebo pracovních postupů.
https://suntrace3d.com/api/v1/api/v1/modelsVygenerovat nový HD 3D model/api/v1/models/:idZkontrolovat stav generování modelu/api/solar/calculateVypočítat výnos solární energie/embedVložitelný 3D prohlížeč (iframe)/api/healthKontrola stavu (bez autentizace)
Všechny API požadavky vyžadují autentizaci pomocí Bearer tokenu v hlavičce Authorization. API klíče se spravují přes Partnerský portál.
curl -H "Authorization: Bearer st_live_abc123def456..." \
https://suntrace3d.com/api/v1/modelsNikdy nevystavujte svůj API klíč v klientském JavaScriptu, veřejných repozitářích ani front-endovém kódu. Pokud je váš klíč kompromitován, ihned ho zrušte v Partnerském portálu a vytvořte nový.
Požádejte o vygenerování HD 3D modelu města pro konkrétní geografickou polohu. Model se generuje asynchronně — dotazujte se na stavový endpoint, abyste zjistili, kdy je připraven.
/api/v1/modelslatitudenumberrequiredZeměpisná šířka středového bodu (-90 až 90)longitudenumberrequiredZeměpisná délka středového bodu (-180 až 180)radiusKmnumberPoloměr modelované oblasti v km (výchozí: 0.3)idstringrequiredJedinečný identifikátor modelu pro dotazování stavustatusstringrequired"pending" | "processing" | "ready" | "failed"modelUrlstringURL k souboru GLB modelu (když je připraven)progressnumberPrůběh generování 0–100 (při zpracování)stepstringPopis aktuálního kroku generovánícurl -X POST https://suntrace3d.com/api/v1/models \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"latitude": 44.8699,
"longitude": 13.8420,
"radiusKm": 0.3
}'{
"id": "hd_44.8699_13.8420_0.3",
"status": "pending"
}{
"id": "hd_44.8699_13.8420_0.3",
"status": "ready",
"modelUrl": "https://s3.eu-central-1.amazonaws.com/suntrace-models/hd_44.8699_13.8420_0.3/scene.glb"
}Pokud již byl model pro stejné místo a poloměr vygenerován, API okamžitě vrátí cachovaný výsledek se stavem: "ready". Modely jsou cachovány v S3 po dobu 30 dnů. Za cachované výsledky neplatíte.

Dotazujte se na tento endpoint pro kontrolu stavu generování modelu. Model prochází několika fázemi: pending → processing → ready.
/api/v1/models/:idcurl https://suntrace3d.com/api/v1/models/hd_44.8699_13.8420_0.3 \
-H "Authorization: Bearer YOUR_API_KEY"{
"id": "hd_44.8699_13.8420_0.3",
"status": "processing",
"progress": 65,
"step": "Generating textures..."
}{
"id": "hd_44.8699_13.8420_0.3",
"status": "ready",
"modelUrl": "https://s3.eu-central-1.amazonaws.com/suntrace-models/hd_44.8699_13.8420_0.3/scene.glb",
"progress": 100,
"step": null
}Doporučujeme dotazování každých 5–10 sekund. Typické časy generování jsou 30–120 sekund v závislosti na velikosti oblasti a zatížení serveru. Pole progress poskytuje procento (0–100) pro zobrazení ukazatele průběhu ve vašem UI.
Vypočítejte roční výnos solární energie pro konkrétní konfiguraci panelu a místo. Tento endpoint používá satelitní data PVGIS (Photovoltaic Geographical Information System) pro přesné hodnoty ožáření.
/api/solar/calculatelatitudenumberrequiredZeměpisná šířka místalongitudenumberrequiredZeměpisná délka místatiltDegnumberrequiredÚhel sklonu panelu ve stupních (0–90)azimuthDegnumberrequiredAzimut panelu ve stupních (0=sever, 180=jih)panelAreaM2numberrequiredCelková plocha panelů v metrech čtverečníchpanelEfficiencynumberrequiredÚčinnost panelu (0.0–1.0, typicky 0.18–0.22)shadingLossFractionnumberFaktor ztrát zastíněním (0.0–1.0, výchozí: 0)annualYieldKwhnumberrequiredOdhadovaný roční energetický výnos v kWhpeakPowerKwnumberrequiredŠpičkový výkon v kWspecificYieldnumberrequiredSpecifický výnos v kWh/kWpmonthlyKwhnumber[]requiredPole 12 měsíčních hodnot kWhsourcestringrequiredIdentifikátor zdroje dat ("pvgis")curl -X POST https://suntrace3d.com/api/solar/calculate \
-H "Content-Type: application/json" \
-d '{
"latitude": 44.8699,
"longitude": 13.8420,
"tiltDeg": 35,
"azimuthDeg": 180,
"panelAreaM2": 20,
"panelEfficiency": 0.20,
"shadingLossFraction": 0.05
}'{
"annualYieldKwh": 4982,
"peakPowerKw": 4.0,
"specificYield": 1246,
"monthlyKwh": [248, 305, 412, 465, 522, 548, 562, 530, 445, 368, 280, 232],
"source": "pvgis"
}Endpoint pro solární výpočty je veřejně dostupný a nevyžaduje API klíč. Používá veřejné API PVGIS spravované Společným výzkumným střediskem Evropské komise.

Vložte interaktivní 3D solární prohlížeč na svůj web pomocí iframe. Vložený prohlížeč obsahuje ovládání času pro simulaci stínů a funguje na počítači i mobilu.
latnumberrequiredZeměpisná šířka místa k zobrazenílngnumberrequiredZeměpisná délka místa k zobrazeníkeystringrequiredVáš API klíč pro autentizaci<iframe
src="https://suntrace3d.com/embed?lat=44.8699&lng=13.8420&key=YOUR_API_KEY"
width="100%"
height="500"
frameborder="0"
allow="fullscreen"
style="border-radius: 12px; border: 1px solid #e5e7eb;">
</iframe><div style="position: relative; width: 100%; padding-bottom: 56.25%; overflow: hidden; border-radius: 12px;">
<iframe
src="https://suntrace3d.com/embed?lat=44.8699&lng=13.8420&key=YOUR_API_KEY"
style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none;"
allow="fullscreen">
</iframe>
</div>
API vynucuje limity požadavků pro zajištění spravedlivého používání a stability systému.
{
"error": "Rate limit exceeded. Maximum 10 generations per hour."
}API používá standardní HTTP stavové kódy. Všechny chybové odpovědi obsahují JSON tělo s polem error popisujícím problém.
{
"error": "latitude and longitude are required"
}{
"error": "Invalid or revoked API key"
}Podpora webhooků pro oznámení o dokončení modelu je plánována pro budoucí verzi. Aktuálně používejte dotazování stavového endpointu pro kontrolu připravenosti modelů.
Webhook callbacky zašlou POST požadavek na vaši zadanou URL po dokončení generování modelu, čímž se eliminuje potřeba dotazování. Tato funkce je v našem plánu.
Kompletní příklady ke zkopírování pro běžné integrační scénáře.
#!/bin/bash
API_KEY="YOUR_API_KEY"
BASE_URL="https://suntrace3d.com"
# 1. Request model generation
echo "Requesting model generation..."
RESPONSE=$(curl -s -X POST "$BASE_URL/api/v1/models" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"latitude": 44.8699, "longitude": 13.8420, "radiusKm": 0.3}')
MODEL_ID=$(echo $RESPONSE | jq -r '.id')
STATUS=$(echo $RESPONSE | jq -r '.status')
echo "Model ID: $MODEL_ID (status: $STATUS)"
# 2. Poll until ready
while [ "$STATUS" != "ready" ] && [ "$STATUS" != "failed" ]; do
sleep 5
RESPONSE=$(curl -s "$BASE_URL/api/v1/models/$MODEL_ID" \
-H "Authorization: Bearer $API_KEY")
STATUS=$(echo $RESPONSE | jq -r '.status')
PROGRESS=$(echo $RESPONSE | jq -r '.progress // 0')
echo "Status: $STATUS ($PROGRESS%)"
done
# 3. Get the model URL
if [ "$STATUS" = "ready" ]; then
MODEL_URL=$(echo $RESPONSE | jq -r '.modelUrl')
echo "Model ready: $MODEL_URL"
else
echo "Generation failed"
ficonst API_KEY = 'YOUR_API_KEY';
const BASE_URL = 'https://suntrace3d.com';
async function generateModel(lat, lng) {
// 1. Request generation
const res = await fetch(`${BASE_URL}/api/v1/models`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ latitude: lat, longitude: lng }),
});
const { id, status, modelUrl } = await res.json();
// If already cached, return immediately
if (status === 'ready') return { id, modelUrl };
// 2. Poll until ready
return pollStatus(id);
}
async function pollStatus(modelId) {
while (true) {
await new Promise(r => setTimeout(r, 5000)); // Wait 5s
const res = await fetch(`${BASE_URL}/api/v1/models/${modelId}`, {
headers: { 'Authorization': `Bearer ${API_KEY}` },
});
const data = await res.json();
console.log(`Status: ${data.status} (${data.progress || 0}%)`);
if (data.status === 'ready') return data;
if (data.status === 'failed') throw new Error('Generation failed');
}
}
// Usage
generateModel(44.8699, 13.8420)
.then(data => console.log('Model URL:', data.modelUrl))
.catch(err => console.error(err));import requests
import time
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://suntrace3d.com"
def generate_model(lat: float, lng: float) -> dict:
"""Generate an HD 3D model and wait for completion."""
# Request generation
res = requests.post(
f"{BASE_URL}/api/v1/models",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"latitude": lat, "longitude": lng, "radiusKm": 0.3},
)
data = res.json()
if data["status"] == "ready":
return data
# Poll until ready
model_id = data["id"]
while True:
time.sleep(5)
res = requests.get(
f"{BASE_URL}/api/v1/models/{model_id}",
headers={"Authorization": f"Bearer {API_KEY}"},
)
data = res.json()
print(f"Status: {data['status']} ({data.get('progress', 0)}%)")
if data["status"] == "ready":
return data
if data["status"] == "failed":
raise Exception("Generation failed")
def calculate_solar(lat: float, lng: float, tilt: float = 35, azimuth: float = 180) -> dict:
"""Calculate solar energy yield for a panel configuration."""
res = requests.post(
f"{BASE_URL}/api/solar/calculate",
json={
"latitude": lat,
"longitude": lng,
"tiltDeg": tilt,
"azimuthDeg": azimuth,
"panelAreaM2": 20,
"panelEfficiency": 0.20,
},
)
return res.json()
# Usage
model = generate_model(44.8699, 13.8420)
print(f"Model URL: {model['modelUrl']}")
solar = calculate_solar(44.8699, 13.8420)
print(f"Annual yield: {solar['annualYieldKwh']} kWh")
print(f"Monthly: {solar['monthlyKwh']}")
Podívejte se na Uživatelský průvodce pro kompletní průchod 3D prohlížečem, simulací stínů a funkcemi analýzy solárních panelů.
Uživatelský průvodce