v1STABILNO

API dokumentacija

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)
1

Pregled

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.

Bazni URL

https://suntrace3d.com/api/v1
REST API
JSON zahtjev/odgovor
Bearer Auth
Autentifikacija API ključem
HD kvaliteta
Svi API modeli su HD

Dostupni endpointovi

POST/api/v1/modelsGeneriraj novi HD 3D model
GET/api/v1/models/:idProvjeri status generiranja modela
POST/api/solar/calculateIzračunaj prinos solarne energije
GET/embedUgradivi 3D preglednik (iframe)
GET/api/healthProvjera zdravlja (bez autentifikacije)
Partner portal showing API keys and usage statistics
Partnerski portal — upravljanje API ključevima, pregled statistika korištenja i dobivanje koda za ugradnju
2

Autentifikacija

Svi API zahtjevi zahtijevaju autentifikaciju putem Bearer tokena u Authorization zaglavlju. API ključevima se upravlja putem Partnerskog portala.

Dobivanje API ključa

  1. 1
    Napravite račun
    Registrirajte se na /auth/signup ako to još niste učinili.
  2. 2
    Nadogradite na Pro
    Pro pretplata je potrebna za pristup API-ju. Nadogradite iz postavki računa.
  3. 3
    Generirajte API ključ
    Posjetite Partnerski portal i kliknite na „Stvorite ključ“. Odmah kopirajte ključ — neće se više prikazati.
  4. 4
    Koristite u zahtjevima
    Uključite ključ u sve API zahtjeve kao Bearer token.
Zaglavlje autentifikacijebash
curl -H "Authorization: Bearer st_live_abc123def456..." \
  https://suntrace3d.com/api/v1/models

Držite svoj API ključ u tajnosti

Nikada 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.

3

Generiranje 3D modela

Zatražite generiranje HD 3D modela grada za određenu geografsku lokaciju. Model se generira asinkrono — provjeravajte statusni endpoint da saznate kada je spreman.

POST/api/v1/models

Tijelo zahtjeva

latitudenumberrequiredZemljopisna š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)

Odgovor

idstringrequiredJedinstven identifikator modela za provjeru statusa
statusstringrequired"pending" | "processing" | "ready" | "failed"
modelUrlstringURL do GLB datoteke modela (kad je spreman)
progressnumberNapredak generiranja 0–100 (pri obradi)
stepstringOpis trenutnog koraka generiranja
Zahtjevbash
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
  }'
Odgovor (čeka)json
{
  "id": "hd_44.8699_13.8420_0.3",
  "status": "pending"
}
Odgovor (spreman)json
{
  "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"
}

Cachiranje modela

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.

API request generating a 3D model
API generira HD 3D modele asinkrono — provjeravajte statusni endpoint dok ne bude spreman
4

Provjera statusa modela

Provjeravajte ovaj endpoint za praćenje statusa zahtjeva za generiranje modela. Model prolazi kroz nekoliko faza: pending → processing → ready.

GET/api/v1/models/:id
Zahtjevbash
curl https://suntrace3d.com/api/v1/models/hd_44.8699_13.8420_0.3 \
  -H "Authorization: Bearer YOUR_API_KEY"
Odgovor (obrada)json
{
  "id": "hd_44.8699_13.8420_0.3",
  "status": "processing",
  "progress": 65,
  "step": "Generating textures..."
}
Odgovor (spreman)json
{
  "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
}

Vrijednosti statusa

pendingZadatak je u redu čekanja za preuzimanje od strane workera
processingModel se generira. Provjerite polje progress za postotak.
readyModel je spreman. Polje modelUrl sadrži URL za preuzimanje.
failedGeneriranje neuspješno. Možete pokušati ponovno stvaranjem novog zahtjeva.

Preporuka za provjeru

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.

5

Izračun solarne energije

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.

POST/api/solar/calculate

Tijelo zahtjeva

latitudenumberrequiredZemljopisna širina lokacije
longitudenumberrequiredZemljopisna duljina lokacije
tiltDegnumberrequiredKut nagiba panela u stupnjevima (0–90)
azimuthDegnumberrequiredAzimut panela u stupnjevima (0=sjever, 180=jug)
panelAreaM2numberrequiredUkupna površina panela u kvadratnim metrima
panelEfficiencynumberrequiredUčinkovitost panela (0.0–1.0, tipično 0.18–0.22)
shadingLossFractionnumberFaktor gubitaka od zasjenjivanja (0.0–1.0, zadano: 0)

Odgovor

annualYieldKwhnumberrequiredProcijenjeni godišnji energetski prinos u kWh
peakPowerKwnumberrequiredVršna snaga u kW
specificYieldnumberrequiredSpecifični prinos u kWh/kWp
monthlyKwhnumber[]requiredPolje od 12 mjesečnih kWh vrijednosti
sourcestringrequiredIdentifikator izvora podataka ("pvgis")
Zahtjevbash
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
  }'
Odgovorjson
{
  "annualYieldKwh": 4982,
  "peakPowerKw": 4.0,
  "specificYield": 1246,
  "monthlyKwh": [248, 305, 412, 465, 522, 548, 562, 530, 445, 368, 280, 232],
  "source": "pvgis"
}

Autentifikacija nije potrebna

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.

Solar energy calculation API response
API za solarne izračune vraća godišnji prinos, vršnu snagu i mjesečnu razradu
6

Ugradivi preglednik

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.

Parametri URL-a za ugradnju

latnumberrequiredZemljopisna širina lokacije za prikaz
lngnumberrequiredZemljopisna duljina lokacije za prikaz
keystringrequiredVaš API ključ za autentifikaciju
Osnovni kôd za ugradnjuhtml
<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>
Responzivna ugradnja (preporučeno)html
<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>

Značajke ugradnje

Interaktivni 3D orbit, pomicanje i zum
Klizač vremena za simulaciju sjena
Responzivno — radi na mobitelu
Fotorealistni modeli Google 3D Tiles
Nije potreban dodatni JavaScript
Podrška za puni zaslon
Embedded 3D viewer in an iframe
Ugradivi preglednik uključuje vremenske kontrole i radi na računalu i mobitelu
7

Ograničenja zahtjeva

API nameće ograničenja zahtjeva za osiguranje pravednog korištenja i stabilnosti sustava.

Generiranje modela
POST /api/v1/models
10 zahtjeva
po satu, po API ključu
Provjera statusa
GET /api/v1/models/:id
Bez ograničenja
Provjeravajte po potrebi
Solarni izračun
POST /api/solar/calculate
Bez ograničenja
Javni endpoint
Pregledi ugradnji
GET /embed
Bez ograničenja
Neograničen broj pregleda
Odgovor pri prekoračenju ograničenja (429)json
{
  "error": "Rate limit exceeded. Maximum 10 generations per hour."
}
8

Obrada grešaka

API koristi standardne HTTP statusne kodove. Svi odgovori s greškom sadrže JSON tijelo s poljem error koje opisuje problem.

HTTP statusni kodovi

200Uspjeh — zahtjev uspješno dovršen
400Loš zahtjev — nedostajući ili neispravni parametri
401Neautorizirano — nedostajući ili neispravan API ključ
404Nije pronađeno — ID modela ne postoji
429Previše zahtjeva — ograničenje prekoračeno
503Usluga nedostupna — vanjska usluga (PVGIS) je nedostupna
Primjer odgovora s greškomjson
{
  "error": "latitude and longitude are required"
}
Greška autentifikacijejson
{
  "error": "Invalid or revoked API key"
}
9

Webhookovi

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.

Uskoro

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.

10

Potpuni primjeri

Potpuni primjeri za kopiranje za uobičajene integracijske scenarije.

Generiraj model i čekaj na završetak

Bash — potpuni radni procesbash
#!/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"
fi

JavaScript/Node.js integracija

Node.js — generiranje i provjerajavascript
const 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));

Python integracija

Python — generiranje i solarni izračunpython
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']}")
API integration code examples in multiple languages
Potpuni primjeri koda u Bash, JavaScript i Python za API integraciju

Novi ste u SunTrace3D?

Pogledajte Korisnički vodič za potpuni obilazak 3D preglednika, simulacije sjena i značajki analize solarnih panela.

Korisnički vodič