curl -X POST https://sim.rotastellar.com/v1/state \
-H "Content-Type: application/json" \
-d '{
"elements": {
"altitude_km": 550,
"inclination_deg": 53,
"eccentricity": 0.0001,
"raan_deg": 0,
"mean_anomaly_deg": 0,
"epoch": "2026-03-08T00:00:00Z"
},
"timestamp": "2026-03-08T12:00:00Z"
}'
import requests
response = requests.post(
"https://sim.rotastellar.com/v1/state",
json={
"elements": {
"altitude_km": 550,
"inclination_deg": 53
}
}
)
state = response.json()
print(f"Position: {state['lat']:.2f}°, {state['lon']:.2f}°")
print(f"Eclipse: {state['in_eclipse']}")
{
"lat": 42.15,
"lon": -73.82,
"altitude_km": 550.3,
"velocity_km_s": 7.59,
"in_eclipse": false,
"orbit_fraction": 0.234,
"timestamp": "2026-03-08T12:00:00Z"
}
{
"error": "invalid_elements",
"message": "elements must include altitude_km or mean_motion, and inclination_deg"
}
Sim
Get State
Compute satellite position, velocity, and eclipse status at a timestamp
POST
/
v1
/
state
curl -X POST https://sim.rotastellar.com/v1/state \
-H "Content-Type: application/json" \
-d '{
"elements": {
"altitude_km": 550,
"inclination_deg": 53,
"eccentricity": 0.0001,
"raan_deg": 0,
"mean_anomaly_deg": 0,
"epoch": "2026-03-08T00:00:00Z"
},
"timestamp": "2026-03-08T12:00:00Z"
}'
import requests
response = requests.post(
"https://sim.rotastellar.com/v1/state",
json={
"elements": {
"altitude_km": 550,
"inclination_deg": 53
}
}
)
state = response.json()
print(f"Position: {state['lat']:.2f}°, {state['lon']:.2f}°")
print(f"Eclipse: {state['in_eclipse']}")
{
"lat": 42.15,
"lon": -73.82,
"altitude_km": 550.3,
"velocity_km_s": 7.59,
"in_eclipse": false,
"orbit_fraction": 0.234,
"timestamp": "2026-03-08T12:00:00Z"
}
{
"error": "invalid_elements",
"message": "elements must include altitude_km or mean_motion, and inclination_deg"
}
Base URL:
https://sim.rotastellar.com
— No API key required.Request
object
required
Orbital elements defining the satellite orbit. Must include either
altitude_km or mean_motion, plus inclination_deg. See Orbital Elements for full schema.string
ISO 8601 timestamp for computation. Defaults to current time.
curl -X POST https://sim.rotastellar.com/v1/state \
-H "Content-Type: application/json" \
-d '{
"elements": {
"altitude_km": 550,
"inclination_deg": 53,
"eccentricity": 0.0001,
"raan_deg": 0,
"mean_anomaly_deg": 0,
"epoch": "2026-03-08T00:00:00Z"
},
"timestamp": "2026-03-08T12:00:00Z"
}'
import requests
response = requests.post(
"https://sim.rotastellar.com/v1/state",
json={
"elements": {
"altitude_km": 550,
"inclination_deg": 53
}
}
)
state = response.json()
print(f"Position: {state['lat']:.2f}°, {state['lon']:.2f}°")
print(f"Eclipse: {state['in_eclipse']}")
{
"lat": 42.15,
"lon": -73.82,
"altitude_km": 550.3,
"velocity_km_s": 7.59,
"in_eclipse": false,
"orbit_fraction": 0.234,
"timestamp": "2026-03-08T12:00:00Z"
}
{
"error": "invalid_elements",
"message": "elements must include altitude_km or mean_motion, and inclination_deg"
}
Response Fields
| Field | Type | Description |
|---|---|---|
lat | number | Geodetic latitude (degrees) |
lon | number | Geodetic longitude (degrees) |
altitude_km | number | Height above WGS-84 ellipsoid |
velocity_km_s | number | Orbital velocity |
in_eclipse | boolean | Whether satellite is in Earth’s shadow |
orbit_fraction | number | Position in orbit (0–1) |
timestamp | string | ISO 8601 computation timestamp |
⌘I

