openapi: 3.2.0
info:
title: Starlink Public Mobile API
description: '
Description
API to manage Starlink accounts and devices. For interactive endpoints list see: https://starlink.readme.io/Authentication - OIDC
To authenticate with this API using OIDC, Well Known URL and attach the result to your requests with the Authorize button below.
'
version: '2'
servers:
- url: /api
tags:
- name: Mobile
paths:
/public/v2/mobile/radio-access-network/{timestamp}:
get:
tags:
- Mobile
summary: Get Radio Access Network Data
description: 'Required permission: Gated Feature - Starlink Mobile Data, View.
Gets Radio Access Network (RAN) data. Data is partitioned by timestamp_date, timestamp_hour. Only able to get data from one hour per request. Data from the timestamp date and hour supplied will be returned, ignoring minutes and seconds.'
parameters:
- name: timestamp
in: path
description: Timestamp of target data aggregated by the hour for the selected hour
required: true
schema:
type: string
format: date-time
example: '2026-06-15T00:00:00Z'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/MobileRanResponseListServiceResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceResponse'
'404':
description: Not Found
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceResponse'
/public/v2/mobile/timeseries/{timestamp}:
get:
tags:
- Mobile
summary: Get Timeseries Data of Starlink Mobile Usage and Beam Reliability
description: 'Required permission: Gated Feature - Starlink Mobile Data, View.
Gets Timeseries data. Data is partitioned by timestamp_date, timestamp_hour. Only able to get data from one hour per request. Data from the timestamp date and hour supplied will be returned, ignoring minutes and seconds.'
parameters:
- name: timestamp
in: path
description: Timestamp of target data aggregated by the hour for the selected hour
required: true
schema:
type: string
format: date-time
example: '2026-06-15T00:00:00Z'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/MobileTimeSeriesResponseListServiceResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceResponse'
'404':
description: Not Found
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceResponse'
/public/v2/mobile/map/{timestamp}:
get:
tags:
- Mobile
summary: Get Map Data
description: 'Required permission: Gated Feature - Starlink Mobile Data, View.
Gets Map data. Data is partitioned by timestamp_date, timestamp_hour. Only able to get data from one hour per request. Data from the timestamp date and hour supplied will be returned, ignoring minutes and seconds.'
parameters:
- name: timestamp
in: path
description: Timestamp of target data aggregated by the hour for the selected hour
required: true
schema:
type: string
format: date-time
example: '2026-06-15T00:00:00Z'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/MobileMapResponseListServiceResponse'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceResponse'
'404':
description: Not Found
'422':
description: Unprocessable Content
content:
application/json:
schema:
$ref: '#/components/schemas/ServiceResponse'
components:
schemas:
ServiceResponse:
type: object
properties:
errors:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ValidationResult'
readOnly: true
warnings:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ValidationResult'
readOnly: true
information:
type:
- array
- 'null'
items:
type: string
readOnly: true
isValid:
type: boolean
readOnly: true
additionalProperties: false
MobileRanResponse:
type: object
properties:
trackingAreaCode:
type: integer
description: Tracking area code
format: int32
timestamp:
type: string
description: Timestamp in UTC of the start of the returned hour of data
format: date-time
broadcastPublicLandMobileNumber:
type: integer
description: Broadcast Public Land Mobile Number of serving network
format: int32
radioResourceControllerConnectionsCompleted:
type: integer
description: Total number of Radio Resource Controller (RRC) connections completed
format: int32
radioResourceControllerConnectionsRequested:
type: integer
description: Total number of Radio Resource Controller (RRC) connections requested
format: int32
radioResourceControllerSuccessRate:
type: number
description: Radio Resource Controller success rate -> (RadioResourceControllerConnectionsCompleted / RadioResourceControllerConnectionsRequested)*100 (0-100)
format: float
radioResourceControllerAdmissionRejects:
type: integer
description: Total number of admission rejects due to 128 user limit
format: int32
radioResourceControllerConnectionsMax:
type: integer
description: Highest instantaneous value of maximum Radio Resource Controller concurrently connected users
format: int32
radioResourceControllerConnectionsP90:
type: number
description: 90th percentile of concurrent Radio Resource Controller connections
format: float
resourceControllerConnectionsAverage:
type: number
description: Average number of concurrent Radio Resource Controller connections
format: float
activeUsersAverage:
type: number
description: Active users = SUM(number initial context setup requests + handover in attempts)
format: float
activeUsersMax:
type: number
description: Maximum value of active users during hour
format: float
uplinkPhysicalResourceBlockUtilizationP90:
type: number
description: 90th percentile of uplink physical resource block usage (0-100)
format: float
downlinkPhysicalResourceBlockUtilizationP90:
type: number
description: 90th percentile of downlink physical resource block usage (0-100)
format: float
uplinkPhysicalResourceBlockUtilizationMax:
type: number
description: Maximum of Uplink physical resource block usage during aggregation period (0-100)
format: float
downlinkPhysicalResourceBlockUtilizationMax:
type: number
description: Maximum of downlink physical resource block usage during aggregation period (0-100)
format: float
uplinkPhysicalResourceBlockUtilizationAverage:
type: number
description: Average of uplink physical resource block usage during aggregation period (0-100)
format: float
downlinkPhysicalResourceBlockUtilizationAverage:
type: number
description: Average of downlink physical resource block usage during aggregation period (0-100)
format: float
uplinkThroughputKilobitsPerSecMax:
type: number
description: Maximum uplink data throughput at eNode-B kilobits per second
format: float
downlinkThroughputKilobitsPerSecMax:
type: number
description: Maximum downlink data throughput at eNode-B kilobits per second
format: float
downlinkThroughputKilobitsPerSecAverage:
type: number
description: Average downlink data throughput at eNode-B kilobits per second
format: float
uplinkThroughputKilobitsPerSecAverage:
type: number
description: Average uplink data throughput at eNode-B kilobits per second
format: float
downlinkThroughputKilobitsPerSecP90:
type: number
description: 90th percentile downlink data throughput at eNode-B kilobits per second
format: float
uplinkThroughputKilobitsPerSecP90:
type: number
description: 90th percentile uplink data throughput at eNode-B kilobits per second
format: float
downlinkThroughputKilobitsPerSecPerUserAverage:
type: number
description: Average downlink data throughput at eNode-B kilobits per second
format: float
downlinkThroughputKilobitsPerSecPerUserMax:
type: number
description: Maximum downlink data throughput at eNode-B kilobits per second
format: float
uplinkThroughputKilobitsPerSecPerUserAverage:
type: number
description: Average uplink data throughput at eNode-B kilobits per second
format: float
uplinkThroughputKilobitsPerSecPerUserMax:
type: number
description: Maximum uplink data throughput at eNode-B kilobits per second
format: float
additionalProperties: false
ValidationResult:
type: object
properties:
memberNames:
type:
- array
- 'null'
items:
type: string
readOnly: true
errorMessage:
type:
- string
- 'null'
additionalProperties: false
MobileTimeSeriesResponseListServiceResponse:
type: object
properties:
errors:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ValidationResult'
readOnly: true
warnings:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ValidationResult'
readOnly: true
information:
type:
- array
- 'null'
items:
type: string
readOnly: true
isValid:
type: boolean
readOnly: true
content:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/MobileTimeSeriesResponse'
additionalProperties: false
MobileMapResponse:
type: object
properties:
trackingAreaCode:
type: integer
description: Tracking area code
format: int32
broadcastPublicLandMobileNumber:
type: integer
description: Broadcast Public Land Mobile Number of serving network
format: int32
timestamp:
type: string
description: Timestamp in UTC of the start of the returned hour of data
format: date-time
accessType:
type: string
description: Network Access Type - home or reciprocal users
deviceType:
type: string
description: Device Type - commercial (phone/user equipment) or Internet of Things (IOT) device
serviceType:
type: string
description: Service Type - Commercial or Emergency
gapTimeSecondsByTrackingAreaCodeAverage:
type: number
description: Average duration of gaps in satellite coverage in seconds per tracking area code
format: double
gapTimeSecondsByTrackingAreaCodeP90:
type: number
description: 90th percentile duration of gaps in satellite coverage in seconds per tracking area code
format: double
gapTimeSecondsByTrackingAreaCodeP50:
type: number
description: 50th percentile duration of gaps in satellite coverage in seconds per tracking area code
format: double
trackingAreaCodeBeamAvailabilitySeconds:
type: number
description: Total time of beam coverage/placement in seconds per tracking area code (0-3600)
format: double
totalShortMessageServiceMessages:
type: integer
description: Total number of Mobile Originated (MO) and Mobile Terminated (MT) Short Message Services sent per tracking area code
format: int32
uniqueInternationalMobileSubscriberIdentities:
type: integer
description: Unique International Mobile Subscriber Identity (IMSI) count of users that connect with 'NAS_ATTACH_COMPLETE' message received per tracking area code
format: int32
upLinkDataConsumedMegabytesPerTrackingAreaCodeAverage:
type: number
description: Average value of uplink data consumed measured at serving gateway (SGw) in megabytes per tracking area code
format: double
downLinkDataConsumedMegabytesPerTrackingAreaCodeAverage:
type: number
description: Average value of downlink data consumed measured at serving gateway (SGw) in megabytes per tracking area code
format: double
additionalProperties: false
MobileRanResponseListServiceResponse:
type: object
properties:
errors:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ValidationResult'
readOnly: true
warnings:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ValidationResult'
readOnly: true
information:
type:
- array
- 'null'
items:
type: string
readOnly: true
isValid:
type: boolean
readOnly: true
content:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/MobileRanResponse'
additionalProperties: false
MobileTimeSeriesResponse:
type: object
properties:
timestamp:
type: string
description: Timestamp in UTC of the start of the returned hour of data)
format: date-time
networkAccessType:
type: string
description: Network Access Type - home or reciprocal users
deviceType:
type: string
description: Device Type - commercial (phone/user equipment) or Internet of Things (IOT) device
serviceType:
type: string
description: Service Type - Commercial or Emergency
broadcastPublicLandMobileNumber:
type: number
description: Broadcast Public Land Mobile Number of serving network
format: float
nonAccessStratumAttachSuccessRate:
type: number
description: Non-Access Stratum (NAS) attach success rate -> (NAS_Accepted / (NAS_Accepted + NAS_Rejected))*100 (0-100)
format: float
nonAccessStratumAccepted:
type: number
description: Total number of Non-Access Stratum (NAS) Accepted messages sent
format: float
nonAccessStratumRejected:
type: number
description: Total number of Non-Access Stratum (NAS) Rejected messages sent
format: float
beamReliabilityRate:
type: number
description: (Beams placed / Total number of beams expected/scheduled to be placed)*100 (0-100)
format: float
uniqueUsers:
type: integer
description: Unique international mobile subscriber identity (IMSI) that received 'NAS_ATTACH_COMPLETE'
format: int32
totalSuccessfulMobileOriginatedMessages:
type: integer
description: Total number of Mobile Originated (MO) messages sent
format: int32
totalSuccessfulMobileTerminatedMessages:
type: integer
description: Total number of Mobile Terminated (MT) messages sent
format: int32
mobileTerminatedSuccessRate:
type: number
description: Success rate of Mobile Terminated short message service messages (0-100)
format: float
upLinkDataVolumeMegabytes:
type: number
description: Total uplink data consumed in megabytes measured at serving gateway (SGw)
format: float
downLinkDataVolumeMegabytes:
type: number
description: Total downlink data consumed in megabytes measured at serving gateway (SGw)
format: float
additionalProperties: false
MobileMapResponseListServiceResponse:
type: object
properties:
errors:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ValidationResult'
readOnly: true
warnings:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ValidationResult'
readOnly: true
information:
type:
- array
- 'null'
items:
type: string
readOnly: true
isValid:
type: boolean
readOnly: true
content:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/MobileMapResponse'
additionalProperties: false