Create a game where players design, run and simulate a full space mission, trading off objectives, instruments, launch vehicle, budget, power, mass and communications.
Orbit elements, physical data and discovery details for any asteroid or comet as JSON. Use it to label moving objects, or to give a mission-design game real target bodies.
Computes positions of the Sun, Earth, planets and spacecraft as seen from any place and time, including a point on the lunar surface. Returns azimuth and elevation directly, which is exactly what solar power and Earth-communication windows need.
Free 3D models of NASA spacecraft, landers, rovers and asteroids, mostly as STL and GLB files. Ready-made assets for games, trainers and storytelling pages.
Search API over NASA technical reports, conference papers and journal articles, many with full-text PDFs. Over a thousand records match microgravity combustion, and it also covers mission design and spaceflight health.
Search API over NASA's public photos, videos and audio, with no key and open CORS. Good for mission artwork, historical hardware photos and game assets.
endpoint https://images-api.nasa.gov/search
Starter code
Sun elevation at a lunar south pole sitePython
import requests
# Sun azimuth/elevation seen from a lunar south pole site (lon 0, lat -89.5).
# Use COMMAND='399' for Earth instead of the Sun ('10').
params = {
"format": "json",
"COMMAND": "'10'",
"MAKE_EPHEM": "'YES'", "EPHEM_TYPE": "'OBSERVER'", "OBJ_DATA": "'NO'",
"CENTER": "'coord@301'", "COORD_TYPE": "'GEODETIC'",
"SITE_COORD": "'0,-89.5,0'", # east lon, lat, altitude km
"START_TIME": "'2026-12-01'", "STOP_TIME": "'2026-12-03'",
"STEP_SIZE": "'6h'", "QUANTITIES": "'4'", # 4 = azimuth and elevation
}
r = requests.get("https://ssd.jpl.nasa.gov/api/horizons.api", params=params, timeout=60)
result = r.json()["result"]
table = result.split("$$SOE")[1].split("$$EOE")[0]
for line in table.strip().splitlines():
print(line)
Look up an asteroid orbitPython
import requests
# Look up any asteroid or comet by name or designation
r = requests.get("https://ssd-api.jpl.nasa.gov/sbdb.api",
params={"sstr": "Bennu", "phys-par": "1"}, timeout=30)
r.raise_for_status()
d = r.json()
obj = d["object"]
elements = {e["name"]: e["value"] for e in d["orbit"]["elements"]}
print(obj["fullname"], "| class:", obj["orbit_class"]["name"])
print("semi-major axis (au):", elements["a"], "| eccentricity:", elements["e"])
print("near-Earth object:", obj["neo"], "| hazardous:", obj["pha"])
Search fire safety reportsPython
import requests
# Search NASA technical reports on microgravity combustion
params = {"q": "microgravity flame spread spacecraft fire safety", "page.size": 5}
r = requests.get("https://ntrs.nasa.gov/api/citations/search", params=params, timeout=60)
r.raise_for_status()
data = r.json()
print("total matches:", data["stats"]["total"])
for rec in data["results"]:
print(rec["id"], "|", rec["title"][:90])
# Record page: https://ntrs.nasa.gov/citations/<id>
Search NASA photos in the browserJavaScript
// No key, CORS enabled: works directly in the browser
const q = encodeURIComponent("Apollo 15 lunar roving vehicle");
const res = await fetch(`https://images-api.nasa.gov/search?q=${q}&media_type=image`);
const { collection } = await res.json();
console.log("hits:", collection.metadata.total_hits);
for (const item of collection.items.slice(0, 5)) {
const meta = item.data[0];
const thumb = item.links?.[0]?.href;
console.log(meta.nasa_id, "|", meta.title, "|", thumb);
}
Related 2025 winners
Matched by theme. Study how they scoped the problem.
Astro Sweepers (Universal Event), Galactic Impact, for "Commercializing LEO"
PureFlow (Brazil), Best Mission Concept, for "Your Home in Space: The Habitat Layout Creator"
Photonics Odyssey (India), Most Inspirational, for "Commercializing LEO"
Gaia+LEO (United States), Global Connection, for "Commercializing LEO"