openapi: 3.2.0 info: title: Starlink Public Service Lines 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: Service Lines paths: /public/v2/service-lines/{serviceLineNumber}: get: tags: - Service Lines summary: Get service line description: 'Required permission: Service plan, View.' parameters: - name: serviceLineNumber in: path description: Service line number required: true schema: type: string example: AST-511274-31364-54 responses: '400': description: Bad request. Invalid or missing parameter '401': description: Unauthorized '403': description: Missing required permission for this endpoint or resource '200': description: Service line retrieved content: application/json: schema: $ref: '#/components/schemas/ServiceLineResponseServiceResponse' '422': description: Failed to retrieve the service line content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' delete: tags: - Service Lines summary: Deactivate a service line description: 'Required permission: Service plan, Edit.' parameters: - name: serviceLineNumber in: path description: Service line number required: true schema: type: string example: AST-511274-31364-54 - name: reasonForCancellation in: query description: Optional reason for cancelling this service line schema: type: string - name: endNow in: query description: If service should end now, or on next bill day. Default is false schema: type: boolean default: false responses: '400': description: Bad request. Invalid or missing parameter '401': description: Unauthorized '403': description: Missing required permission for this endpoint or resource '200': description: Successfully deactivated the service line content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' '422': description: Failed to deactivate the service line content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' /public/v2/service-lines: get: tags: - Service Lines summary: Get all service lines description: 'Required permission: Service plan, View.' parameters: - name: addressReferenceId in: query description: Filter by an Address Reference ID schema: type: string format: uuid example: 55ec6574-10d8-bd9c-1951-d4184f4ae467 - name: searchString in: query description: Filter by fuzzy match of nickname, or exact match on UT ID, UT nickname, UT serial number, or service line number schema: type: string - name: dataPoolId in: query description: Filter for service lines on a given data pool schema: type: string - name: page in: query description: The index of the page, starting at 0. Page size is 100 schema: type: integer format: int32 default: 0 - name: orderByCreatedDateDescending in: query description: Sort the paginated results by created date schema: type: boolean default: true responses: '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden from retrieving service lines for this account '200': description: Service lines retrieved content: application/json: schema: $ref: '#/components/schemas/ServiceLineResponsePaginatedServiceResponse' '422': description: Failed to retrieve service lines content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' post: tags: - Service Lines summary: Create service line description: 'Required permission: Service plan, Edit.
Service line must be linked to an address and a subscription/product-ID, and can optionally be immediately configured with data blocks.' requestBody: description: ServiceLineCreateRequest content: application/json: schema: $ref: '#/components/schemas/ServiceLineCreateRequestV2' responses: '400': description: Bad Request '401': description: Unauthorized '403': description: Forbidden from creating service line on this account '201': description: Service line created content: application/json: schema: $ref: '#/components/schemas/ServiceLineResponseServiceResponse' '422': description: Failed to create service line content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' /public/v2/service-lines/{serviceLineNumber}/nickname: put: tags: - Service Lines summary: Set service line nickname description: 'Required permission: Service plan, Edit.' parameters: - name: serviceLineNumber in: path description: Service line number required: true schema: type: string example: AST-511274-31364-54 requestBody: description: ServiceLineUpdateNicknameRequest content: application/json: schema: $ref: '#/components/schemas/ServiceLineUpdateNicknameRequest' responses: '400': description: Bad request. Invalid or missing parameter '401': description: Unauthorized '403': description: Missing required permission for this endpoint or resource '200': description: Successfully updated service line nickname content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' '422': description: Failed to update service line nickname content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' /public/v2/service-lines/{serviceLineNumber}/product: put: tags: - Service Lines summary: Update service line product description: 'Required permission: Service plan, Edit.' parameters: - name: serviceLineNumber in: path description: Service line number required: true schema: type: string example: AST-511274-31364-54 requestBody: description: The recurring data blocks to set on the new product, if it on a compatible product. Leave null if otherwise. content: application/json: schema: $ref: '#/components/schemas/UpdateServiceLineProductRequest' responses: '400': description: Bad request. Invalid or missing parameter '401': description: Unauthorized '403': description: Missing required permission for this endpoint or resource '200': description: Successfully updated service line product content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' '422': description: Failed to update service line product content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' /public/v2/service-lines/{serviceLineNumber}/public-ip: put: tags: - Service Lines summary: Set service line public IP setting description: 'Required permission: Device command and configuration, Edit.
Enable or disable public ip setting on a service line' parameters: - name: serviceLineNumber in: path description: Service line number required: true schema: type: string example: AST-511274-31364-54 requestBody: description: ServiceLineSetPublicIpRequest content: application/json: schema: $ref: '#/components/schemas/ServiceLineSetPublicIpRequest' responses: '400': description: Bad request. Invalid or missing parameter '401': description: Unauthorized '403': description: Missing required permission for this endpoint or resource '200': description: Successfully set public IP setting content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' '422': description: Failed to set public IP setting content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' /public/v2/service-lines/{serviceLineNumber}/data/opt-in: post: tags: - Service Lines summary: Opt in priority data description: 'Required permission: Service plan, Edit.
Opt in the service line to continue using priority data after reaching the plan capacity. Only applies to some products.' parameters: - name: serviceLineNumber in: path description: Service line number required: true schema: type: string example: AST-511274-31364-54 responses: '400': description: Bad request. Invalid or missing parameter '401': description: Unauthorized '403': description: Missing required permission for this endpoint or resource '200': description: Successfully opted in service line content: application/json: schema: $ref: '#/components/schemas/OptInResponseServiceResponse' '422': description: Failed to opt in service line content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' /public/v2/service-lines/{serviceLineNumber}/data/opt-out: post: tags: - Service Lines summary: Opt out priority data description: 'Required permission: Service plan, Edit.
Opt out the service line from continuing to use priority data even when plan capacity is exceeded. If the service line reaches the plan capacity, it will switch to using standard data. Only applies to some products.' parameters: - name: serviceLineNumber in: path description: Service line number required: true schema: type: string example: AST-511274-31364-54 responses: '400': description: Bad request. Invalid or missing parameter '401': description: Unauthorized '403': description: Missing required permission for this endpoint or resource '200': description: Successfully opted out service line content: application/json: schema: $ref: '#/components/schemas/OptInResponseServiceResponse' '422': description: Failed to opt out service line content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' /public/v2/service-lines/{serviceLineNumber}/user-terminals: post: tags: - Service Lines summary: Add user terminal to service line description: 'Required permission: Service plan, Edit.
User terminal must already be on the account. See POST /v2/user-terminals to add user terminal to account.' parameters: - name: serviceLineNumber in: path description: Service line number required: true schema: type: string example: AST-511274-31364-54 requestBody: description: DeviceIdRequest content: application/json: schema: $ref: '#/components/schemas/DeviceIdRequest' responses: '400': description: Bad request. Invalid or missing parameter '401': description: Unauthorized '403': description: Missing required permission for this endpoint or resource '200': description: User terminals added to service line content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' '422': description: Failed to add the user terminal to the service line content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' /public/v2/service-lines/{serviceLineNumber}/user-terminals/{deviceId}: delete: tags: - Service Lines summary: Remove user terminal from service line description: 'Required permission: Service plan, Edit.
This removes the user terminal from the service line, but it remains on the account and can be added to another service line. This clears any L2VPN circuits configured for the terminal.' parameters: - name: serviceLineNumber in: path description: Service line number required: true schema: type: string example: AST-511274-31364-54 - name: deviceId in: path description: User terminal ID, kit serial number, or dish serial number. required: true schema: type: string example: 12345678-12345678-12345678 responses: '400': description: Bad request. Invalid or missing parameter '401': description: Unauthorized '403': description: Missing required permission for this endpoint or resource '200': description: Removed user terminal from service line content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' '422': description: Failed to remove user terminal from service line content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' /public/v2/service-lines/{serviceLineNumber}/data/recurring: put: tags: - Service Lines summary: Set recurring data blocks on service line description: 'Required permission: Service plan, Edit.
Service line must be on a top up plan' parameters: - name: serviceLineNumber in: path description: Service line number required: true schema: type: string requestBody: description: SetRecurringBlocksRequest content: application/json: schema: $ref: '#/components/schemas/RecurringDataBlocksRequest' responses: '400': description: Bad request. Invalid or missing parameter '401': description: Unauthorized '403': description: Missing required permission for this endpoint or resource '200': description: Successfully set recurring blocks on service line content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' '422': description: Failed to set service line recurring data blocks content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' /public/v2/service-lines/{serviceLineNumber}/data/top-up: post: tags: - Service Lines summary: Adds one-time top up data block to service line description: 'Required permission: Service plan, Edit.
Service line must be on a top up plan' parameters: - name: serviceLineNumber in: path description: The service line number required: true schema: type: string requestBody: description: The request object content: application/json: schema: $ref: '#/components/schemas/AddDataBlockRequest' responses: '400': description: Bad request. Invalid or missing parameter '401': description: Unauthorized '403': description: Missing required permission for this endpoint or resource '200': description: Successfully added data block content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' '422': description: Failed to update add data block to service line content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' /public/v2/service-lines/{serviceLineNumber}/billing-cycles/partial-periods: get: tags: - Service Lines summary: Get billing partial periods description: 'Required permission: Service plan, View.
Get the previous billing partial periods for this service line. For more information about this endpoint, see https://starlink.readme.io/docs/understanding-proration.' parameters: - name: serviceLineNumber in: path description: Service line number required: true schema: type: string example: AST-511274-31364-54 responses: '400': description: Bad request. Invalid or missing parameter '401': description: Unauthorized '403': description: Missing required permission for this endpoint or resource '200': description: Successfully retrieved partial periods content: application/json: schema: $ref: '#/components/schemas/PartialPeriodResponseListServiceResponse' '422': description: Failed to retrieve partial periods content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' /public/v2/service-lines/{serviceLineNumber}/consume-from-pool: patch: tags: - Service Lines summary: 'Pre-Release: Set whether a service line should consume from a data pool.' description: 'Required permission: Service plan, Edit.
This endpoint is available for select audiences only.' parameters: - name: serviceLineNumber in: path description: Service line number required: true schema: type: string example: AST-511274-31364-54 - name: consumeFromPool in: query description: Whether the service line should consume from pool, defaults to true schema: type: boolean default: true responses: '400': description: Bad request. Invalid or missing parameter '401': description: Unauthorized '403': description: Missing required permission for this endpoint or resource '200': description: Successfully updated service line content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' '422': description: Failed to update service line content: application/json: schema: $ref: '#/components/schemas/ServiceResponse' components: schemas: ServiceLineUpdateNicknameRequest: required: - nickname type: object properties: nickname: minLength: 1 type: string description: New nickname for the existing service line. additionalProperties: false ServiceLineResponse: type: object properties: addressReferenceId: type: string description: 'Address Reference ID of the address associated with the service line. Example: 55ec6574-10d8-bd9c-1951-d4184f4ae467' format: uuid serviceLineNumber: type: string description: 'The Service Line Number. Example: AST-511274-31364-54' nickname: type: - string - 'null' description: A user-defined nickname for this service line. productReferenceId: type: string description: The unique product identifier. delayedProductId: type: - string - 'null' description: Scheduled product change for next bill date. optInProductId: type: - string - 'null' description: Opt-in product id, opted out if empty. startDate: type: - string - 'null' description: The start date of the subscription. This is in UTC. format: date-time endDate: type: - string - 'null' description: The service line deactivation date, which only appears if the service line is deactivated. This is in UTC. format: date-time publicIp: type: boolean description: Indicates if service line is public IP. active: type: boolean description: Indicates if service line is active. aviationMetadata: $ref: '#/components/schemas/AviationMetadataResponse' dataBlocks: $ref: '#/components/schemas/ServiceLineDataBlocksSummaryResponse' additionalProperties: false ServiceLineCreateRequestV2: required: - addressReferenceId - productReferenceId type: object properties: addressReferenceId: type: string description: 'Address Reference ID to associate with the service line. Example: 55ec6574-10d8-bd9c-1951-d4184f4ae467' format: uuid productReferenceId: minLength: 1 type: string description: 'Subscription Product ID to associate with the service line. Example: business-subscription-100' dataBlockProducts: $ref: '#/components/schemas/ServiceLineDataBlocksRequest' additionalProperties: false RecurringDataBlocksRequest: type: object properties: recurringDataBlocks: type: - array - 'null' items: $ref: '#/components/schemas/AddDataBlockRequest' description: Recurring data blocks to configure dataPoolId: type: - string - 'null' description: If provided, onboard the service line onto an existing data pool. The data pool must be multi-service-line enabled. This parameter is mutually exclusive with RecurringDataBlocks. applyToCurrentMonth: type: - boolean - 'null' description: When true, creates additional blocks for the current billing cycle so the current month data block counts match the new recurring configuration. additionalProperties: false DeviceIdRequest: required: - deviceId type: object properties: deviceId: minLength: 1 type: string description: 'User terminal Id, kit serial number, or dish serial number. Ex: 12345678-12345678-12345678' additionalProperties: false OptInResponse: type: object properties: productId: type: string description: Opt in product Id. activatedDate: type: string description: Activation date. format: date-time deactivatedDate: type: - string - 'null' description: Deactivation date. format: date-time isInOptInCoolDown: type: boolean description: Whether service line is in cool down period from recently changing opted in state additionalProperties: false DataBlockSummaryResponse: type: object properties: productId: type: - string - 'null' description: The block's product id. startDate: type: string description: The block's start date. format: date-time expirationDate: type: string description: The block's end date. format: date-time count: type: integer description: How many blocks of this type there are. format: int32 dataAmount: type: number description: The data amount of each block. format: double dataUnitType: type: - string - 'null' description: The unit that the data amount is in. additionalProperties: false ServiceLineDataBlocksRequest: type: object properties: recurringDataBlocks: type: - array - 'null' items: $ref: '#/components/schemas/AddDataBlockRequest' description: Recurring data blocks to configure dataPoolId: type: - string - 'null' description: 'Pre-Release: The ID of an existing multi-service-line data pool to which a new service line should be added. This field is mutually exclusive with RecurringDataBlocks and cannot be used together with it. Available for select audiences only.' additionalProperties: false AviationMetadataResponse: type: object properties: tailNumber: type: - string - 'null' seatCount: type: integer format: int32 airlineIataCode: type: - string - 'null' aircraftIataCode: type: - string - 'null' airlineIcaoCode: type: - string - 'null' aircraftIcaoCode: type: - string - 'null' stcNumber: type: - string - 'null' additionalProperties: false AddDataBlockRequest: required: - count - productId type: object properties: productId: minLength: 1 type: string description: Product Id for data blocks count: type: integer description: Quantity of the specified data block to add format: int32 additionalProperties: false ServiceLineDataBlocksSummaryResponse: type: object properties: recurringBlocksCurrentBillingCycle: type: - array - 'null' items: $ref: '#/components/schemas/DataBlockSummaryResponse' description: The current billing cycle's monthly recurring data blocks. recurringBlocksNextBillingCycle: type: - array - 'null' items: $ref: '#/components/schemas/DataBlockSummaryResponse' description: Next billing cycle's monthly recurring data blocks. delayedProductRecurringBlocksNextCycle: type: - array - 'null' items: $ref: '#/components/schemas/DataBlockSummaryResponse' description: What recurring blocks will be when the service line switches to the delayed product. topUpBlocksOptInPurchase: type: - array - 'null' items: $ref: '#/components/schemas/DataBlockSummaryResponse' description: What top up blocks were automatically purchased because the service line was out of data and opted in. topUpBlocksOneTimePurchase: type: - array - 'null' items: $ref: '#/components/schemas/DataBlockSummaryResponse' description: What top up blocks were manually purchased. additionalProperties: false ServiceLineSetPublicIpRequest: required: - publicIp type: object properties: publicIp: type: boolean description: If public IP should be enabled or not additionalProperties: false PartialPeriodResponse: type: object properties: productReferenceId: type: string description: The unique product identifier periodStart: type: string description: The timestamp of the start of the partial period format: date-time periodEnd: type: string description: The timestamp of the end of the partial period 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 ServiceLineResponseServiceResponse: 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/ServiceLineResponse' additionalProperties: false ServiceLineResponsePaginatedServiceResponse: 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/ServiceLineResponsePaginated' additionalProperties: false OptInResponseServiceResponse: 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/OptInResponse' additionalProperties: false ValidationResult: type: object properties: memberNames: type: - array - 'null' items: type: string readOnly: true errorMessage: type: - string - 'null' additionalProperties: false ServiceLineResponsePaginated: type: object properties: pageIndex: type: integer format: int32 limit: type: integer format: int32 isLastPage: type: boolean results: type: - array - 'null' items: $ref: '#/components/schemas/ServiceLineResponse' totalCount: type: integer format: int32 additionalProperties: false UpdateServiceLineProductRequest: required: - productReferenceId type: object properties: productReferenceId: minLength: 1 type: string description: Product Id. recurringDataBlocks: type: - array - 'null' items: $ref: '#/components/schemas/AddDataBlockRequest' description: Recurring data blocks to configure. dataPoolId: type: - string - 'null' description: 'Pre-Release: If provided, onboard the service line onto an existing multi-service-line data pool. This parameter is mutually exclusive with RecurringDataBlocks. Available for select audiences only.' delayUpdate: type: - boolean - 'null' description: Specifies when the change will be applied. True forces changes to be scheduled on the next billing cycle, False forces changes to occur immediately, Null uses legacy logic allowing upgrades to occur immediately and downgrades to be delayed. additionalProperties: false PartialPeriodResponseListServiceResponse: 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/PartialPeriodResponse' additionalProperties: false