Skip to content

TLE Catalog API

The Catalog API manages Two-Line Element sets (TLEs) for all tracked satellites. It pulls orbital data from CelesTrak’s GP API and optionally from Space-Track, storing records locally for propagation by the tracking engine. Background update tasks keep the catalog current, and search/import endpoints let you add individual satellites on demand.

Trigger a background TLE refresh from the CelesTrak GP API for all configured satellite groups. The request returns immediately; the actual fetch and database update runs asynchronously.

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

Trigger a background TLE update from Space-Track. This source provides authoritative orbital data from the 18th Space Defense Squadron catalog.

POST /api/catalog/spacetrack/update
{
"status": "updating",
"message": "Space-Track update started in background"
}

Errors

StatusDetail
400Space-Track credentials not configured in SPACETRACK_USER / SPACETRACK_PASS

Returns the last update time, record count, and current status for each configured data source (CelesTrak groups, Space-Track, etc.).

GET /api/catalog/status
{
"sources": [
{
"name": "celestrak-amateur",
"type": "celestrak",
"last_updated": "2026-02-14T18:30:00",
"status": "ok",
"error": null
},
{
"name": "celestrak-stations",
"type": "celestrak",
"last_updated": "2026-02-14T18:30:05",
"status": "ok",
"error": null
},
{
"name": "spacetrack",
"type": "spacetrack",
"last_updated": null,
"status": "never_fetched",
"error": null
}
]
}

Search the CelesTrak catalog by satellite name. Results are returned directly from CelesTrak and are not imported into the local database. Use this to find a satellite’s NORAD catalog number before importing it.

GET /api/catalog/celestrak/search?q={name}
NameTypeRequiredDescription
qstringYesSearch term (minimum 2 characters)
{
"query": "ISS",
"results": [
{
"norad_id": 25544,
"name": "ISS (ZARYA)",
"intl_designator": "1998-067A",
"object_type": "PAYLOAD",
"rcs": 925.0,
"is_active": true,
"tle_epoch": "2026-02-14T12:00:00"
}
],
"count": 1
}
FieldTypeDescription
norad_idintNORAD catalog number (unique satellite identifier)
namestringSatellite common name
intl_designatorstring or nullInternational designator (launch year, number, piece)
object_typestring or nullObject classification: PAYLOAD, ROCKET BODY, DEBRIS, etc.
rcsfloat or nullRadar cross section in m²
is_activeboolWhether the satellite is operationally active
tle_epochstring or nullEpoch timestamp of the most recent TLE

Import a specific satellite into the local catalog by its NORAD catalog number. The satellite’s TLE is fetched from CelesTrak and stored locally for tracking. Optionally assigns the satellite to a named group.

POST /api/catalog/celestrak/import
{
"norad_id": 25544,
"group": "stations"
}
FieldTypeRequiredDescription
norad_idintYesNORAD catalog number of the satellite to import
groupstringNoGroup name to assign the satellite to (e.g. “amateur”, “weather”)
{
"status": "imported",
"norad_id": 25544,
"name": "ISS (ZARYA)",
"object_type": "PAYLOAD"
}

Errors

StatusDetail
404No satellite found on CelesTrak with the given NORAD ID

Refresh the TLE for a single satellite already in the local catalog. Fetches the latest orbital elements from CelesTrak and updates the local record if the new epoch is more recent.

POST /api/catalog/tle/refresh/{norad_id}
NameTypeRequiredDescription
norad_idintYesNORAD catalog number (path parameter)
{
"status": "refreshed",
"norad_id": 25544,
"name": "ISS (ZARYA)",
"tle_epoch": "2026-02-14T14:22:00"
}

Errors

StatusDetail
404No satellite found on CelesTrak with the given NORAD ID