Starlink · Authentication Profile
Starlink Authentication
Authentication
Starlink secures its APIs with oauth2, http, and mutualTLS across 4 declared security schemes, as derived from its OpenAPI definitions. OAuth 2.0 is offered via the clientCredentials flow(s).
TelecommunicationsUnited StatesSatelliteBroadbandNon-Terrestrial NetworksConnectivityDevice ManagementTelemetryAviationMaritimeEnterprise
Methods: oauth2, http, mutualTLS
Schemes: 4
OAuth flows: clientCredentials
API key in:
Security Schemes
StarlinkServiceAccount oauth2
SpaceSafetyClientCertificate mutualTLS
LocalDeviceNone none
RouterLocalHttpsTls mutualTLS
Source
Authentication Profile
generated: '2026-07-25'
method: searched
source: https://starlink.readme.io/docs/authentication
docs: https://starlink.readme.io/docs/authentication
notes: >-
The downloadable Starlink Public API V2 OpenAPI (openapi/starlink-public-api-v2-openapi.json)
declares NO components.securitySchemes and no top-level security requirement, even though
every operation is authenticated. This profile was therefore harvested from the published
authentication guide, the API V2 Service Accounts guide, and the anonymous OIDC discovery
document, not derived from the spec. The per-operation authorization model is RBAC, carried
in each operation description as "Required permission: <permission>, <View|Edit>".
summary:
types: [oauth2, http, mutualTLS]
api_key_in: []
oauth2_flows: [clientCredentials]
spec_declares_security_schemes: false
schemes:
- name: StarlinkServiceAccount
type: oauth2
applies_to: Starlink Public API V2 (account, service line, user terminal, router, billing, telemetry, mobile, flights)
flow: clientCredentials
token_url: https://starlink.com/api/auth/connect/token
discovery: https://starlink.com/api/auth/.well-known/openid-configuration
issuer: https://api.starlink.com/auth
token_endpoint_auth_methods_supported: [client_secret_basic, client_secret_post]
id_token_signing_alg_values_supported: [RS384]
credential: clientId + secret minted as a "V2 Service Account" in the Starlink account settings page
presentation: 'Authorization: Bearer <access_token>'
token_lifetime: ~15 minutes; reuse the token until a 401 is returned, then re-mint
source: well-known/starlink-openid-configuration.json
- name: SpaceSafetyClientCertificate
type: mutualTLS
applies_to: Starlink Space Traffic Coordination API (space-safety.starlink.com)
docs: https://docs.space-safety.starlink.com/docs/api-keys
credential: EC secp384r1 client key + a CSR signed by SpaceX into a client.crt
presentation: TLS client certificate (curl --key client.key --cert client.crt)
onboarding: email space-safety-onboarding@spacex.com; access limited to satellite operators
environments:
- https://staging.space-safety.starlink.com
- https://space-safety.starlink.com
- name: LocalDeviceNone
type: none
applies_to: Starlink Local Device gRPC API (192.168.1.1:9000 router, 192.168.100.1:9200 user terminal)
docs: https://starlink.readme.io/docs/device-api
rationale: no authentication because the gRPC server is only reachable on the local network
- name: RouterLocalHttpsTls
type: mutualTLS
applies_to: Starlink Router Local HTTPS API (/starlinkrouter/)
docs: https://starlink.readme.io/docs/router-api
credential: enterprise-supplied TLS certificate + key configured on the router config, plus a CORS allowed-origins list
note: the enterprise owns the certificate; the router serves the API on an operator-chosen domain
service_account_model:
docs: https://starlink.readme.io/docs/api-v2-service-accounts
scope: a V2 service account is bound to a Starlink ACCOUNT, not a user, and survives the creating user leaving
who_can_create: users holding the Admin or Service Account Management role
ceiling: a user cannot grant a service account a permission they do not themselves hold
limits:
service_accounts_per_account: 20
secrets_per_service_account: 20
rotation: secrets support an optional expiry; create new secrets then delete old ones to rotate
revocation: service accounts can be disabled but never deleted, to preserve traceability
mfa: service accounts are exempt from multi-factor authentication challenges
authorization:
model: role-based access control, declared per operation in the OpenAPI description
source: openapi/starlink-public-api-v2-openapi.json
permissions:
- Account information, View
- Account information, Edit
- Admin Only - API User Management, Edit
- Aviation flight status management, Edit
- Device command and configuration, View
- Device command and configuration, Edit
- Device configuration assignment, Edit
- Device management, View
- Device management, Edit
- Device telemetry, View
- Financial, View
- Gated Feature - Starlink Mobile Data, View
- Managed Account Information, View
- Service plan, View
- Service plan, Edit
- User management, Edit
visibility_roles:
- Admin
- Technical
- Technical Read Only
- Technical Configuration
- Service Account Management
failure_modes:
- status: 401
meaning: token expired or invalid; clear the cached token and mint a new one
- status: 403
meaning: the service account lacks the required permission for this endpoint or resource (user_lacks_required_permission)
rate_limits:
token_endpoint: 1000 authentication requests per 15 minutes per client IP
source: https://starlink.readme.io/docs/rate-limits-1