---
title: "Earth-observation satellite catalog from WMO OSCAR/Space"
method: GET
path: "/api/v1/environment/oscar-wmo/satellites"
tags: ["Environment"]
---

# Earth-observation satellite catalog from WMO OSCAR/Space

`GET /api/v1/environment/oscar-wmo/satellites`

Return a filtered page of the WMO OSCAR/Space satellite catalog. The catalog covers 1,028 agency-validated Earth-observation satellites across mission status (operational, inactive, planned, mission concept, commissioning), orbit families (sunsynchronous, geostationary, drifting), and space agencies (NASA, ESA, JAXA, NOAA, EUMETSAT, and many others, with multi-agency missions encoded as comma-joined strings). Filters are applied client-side against Sugra's in-process catalog cache because WMO's upstream silently ignores query parameters. Attribution: WMO OSCAR/Space (World Meteorological Organization).

## Query parameters

- `agency` string, nullable — Case-insensitive substring match on any participating agency name (e.g. `NASA`, `ESA`, `JAXA`, `EUMETSAT`). Multi-agency missions match on any constituent agency.
- `status` string, nullable — Mission status filter (`operational`, `inactive`, `planned`, `mission concept`, `commissioning`, `stand-by`, `back-up`, `presumably inactive`, `lost at launch`; `decommissioned` is an alias for `inactive`).
- `orbit` string, nullable — Orbit family filter. Accepts `LEO`, `GEO`, `MEO`, or the exact upstream values `Sunsynchronous orbit`, `Geostationary orbit`, `Drifting orbit`. Substring matching is tolerated.
- `q` string, nullable — Case-insensitive substring search across satellite acronym and full name.
- `limit` integer — Maximum number of records to return (1 to 500).
- `offset` integer — Zero-indexed offset into the filtered result list.

## Response `200`

Paginated list of satellite records matching the requested filters, with total and filtered counts.

- EnvelopeOscarSatelliteListPayload
  - `data` OscarSatelliteListPayload, required — Satellite catalog listing with pagination metadata.
    - `satellites` OscarSatellite[], required — Satellite records matching the requested filters, paginated.
      - `satellite_id` integer, nullable — Upstream numeric satellite identifier. Informational only - not accepted as a path parameter upstream.
      - `slug` string, nullable — URL-safe slug (primary key for detail lookup).
      - `acronym` string, nullable — Short display name or acronym (e.g. `ACRIMSat`, `Metop-SG-A1`).
      - `fullname` string, nullable — Full descriptive satellite name.
      - `wigos_station_identifier` string, nullable — WMO WIGOS dash-separated quintuplet identifier, when registered.
      - `mission_link` string, nullable — External mission landing page URL.
      - `description` string, nullable — Plain-text description extracted from the upstream HTML description field.
      - `description_html` string, nullable — Raw HTML description as published upstream.
      - `space_agency` string, nullable — Comma-joined raw agency string as published upstream (e.g. `NASA`, `ESA,JAXA`).
      - `space_agencies` string[], nullable — Split-and-trimmed list of participating agencies derived from `space_agency`.
      - `agency_name` string, nullable — First participating agency name. Convenience alias for filtering and display.
      - `mission_status` string, nullable — Mission status (`Operational`, `Inactive`, `Planned`, `Mission concept`, `Commissioning`, `Stand-by`, `Back-up`, `Presumably inactive`, `Lost at launch`).
      - `orbit_type` string, nullable — Orbit category (`Sunsynchronous orbit`, `Geostationary orbit`, `Drifting orbit`, etc.).
      - `launch_date` string, nullable — Launch date in upstream freeform notation (e.g. `20 Dec 1999`, `Feb 2026`, `>=2033`).
      - `end_of_life` string, nullable — End-of-life date in upstream freeform notation. Null for active or planned missions.
      - `longitude` string, nullable — Sub-satellite longitude (applies to geostationary orbits), as a string.
      - `altitude_km` string, nullable — Altitude in kilometres, as a string.
      - `equator_crossing_time` string, nullable — Equator Crossing Time with ascending/descending indicator (applies to sun-synchronous orbits).
      - `data_access_link` string, nullable — External URL for data access associated with this satellite.
      - `instruments` OscarSatelliteInstrument[], nullable — Instruments flown on this satellite, with per-flight metadata.
        - `start_date` string, nullable — Instrument start date in upstream freeform notation (e.g. `Mar 2000`, `>=2039`, `null`).
        - `end_of_life` string, nullable — Instrument end-of-life date in upstream freeform notation.
        - `status` string, nullable — Instrument status on this flight (`Operational`, `Inactive`, `Planned`, `N/A`, etc.).
        - `data_latency` string, nullable — Reported data-access latency (e.g. `< 3 hours`).
        - `classification` string[], nullable — 3-level classification path (Earth observation instrument - class - subclass).
        - `wigos_subcomponent` object, nullable — WIGOS subcomponent classification tree attached to this flight.
        - `instrument_id` integer, nullable — Upstream numeric instrument identifier. Informational only; use `instrument_slug` for detail lookups.
        - `instrument_slug` string, nullable — Instrument slug (URL-safe identifier) - resolves via `/instruments/{slug}`.
        - `instrument_name` string, nullable — Short instrument name or acronym (e.g. `3MI`, `ACRIM-III`).
        - `instrument_fullname` string, nullable — Full descriptive instrument name.
        - `instrument_type` string, nullable — Instrument type classification (`Moderate-resolution optical imager`, `Radar scatterometer`, etc.).
        - `providing_agency` string, nullable — Agency or agencies providing the instrument.
    - `total` integer, required — Total number of satellites across the entire catalog (before filtering).
    - `filtered` integer, required — Number of satellites after applying client-side filters.
    - `limit` integer, required — Page size requested by the client.
    - `offset` integer, required — Zero-indexed starting offset requested by the client.
    - `notes` string, nullable — Advisory notes about this response (e.g. fetch time vs source edit time).
  - `meta` SugraMeta, required — Metadata attached to every /api/v1/* response envelope.
    - `endpoint` string, required — Requested endpoint path.
    - `data_time` string, required — ISO 8601 UTC timestamp of the source data, not of the request.
    - `response_time` string, required — ISO 8601 UTC timestamp when this response was produced.
    - `provider` string, required — API name and version.
    - `source` string, nullable — Identifier of the primary upstream source used for this response.
    - `attribution` string, nullable — Human-readable attribution mandated by an upstream source (e.g. a securities regulator or self-regulatory organization). Present only on responses whose source requires the owner and source to be clearly identified. Do not remove or alter it when using the response.
    - `fallback_used` boolean, nullable — True when the primary source failed and a fallback produced the data.
    - `fallback_chain` string[], nullable — Ordered list of sources attempted, in the order they were tried.
    - `cached` boolean, nullable — True when this response was served from the internal cache.
    - `stale` boolean, nullable — True when the cached response was returned after the upstream rate-limited or errored. Clients can use this to detect degraded data.

## Other responses

- `401` — Missing or invalid `x-api-key` header. JSON body with a stable `code` distinguishing `missing_api_key` (no header sent) from `invalid_api_key` (header sent, key not accepted); any other 401 source carries the generic `unauthorized` with its detail as `reason`. Plus `hint`. `plan` is always null on 401 - an unauthenticated request has no plan; quota exhaustion is 429, not 401.
- `422` — Validation Error
- `429` — Daily rate limit exceeded. Check `X-RateLimit-Reset` for the next window.
- `503` — Upstream source is temporarily unavailable. Retry after a short delay.

---

[API](https://skmtc.net/sugra/apis/sugra-api.md) · [All operations](https://skmtc.net/sugra/apis/sugra-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sugra/sugra-api/versions/d3e3d9c28132/schema)
