openapi: 3.1.0
info:
title: Linode API v4
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/
externalDocs:
description: Linode API v4 Documentation
url: https://techdocs.akamai.com/linode-api/reference/api
servers:
- url: https://api.linode.com/v4
description: Production Server
tags:
- name: Account
description: >-
Manage your account settings, users, billing information, OAuth clients,
service transfers, and payment methods.
- name: Databases
description: >-
Manage Managed Database instances including MySQL and PostgreSQL clusters,
backups, credentials, and maintenance windows.
- name: Domains
description: >-
Manage DNS domains and their associated resource records including A, AAAA,
CNAME, MX, TXT, SRV, CAA, and NS records.
- name: Images
description: >-
Manage custom images for deploying Linode instances, including creating
images from disks, uploading images, and managing image metadata.
- name: Linode Instances
description: >-
Create and manage Linode compute instances, including configuration
profiles, disks, backups, networking, migration, resize, and rebuild
operations.
- name: Linode Kubernetes Engine (LKE)
description: >-
Deploy and manage Kubernetes clusters, node pools, and cluster
configurations through the Linode Kubernetes Engine.
- name: Longview
description: >-
Manage Longview clients and subscriptions for system-level monitoring
and metrics collection on Linode instances.
- name: Managed
description: >-
Manage Linode Managed services including monitored contacts, credentials,
issues, service monitors, and SSH access settings.
- name: Networking
description: >-
Manage networking resources including IP addresses, IPv6 ranges and pools,
firewalls, VLANs, and IP address sharing and assignment.
- name: NodeBalancers
description: >-
Create and manage NodeBalancer load balancers, their configurations, and
backend nodes for distributing traffic across Linode instances.
- name: Object Storage
description: >-
Manage Object Storage buckets, access keys, clusters, and endpoints for
S3-compatible object storage.
- name: Placement Groups
description: >-
Create and manage placement groups for controlling the physical placement
of Linode instances within a data center.
- name: Profile
description: >-
Manage your user profile settings, SSH keys, authorized applications,
personal access tokens, and two-factor authentication.
- name: Regions
description: >-
List available data center regions and their capabilities for deploying
Linode services.
- name: StackScripts
description: >-
Create and manage StackScripts for automating the deployment and
configuration of Linode instances.
- name: Support
description: >-
Create and manage support tickets and view replies for getting help
from the Linode support team.
- name: Volumes
description: >-
Create and manage Block Storage volumes that can be attached to Linode
instances for persistent data storage.
- name: VPCs
description: >-
Create and manage Virtual Private Clouds for isolated network environments
and subnets for Linode instances.
security:
- personalAccessToken: []
- oauth: []
paths:
/account:
get:
operationId: getAccount
summary: Get account info
description: >-
Returns the contact and billing information related to your account,
including company name, address, phone number, and current balance.
tags:
- Account
responses:
'200':
description: Account information retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
'401':
description: Unauthorized - invalid or missing authentication
put:
operationId: updateAccount
summary: Update account info
description: >-
Updates contact and billing information on your account.
tags:
- Account
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
responses:
'200':
description: Account information updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Account'
'400':
description: Bad request - invalid parameters
'401':
description: Unauthorized - invalid or missing authentication
/account/users:
get:
operationId: getUsers
summary: List users
description: >-
Returns a paginated list of users on your account, including their
usernames, email addresses, and restricted status.
tags:
- Account
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/pageSizeParam'
responses:
'200':
description: Users retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedUserList'
'401':
description: Unauthorized - invalid or missing authentication
post:
operationId: createUser
summary: Create a user
description: >-
Creates a new user on your account. The new user will receive an email
to set their password.
tags:
- Account
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UserRequest'
responses:
'200':
description: User created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'400':
description: Bad request - invalid parameters
'401':
description: Unauthorized - invalid or missing authentication
/account/users/{username}:
get:
operationId: getUser
summary: Get a user
description: >-
Returns information about a single user on your account.
tags:
- Account
parameters:
- $ref: '#/components/parameters/usernameParam'
responses:
'200':
description: User retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'401':
description: Unauthorized - invalid or missing authentication
'404':
description: User not found
put:
operationId: updateUser
summary: Update a user
description: >-
Updates information about a user on your account, including their
username, email, and restricted status.
tags:
- Account
parameters:
- $ref: '#/components/parameters/usernameParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UserRequest'
responses:
'200':
description: User updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/User'
'400':
description: Bad request - invalid parameters
'401':
description: Unauthorized - invalid or missing authentication
'404':
description: User not found
delete:
operationId: deleteUser
summary: Delete a user
description: >-
Deletes a user from your account. The deleted user will lose access
to the account immediately.
tags:
- Account
parameters:
- $ref: '#/components/parameters/usernameParam'
responses:
'200':
description: User deleted successfully
'401':
description: Unauthorized - invalid or missing authentication
'404':
description: User not found
/account/events:
get:
operationId: getEvents
summary: List events
description: >-
Returns a paginated list of events on your account, ordered by creation
date descending. Events record actions taken on your account such as
instance creation, deletion, and configuration changes.
tags:
- Account
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/pageSizeParam'
responses:
'200':
description: Events retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedEventList'
'401':
description: Unauthorized - invalid or missing authentication
/account/events/{eventId}:
get:
operationId: getEvent
summary: Get an event
description: >-
Returns a single event object by its ID.
tags:
- Account
parameters:
- $ref: '#/components/parameters/eventIdParam'
responses:
'200':
description: Event retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Event'
'401':
description: Unauthorized - invalid or missing authentication
'404':
description: Event not found
/account/invoices:
get:
operationId: getInvoices
summary: List invoices
description: >-
Returns a paginated list of invoices on your account.
tags:
- Account
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/pageSizeParam'
responses:
'200':
description: Invoices retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedInvoiceList'
'401':
description: Unauthorized - invalid or missing authentication
/account/payments:
get:
operationId: getPayments
summary: List payments
description: >-
Returns a paginated list of payments made on your account.
tags:
- Account
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/pageSizeParam'
responses:
'200':
description: Payments retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedPaymentList'
'401':
description: Unauthorized - invalid or missing authentication
post:
operationId: createPayment
summary: Make a payment
description: >-
Makes a payment on your account using the US Dollar amount provided.
tags:
- Account
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PaymentRequest'
responses:
'200':
description: Payment made successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Payment'
'400':
description: Bad request - invalid parameters
'401':
description: Unauthorized - invalid or missing authentication
/databases/instances:
get:
operationId: getDatabaseInstances
summary: List Managed Databases
description: >-
Returns a paginated list of all Managed Database instances on your
account, including their status, engine type, and region.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/pageSizeParam'
responses:
'200':
description: Managed Databases retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedDatabaseList'
'401':
description: Unauthorized - invalid or missing authentication
/databases/engines:
get:
operationId: getDatabaseEngines
summary: List Managed Database engines
description: >-
Returns a paginated list of available Managed Database engines and
their versions.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/pageSizeParam'
responses:
'200':
description: Database engines retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedDatabaseEngineList'
'401':
description: Unauthorized - invalid or missing authentication
/databases/types:
get:
operationId: getDatabaseTypes
summary: List Managed Database types
description: >-
Returns a paginated list of available Managed Database node types
and their associated pricing.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/pageSizeParam'
responses:
'200':
description: Database types retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedDatabaseTypeList'
'401':
description: Unauthorized - invalid or missing authentication
/databases/{databaseEngine}/{databaseId}:
get:
operationId: getDatabaseInstance
summary: Get a Managed Database
description: >-
Returns the details for a single Managed Database instance.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/databaseEngineParam'
- $ref: '#/components/parameters/databaseIdParam'
responses:
'200':
description: Managed Database retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Database'
'401':
description: Unauthorized - invalid or missing authentication
'404':
description: Database not found
put:
operationId: updateDatabaseInstance
summary: Update a Managed Database
description: >-
Updates the configuration for a Managed Database instance.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/databaseEngineParam'
- $ref: '#/components/parameters/databaseIdParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DatabaseRequest'
responses:
'200':
description: Managed Database updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Database'
'400':
description: Bad request - invalid parameters
'401':
description: Unauthorized - invalid or missing authentication
'404':
description: Database not found
delete:
operationId: deleteDatabaseInstance
summary: Delete a Managed Database
description: >-
Deletes a Managed Database instance. All data stored in the database
will be permanently lost.
tags:
- Databases
parameters:
- $ref: '#/components/parameters/databaseEngineParam'
- $ref: '#/components/parameters/databaseIdParam'
responses:
'200':
description: Managed Database deleted successfully
'401':
description: Unauthorized - invalid or missing authentication
'404':
description: Database not found
/domains:
get:
operationId: getDomains
summary: List domains
description: >-
Returns a paginated list of all domains on your account, including
their status, type, and SOA email address.
tags:
- Domains
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/pageSizeParam'
responses:
'200':
description: Domains retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedDomainList'
'401':
description: Unauthorized - invalid or missing authentication
post:
operationId: createDomain
summary: Create a domain
description: >-
Creates a new domain on your account. The domain can be a master or
slave zone type.
tags:
- Domains
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DomainRequest'
responses:
'200':
description: Domain created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Domain'
'400':
description: Bad request - invalid parameters
'401':
description: Unauthorized - invalid or missing authentication
/domains/{domainId}:
get:
operationId: getDomain
summary: Get a domain
description: >-
Returns the details for a single domain on your account.
tags:
- Domains
parameters:
- $ref: '#/components/parameters/domainIdParam'
responses:
'200':
description: Domain retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Domain'
'401':
description: Unauthorized - invalid or missing authentication
'404':
description: Domain not found
put:
operationId: updateDomain
summary: Update a domain
description: >-
Updates the configuration for a domain on your account.
tags:
- Domains
parameters:
- $ref: '#/components/parameters/domainIdParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DomainRequest'
responses:
'200':
description: Domain updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Domain'
'400':
description: Bad request - invalid parameters
'401':
description: Unauthorized - invalid or missing authentication
'404':
description: Domain not found
delete:
operationId: deleteDomain
summary: Delete a domain
description: >-
Deletes a domain from your account. All associated DNS records will
also be deleted.
tags:
- Domains
parameters:
- $ref: '#/components/parameters/domainIdParam'
responses:
'200':
description: Domain deleted successfully
'401':
description: Unauthorized - invalid or missing authentication
'404':
description: Domain not found
/domains/{domainId}/records:
get:
operationId: getDomainRecords
summary: List domain records
description: >-
Returns a paginated list of all DNS records for a given domain.
tags:
- Domains
parameters:
- $ref: '#/components/parameters/domainIdParam'
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/pageSizeParam'
responses:
'200':
description: Domain records retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedDomainRecordList'
'401':
description: Unauthorized - invalid or missing authentication
'404':
description: Domain not found
post:
operationId: createDomainRecord
summary: Create a domain record
description: >-
Creates a new DNS record for the given domain.
tags:
- Domains
parameters:
- $ref: '#/components/parameters/domainIdParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DomainRecordRequest'
responses:
'200':
description: Domain record created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/DomainRecord'
'400':
description: Bad request - invalid parameters
'401':
description: Unauthorized - invalid or missing authentication
'404':
description: Domain not found
/images:
get:
operationId: getImages
summary: List images
description: >-
Returns a paginated list of images on your account, including both
public distribution images and your custom private images.
tags:
- Images
parameters:
- $ref: '#/components/parameters/pageParam'
- $ref: '#/components/parameters/pageSizeParam'
responses:
'200':
description: Images retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedImageList'
'401':
description: Unauthorized - invalid or missing authentication
post:
operationId: createImage
summary: Create an image
description: >-
Creates a new custom image from an existing Linode disk. The image can
then be used to deploy new Linode instances.
tags:
- Images
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ImageRequest'
responses:
'200':
description: Image created successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Image'
'400':
description: Bad request - invalid parameters
'401':
description: Unauthorized - invalid or missing authentication
/images/{imageId}:
get:
operationId: getImage
summary: Get an image
description: >-
Returns the details for a single image.
tags:
- Images
parameters:
- $ref: '#/components/parameters/imageIdParam'
responses:
'200':
description: Image retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Image'
'401':
description: Unauthorized - invalid or missing authentication
'404':
description: Image not found
put:
operationId: updateImage
summary: Update an image
description: >-
Updates the label and description for a custom image.
tags:
- Images
parameters:
- $ref: '#/components/parameters/imageIdParam'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ImageUpdateRequest'
responses:
'200':
description: Image updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/Image'
'400':
description: Bad request - invalid parameters
'401':
description: Unauthorized - invalid or missing authentication
'404':
description: Image not found
delete:
operationId: deleteImage
summary: Delete an image
description: >-
Deletes a custom image. Distribution images cannot be deleted.
tags:
- Images
parameters:
- $ref: '#/components/parameters/imageIdParam'
responses:
'200':
description: Image deleted successfully
'401':
description: Unauthorized - invalid or missing authentication
'404':
description: Image not found
/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':
# --- truncated at 32 KB (175 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/linode/refs/heads/main/openapi/linode-api-v4-openapi.yml