> ## Documentation Index
> Fetch the complete documentation index at: https://www.latitude.sh/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Get the cluster kubeconfig

> Returns the kubeconfig for the cluster. It only exists once the control plane is up, so this endpoint answers 409 `NOT_READY` while the cluster is still provisioning — poll `GET /lks/clusters/{id}` until `kubeconfig_url` is set.




## OpenAPI

````yaml https://spec.speakeasy.com/latitude/latitude/latitude-sh-api-with-code-samples get /lks/clusters/{id}/kubeconfig
openapi: 3.0.1
info:
  title: Latitude.sh API
  version: '2023-06-01'
  description: >-
    The Latitude.sh API is a RESTful API to manage your Latitude.sh account. It
    allows you to perform the same actions as the Latitude.sh dashboard.
servers:
  - url: https://api.latitude.sh
    variables:
      latitude_api_key:
        default: <insert your api key here>
  - url: http://api.latitude.sh
    variables:
      latitude_api_key:
        default: <insert your api key here>
security: []
tags:
  - name: API keys
  - name: Baselines (Preview)
    description: >-
      Preview. Available to teams with the `baselines_api` feature flag. The
      shape of these endpoints may change before general availability.
  - name: Billing
  - name: Elastic Ips
  - name: Events
  - name: Firewalls
  - name: IP Addresses
  - name: Managed Databases
    description: Managed database instances (PostgreSQL, ClickHouse)
  - name: Kubernetes Clusters
  - name: LKS
  - name: Marketplace apps
  - name: Operating Systems
  - name: Plans
  - name: Public Networks
  - name: Private Networks
  - name: Projects
  - name: Regions
  - name: Roles
  - name: SSH Keys
  - name: Servers
  - name: Block Storage
  - name: Filesystem Storage
  - name: Object Storage
  - name: Tags
  - name: Teams
  - name: Team members
  - name: Traffic
  - name: User data
  - name: User profile
  - name: VPN Sessions
  - name: Virtual machines
  - name: Virtual machine backups
  - name: Virtual machine restores
paths:
  /lks/clusters/{id}/kubeconfig:
    get:
      tags:
        - LKS
      summary: Get the cluster kubeconfig
      description: >
        Returns the kubeconfig for the cluster. It only exists once the control
        plane is up, so this endpoint answers 409 `NOT_READY` while the cluster
        is still provisioning — poll `GET /lks/clusters/{id}` until
        `kubeconfig_url` is set.
      operationId: get-lks-cluster-kubeconfig
      parameters:
        - name: id
          in: path
          required: true
          description: 'The cluster ID (format: `lksc_<hash>`).'
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/vnd.api+json:
              examples:
                Ready:
                  value:
                    data:
                      id: lksc_pRMLydp0dQKr1
                      type: lks_cluster_kubeconfigs
                      attributes:
                        kubeconfig: |
                          apiVersion: v1
                          kind: Config
                          clusters:
                          - cluster:
                              server: https://lksc-prmlydp0dqkr1.lks.latitude.sh:6443
                            name: production
              schema:
                $ref: '#/components/schemas/lks_cluster_kubeconfig'
        '403':
          description: Forbidden
          content:
            application/vnd.api+json:
              examples:
                InsufficientPermissions:
                  summary: The member role cannot perform this action
                  value:
                    errors:
                      - code: USER_AUTHORIZATION_ERROR
                        title: User Authorization Error
                        detail: You are not authorized to perform this action.
                        status: '403'
                        meta: {}
              schema:
                $ref: '#/components/schemas/error_object'
        '404':
          description: Not Found
          content:
            application/vnd.api+json:
              examples:
                ClusterNotFound:
                  summary: Unknown cluster, or a cluster owned by another team
                  value:
                    errors:
                      - code: NOT_FOUND
                        title: Cluster Not Found
                        detail: Cluster 'lksc_pRMLydp0dQKr1' not found
                        status: '404'
                        meta: {}
              schema:
                $ref: '#/components/schemas/error_object'
        '409':
          description: Conflict — the control plane is not ready yet
          content:
            application/vnd.api+json:
              examples:
                NotReady:
                  value:
                    errors:
                      - code: NOT_READY
                        message: Kubeconfig is not available yet
              schema:
                $ref: '#/components/schemas/error_object'
        '502':
          description: Bad Gateway — NetBox is temporarily unavailable
          content:
            application/vnd.api+json:
              examples:
                UpstreamServiceError:
                  value:
                    errors:
                      - code: UPSTREAM_SERVICE_ERROR
                        title: Bad Gateway
                        detail: NetBox is temporarily unavailable. Please try again.
                        status: '502'
                        meta: {}
              schema:
                $ref: '#/components/schemas/error_object'
      security:
        - Bearer: []
      x-codeSamples:
        - lang: go
          label: Go (SDK)
          source: "package main\n\nimport(\n\t\"context\"\n\t\"os\"\n\tlatitudeshgosdk \"github.com/latitudesh/latitudesh-go-sdk\"\n\t\"log\"\n)\n\nfunc main() {\n    ctx := context.Background()\n\n    s := latitudeshgosdk.New(\n        latitudeshgosdk.WithSecurity(os.Getenv(\"LATITUDESH_BEARER\")),\n    )\n\n    res, err := s.Lks.GetLksClusterKubeconfig(ctx, \"<id>\")\n    if err != nil {\n        log.Fatal(err)\n    }\n    if res.LksClusterKubeconfig != nil {\n        // handle response\n    }\n}"
components:
  schemas:
    lks_cluster_kubeconfig:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
              example: lksc_pRMLydp0dQKr1
            type:
              type: string
              enum:
                - lks_cluster_kubeconfigs
            attributes:
              type: object
              properties:
                kubeconfig:
                  type: string
                  description: Full kubeconfig YAML
    error_object:
      type: object
      properties:
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
                nullable: true
              status:
                type: string
              title:
                type: string
              detail:
                type: string
              source:
                type: object
                properties:
                  pointer:
                    type: string
                  parameter:
                    type: string
              meta:
                type: object
  securitySchemes:
    Bearer:
      type: apiKey
      name: Authorization
      in: header

````