openapi: 3.2.0 info: title: Starlink Public Account 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: Account paths: /public/v2/account: get: tags: - Account summary: Get account information description: 'Required permission: Account information, View.' responses: '401': description: Unauthorized '403': description: Missing required permission for this endpoint or resource '200': description: Account retrieved content: application/json: schema: $ref: '#/components/schemas/AccountResponseV2ServiceResponse' '422': description: Failed to retrieve account content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' /public/v2/data-usage/query: post: tags: - Account summary: Query data usage description: 'Required permission: Service plan, View.
Retrieve the real-time data tracking info for this account''s data usage. For detailed instructions, please refer to the API documentation: https://starlink.readme.io/docs/data-usage-api' parameters: - name: page in: query description: Index of page to get. schema: type: integer format: int32 default: 0 - name: limit in: query description: Amount of service lines to retrieve per page. Defaults to 50, can request up to 250. schema: type: integer format: int32 default: 50 requestBody: description: Data usage query filters content: application/json: schema: $ref: '#/components/schemas/QueryDataUsageRequest' responses: '400': description: Bad Request '401': description: Unauthorized '403': description: Missing required permission for this endpoint or resource '200': description: Successfully retrieved data usage content: application/json: schema: $ref: '#/components/schemas/ServiceLineDataUsageForBillingCyclesPaginatedServiceResponse' '422': description: Failed to query data usage content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' /public/v2/products: get: tags: - Account summary: Get products description: 'Required permission: Service plan, View.
Gets all products available to this account that could be assigned to service lines. Each product includes data block product info if compatible.' parameters: - name: page in: query description: Index of page to get. Page size is 100 schema: type: integer format: int32 default: 0 example: 0 responses: '400': description: Bad Request '401': description: Unauthorized '403': description: Missing required permission for this endpoint '200': description: Subscription products retrieved content: application/json: schema: $ref: '#/components/schemas/SubscriptionProductResponsePaginatedServiceResponse' '422': description: Failed to retrieve subscriptions content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' components: schemas: AccountResponseV2ServiceResponse: 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: $ref: '#/components/schemas/AccountResponseV2' additionalProperties: false SubscriptionProductResponsePaginatedServiceResponse: 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: $ref: '#/components/schemas/SubscriptionProductResponsePaginated' additionalProperties: false DataBlockType: enum: - IncludedWithBaseSubscription - RecurringPerBillingCycle - Overage - OneTimePurchase type: string x-enumNames: - IncludedWithBaseSubscription - RecurringPerBillingCycle - Overage - OneTimePurchase DataBlockMonthlyPublicResponse: type: object properties: startDate: type: string description: Start date of the respective month. format: date-time endDate: type: string description: End date of the respective month. format: date-time serviceLineUsage: type: array items: $ref: '#/components/schemas/DataBlockServiceLineUsagePublicResponse' description: Montly usage breakdown by service lines. additionalProperties: false SubscriptionProductResponsePaginated: type: object properties: pageIndex: type: integer format: int32 limit: type: integer format: int32 isLastPage: type: boolean results: type: - array - 'null' items: $ref: '#/components/schemas/SubscriptionProductResponse' totalCount: type: integer format: int32 additionalProperties: false ServiceLineDataUsageForBillingCyclesPaginatedServiceResponse: 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: $ref: '#/components/schemas/ServiceLineDataUsageForBillingCyclesPaginated' additionalProperties: false DataUsageDailyV2: type: object properties: date: type: string description: Date of usage (UTC). format: date-time priorityGB: type: number description: Total priority (unrestricted, high-speed) data consumed on this day in GB. Includes opt-in priority data. format: double optInPriorityGB: type: number description: Portion of priority data consumed while opted into overage on this day in GB. This is a subset of PriorityGB, not additive. format: double standardGB: type: number description: Standard (deprioritized) data consumed on this day in GB. format: double nonBillableGB: type: number description: Non-billable data consumed on this day in GB. format: double additionalProperties: false ServiceLineDataUsageForBillingCyclesPaginated: type: object properties: pageIndex: type: integer format: int32 limit: type: integer format: int32 isLastPage: type: boolean results: type: - array - 'null' items: $ref: '#/components/schemas/ServiceLineDataUsageForBillingCycles' totalCount: type: integer format: int32 additionalProperties: false DataProductResponse: type: object properties: productId: type: - string - 'null' price: type: number format: double isoCurrencyCode: type: - string - 'null' dataAmount: type: number format: double dataUnit: type: - string - 'null' additionalProperties: false DataBlockServiceLineUsagePublicResponse: type: object properties: serviceLineNumber: type: string description: Service line number. consumedAmountGB: type: number description: GB amount that the service line consumed from the block. format: double additionalProperties: false DataProductsResponse: type: object properties: topUpProduct: $ref: '#/components/schemas/DataProductResponse' dataBlockProducts: type: - array - 'null' items: $ref: '#/components/schemas/DataProductResponse' description: The data block products that are available for this service plan. additionalProperties: false DataOverageType: enum: - 0 - 1 - 2 - 3 type: integer format: int32 x-enumNames: - None - PriorityPerGb - DeprioritizedPerGb - LimitWithNoOverageData SubscriptionProductResponse: type: object properties: productReferenceId: type: string description: The unique product identifier name: type: string description: Name of the product price: type: number description: Monthly price format: double isoCurrencyCode: type: string description: Currency code for the price isSla: type: boolean description: If Product Has SLA maxNumberOfUserTerminals: type: - integer - 'null' description: The maximum number of user terminals that can be assigned to a single service line using this product. Null response means an unlimited number of UTs can be assigned. format: int32 dataProducts: $ref: '#/components/schemas/DataProductsResponse' additionalProperties: false DataBucketType: enum: - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 type: integer format: int32 x-enumNames: - Unknown - MobileRestricted - MobileUnrestricted - FixedRestricted - FixedUnrestricted - NonBillable - MobileDeprioritizedLimited - FixedDeprioritizedLimited - Residential - ResidentialLite - Roam QueryDataUsageRequest: type: object properties: serviceLineNumbers: type: - array - 'null' items: type: string description: Service line numbers to filter by. Queries for all service lines on account if omitted previousBillingCycles: type: - integer - 'null' description: Number of previous billing cycles to include in addition to the current one. Defaults to 1 format: int32 activeServiceLinesOnly: type: boolean description: Whether to filter by only active service lines. Defaults to true queryStartDate: type: - string - 'null' description: Override the first cycle's start date with the provided query start date format: date-time additionalProperties: false DataBlockUsagePublicResponse: type: object properties: dataBlockId: type: string description: Data block ID startDateUtc: type: string description: UTC start date of the data block. format: date-time expirationDateUtc: type: string description: UTC expiration date of the data block. format: date-time totalAmountGB: type: number description: Total GB capacity, calculated by multiplying BlocksCount and PerBlockAmountGB. format: double consumedAmountGB: type: number description: How much data has been used on the block. format: double perBlockAmountGB: type: number description: GB capacity per individual block. format: double dataBlockType: $ref: '#/components/schemas/DataBlockType' productId: type: string description: Product ID of the data block. blocksCount: type: integer description: Number of data blocks. format: int32 perBlockPrice: type: number description: Price per individual data block. format: double totalPrice: type: number description: Total price, calculated by multiplying PerBlockPrice and BlocksCount. format: double readOnly: true isoCurrencyCode: type: string description: Currency code for the price. serviceLineUsage: type: array items: $ref: '#/components/schemas/DataBlockServiceLineUsagePublicResponse' description: Usage breakdown by service lines. monthlyUsage: type: array items: $ref: '#/components/schemas/DataBlockMonthlyPublicResponse' description: Usage breakdown by month. additionalProperties: false DataUsageOverageLine: type: object properties: restricted: $ref: '#/components/schemas/DataBucketType' unrestricted: $ref: '#/components/schemas/DataBucketType' pricePerGB: type: number description: Price per GB for overage consumption (e.g., 1.00 for $1.00/GB). format: double usageLimitGB: type: number description: Plan's included priority data limit in GB before overage charges apply. Zero for plans that are restricted by default. format: double overageAmountGB: type: number description: Amount of priority data consumed beyond the usage limit while opted into overage, in GB. Only opt-in priority data counts toward overage. format: double consumedAmountGB: type: number description: Amount of priority data consumed up to the usage limit, in GB. format: double overagePrice: type: number description: Total overage cost before taxes and fees. format: double productId: type: string description: Product ID for the overage product. dataOverageType: $ref: '#/components/schemas/DataOverageType' activeFrom: type: - string - 'null' description: Date when this overage period began tracking usage (UTC). Null if no usage has been recorded yet. format: date-time additionalProperties: false 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 ServiceLineDataUsageForBillingCycles: type: object properties: accountNumber: type: string description: Account number that owns this service line. serviceLineNumber: type: string description: Service line number for which usage data is reported. startDate: type: string description: Start date of the first billing cycle in the response (UTC). format: date-time endDate: type: string description: End date of the last billing cycle in the response (UTC). format: date-time billingCycles: type: array items: $ref: '#/components/schemas/DataUsageBillingCycleV2' description: Data usage grouped by billing cycle, ordered chronologically. The most recent cycle appears last in the array. servicePlan: $ref: '#/components/schemas/DataServicePlan' lastUpdated: type: - string - 'null' description: Timestamp when the usage data was last updated in the cache. Only present for cached data (typically yesterday and later). format: date-time additionalProperties: false ValidationResult: type: object properties: memberNames: type: - array - 'null' items: type: string readOnly: true errorMessage: type: - string - 'null' additionalProperties: false DataServicePlan: required: - dataCategoryMapping - isMobilePlan - isOptedIntoOverage - productId - usageLimitGB type: object properties: isoCurrencyCode: type: - string - 'null' description: ISO currency code for displaying prices (e.g., "USD", "EUR"). Null if no subscription exists. isMobilePlan: type: boolean description: Indicates if this is a mobile-type plan (mobility class is nomadic or mobile). activeFrom: type: - string - 'null' description: Date when data usage tracking began for this product (UTC). May differ from subscription start date. format: date-time subscriptionActiveFrom: type: - string - 'null' description: Date when the service line's subscription started (UTC). format: date-time subscriptionEndDate: type: - string - 'null' description: Date when the subscription ended (UTC). Null for active subscriptions. format: date-time overageName: type: string description: Display name for the overage product shown in opt-in/out interfaces. Empty string if no overage product exists. overageDescription: type: string description: Description of the overage product shown in opt-in/out interfaces. Empty string if no overage product exists. isOptedIntoOverage: type: boolean description: Indicates whether the service line is currently opted into overage for metered plans. overageLineDeactivatedDate: type: - string - 'null' description: Most recent date and time when overage opt-in was disabled (UTC). Null if never disabled or currently opted in. format: date-time overageLine: $ref: '#/components/schemas/DataUsageOverageLine' dataPoolUsage: $ref: '#/components/schemas/DataPoolUsagePublicResponse' productId: minLength: 1 type: string description: Product ID identifying the current subscription plan. Empty string if no subscription exists. usageLimitGB: type: number description: Usage limit in GB for this plan. For metered plans, this is the priority data limit. For Priority data plans, this is the total data pool capacity. format: double dataCategoryMapping: type: object additionalProperties: $ref: '#/components/schemas/DataBucketType' description: Deprecated. Value will always be empty dictionary. additionalProperties: false AccountResponseV2: type: object properties: accountNumber: type: string description: 'The Account Number. Example: ACC-511274-31364-54' regionCode: type: string description: 'The region code of the account. Example: US' accountName: type: - string - 'null' description: The name of the account activeSuspensions: type: - array - 'null' items: type: string description: Active suspensions on account additionalProperties: false DataUsageBillingCycleV2: type: object properties: startDate: type: string description: Start date of the billing cycle. format: date-time endDate: type: string description: End date of the billing cycle. format: date-time dailyDataUsage: type: array items: $ref: '#/components/schemas/DataUsageDailyV2' description: Daily data usage breakdown for each day in the billing cycle. Omits days with no recorded usage. overageLines: type: array items: $ref: '#/components/schemas/DataUsageOverageLine' description: Overage lines for metered plans showing usage beyond plan limits. Empty for plans without overage or cycles with no overage. May contain multiple lines if subscription changed mid-cycle. dataPoolUsage: type: array items: $ref: '#/components/schemas/DataPoolUsagePublicResponse' description: Data pool usage information for Priority data plans. Empty for metered plans or if no data pools are attached. totalPriorityGB: type: number description: Total priority data consumed in this billing cycle (GB), rounded to 2 decimal places. Includes opt-in priority data. format: double readOnly: true totalStandardGB: type: number description: Total standard data consumed in this billing cycle (GB), rounded to 2 decimal places. format: double readOnly: true totalOptInPriorityGB: type: number description: Total priority data consumed while opted into overage in this billing cycle (GB), rounded to 2 decimal places. This is a subset of TotalPriorityGB. format: double readOnly: true totalNonBillableGB: type: number description: Total non-billable data consumed in this billing cycle (GB), rounded to 2 decimal places. format: double readOnly: true additionalProperties: false DataPoolUsagePublicResponse: type: object properties: accountNumber: type: string description: Account number that owns this data pool. dataPoolId: type: string description: Data pool ID. lastUpdated: type: string description: Timestamp when the data pool usage was last updated (UTC). format: date-time dataBlocks: type: array items: $ref: '#/components/schemas/DataBlockUsagePublicResponse' description: Usage by data blocks in the pool. additionalProperties: false