v1STABIL

API dokumentáció

A SunTrace3D Partner API lehetővé teszi HD 3D városmodellek generálását, napenergia-hozam számítását és interaktív 3D megjelenítők beágyazását weboldalába. Minden végpont JSON-t és szabványos HTTP módszereket használ.

1

Áttekintés

A SunTrace3D API egy RESTful szolgáltatás a 3D városmodell-generálás és a napenergia-számítások programozott eléréséhez. Az API olyan partnerek számára készült, akik napenergia-elemzést szeretnének integrálni saját alkalmazásaikba, weboldalaikon vagy munkafolyamataikba.

Alap URL

https://suntrace3d.com/api/v1
REST API
JSON kérés/válasz
Bearer hitelesítés
API-kulcsos hitelesítés
HD minőség
Minden API-modell HD

Elérhető végpontok

POST/api/v1/modelsÚj HD 3D modell generálása
GET/api/v1/models/:idModellgenerálás állapotának ellenőrzése
POST/api/solar/calculateNapenergia-hozam számítása
GET/embedBeágyazható 3D megjelenítő (iframe)
GET/api/healthÁllapotellenőrzés (hitelesítés nem szükséges)
Partner portal showing API keys and usage statistics
A Partner portál — API-kulcsok kezelése, használati statisztikák megtekintése és beágyazási kód lekérése
2

Hitelesítés

Minden API-kéréshez Bearer token hitelesítés szükséges az Authorization fejlécben. Az API-kulcsok a Partner portálon kezelhetők.

API-kulcs beszerzése

  1. 1
    Fiók létrehozása
    Regisztráljon a /auth/signup oldalon, ha még nem tette meg.
  2. 2
    Frissítés Business-re
    Az API-hozzáféréshez Business előfizetés (99 €/hó) szükséges. Frissítsen a fiókbeállításokban vagy az árak oldalon.
  3. 3
    API-kulcs generálása
    Látogasson el a Partner portálra, és kattintson a 'Kulcs létrehozása' gombra. Másolja ki a kulcsot azonnal — többé nem lesz megjeleníthető.
  4. 4
    Használat a kérésekben
    Minden API-kérésben adja meg a kulcsot Bearer tokenként.
Hitelesítési fejlécbash
curl -H "Authorization: Bearer st_live_abc123def456..." \
  https://suntrace3d.com/api/v1/models

Tartsa titokban az API-kulcsát

Soha ne tegye közzé API-kulcsát kliens oldali JavaScript-ben, nyilvános kódtárakban vagy frontend kódban. Ha kulcsa kompromittálódott, azonnal vonja vissza a Partner portálon, és hozzon létre újat.

3

3D modell generálása

Kérje egy HD 3D városmodell generálását egy adott földrajzi helyszínhez. A modell aszinkron módon generálódik — kérdezze le az állapot-végpontot az elkészülés ellenőrzéséhez.

POST/api/v1/models

Kérés törzse

latitudenumberrequiredA középpont szélességi foka (-90 – 90)
longitudenumberrequiredA középpont hosszúsági foka (-180 – 180)
radiusKmnumberA modellezendő terület sugara km-ben (alapértelmezett: 0.3)

Válasz

idstringrequiredEgyedi modellazonosító az állapotellenőrzéshez
statusstringrequired"pending" | "processing" | "ready" | "failed"
modelUrlstringA GLB modellfájl URL-je (amikor kész)
progressnumberGenerálási folyamat 0-100 (feldolgozás közben)
stepstringAktuális generálási lépés leírása
Kérésbash
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
  }'
Válasz (függőben)json
{
  "id": "hd_44.8699_13.8420_0.3",
  "status": "pending"
}
Válasz (kész)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"
}

Modell-gyorsítótárazás

Ha az adott helyszínhez és sugárhoz már generáltak modellt, az API azonnal visszaadja a gyorsítótárazott eredményt 'ready' állapottal. A modellek 30 napig vannak gyorsítótárazva az S3-ban. A gyorsítótárazott eredmények nem számítanak bele a felhasználásba.

API request generating a 3D model
Az API aszinkron módon generál HD 3D modelleket — kérdezze le az állapot-végpontot az elkészülésig
4

Modell állapotának ellenőrzése

Kérdezze le ezt a végpontot a modellgenerálási kérés állapotának ellenőrzéséhez. A modell több szakaszon megy keresztül: pending → processing → ready.

GET/api/v1/models/:id
Kérésbash
curl https://suntrace3d.com/api/v1/models/hd_44.8699_13.8420_0.3 \
  -H "Authorization: Bearer YOUR_API_KEY"
Válasz (feldolgozás alatt)json
{
  "id": "hd_44.8699_13.8420_0.3",
  "status": "processing",
  "progress": 65,
  "step": "Generating textures..."
}
Válasz (kész)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
}

Állapotértékek

pendingA feladat sorba van állítva és egy feldolgozó átvételére vár
processingA modell generálás alatt áll. Ellenőrizze a progress mezőt a százalékért.
readyA modell kész. A modelUrl mező tartalmazza a letöltési URL-t.
failedA generálás sikertelen. Újrapróbálhatja egy új kérés létrehozásával.

Lekérdezési ajánlás

5-10 másodpercenkénti lekérdezést ajánlunk. A tipikus generálási idő 30-120 másodperc a terület méretétől és a szerver terhelésétől függően. A progress mező egy százalékos értéket (0-100) biztosít a folyamatjelző megjelenítéséhez a felületén.

5

Napenergia számítása

Éves napenergia-hozam számítása adott panel-konfiguráció és helyszín alapján. Ez a végpont a PVGIS (Photovoltaic Geographical Information System) műholdas adatokat használja a pontos besugárzási értékekhez.

POST/api/solar/calculate

Kérés törzse

latitudenumberrequiredHelyszín szélességi foka
longitudenumberrequiredHelyszín hosszúsági foka
tiltDegnumberrequiredPanel dőlésszöge fokban (0-90)
azimuthDegnumberrequiredPanel azimutja fokban (0=Észak, 180=Dél)
panelAreaM2numberrequiredTeljes panelfelület négyzetméterben
panelEfficiencynumberrequiredPanel hatásfoka (0.0 - 1.0, jellemzően 0.18-0.22)
shadingLossFractionnumberÁrnyékveszteségi tényező (0.0-1.0, alapértelmezett: 0)

Válasz

annualYieldKwhnumberrequiredBecsült éves energiahozam kWh-ban
peakPowerKwnumberrequiredCsúcsteljesítmény kW-ban
specificYieldnumberrequiredFajlagos hozam kWh/kWp-ben
monthlyKwhnumber[]required12 havi kWh értékből álló tömb
sourcestringrequiredAdatforrás-azonosító ("pvgis")
Kérésbash
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
  }'
Válaszjson
{
  "annualYieldKwh": 4982,
  "peakPowerKw": 4.0,
  "specificYield": 1246,
  "monthlyKwh": [248, 305, 412, 465, 522, 548, 562, 530, 445, 368, 280, 232],
  "source": "pvgis"
}

Hitelesítés nem szükséges

A napenergia-számítási végpont nyilvánosan elérhető és nem igényel API-kulcsot. Az Európai Bizottság Közös Kutatóközpontja által fenntartott PVGIS nyilvános API-t használja.

Solar energy calculation API response
A napenergia-számítási API éves hozamot, csúcsteljesítményt és havi bontást ad vissza
6

Megjelenítő beágyazása

Ágyazzon be interaktív 3D napenergia-megjelenítőt weboldalába iframe segítségével. A beágyazott megjelenítő tartalmaz időkezelő vezérlőket az árnyékszimulációhoz, és asztali gépen és mobilon egyaránt működik.

Beágyazási URL paraméterek

latnumberrequiredA megjelenítendő helyszín szélességi foka
lngnumberrequiredA megjelenítendő helyszín hosszúsági foka
keystringrequiredAz Ön API-kulcsa a hitelesítéshez
Alapszintű beágyazási kódhtml
<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>
Reszponzív beágyazás (ajánlott)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>

Beágyazási funkciók

Interaktív 3D forgatás, eltolás és nagyítás
Időcsúszka az árnyékszimulációhoz
Reszponzív — mobilon is működik
Google 3D Tiles fotorealisztikus modellek
Nincs szükség további JavaScript-re
Teljes képernyő támogatás
Embedded 3D viewer in an iframe
A beágyazható megjelenítő tartalmaz időkezelő vezérlőket, és asztali gépen és mobilon egyaránt működik
7

Sebességkorlátok

Az API sebességkorlátokat alkalmaz a méltányos használat és a rendszerstabilitás biztosítása érdekében.

Modellgenerálás
POST /api/v1/models
10 kérés
óránként, API-kulcsonként
Állapot-lekérdezés
GET /api/v1/models/:id
Nincs korlát
Lekérdezés szükség szerint
Napenergia-számítás
POST /api/solar/calculate
Nincs korlát
Nyilvános végpont
Beágyazott megtekintések
GET /embed
Nincs korlát
Korlátlan megtekintés
Sebességkorlát túllépve válasz (429)json
{
  "error": "Rate limit exceeded. Maximum 10 generations per hour."
}
8

Hibakezelés

Az API szabványos HTTP állapotkódokat használ. Minden hibaválasz tartalmaz egy JSON törzset egy error mezővel, amely leírja a problémát.

HTTP állapotkódok

200Sikeres — a kérés sikeresen teljesült
400Hibás kérés — hiányzó vagy érvénytelen paraméterek
401Jogosulatlan — hiányzó vagy érvénytelen API-kulcs
404Nem található — a modellazonosító nem létezik
429Túl sok kérés — sebességkorlát túllépve
503Szolgáltatás nem elérhető — külső szolgáltatás (PVGIS) nem működik
Hibaválasz példajson
{
  "error": "latitude and longitude are required"
}
Hitelesítési hibajson
{
  "error": "Invalid or revoked API key"
}
9

Webhookok

A modell-elkészülési értesítések webhook támogatása egy jövőbeli kiadásban tervezett. Jelenleg az állapot-végpont lekérdezésével ellenőrizheti, hogy a modellek elkészültek-e.

Hamarosan

A webhook visszahívások POST kérést küldenek a megadott URL-re, amikor a modellgenerálás befejeződik, így nincs szükség lekérdezésre. Ez a funkció az ütemtervünkben szerepel.

10

Teljes példák

Teljes, másolásra kész példák gyakori integrációs forgatókönyvekhez.

Modell generálása és várakozás az elkészülésre

Bash — teljes munkafolyamatbash
#!/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 integráció

Node.js — generálás és lekérdezésjavascript
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 integráció

Python — generálás és napenergia-számításpython
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
Teljes kódpéldák Bash, JavaScript és Python nyelven az API-integrációhoz
11

AI-ügynök integráció

Az AI-ügynökök (chatbotok, virtuális asszisztensek) munkameneteket hozhatnak létre, hogy a felhasználókat előre konfigurált Solar Wizard beállításokkal és opcionális automatikus tetőfelismeréssel irányítsák a SunTrace3D-re. A 3D modell akkor generálódik, amikor a felhasználó megnyitja a linket (~1-2 perc).

Endpoints

POST/api/mcp-sessionsCreate agent session with wizard params
GET/api/mcp-sessions/:idCheck session & model status
POST/api/mcp-sessions

Request Parameters

agentNamestringrequiredÜgynök-azonosító (kötelező)
latitudenumberrequiredLocation center latitude
longitudenumberrequiredLocation center longitude
wizardGoalstringVarázsló cél előbeállítás
wizardKwhnumberHavi kWh a cover_bill-hez
roofLatnumberTető szélességi fok az auto-kattintáshoz
roofLngnumberTető hosszúsági fok az auto-kattintáshoz
POST /api/mcp-sessionsjson
{
  "agentName": "ChatGPT",
  "latitude": 44.8699,
  "longitude": 13.8420,
  "wizardGoal": "cover_bill",
  "wizardKwh": 350,
  "roofLat": 44.8701,
  "roofLng": 13.8418
}
Responsejson
{
  "sessionId": "clxyz...",
  "viewerUrl": "https://suntrace3d.com/viewer?session=clxyz...&lat=44.869900&lng=13.842000&wizard=cover_bill&wizardKwh=350&roofLat=44.8701000&roofLng=13.8418000",
  "status": "created",
  "modelStatus": "not_generated",
  "agentName": "ChatGPT"
}

No pre-generation: Agent sessions do not trigger model generation. The 3D model generates when the user opens the viewer link (~1-2 minutes, loading animation shown). Pro users automatically get HD quality; free users get SD.

Recommended Workflows

Tetőkoordinátákkal
Pontos tetőkoordináták megadása az automatikus panelelhelyezéshez. Legjobb UX — a felhasználó rákattint a linkre, a modell betöltődik, a panelek automatikusan elhelyezésre kerülnek.
Kézi tetőválasztás
A felhasználó választja ki a pontos tetőhelyet. A varázsló megnyílik és vár, amíg a felhasználó a tetőjére kattint.
Közvetlen URL
Nézőablak URL közvetlen összeállítása API-hívás nélkül. A legegyszerűbb integráció, munkamenet-követés nélkül.

URL Parameters (Viewer)

wizardstringVarázsló cél előválasztása
wizardKwhnumberHavi kWh a cover_bill-hez
roofLatnumberAuto-kattintás tető szélességi fok
roofLngnumberAuto-kattintás tető hosszúsági fok
sessionstringMCP munkamenet-azonosító (automatikusan hozzáadva az API által)

Python Example

Python — create session and send link to userpython
import requests

def create_solar_link(lat, lng, roof_lat=None, roof_lng=None, monthly_kwh=None):
    """Create an agent session and return the viewer URL."""
    payload = {
        "agentName": "MySolarBot",
        "latitude": lat,
        "longitude": lng,
        "wizardGoal": "cover_bill" if monthly_kwh else "maximize_energy",
    }
    if monthly_kwh:
        payload["wizardKwh"] = monthly_kwh
    if roof_lat is not None and roof_lng is not None:
        payload["roofLat"] = roof_lat
        payload["roofLng"] = roof_lng

    res = requests.post("https://suntrace3d.com/api/mcp-sessions", json=payload)
    res.raise_for_status()
    return res.json()["viewerUrl"]

# Usage — send this link to the user
url = create_solar_link(
    lat=44.8699, lng=13.8420,
    roof_lat=44.8701, roof_lng=13.8418,
    monthly_kwh=350,
)
print(f"Send this to your user: {url}")
# User clicks -> model generates (~1-2 min) -> wizard auto-opens -> panels placed

Important Notes

  • Minden API-kérésnek tartalmaznia kell egy agentName-et, amely azonosítja a hívó ügynököt. Ez szükséges az elemzésekhez és a használat nyomon követéséhez.
  • A roofLat/roofLng a lehető legpontosabban a kívánt tetőfelület közepére kell mutatnia. A rendszer raycast-ot végez lefelé ezen a GPS-ponton.
  • Ha roofLat/roofLng meg van adva, a rendszer automatikusan megkísérli a tetőfelület felismerését azokon a koordinátákon. Ha az automatikus felismerés sikertelen, a felhasználó kézzel kattinthat, vagy használhatja az "Újrakezdés" gombot.
  • A felhasználók bármikor kattinthatnak az "Újrakezdés" gombra az automatikusan elhelyezett panelek eltávolításához és más tető kiválasztásához.
  • A Solar Wizard Pro előfizetést igényel. Az ingyenes felhasználók frissítési felszólítást látnak.
  • Az ügynök-munkamenetek nem generálnak modelleket előre. A 3D modell akkor generálódik, amikor a felhasználó megnyitja a linket (~1-2 perc). Pro felhasználók HD-t, ingyenes felhasználók SD-t kapnak.

Új a SunTrace3D-ben?

Tekintse meg a Felhasználói útmutatót a 3D megjelenítő, az árnyékszimuláció és a napelem-elemzés funkcióinak teljes körű bemutatásához.

Felhasználói útmutató