v1ΣΤΑΘΕΡΟ

Τεκμηρίωση API

Το API Συνεργατών SunTrace3D σας επιτρέπει να δημιουργείτε HD τρισδιάστατα μοντέλα πόλεων, να υπολογίζετε ηλιακή ενεργειακή απόδοση και να ενσωματώνετε διαδραστικές τρισδιάστατες προβολές στον ιστότοπό σας. Όλα τα endpoints χρησιμοποιούν JSON και τυπικές μεθόδους HTTP.

Προβολή ως Markdown (αναγνώσιμο από μηχανές)
1

Επισκόπηση

Το API SunTrace3D είναι μια υπηρεσία RESTful για προγραμματιστική πρόσβαση σε δημιουργία τρισδιάστατων μοντέλων πόλεων και υπολογισμούς ηλιακής ενέργειας. Το API έχει σχεδιαστεί για συνεργάτες που θέλουν να ενσωματώσουν ηλιακή ανάλυση στις δικές τους εφαρμογές, ιστότοπους ή ροές εργασίας.

Βασικό URL

https://suntrace3d.com/api/v1
REST API
Αιτήματα/απαντήσεις JSON
Πιστοποίηση Bearer
Πιστοποίηση με κλειδί API
Ποιότητα HD
Όλα τα μοντέλα API είναι HD

Διαθέσιμα Endpoints

POST/api/v1/modelsΔημιουργία νέου HD τρισδιάστατου μοντέλου
GET/api/v1/models/:idΈλεγχος κατάστασης δημιουργίας μοντέλου
POST/api/solar/calculateΥπολογισμός ηλιακής ενεργειακής απόδοσης
GET/embedΕνσωματώσιμη τρισδιάστατη προβολή (iframe)
GET/api/healthΈλεγχος υγείας (δεν απαιτεί πιστοποίηση)
Partner portal showing API keys and usage statistics
Η Πύλη Συνεργατών — διαχειριστείτε κλειδιά API, δείτε στατιστικά χρήσης και λάβετε κώδικα ενσωμάτωσης
2

Πιστοποίηση

Όλα τα αιτήματα API απαιτούν πιστοποίηση μέσω Bearer token στην κεφαλίδα Authorization. Τα κλειδιά API διαχειρίζονται μέσω της Πύλης Συνεργατών.

Απόκτηση κλειδιού API

  1. 1
    Δημιουργήστε λογαριασμό
    Εγγραφείτε στο /auth/signup αν δεν το έχετε κάνει ήδη.
  2. 2
    Αναβάθμιση σε Pro
    Απαιτείται συνδρομή Pro για πρόσβαση στο API. Αναβαθμίστε από τις ρυθμίσεις λογαριασμού σας.
  3. 3
    Δημιουργήστε κλειδί API
    Επισκεφθείτε την Πύλη Συνεργατών και κάντε κλικ στο "Δημιουργία Κλειδιού". Αντιγράψτε το κλειδί σας αμέσως — δεν θα εμφανιστεί ξανά.
  4. 4
    Χρήση σε αιτήματα
    Συμπεριλάβετε το κλειδί σε όλα τα αιτήματα API ως Bearer token.
Κεφαλίδα Πιστοποίησηςbash
curl -H "Authorization: Bearer st_live_abc123def456..." \
  https://suntrace3d.com/api/v1/models

Κρατήστε το κλειδί API σας μυστικό

Μην εκθέτετε ποτέ το κλειδί API σας σε JavaScript πλευράς πελάτη, δημόσια αποθετήρια ή κώδικα front-end. Αν το κλειδί σας παραβιαστεί, ανακαλέστε το αμέσως από την Πύλη Συνεργατών και δημιουργήστε ένα νέο.

3

Δημιουργία Τρισδιάστατου Μοντέλου

Ζητήστε τη δημιουργία ενός HD τρισδιάστατου μοντέλου πόλης για μια συγκεκριμένη γεωγραφική τοποθεσία. Το μοντέλο δημιουργείται ασύγχρονα — ελέγξτε το endpoint κατάστασης για να δείτε πότε θα είναι έτοιμο.

POST/api/v1/models

Σώμα Αιτήματος

latitudenumberrequiredΓεωγραφικό πλάτος κεντρικού σημείου (-90 έως 90)
longitudenumberrequiredΓεωγραφικό μήκος κεντρικού σημείου (-180 έως 180)
radiusKmnumberΑκτίνα της περιοχής μοντελοποίησης σε km (προεπιλογή: 0.3)

Απάντηση

idstringrequiredΜοναδικό αναγνωριστικό μοντέλου για έλεγχο κατάστασης
statusstringrequired"pending" | "processing" | "ready" | "failed"
modelUrlstringURL του αρχείου μοντέλου GLB (όταν είναι έτοιμο)
progressnumberΠρόοδος δημιουργίας 0-100 (κατά την επεξεργασία)
stepstringΠεριγραφή τρέχοντος βήματος δημιουργίας
Αίτημαbash
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
  }'
Απάντηση (εκκρεμεί)json
{
  "id": "hd_44.8699_13.8420_0.3",
  "status": "pending"
}
Απάντηση (έτοιμο)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"
}

Αποθήκευση μοντέλων σε cache

Αν ένα μοντέλο για την ίδια τοποθεσία και ακτίνα έχει ήδη δημιουργηθεί, το API επιστρέφει αμέσως το αποθηκευμένο αποτέλεσμα με status: "ready". Τα μοντέλα αποθηκεύονται σε S3 για 30 ημέρες. Δεν χρεώνεστε για αποθηκευμένα αποτελέσματα.

API request generating a 3D model
Το API δημιουργεί HD τρισδιάστατα μοντέλα ασύγχρονα — ελέγχετε το endpoint κατάστασης μέχρι να είναι έτοιμο
4

Έλεγχος Κατάστασης Μοντέλου

Ελέγξτε αυτό το endpoint για την κατάσταση ενός αιτήματος δημιουργίας μοντέλου. Το μοντέλο περνά από πολλά στάδια: pending → processing → ready.

GET/api/v1/models/:id
Αίτημαbash
curl https://suntrace3d.com/api/v1/models/hd_44.8699_13.8420_0.3 \
  -H "Authorization: Bearer YOUR_API_KEY"
Απάντηση (επεξεργασία)json
{
  "id": "hd_44.8699_13.8420_0.3",
  "status": "processing",
  "progress": 65,
  "step": "Generating textures..."
}
Απάντηση (έτοιμο)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
}

Τιμές Κατάστασης

pendingΗ εργασία βρίσκεται στην ουρά και περιμένει να αναληφθεί από έναν worker
processingΤο μοντέλο δημιουργείται. Ελέγξτε το πεδίο progress για ποσοστό.
readyΤο μοντέλο είναι έτοιμο. Το πεδίο modelUrl περιέχει το URL λήψης.
failedΗ δημιουργία απέτυχε. Μπορείτε να δοκιμάσετε ξανά δημιουργώντας νέο αίτημα.

Σύσταση ελέγχου

Συνιστούμε έλεγχο κάθε 5-10 δευτερόλεπτα. Οι τυπικοί χρόνοι δημιουργίας είναι 30-120 δευτερόλεπτα ανάλογα με το μέγεθος της περιοχής και το φόρτο διακομιστή. Το πεδίο progress παρέχει ποσοστό (0-100) για εμφάνιση δείκτη προόδου στη διεπαφή χρήστη σας.

5

Υπολογισμός Ηλιακής Ενέργειας

Υπολογίστε την ετήσια ηλιακή ενεργειακή απόδοση για μια συγκεκριμένη διαμόρφωση πάνελ και τοποθεσία. Αυτό το endpoint χρησιμοποιεί δορυφορικά δεδομένα PVGIS (Φωτοβολταϊκό Γεωγραφικό Πληροφοριακό Σύστημα) για ακριβείς τιμές ακτινοβολίας.

POST/api/solar/calculate

Σώμα Αιτήματος

latitudenumberrequiredΓεωγραφικό πλάτος τοποθεσίας
longitudenumberrequiredΓεωγραφικό μήκος τοποθεσίας
tiltDegnumberrequiredΓωνία κλίσης πάνελ σε μοίρες (0-90)
azimuthDegnumberrequiredΑζιμούθιο πάνελ σε μοίρες (0=Βορράς, 180=Νότος)
panelAreaM2numberrequiredΣυνολική επιφάνεια πάνελ σε τετραγωνικά μέτρα
panelEfficiencynumberrequiredΑπόδοση πάνελ (0.0 - 1.0, τυπικά 0.18-0.22)
shadingLossFractionnumberΣυντελεστής απώλειας σκίασης (0.0-1.0, προεπιλογή: 0)

Απάντηση

annualYieldKwhnumberrequiredΕκτιμώμενη ετήσια ενεργειακή απόδοση σε kWh
peakPowerKwnumberrequiredΜέγιστη ισχύς εξόδου σε kW
specificYieldnumberrequiredΕιδική απόδοση σε kWh/kWp
monthlyKwhnumber[]requiredΠίνακας 12 μηνιαίων τιμών kWh
sourcestringrequiredΑναγνωριστικό πηγής δεδομένων ("pvgis")
Αίτημαbash
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
  }'
Απάντησηjson
{
  "annualYieldKwh": 4982,
  "peakPowerKw": 4.0,
  "specificYield": 1246,
  "monthlyKwh": [248, 305, 412, 465, 522, 548, 562, 530, 445, 368, 280, 232],
  "source": "pvgis"
}

Δεν απαιτείται πιστοποίηση

Το endpoint υπολογισμού ηλιακής ενέργειας είναι δημόσια διαθέσιμο και δεν απαιτεί κλειδί API. Χρησιμοποιεί το δημόσιο API PVGIS που συντηρείται από το Κοινό Κέντρο Ερευνών της Ευρωπαϊκής Επιτροπής.

Solar energy calculation API response
Το API υπολογισμού ηλιακής ενέργειας επιστρέφει ετήσια απόδοση, μέγιστη ισχύ και μηνιαία ανάλυση
6

Ενσωμάτωση Προβολής

Ενσωματώστε μια διαδραστική τρισδιάστατη ηλιακή προβολή στον ιστότοπό σας χρησιμοποιώντας ένα iframe. Η ενσωματωμένη προβολή περιλαμβάνει χειριστήρια χρόνου για προσομοίωση σκιών και λειτουργεί τόσο σε υπολογιστή όσο και σε κινητό.

Παράμετροι URL Ενσωμάτωσης

latnumberrequiredΓεωγραφικό πλάτος της τοποθεσίας για εμφάνιση
lngnumberrequiredΓεωγραφικό μήκος της τοποθεσίας για εμφάνιση
keystringrequiredΤο κλειδί API σας για πιστοποίηση
Βασικός Κώδικας Ενσωμάτωσηςhtml
<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>
Responsive Ενσωμάτωση (συνιστάται)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>

Χαρακτηριστικά ενσωμάτωσης

Διαδραστική τρισδιάστατη περιστροφή, μετακίνηση και μεγέθυνση
Ρυθμιστής χρόνου για προσομοίωση σκιών
Responsive — λειτουργεί σε κινητά
Φωτορεαλιστικά μοντέλα Google 3D Tiles
Δεν απαιτείται επιπλέον JavaScript
Υποστήριξη πλήρους οθόνης
Embedded 3D viewer in an iframe
Η ενσωματώσιμη προβολή περιλαμβάνει χειριστήρια χρόνου και λειτουργεί σε υπολογιστή και κινητό
7

Όρια Ρυθμού

Το API επιβάλλει όρια ρυθμού για δίκαιη χρήση και σταθερότητα συστήματος.

Δημιουργία Μοντέλου
POST /api/v1/models
10 αιτήματα
ανά ώρα, ανά κλειδί API
Έλεγχος Κατάστασης
GET /api/v1/models/:id
Χωρίς όριο
Έλεγχος κατά βούληση
Ηλιακός Υπολογισμός
POST /api/solar/calculate
Χωρίς όριο
Δημόσιο endpoint
Προβολές Ενσωμάτωσης
GET /embed
Χωρίς όριο
Απεριόριστες προβολές
Υπέρβαση Ορίου Ρυθμού - Απάντηση (429)json
{
  "error": "Rate limit exceeded. Maximum 10 generations per hour."
}
8

Διαχείριση Σφαλμάτων

Το API χρησιμοποιεί τυπικούς κωδικούς κατάστασης HTTP. Όλες οι απαντήσεις σφαλμάτων περιλαμβάνουν σώμα JSON με πεδίο error που περιγράφει το πρόβλημα.

Κωδικοί Κατάστασης HTTP

200Επιτυχία — το αίτημα ολοκληρώθηκε επιτυχώς
400Κακό Αίτημα — λείπουν ή μη έγκυρες παράμετροι
401Μη Εξουσιοδοτημένο — λείπει ή μη έγκυρο κλειδί API
404Δεν Βρέθηκε — το αναγνωριστικό μοντέλου δεν υπάρχει
429Υπερβολικά Πολλά Αιτήματα — υπέρβαση ορίου ρυθμού
503Υπηρεσία Μη Διαθέσιμη — εξωτερική υπηρεσία (PVGIS) εκτός λειτουργίας
Παράδειγμα Απάντησης Σφάλματοςjson
{
  "error": "latitude and longitude are required"
}
Σφάλμα Πιστοποίησηςjson
{
  "error": "Invalid or revoked API key"
}
9

Webhooks

Η υποστήριξη Webhook για ειδοποιήσεις ολοκλήρωσης μοντέλων σχεδιάζεται για μελλοντική έκδοση. Προς το παρόν, χρησιμοποιήστε τον έλεγχο στο endpoint κατάστασης για να δείτε πότε τα μοντέλα είναι έτοιμα.

Σύντομα Διαθέσιμο

Τα webhook callbacks θα στέλνουν ένα αίτημα POST στο καθορισμένο URL σας όταν ολοκληρωθεί η δημιουργία μοντέλου, εξαλείφοντας την ανάγκη για συνεχείς ελέγχους. Αυτή η δυνατότητα βρίσκεται στον χάρτη πορείας μας.

10

Πλήρη Παραδείγματα

Πλήρη παραδείγματα αντιγραφής-επικόλλησης για συνήθη σενάρια ενσωμάτωσης.

Δημιουργία μοντέλου και αναμονή ολοκλήρωσης

Bash — πλήρης ροή εργασίαςbash
#!/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

Node.js — δημιουργία και έλεγχοςjavascript
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

Python — δημιουργία και υπολογισμός ηλιακής ενέργειαςpython
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
Πλήρη παραδείγματα κώδικα σε Bash, JavaScript και Python για ενσωμάτωση API

Νέοι στο SunTrace3D;

Δείτε τον Οδηγό Χρήσης για μια πλήρη παρουσίαση της τρισδιάστατης προβολής, της προσομοίωσης σκιών και των δυνατοτήτων ανάλυσης ηλιακών πάνελ.

Οδηγός Χρήσης