Skip to content

Satellites API

The Satellites API provides access to the satellite catalog, including TLE (Two-Line Element) data, catalog management, and CelesTrak integration. Satellite data is sourced from CelesTrak and Space-Track.org.

Retrieve a paginated list of satellites, with optional filtering by group, name, or object type.

GET /api/satellites
ParameterTypeDefaultDescription
groupstringFilter by satellite group (e.g. amateur, stations)
qstringSearch satellites by name (case-insensitive)
object_typestringFilter by object type (PAYLOAD, ROCKET BODY, DEBRIS)
limitint50Results per page (max 200)
offsetint0Pagination offset
{
"satellites": [
{
"norad_id": 25544,
"name": "ISS (ZARYA)",
"intl_designator": "1998-067A",
"tle_epoch": "2026-02-14T12:00:00",
"orbit_type": "LEO",
"object_type": "PAYLOAD",
"is_active": true,
"groups": ["stations", "visual"]
}
],
"count": 1
}
Terminal window
# List all satellites in the amateur radio group
curl "https://space.warehack.ing/api/satellites?group=amateur&limit=10"
# Search for Starlink satellites
curl "https://space.warehack.ing/api/satellites?q=starlink&limit=20"
# Filter debris objects
curl "https://space.warehack.ing/api/satellites?object_type=DEBRIS&limit=50"

Retrieve detailed information for a single satellite by its NORAD catalog number.

GET /api/satellites/{norad_id}
ParameterTypeDescription
norad_idintNORAD catalog number
{
"norad_id": 25544,
"name": "ISS (ZARYA)",
"intl_designator": "1998-067A",
"tle_epoch": "2026-02-14T12:00:00",
"orbit_type": "LEO",
"object_type": "PAYLOAD",
"is_active": true,
"groups": ["stations", "visual"]
}
StatusDescription
404Satellite with that NORAD ID not found
Terminal window
# Get ISS details
curl "https://space.warehack.ing/api/satellites/25544"
# Get Hubble Space Telescope
curl "https://space.warehack.ing/api/satellites/20580"

Retrieve an image for a satellite. The image endpoint resolves through a three-tier system:

  1. Wikipedia/Wikimedia Commons — spacecraft renders and photos for well-known satellites
  2. NASA Image Library — photos for notable spacecraft
  3. Generated orbital diagram — a unique SVG computed from TLE orbital parameters (inclination, eccentricity, altitude)

Every satellite returns a meaningful image. There are no empty placeholders.

GET /api/images/satellite/{norad_id}
ParameterTypeDescription
norad_idintNORAD catalog number

Returns image bytes with the appropriate Content-Type (image/jpeg or image/svg+xml). Custom headers indicate the image source:

HeaderValues
X-Image-Sourcewikipedia, nasa, orbital-diagram
X-Image-CreditAttribution string (e.g. Wikimedia Commons, NASA)
Terminal window
# Fetch ISS image (likely a Wikipedia photo)
curl -o iss.jpg "https://space.warehack.ing/api/images/satellite/25544"
# Fetch a less well-known satellite (will get an orbital SVG)
curl -o sat.svg "https://space.warehack.ing/api/images/satellite/43226"

These endpoints manage the satellite catalog — triggering TLE updates, searching CelesTrak, and importing new satellites.

Trigger a background TLE update for all tracked satellites.

POST /api/catalog/tle/update
{
"status": "updating",
"message": "TLE update started in background"
}

Refresh the TLE for one satellite by NORAD ID.

POST /api/catalog/tle/refresh/{norad_id}
ParameterTypeDescription
norad_idintNORAD catalog number
{
"status": "refreshed",
"norad_id": 25544,
"name": "ISS (ZARYA)",
"tle_epoch": "2026-02-14T12:00:00"
}

Trigger a background update from Space-Track.org. Requires SPACETRACK_USER and SPACETRACK_PASS to be configured.

POST /api/catalog/spacetrack/update
StatusDescription
400Space-Track credentials not configured

Check the status of all catalog data sources and their last update times.

GET /api/catalog/status
{
"sources": [
{
"name": "celestrak-amateur",
"type": "tle",
"last_updated": "2026-02-14T10:30:00",
"status": "ok",
"error": null
}
]
}

Search the CelesTrak database by satellite name. Results are not imported into the local catalog — use the import endpoint to add them.

GET /api/catalog/celestrak/search
ParameterTypeRequiredDescription
qstringYesSearch query (min 2 characters)
{
"query": "NOAA",
"results": [
{
"norad_id": 43013,
"name": "NOAA 20",
"intl_designator": "2017-073A",
"object_type": "PAYLOAD",
"rcs": 5.2,
"is_active": true,
"tle_epoch": "2026-02-14T08:00:00"
}
],
"count": 1
}

Import a satellite into the local catalog by NORAD ID. Optionally assign it to a group.

POST /api/catalog/celestrak/import
{
"norad_id": 43013,
"group": "weather"
}
FieldTypeRequiredDescription
norad_idintYesNORAD catalog number to import
groupstringNoGroup name to assign the satellite to
{
"status": "imported",
"norad_id": 43013,
"name": "NOAA 20",
"object_type": "PAYLOAD"
}
StatusDescription
404No satellite found on CelesTrak with that ID