LeoLabs Catalog API
LeoLabs catalog of tracked LEO objects, their measurements, states and propagations.
LeoLabs catalog of tracked LEO objects, their measurements, states and propagations.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/leo-labs:leo-labs-catalog-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: LeoLabs Platform Catalog API
version: v1
description: 'The LeoLabs Platform API provides programmatic access to LeoLabs'' commercial low Earth orbit (LEO)
catalog: tracked space objects, radar measurements, orbital state vectors, TLEs, ephemeris propagation,
planned passes, and radar instrument tasking.'
contact:
name: LeoLabs Support
email: support@leolabs.space
url: https://www.leolabs.space/
x-provenance:
method: derived
generated: '2026-07-19'
source: https://pypi.org/project/leolabs/0.1.22/
servers:
- url: https://api.leolabs.space/v1
description: LeoLabs Platform API production
security:
- leolabsKeyPair: []
tags:
- name: Catalog
description: LeoLabs catalog of tracked LEO objects, their measurements, states and propagations.
paths:
/catalog/objects:
get:
tags:
- Catalog
operationId: listCatalogObjects
summary: List catalog objects
description: Lists the objects in the LeoLabs catalog.
responses:
'200':
description: A list of catalog objects.
content:
application/json:
schema:
type: object
properties:
objects:
type: array
items:
$ref: '#/components/schemas/CatalogObject'
'401':
$ref: '#/components/responses/Unauthorized'
/catalog/objects/search:
get:
tags:
- Catalog
operationId: searchCatalogObjects
summary: Search the catalog by NORAD catalog number
description: Resolves a NORAD catalog number to a LeoLabs catalog object.
parameters:
- name: noradCatalogNumber
in: query
required: true
description: The NORAD catalog number of the object, e.g. 27386 for ENVISAT.
schema:
type: integer
responses:
'200':
description: The matching catalog object.
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogObject'
'401':
$ref: '#/components/responses/Unauthorized'
/catalog/objects/{catalogNumber}:
parameters:
- $ref: '#/components/parameters/CatalogNumber'
get:
tags:
- Catalog
operationId: getCatalogObject
summary: Get a catalog object
description: Retrieves a single catalog object by its LeoLabs catalog number.
responses:
'200':
description: The catalog object.
content:
application/json:
schema:
$ref: '#/components/schemas/CatalogObject'
example:
name: ENVISAT
noradCatalogNumber: 27386
catalogNumber: L335
'401':
$ref: '#/components/responses/Unauthorized'
/catalog/objects/{catalogNumber}/measurements:
parameters:
- $ref: '#/components/parameters/CatalogNumber'
get:
tags:
- Catalog
operationId: listCatalogObjectMeasurements
summary: List radar measurements for a catalog object
description: Returns the radar measurements collected for a catalog object over a time span.
parameters:
- $ref: '#/components/parameters/StartTime'
- $ref: '#/components/parameters/EndTime'
responses:
'200':
description: The measurements for the object over the requested time span.
content:
application/json:
schema:
type: object
properties:
measurements:
type: array
items:
$ref: '#/components/schemas/Measurement'
'401':
$ref: '#/components/responses/Unauthorized'
/catalog/objects/{catalogNumber}/tasks:
parameters:
- $ref: '#/components/parameters/CatalogNumber'
post:
tags:
- Catalog
operationId: createCatalogObjectTask
summary: Request priority tasking for a catalog object
description: Requests that the radar network prioritise tracking of this object over a time span.
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
required:
- startTime
- endTime
properties:
startTime:
type: string
format: date-time
endTime:
type: string
format: date-time
priority:
type: integer
description: Tasking priority. The LeoLabs client sends 100.
responses:
'200':
description: The created task.
content:
application/json:
schema:
$ref: '#/components/schemas/TaskRef'
example:
id: 27102
'401':
$ref: '#/components/responses/Unauthorized'
/catalog/objects/{catalogNumber}/passes/planned:
parameters:
- $ref: '#/components/parameters/CatalogNumber'
get:
tags:
- Catalog
operationId: listCatalogObjectPlannedPasses
summary: List planned passes for a catalog object
description: 'Returns the planned radar passes for a catalog object. The LeoLabs client passes the literal
value `all` as the catalog number to request planned passes across the whole catalog.'
responses:
'200':
description: Planned passes.
content:
application/json:
schema:
type: object
'401':
$ref: '#/components/responses/Unauthorized'
/catalog/objects/{catalogNumber}/statistics:
parameters:
- $ref: '#/components/parameters/CatalogNumber'
get:
tags:
- Catalog
operationId: getCatalogObjectStatistics
summary: Get statistics for a catalog object
description: 'Returns tracking statistics for a catalog object. The LeoLabs client passes the literal value
`all` as the catalog number to request catalog-wide statistics.'
responses:
'200':
description: Statistics.
content:
application/json:
schema:
type: object
'401':
$ref: '#/components/responses/Unauthorized'
/catalog/objects/{catalogNumber}/states:
parameters:
- $ref: '#/components/parameters/CatalogNumber'
get:
tags:
- Catalog
operationId: listCatalogObjectStates
summary: List orbital state vectors for a catalog object
description: 'Returns orbital state vectors for a catalog object, either over a time span
(`startTime`/`endTime`) or the most recent state (`latest=1`).'
parameters:
- $ref: '#/components/parameters/StartTime'
- $ref: '#/components/parameters/EndTime'
- name: latest
in: query
required: false
description: Set to 1 to return only the most recent state vector.
schema:
type: integer
responses:
'200':
description: State vectors.
content:
application/json:
schema:
type: object
properties:
states:
type: array
items:
$ref: '#/components/schemas/State'
'401':
$ref: '#/components/responses/Unauthorized'
/catalog/objects/{catalogNumber}/states/{stateId}:
parameters:
- $ref: '#/components/parameters/CatalogNumber'
- $ref: '#/components/parameters/StateId'
get:
tags:
- Catalog
operationId: getCatalogObjectState
summary: Get an orbital state vector
description: Retrieves a single orbital state vector by id.
responses:
'200':
description: The state vector.
content:
application/json:
schema:
$ref: '#/components/schemas/State'
'401':
$ref: '#/components/responses/Unauthorized'
/catalog/objects/{catalogNumber}/states/{stateId}/tles:
parameters:
- $ref: '#/components/parameters/CatalogNumber'
- $ref: '#/components/parameters/StateId'
get:
tags:
- Catalog
operationId: listCatalogObjectStateTles
summary: List TLEs associated with a state vector
description: Returns the two-line element sets derived from a given orbital state vector.
responses:
'200':
description: TLEs for the state.
content:
application/json:
schema:
type: object
properties:
tles:
type: array
items:
$ref: '#/components/schemas/Tle'
'401':
$ref: '#/components/responses/Unauthorized'
/catalog/objects/{catalogNumber}/states/{stateId}/propagations:
parameters:
- $ref: '#/components/parameters/CatalogNumber'
- $ref: '#/components/parameters/StateId'
get:
tags:
- Catalog
operationId: getCatalogObjectStatePropagation
summary: Propagate ephemeris from a state vector
description: 'Propagates the orbit forward or backward from a given state vector and returns positions,
velocities and covariances at a fixed timestep. LeoLabs documents support for propagation up to
plus or minus 7 days from the state timestamp.'
parameters:
- $ref: '#/components/parameters/StartTime'
- $ref: '#/components/parameters/EndTime'
- name: timestep
in: query
required: false
description: Propagation timestep in seconds.
schema:
type: number
responses:
'200':
description: The propagation.
content:
application/json:
schema:
$ref: '#/components/schemas/Propagation'
'401':
$ref: '#/components/responses/Unauthorized'
components:
schemas:
TaskRef:
type: object
description: A reference to a created tasking request.
properties:
id:
type: integer
StateFrame:
type: object
description: Position, velocity and covariance in a single reference frame.
properties:
position:
type: array
items:
type: number
velocity:
type: array
items:
type: number
covariance:
type: array
items:
type: array
items:
type: number
covarianceExtended:
type: array
items:
type: array
items:
type: number
CatalogObject:
type: object
description: An object tracked in the LeoLabs LEO catalog.
properties:
catalogNumber:
type: string
description: LeoLabs catalog number, e.g. `L335`.
noradCatalogNumber:
type: integer
description: NORAD catalog number, e.g. 27386.
name:
type: string
description: Object name, e.g. `ENVISAT`.
Tle:
type: object
description: A two-line element set derived from a LeoLabs state vector.
properties:
catalogNumber:
type: string
State:
type: object
description: An orbital state vector for a catalog object.
properties:
id:
type: integer
catalogNumber:
type: string
noradCatalogNumber:
type: integer
timestamp:
type: string
format: date-time
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
frames:
type: object
description: State expressed in one or more reference frames, e.g. `EME2000` and `TNW`.
additionalProperties:
$ref: '#/components/schemas/StateFrame'
coefficients:
type: object
description: Fitted physical coefficients for the object.
properties:
fitted:
type: object
properties:
drag:
type: number
reflectivity:
type: number
tle:
$ref: '#/components/schemas/Tle'
MeasurementCorrection:
type: object
description: A correction applied to a raw measurement.
properties:
source:
type: string
description: Correction source, e.g. `leolabs`, `iri16`.
type:
type: string
description: Correction type, e.g. `doppler_bias`, `range_bias`, `ionospheric`.
value:
type: number
error:
type: number
Propagation:
type: object
description: A propagated ephemeris derived from a state vector.
properties:
state:
type: string
startTime:
type: string
format: date-time
endTime:
type: string
format: date-time
timestep:
type: number
frame:
type: string
description: Reference frame of the propagation, e.g. `EME2000`.
propagation:
type: array
items:
type: object
properties:
position:
type: array
items:
type: number
velocity:
type: array
items:
type: number
covariance:
type: array
items:
type: array
items:
type: number
Measurement:
type: object
description: A single radar measurement of a catalog object.
properties:
id:
type: integer
catalogNumber:
type: string
noradCatalogNumber:
type: integer
instrument:
type: string
experiment:
type: integer
beam:
type: integer
group:
type: integer
targetPass:
type: integer
snr:
type: number
integrationTime:
type: number
transmittedAt:
type: string
format: date-time
receivedAt:
type: string
format: date-time
measuredAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
values:
$ref: '#/components/schemas/MeasurementValues'
corrected:
$ref: '#/components/schemas/MeasurementValues'
corrections:
type: array
items:
$ref: '#/components/schemas/MeasurementCorrection'
MeasurementValues:
type: object
description: Raw or corrected radar observables for a measurement.
properties:
range:
type: number
rangeError:
type: number
doppler:
type: number
dopplerError:
type: number
azimuth:
type: number
elevation:
type: number
rcs:
type: number
description: Radar cross section.
Error:
type: object
description: 'Error envelope. The official LeoLabs client falls back to `{"error": "unknown"}` when a failed
response body cannot be parsed as JSON, indicating a top-level `error` member.
'
properties:
error:
type: string
parameters:
StartTime:
name: startTime
in: query
required: false
description: ISO 8601 UTC start of the requested time span, e.g. `2017-11-08T00:00:00Z`.
schema:
type: string
format: date-time
StateId:
name: stateId
in: path
required: true
description: Orbital state vector id.
schema:
type: string
EndTime:
name: endTime
in: query
required: false
description: ISO 8601 UTC end of the requested time span.
schema:
type: string
format: date-time
CatalogNumber:
name: catalogNumber
in: path
required: true
description: LeoLabs catalog number, e.g. `L335`. Some endpoints accept the literal `all`.
schema:
type: string
responses:
Unauthorized:
description: Missing or invalid LeoLabs access key / secret key pair.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
leolabsKeyPair:
type: apiKey
in: header
name: Authorization
description: 'LeoLabs access key / secret key pair, sent as `Authorization: basic <accessKey>:<secretKey>`.
Despite the `basic` prefix this is not RFC 7617 HTTP Basic — the LeoLabs client sends the two
keys colon-joined and unencoded. Keys are issued from the LeoLabs Platform
(https://platform.leolabs.space/) and the official client reads them from the
`LEOLABS_ACCESS_KEY` and `LEOLABS_SECRET_KEY` environment variables or from `~/.leolabs/config`.
'