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']}%")