Citra Space Edge API
The Edge API from Citra Space — 3 operation(s) for edge.
The Edge API from Citra Space — 3 operation(s) for edge.
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/citra-space:citra-space-edge-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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: SOICAT Edge API
version: 0.1.0
tags:
- name: Edge
paths:
/edge/gps-jamming/interference:
get:
description: Returns GPS interference levels per H3 hex cell.
operationId: get_gps_jamming_interference_edge_gps_jamming_interference_get
parameters:
- in: header
name: X-Scenario-Context
required: false
schema:
anyOf:
- format: uuid
type: string
- type: 'null'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/GPSJammingResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Get Gps Jamming Interference
tags:
- Edge
/edge/operating-picture/satellites:
get:
description: 'Slim batched satellite payload for the Operating Picture identity table + globe. Replaces the per-row `GET /satellites/{id}` fan-out: one request returns each requested satellite''s catalog scalars, elset/transmission counts, freshness epochs, and identity-confidence chip. Heavy nested arrays (full elsets, transmissions, aliases) stay on `GET /satellites/{id}` for the detail panel.'
operationId: get_operating_picture_satellites_edge_operating_picture_satellites_get
parameters:
- description: Satellite IDs to load. Max 200 per request.
in: query
name: ids
required: false
schema:
description: Satellite IDs to load. Max 200 per request.
items:
format: uuid
type: string
title: Ids
type: array
- in: header
name: X-Scenario-Context
required: false
schema:
anyOf:
- format: uuid
type: string
- type: 'null'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/OperatingPictureSatelliteList'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Get Operating Picture Satellites
tags:
- Edge
/edge/operating-picture/sensor-stats:
get:
description: Aggregate per-sensor observation stats for the Operating Picture's Sensor Status section. Returns a single response with the requested sensors' last_epoch, total_last_day, and (for optical) group_last_day subtotal restricted to the operator's selected group satellites.
operationId: get_operating_picture_sensor_stats_edge_operating_picture_sensor_stats_get
parameters:
- description: Sensor IDs (telescope_id for optical, antenna_id for RF).
in: query
name: sensor_ids
required: false
schema:
description: Sensor IDs (telescope_id for optical, antenna_id for RF).
items:
format: uuid
type: string
title: Sensor Ids
type: array
- description: Satellite IDs in the active Operating Picture groups.
in: query
name: group_satellite_ids
required: false
schema:
description: Satellite IDs in the active Operating Picture groups.
items:
format: uuid
type: string
title: Group Satellite Ids
type: array
- description: Lookback window from now, in hours (default 24).
in: query
name: window_hours
required: false
schema:
default: 24
description: Lookback window from now, in hours (default 24).
maximum: 168
minimum: 1
title: Window Hours
type: integer
- in: header
name: X-Scenario-Context
required: false
schema:
anyOf:
- format: uuid
type: string
- type: 'null'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/SensorStatsResponse'
description: Successful Response
'422':
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
description: Validation Error
summary: Get Operating Picture Sensor Stats
tags:
- Edge
components:
schemas:
MissionCategory:
enum:
- Communications
- Imaging
- Science & Technology
- Calibration
- Spaceship
- Navigation
- Sigint
- Meteorology
- Radar Imaging
- Early Warning
- Earth Observation Science
- Classified
title: MissionCategory
type: string
GPSJammingResponse:
properties:
cells:
items:
items: false
maxItems: 2
minItems: 2
prefixItems:
- type: string
- type: number
type: array
title: Cells
type: array
generatedAt:
format: date-time
title: Generatedat
type: string
resolution:
title: Resolution
type: integer
required:
- generatedAt
- resolution
- cells
title: GPSJammingResponse
type: object
ManeuverStatus:
enum:
- unverified
- verified
- rejected
title: ManeuverStatus
type: string
SensorObservationStats:
description: 'Aggregate per-sensor stats for the Operating Picture''s Sensor
Status section.
`group_last_day` is the count restricted to the operator''s currently
selected group satellites (via `group_satellite_ids`). It''s
intentionally `None` for RF antennas because today''s `rf_capture`
rows don''t carry `satellite_id` directly — they only join through
the optional `task_id` — so the count would be misleadingly low
whenever a capture wasn''t bound to a tasked observation. The UI
renders that gap as an explicit "—" instead of "0".'
properties:
groupLastDay:
anyOf:
- type: integer
- type: 'null'
lastEpoch:
anyOf:
- format: date-time
type: string
- type: 'null'
sensorId:
format: uuid
title: Sensorid
type: string
totalLastDay:
default: 0
title: Totallastday
type: integer
required:
- sensorId
title: SensorObservationStats
type: object
Sector:
enum:
- Commercial
- Civil
- Defense
- Amateur
title: Sector
type: string
SatelliteIdentityScore:
description: 'Server-computed identity-confidence chip shown by the Operating
Picture Satellite Identity table (and reusable by any other surface
that wants the same NOMINAL/DEGRADED/CRITICAL signal).
Derived from the same freshness signals that drive the table''s
per-cell dots (orbit, observations, maneuver, stability) by
``soicat.services.identity_score``.'
properties:
confidence:
title: Confidence
type: integer
label:
enum:
- NOMINAL
- DEGRADED
- CRITICAL
- DECAYED
title: Label
type: string
rationale:
title: Rationale
type: string
required:
- confidence
- label
- rationale
title: SatelliteIdentityScore
type: object
SensorStatsResponse:
description: Single response payload for `GET /edge/operating-picture/sensor-stats`.
properties:
stats:
items:
$ref: '#/components/schemas/SensorObservationStats'
title: Stats
type: array
windowEnd:
format: date-time
title: Windowend
type: string
windowStart:
format: date-time
title: Windowstart
type: string
required:
- windowStart
- windowEnd
- stats
title: SensorStatsResponse
type: object
OperatingPictureSatellite:
description: 'Slim satellite payload for the Operating Picture batched fetch.
Returned by ``GET /edge/operating-picture/satellites?ids=...``. Holds
only the fields the identity table and globe consume — full
``elsets`` / ``transmissions`` / ``aliases`` arrays stay on
``GET /satellites/{id}`` for the detail panel.
Counts (``elset_count``, ``transmission_count``) replace
``len(elsets)`` / ``len(transmissions)`` so a row can render a chip
without the heavy nested arrays.'
properties:
altitudeKm:
anyOf:
- type: number
- type: 'null'
bus:
anyOf:
- type: string
- type: 'null'
countryCode:
anyOf:
- type: string
- type: 'null'
countryIso:
anyOf:
- type: string
- type: 'null'
countryName:
anyOf:
- type: string
- type: 'null'
decayEpoch:
anyOf:
- type: string
- type: 'null'
elsetCount:
default: 0
title: Elsetcount
type: integer
id:
format: uuid
title: Id
type: string
identityScore:
anyOf:
- $ref: '#/components/schemas/SatelliteIdentityScore'
- type: 'null'
isStable:
anyOf:
- type: boolean
- type: 'null'
lastDoaEpoch:
anyOf:
- type: string
- type: 'null'
lastManeuverEpoch:
anyOf:
- type: string
- type: 'null'
lastManeuverStatus:
anyOf:
- $ref: '#/components/schemas/ManeuverStatus'
- type: 'null'
lastOpticalEpoch:
anyOf:
- type: string
- type: 'null'
lastOrbitRmsKm:
anyOf:
- type: number
- type: 'null'
lastRadarEpoch:
anyOf:
- type: string
- type: 'null'
launchDateEpoch:
anyOf:
- type: string
- type: 'null'
launchSiteName:
anyOf:
- type: string
- type: 'null'
manufacturer:
anyOf:
- type: string
- type: 'null'
mission:
anyOf:
- $ref: '#/components/schemas/MissionCategory'
- type: 'null'
name:
anyOf:
- type: string
- type: 'null'
noradCatId:
anyOf:
- type: integer
- type: 'null'
orbitRegime:
anyOf:
- type: string
- type: 'null'
owner:
anyOf:
- type: string
- type: 'null'
secondaryMission:
anyOf:
- $ref: '#/components/schemas/MissionCategory'
- type: 'null'
sector:
anyOf:
- $ref: '#/components/schemas/Sector'
- type: 'null'
semiMajorAxisKm:
anyOf:
- type: number
- type: 'null'
stabilityCalculatedAt:
anyOf:
- type: string
- type: 'null'
transmissionCount:
default: 0
title: Transmissioncount
type: integer
required:
- id
title: OperatingPictureSatellite
type: object
ValidationError:
properties:
ctx:
type: object
input: {}
loc:
items:
oneOf:
- type: string
- format: int64
type: integer
type: array
msg:
type: string
type:
type: string
required:
- loc
- msg
- type
type: object
OperatingPictureSatelliteList:
items:
$ref: '#/components/schemas/OperatingPictureSatellite'
title: OperatingPictureSatelliteList
type: array
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
type: object
securitySchemes:
HTTPBearer:
scheme: bearer
type: http