REST API Documentation
Programmatic access to the orbital compute simulation engine. Self-host the Python backend to use these endpoints.
Quick Start
# Install and start the API server
git clone https://github.com/ShipItAndPray/orbital-compute.git
cd orbital-compute
pip install -r requirements.txt
python -m orbital_compute.api --port 8080
# Test it
curl http://localhost:8080/status
Endpoints
GET
/status
Constellation overview — satellite count, running jobs, fleet utilization.
curl http://localhost:8080/status
Example Response
{
"n_satellites": 12,
"running_jobs": 3,
"completed_jobs": 47,
"fleet_utilization_pct": 23.5,
"total_compute_hours": 22.54
}
GET
/satellites
Per-satellite detail — orbit, power, thermal, compute utilization, contacts.
curl http://localhost:8080/satellites
GET
/jobs
All jobs grouped by status: pending, running, completed.
curl http://localhost:8080/jobs
POST
/jobs
Submit a new compute job. Specify workload type from the catalog.
curl -X POST http://localhost:8080/jobs \
-H "Content-Type: application/json" \
-d '{"workload": "image_classification"}'
Available Workloads
image_classification — 200W, 120s, Earth Observation
change_detection — 300W, 300s, Earth Observation
object_tracking — 400W, 60s, Earth Observation (realtime)
llm_inference — 600W, 30s, AI Inference (realtime)
image_generation — 500W, 45s, AI Inference
weather_model — 800W, 3600s, Scientific (batch)
climate_analysis — 700W, 7200s, Scientific (batch)
sar_processing — 500W, 180s, Defense/ISR
signal_analysis — 300W, 60s, Defense/ISR (realtime)
GET
/contacts
Upcoming ground station contact windows per satellite.
curl http://localhost:8080/contacts
GET
/metrics
Fleet utilization, job throughput, power/thermal statistics.
curl http://localhost:8080/metrics
Python Library
# Use as a Python library
from orbital_compute.simulator import Simulation, SimulationConfig
config = SimulationConfig(
n_satellites=12,
sim_duration_hours=24,
n_jobs=100,
solar_panel_watts=2000,
battery_capacity_wh=5000,
)
sim = Simulation(config)
sim.setup()
results = sim.run()
sim.print_report()
# Access results
print(f"Completed: {results['scheduler']['completed']}")
print(f"Utilization: {results['fleet_utilization_pct']}%")