linode Linode Instances API

Create and manage Linode compute instances, including configuration profiles, disks, backups, networking, migration, resize, and rebuild operations.

OpenAPI Specification

linode-linode-instances-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Linode API v4 Account Linode Instances API
  description: The Linode API v4 provides programmatic access to the full range of Akamai Connected Cloud (formerly Linode) products and services. It enables developers to create and manage compute instances, deploy Kubernetes clusters, configure NodeBalancers, manage DNS domains, provision Block Storage volumes, control Object Storage buckets, set up firewalls, and administer account settings. The RESTful API uses OAuth and personal access tokens for authentication and returns JSON responses, with support for filtering and sorting across all resource endpoints.
  version: 4.189.0
  contact:
    name: Linode Support
    url: https://www.linode.com/support/
  termsOfService: https://www.linode.com/legal-tos/
servers:
- url: https://api.linode.com/v4
  description: Production Server
security:
- personalAccessToken: []
- oauth: []
tags:
- name: Linode Instances
  description: Create and manage Linode compute instances, including configuration profiles, disks, backups, networking, migration, resize, and rebuild operations.
paths:
  /linode/instances:
    get:
      operationId: getLinodeInstances
      summary: List Linodes
      description: Returns a paginated list of Linode instances on your account, including their status, region, type, and IP addresses.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/pageParam'
      - $ref: '#/components/parameters/pageSizeParam'
      responses:
        '200':
          description: Linode instances retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedLinodeList'
        '401':
          description: Unauthorized - invalid or missing authentication
    post:
      operationId: createLinodeInstance
      summary: Create a Linode
      description: Creates a new Linode instance. Requires a region, type, and either an image or backup to deploy from. Optionally accepts root password, authorized keys, StackScript, and other configuration options.
      tags:
      - Linode Instances
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinodeRequest'
      responses:
        '200':
          description: Linode instance created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Linode'
        '400':
          description: Bad request - invalid parameters
        '401':
          description: Unauthorized - invalid or missing authentication
  /linode/instances/{linodeId}:
    get:
      operationId: getLinodeInstance
      summary: Get a Linode
      description: Returns the details for a single Linode instance, including its status, region, type, IP addresses, and configuration.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/linodeIdParam'
      responses:
        '200':
          description: Linode instance retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Linode'
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Linode instance not found
    put:
      operationId: updateLinodeInstance
      summary: Update a Linode
      description: Updates a Linode instance, including its label, group, alerts, and watchdog settings.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/linodeIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinodeUpdateRequest'
      responses:
        '200':
          description: Linode instance updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Linode'
        '400':
          description: Bad request - invalid parameters
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Linode instance not found
    delete:
      operationId: deleteLinodeInstance
      summary: Delete a Linode
      description: Deletes a Linode instance. All disks, backups, and IP addresses associated with the instance will be permanently removed.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/linodeIdParam'
      responses:
        '200':
          description: Linode instance deleted successfully
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Linode instance not found
  /linode/instances/{linodeId}/boot:
    post:
      operationId: bootLinodeInstance
      summary: Boot a Linode
      description: Boots a Linode instance. Optionally specify a configuration profile to boot with.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/linodeIdParam'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                config_id:
                  type: integer
                  description: The ID of the configuration profile to boot with.
      responses:
        '200':
          description: Linode instance booted successfully
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Linode instance not found
  /linode/instances/{linodeId}/reboot:
    post:
      operationId: rebootLinodeInstance
      summary: Reboot a Linode
      description: Reboots a Linode instance. Optionally specify a configuration profile to boot with after the reboot.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/linodeIdParam'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                config_id:
                  type: integer
                  description: The ID of the configuration profile to boot with.
      responses:
        '200':
          description: Linode instance rebooted successfully
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Linode instance not found
  /linode/instances/{linodeId}/shutdown:
    post:
      operationId: shutdownLinodeInstance
      summary: Shut down a Linode
      description: Shuts down a running Linode instance. The instance will be placed in an offline state.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/linodeIdParam'
      responses:
        '200':
          description: Linode instance shut down successfully
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Linode instance not found
  /linode/instances/{linodeId}/resize:
    post:
      operationId: resizeLinodeInstance
      summary: Resize a Linode
      description: Resizes a Linode instance to a new plan type. The instance must be powered off or will be automatically shut down during the resize.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/linodeIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - type
              properties:
                type:
                  type: string
                  description: The Linode type ID to resize to.
                allow_auto_disk_resize:
                  type: boolean
                  description: Whether to automatically resize the primary disk.
                  default: true
      responses:
        '200':
          description: Linode instance resize initiated successfully
        '400':
          description: Bad request - invalid parameters
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Linode instance not found
  /linode/instances/{linodeId}/rebuild:
    post:
      operationId: rebuildLinodeInstance
      summary: Rebuild a Linode
      description: Rebuilds a Linode instance with a new image. All existing disks will be destroyed and a new root disk will be created.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/linodeIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinodeRebuildRequest'
      responses:
        '200':
          description: Linode instance rebuild initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Linode'
        '400':
          description: Bad request - invalid parameters
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Linode instance not found
  /linode/instances/{linodeId}/clone:
    post:
      operationId: cloneLinodeInstance
      summary: Clone a Linode
      description: Clones a Linode instance to a new or existing instance. The clone will include the source instance's disks and configuration profiles.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/linodeIdParam'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                region:
                  type: string
                  description: The region to clone to.
                type:
                  type: string
                  description: The Linode type for the new clone.
                label:
                  type: string
                  description: The label for the new clone.
                linode_id:
                  type: integer
                  description: An existing Linode ID to clone to.
      responses:
        '200':
          description: Linode instance clone initiated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Linode'
        '400':
          description: Bad request - invalid parameters
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Linode instance not found
  /linode/instances/{linodeId}/backups:
    get:
      operationId: getBackups
      summary: List backups
      description: Returns the available backups for a Linode instance, including automatic daily and weekly snapshots.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/linodeIdParam'
      responses:
        '200':
          description: Backups retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BackupResponse'
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Linode instance not found
  /linode/instances/{linodeId}/disks:
    get:
      operationId: getLinodeDisks
      summary: List disks
      description: Returns a paginated list of disks attached to a Linode instance.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/linodeIdParam'
      - $ref: '#/components/parameters/pageParam'
      - $ref: '#/components/parameters/pageSizeParam'
      responses:
        '200':
          description: Disks retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedDiskList'
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Linode instance not found
  /linode/instances/{linodeId}/configs:
    get:
      operationId: getLinodeConfigs
      summary: List configuration profiles
      description: Returns a paginated list of configuration profiles for a Linode instance.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/linodeIdParam'
      - $ref: '#/components/parameters/pageParam'
      - $ref: '#/components/parameters/pageSizeParam'
      responses:
        '200':
          description: Configuration profiles retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedConfigList'
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Linode instance not found
  /linode/instances/{linodeId}/ips:
    get:
      operationId: getLinodeIPs
      summary: Get networking information
      description: Returns networking information for a Linode instance, including its IPv4 and IPv6 addresses.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/linodeIdParam'
      responses:
        '200':
          description: Networking information retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinodeIPAddresses'
        '401':
          description: Unauthorized - invalid or missing authentication
        '404':
          description: Linode instance not found
  /linode/types:
    get:
      operationId: getLinodeTypes
      summary: List types
      description: Returns a paginated list of available Linode instance types, including their resources, pricing, and availability.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/pageParam'
      - $ref: '#/components/parameters/pageSizeParam'
      responses:
        '200':
          description: Linode types retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedLinodeTypeList'
  /linode/kernels:
    get:
      operationId: getKernels
      summary: List kernels
      description: Returns a paginated list of available kernels that can be used with Linode instances.
      tags:
      - Linode Instances
      parameters:
      - $ref: '#/components/parameters/pageParam'
      - $ref: '#/components/parameters/pageSizeParam'
      responses:
        '200':
          description: Kernels retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedKernelList'
components:
  schemas:
    IPv6Address:
      type: object
      properties:
        address:
          type: string
          description: The IPv6 address.
        prefix:
          type: integer
          description: The network prefix length.
        rdns:
          type: string
          description: The reverse DNS entry.
        type:
          type: string
          description: The type of IPv6 address.
        region:
          type: string
          description: The region for this address.
    IPv6Range:
      type: object
      properties:
        range:
          type: string
          description: The IPv6 range.
        prefix:
          type: integer
          description: The prefix length.
        region:
          type: string
          description: The region for this range.
    Pagination:
      type: object
      properties:
        page:
          type: integer
          description: The current page number.
        pages:
          type: integer
          description: The total number of pages.
        results:
          type: integer
          description: The total number of results.
    LinodeRequest:
      type: object
      required:
      - region
      - type
      properties:
        region:
          type: string
          description: The region where the Linode will be created.
        type:
          type: string
          description: The Linode type to deploy.
        image:
          type: string
          description: The image to deploy with. Required if no backup_id is provided.
        label:
          type: string
          minLength: 3
          maxLength: 64
          pattern: ^[a-zA-Z]((?!--|__)[a-zA-Z0-9-_])+$
          description: The label for the new Linode instance.
        root_pass:
          type: string
          description: The root password for the new Linode instance.
        authorized_keys:
          type: array
          items:
            type: string
          description: A list of public SSH keys to deploy with.
        authorized_users:
          type: array
          items:
            type: string
          description: A list of usernames whose SSH keys to deploy.
        tags:
          type: array
          items:
            type: string
          description: Tags for the new Linode.
        stackscript_id:
          type: integer
          description: A StackScript ID to deploy with.
        stackscript_data:
          type: object
          additionalProperties:
            type: string
          description: UDF data for the StackScript.
        backup_id:
          type: integer
          description: A backup ID to restore from.
        backups_enabled:
          type: boolean
          description: Whether to enable the backup service.
        private_ip:
          type: boolean
          description: Whether to assign a private IPv4 address.
        booted:
          type: boolean
          default: true
          description: Whether the new Linode should be booted after creation.
    Linode:
      type: object
      properties:
        id:
          type: integer
          description: The unique ID of this Linode instance.
        label:
          type: string
          description: The label for this Linode instance.
        region:
          type: string
          description: The region where this Linode is located.
        type:
          type: string
          description: The Linode type ID of this instance.
        image:
          type: string
          description: The image ID used to deploy this Linode.
        status:
          type: string
          enum:
          - running
          - offline
          - booting
          - rebooting
          - shutting_down
          - provisioning
          - deleting
          - migrating
          - rebuilding
          - cloning
          - restoring
          - stopped
          description: The current status of the Linode instance.
        ipv4:
          type: array
          items:
            type: string
            format: ipv4
          description: The IPv4 addresses associated with this Linode.
        ipv6:
          type: string
          description: The IPv6 SLAAC address for this Linode.
        created:
          type: string
          format: date-time
          description: When this Linode was created.
        updated:
          type: string
          format: date-time
          description: When this Linode was last updated.
        group:
          type: string
          description: The display group for this Linode.
          deprecated: true
        tags:
          type: array
          items:
            type: string
          description: Tags applied to this Linode for organizational purposes.
        hypervisor:
          type: string
          description: The hypervisor this Linode is running on.
        specs:
          type: object
          properties:
            disk:
              type: integer
              description: The amount of disk space in MB.
            memory:
              type: integer
              description: The amount of RAM in MB.
            vcpus:
              type: integer
              description: The number of virtual CPUs.
            gpus:
              type: integer
              description: The number of GPUs.
            transfer:
              type: integer
              description: The monthly network transfer quota in GB.
          description: The hardware specifications for this Linode type.
        alerts:
          type: object
          properties:
            cpu:
              type: integer
              description: CPU usage alert threshold percentage.
            io:
              type: integer
              description: Disk IO rate alert threshold.
            network_in:
              type: integer
              description: Incoming network traffic alert threshold in Mb/s.
            network_out:
              type: integer
              description: Outgoing network traffic alert threshold in Mb/s.
            transfer_quota:
              type: integer
              description: Transfer quota usage alert threshold percentage.
          description: Alert thresholds for this Linode instance.
        backups:
          type: object
          properties:
            enabled:
              type: boolean
              description: Whether the backup service is enabled.
            available:
              type: boolean
              description: Whether any backups are available.
            schedule:
              type: object
              properties:
                day:
                  type: string
                  description: The day of the week for automatic backups.
                window:
                  type: string
                  description: The window for automatic backups.
          description: Information about this Linode's backup service.
        watchdog_enabled:
          type: boolean
          description: Whether Lassie the watchdog is enabled to restart this Linode if it crashes.
    Backup:
      type: object
      properties:
        id:
          type: integer
          description: The unique ID of this backup.
        type:
          type: string
          enum:
          - auto
          - snapshot
          description: The type of backup.
        status:
          type: string
          enum:
          - paused
          - pending
          - running
          - needsPostProcessing
          - successful
          - failed
          - userAborted
          description: The status of this backup.
        created:
          type: string
          format: date-time
          description: When this backup was created.
        updated:
          type: string
          format: date-time
          description: When this backup was last updated.
        finished:
          type: string
          format: date-time
          description: When this backup finished.
        label:
          type: string
          description: The label for snapshot backups.
        disks:
          type: array
          items:
            type: object
            properties:
              label:
                type: string
              size:
                type: integer
              filesystem:
                type: string
          description: Disk information for this backup.
    BackupResponse:
      type: object
      properties:
        automatic:
          type: array
          items:
            $ref: '#/components/schemas/Backup'
          description: Automatic backups.
        snapshot:
          type: object
          properties:
            current:
              $ref: '#/components/schemas/Backup'
            in_progress:
              $ref: '#/components/schemas/Backup'
          description: Snapshot backups.
    IPAddress:
      type: object
      properties:
        address:
          type: string
          description: The IP address.
        gateway:
          type: string
          description: The default gateway.
        subnet_mask:
          type: string
          description: The subnet mask.
        prefix:
          type: integer
          description: The network prefix length.
        type:
          type: string
          enum:
          - ipv4
          - ipv6
          description: The type of IP address.
        public:
          type: boolean
          description: Whether this is a public IP address.
        rdns:
          type: string
          description: The reverse DNS entry for this address.
        linode_id:
          type: integer
          description: The ID of the Linode this IP is assigned to.
        region:
          type: string
          description: The region for this IP address.
    LinodeRebuildRequest:
      type: object
      required:
      - image
      - root_pass
      properties:
        image:
          type: string
          description: The image to rebuild with.
        root_pass:
          type: string
          description: The root password for the rebuilt instance.
        authorized_keys:
          type: array
          items:
            type: string
          description: A list of public SSH keys.
        authorized_users:
          type: array
          items:
            type: string
          description: A list of usernames whose SSH keys to deploy.
        stackscript_id:
          type: integer
          description: A StackScript ID to deploy with.
        stackscript_data:
          type: object
          additionalProperties:
            type: string
          description: UDF data for the StackScript.
        booted:
          type: boolean
          default: true
          description: Whether to boot after rebuild.
    PaginatedLinodeTypeList:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          data:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                label:
                  type: string
                class:
                  type: string
                  enum:
                  - nanode
                  - standard
                  - dedicated
                  - gpu
                  - highmem
                  - premium
                disk:
                  type: integer
                memory:
                  type: integer
                vcpus:
                  type: integer
                gpus:
                  type: integer
                transfer:
                  type: integer
                network_out:
                  type: integer
                price:
                  type: object
                  properties:
                    hourly:
                      type: number
                    monthly:
                      type: number
    PaginatedConfigList:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          data:
            type: array
            items:
              type: object
              properties:
                id:
                  type: integer
                label:
                  type: string
                kernel:
                  type: string
                run_level:
                  type: string
                  enum:
                  - default
                  - single
                  - binbash
                virt_mode:
                  type: string
                  enum:
                  - paravirt
                  - fullvirt
                root_device:
                  type: string
                memory_limit:
                  type: integer
    PaginatedDiskList:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          data:
            type: array
            items:
              type: object
              properties:
                id:
                  type: integer
                label:
                  type: string
                status:
                  type: string
                  enum:
                  - ready
                  - not ready
                  - deleting
                size:
                  type: integer
                filesystem:
                  type: string
                  enum:
                  - raw
                  - swap
                  - ext3
                  - ext4
                  - initrd
                created:
                  type: string
                  format: date-time
                updated:
                  type: string
                  format: date-time
    PaginatedLinodeList:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          data:
            type: array
            items:
              $ref: '#/components/schemas/Linode'
    PaginatedKernelList:
      allOf:
      - $ref: '#/components/schemas/Pagination'
      - type: object
        properties:
          data:
            type: array
            items:
              type: object
              properties:
                id:
                  type: string
                label:
                  type: string
                version:
                  type: string
                architecture:
                  type: string
                  enum:
                  - x86_64
                  - i386
    LinodeUpdateRequest:
      type: object
      properties:
        label:
          type: string
          minLength: 3
          maxLength: 64
          description: The label for the Linode instance.
        tags:
          type: array
          items:
            type: string
          description: Tags for the Linode.
        watchdog_enabled:
          type: boolean
          description: Whether to enable Lassie the watchdog.
        alerts:
          type: object
          properties:
            cpu:
              type: integer
            io:
              type: integer
            network_in:
              type: integer
            network_out:
              type: integer
            transfer_quota:
              type: integer
    LinodeIPAddresses:
      type: object
      properties:
        ipv4:
          type: object
          properties:
            public:
              type: array
              items:
                $ref: '#/components/schemas/IPAddress'
              description: Public IPv4 addresses.
            private:
              type: array
              items:
                $ref: '#/components/schemas/IPAddress'
              description: Private IPv4 addresses.
            shared:
              type: array
              items:
                $ref: '#/components/schemas/IPAddress'
              description: Shared IPv4 addresses.
            reserved:
              type: array
              items:
                $ref: '#/components/schemas/IPAddress'
              description: Reserved IPv4 addresses.
        ipv6:
          type: object
          properties:
            slaac:
              $ref: '#/components/schemas/IPv6Address'
            link_local:
              $ref: '#/components/schemas/IPv6Address'
            global:
              type: array
              items:
                $ref: '#/components/schemas/IPv6Range'
  parameters:
    linodeIdParam:
      name: linodeId
      in: path
      required: true
      schema:
        type: integer
      description: The ID of the Linode instance.
    pageSizeParam:
      name: page_size
      in: query
      schema:
        type: integer
        minimum: 25
        maximum: 500
        default: 100
      description: The number of items per page.
    pageParam:
      name: page
      in: query
      schema:
        type: integer
        minimum: 1
        default: 1
      description: The page number to return.
  securitySchemes:
    personalAccessToken:
      type: http
      scheme: bearer
      description: A personal access token generated from the Linode Cloud Manager that grants access to the API based on the token's scopes.
    oauth:
      type: oauth2
      description: OAuth 2.0 authentication for third-party applications.
      flows:
        authorizationCode:
          authorizationUrl: https://login.linode.com/oauth/authorize
          tokenUrl: https://login.linode.com/oauth/token
          scopes:
            account:read_only: Read access to account information
            account:read_write: Read and write access to account information
            domains:read_only: Read access to domains
            domains:read_write: Read and write access to domains
            events:read_only: Read access to even

# --- truncated at 32 KB (33 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/linode/refs/heads/main/openapi/linode-linode-instances-api-openapi.yml