SunTrace3D Partner API omogućuje generiranje HD 3D modela gradova, izračun prinosa solarne energije i ugradnju interaktivnih 3D preglednika na vašu web stranicu. Svi endpointovi koriste JSON i standardne HTTP metode.
Prikaži kao Markdown (strojno čitljivo)SunTrace3D API je RESTful usluga za programski pristup generiranju 3D modela gradova i izračunima solarne energije. API je dizajniran za partnere koji žele integrirati solarnu analizu u svoje aplikacije, web stranice ili radne procese.
https://suntrace3d.com/api/v1/api/v1/modelsGeneriraj novi HD 3D model/api/v1/models/:idProvjeri status generiranja modela/api/solar/calculateIzračunaj prinos solarne energije/embedUgradivi 3D preglednik (iframe)/api/healthProvjera zdravlja (bez autentifikacije)
Svi API zahtjevi zahtijevaju autentifikaciju putem Bearer tokena u Authorization zaglavlju. API ključevima se upravlja putem Partnerskog portala.
curl -H "Authorization: Bearer st_live_abc123def456..." \
https://suntrace3d.com/api/v1/modelsNikada ne izlažite svoj API ključ u klijentskom JavaScriptu, javnim repozitorijima ili front-end kodu. Ako je vaš ključ kompromitiran, odmah ga opozovite u Partnerskom portalu i stvorite novi.
Zatražite generiranje HD 3D modela grada za određenu geografsku lokaciju. Model se generira asinkrono — provjeravajte statusni endpoint da saznate kada je spreman.
/api/v1/modelslatitudenumberrequiredZemljopisna širina središnje točke (-90 do 90)longitudenumberrequiredZemljopisna duljina središnje točke (-180 do 180)radiusKmnumberPolumjer područja za modeliranje u km (zadano: 0.3)idstringrequiredJedinstven identifikator modela za provjeru statusastatusstringrequired"pending" | "processing" | "ready" | "failed"modelUrlstringURL do GLB datoteke modela (kad je spreman)progressnumberNapredak generiranja 0–100 (pri obradi)stepstringOpis trenutnog koraka generiranjacurl -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"
}Ako je model za istu lokaciju i polumjer već generiran, API odmah vraća cachirani rezultat sa statusom: "ready". Modeli se cachiraju u S3 30 dana. Ne naplaćuju vam se cachirani rezultati.

Provjeravajte ovaj endpoint za praćenje statusa zahtjeva za generiranje modela. Model prolazi kroz nekoliko faza: 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
}Preporučujemo provjeru svakih 5–10 sekundi. Tipična vremena generiranja su 30–120 sekundi ovisno o veličini područja i opterećenju poslužitelja. Polje progress daje postotak (0–100) za prikaz pokazatelja napretka u vašem sučelju.
Izračunajte godišnji prinos solarne energije za određenu konfiguraciju panela i lokaciju. Ovaj endpoint koristi satelitske podatke PVGIS (Photovoltaic Geographical Information System) za precizne vrijednosti iradijacije.
/api/solar/calculatelatitudenumberrequiredZemljopisna širina lokacijelongitudenumberrequiredZemljopisna duljina lokacijetiltDegnumberrequiredKut nagiba panela u stupnjevima (0–90)azimuthDegnumberrequiredAzimut panela u stupnjevima (0=sjever, 180=jug)panelAreaM2numberrequiredUkupna površina panela u kvadratnim metrimapanelEfficiencynumberrequiredUčinkovitost panela (0.0–1.0, tipično 0.18–0.22)shadingLossFractionnumberFaktor gubitaka od zasjenjivanja (0.0–1.0, zadano: 0)annualYieldKwhnumberrequiredProcijenjeni godišnji energetski prinos u kWhpeakPowerKwnumberrequiredVršna snaga u kWspecificYieldnumberrequiredSpecifični prinos u kWh/kWpmonthlyKwhnumber[]requiredPolje od 12 mjesečnih kWh vrijednostisourcestringrequiredIdentifikator izvora podataka ("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 za solarne izračune javno je dostupan i ne zahtijeva API ključ. Koristi javni API PVGIS koji održava Zajednički istraživački centar Europske komisije.

Ugradite interaktivni 3D solarni preglednik na svoju web stranicu pomoću iframe-a. Ugrađeni preglednik uključuje vremenske kontrole za simulaciju sjena i radi na računalu i mobitelu.
latnumberrequiredZemljopisna širina lokacije za prikazlngnumberrequiredZemljopisna duljina lokacije za prikazkeystringrequiredVaš API ključ za autentifikaciju<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 nameće ograničenja zahtjeva za osiguranje pravednog korištenja i stabilnosti sustava.
{
"error": "Rate limit exceeded. Maximum 10 generations per hour."
}API koristi standardne HTTP statusne kodove. Svi odgovori s greškom sadrže JSON tijelo s poljem error koje opisuje problem.
{
"error": "latitude and longitude are required"
}{
"error": "Invalid or revoked API key"
}Podrška za webhookove za obavijesti o završetku modela planirana je za buduće izdanje. Trenutno koristite provjeru statusnog endpointa za praćenje kada su modeli spremni.
Webhook povratni pozivi će slati POST zahtjev na vaš navedeni URL kada generiranje modela završi, eliminirajteći potrebu za provjerom. Ova značajka je u našem planu.
Potpuni primjeri za kopiranje za uobičajene integracijske scenarije.
#!/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']}")
Pogledajte Korisnički vodič za potpuni obilazak 3D preglednika, simulacije sjena i značajki analize solarnih panela.
Korisnički vodič