canonical: https://jentic.com/apis/linode.com/linode

# Linode API

Provision and manage Linux cloud infrastructure including Linode instances, Kubernetes clusters (LKE), managed databases, NodeBalancers, block storage volumes, object storage, and DNS across 11 global regions. The API provides 350 endpoints covering compute, networking, storage, and managed services with OAuth 2.0 and personal access token authentication.

## For AI agents

Provision Linode instances, manage LKE Kubernetes clusters, configure NodeBalancers, and deploy managed databases. Covers compute, networking, storage, and DNS across Akamai's global cloud network.

## Scope

Does not handle CDN configuration, email delivery, or CI/CD pipelines - use for cloud infrastructure provisioning, managed services, and network configuration only.

## Capabilities

- Provision Linode instances with specified plans, distributions, and SSH keys across 11 global datacenters
- Deploy and scale Linode Kubernetes Engine (LKE) clusters with configurable node pools and auto-scaling
- Configure NodeBalancers with health checks, session stickiness, and TLS termination for traffic distribution
- Manage block storage volumes with attachment, detachment, and resize operations for persistent data
- Deploy managed database clusters (PostgreSQL, MySQL, MongoDB) with automated backups and failover
- Configure DNS zones and records with full domain management and zone import/export capabilities
- Access and manage object storage buckets and keys for S3-compatible file storage

## Use cases

### AI Agent Cloud Provisioning

AI agents use the Linode API through Jentic to provision cloud instances on demand without navigating the Linode Cloud Manager. An agent searches for the instance creation operation, receives the request schema with type (plan), image, region, and root_pass parameters, then executes the call. Linode provisions the instance in under 60 seconds with a public IPv4 address ready for SSH access. Predictable pricing starts at $5/month for the smallest plan.

Example prompt: Create a Linode instance with plan 'g6-standard-2' (4GB RAM), image 'linode/debian11', region 'us-east', and label 'web-app-01' with SSH key authorization

### Managed Kubernetes with LKE

Create and operate Linode Kubernetes Engine clusters with configurable node pools, automatic control plane management, and integrated cloud controller for NodeBalancer provisioning. The API handles cluster creation, node pool scaling, kubeconfig retrieval, and version upgrades. Clusters provision in under 5 minutes with nodes distributed across the region for high availability.

Example prompt: Create an LKE cluster named 'production' in us-east with Kubernetes version 1.28 and a node pool of 3 g6-standard-4 nodes with auto-scaling from 3 to 10

### Load Balancing with NodeBalancers

Configure NodeBalancers to distribute inbound traffic across multiple Linode instances with health checks, connection throttling, and TLS termination. Each NodeBalancer supports multiple configurations (ports) with backend nodes assigned by IP and port. Health checks detect unhealthy backends and remove them from rotation, while session stickiness maintains user affinity for stateful applications.

Example prompt: Create a NodeBalancer in us-east, add a configuration for port 443 with TLS termination using certificate ID 12345, and add 3 backend nodes on port 8080

### Managed Database Deployment

Deploy managed database clusters with automated daily backups, point-in-time recovery, SSL connections, and maintenance windows. The API supports PostgreSQL, MySQL, and MongoDB with configurable cluster sizes from single-node development instances to multi-node high-availability deployments. Credential management, connection string retrieval, and cluster scaling are handled through dedicated endpoints.

Example prompt: Create a managed PostgreSQL 14 cluster named 'app-data' with a g6-dedicated-2 plan, 3 nodes for high availability, and automatic backups in the us-east region

### Object Storage Management

Manage S3-compatible object storage for static assets, backups, and media files. The API provides bucket creation, access key generation, and cluster endpoint discovery. Object storage buckets support static website hosting, CORS configuration, and access control lists. Keys can be scoped to specific buckets for least-privilege access in multi-tenant applications.

Example prompt: Create an object storage key with read-write access limited to the bucket 'app-assets' in the us-east-1 cluster

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | /linode/instances | Create a new Linode instance |
| GET | /linode/instances | List all Linode instances |
| POST | /lke/clusters | Create a Kubernetes cluster |
| POST | /nodebalancers | Create a NodeBalancer |
| POST | /databases/postgresql/instances | Create a managed PostgreSQL cluster |
| POST | /volumes | Create a block storage volume |
| GET | /linode/types | List available instance plans and pricing |
| POST | /object-storage/keys | Create an object storage access key |

## Key resources

- **Linode Instances** — Virtual machines with configurable plans, images, and regions
- **LKE Clusters** — Managed Kubernetes clusters with node pools and auto-scaling
- **NodeBalancers** — Load balancers with health checks, TLS, and backend configuration
- **Databases** — Managed PostgreSQL, MySQL, and MongoDB clusters with backups
- **Volumes** — Block storage volumes attachable to Linode instances
- **Object Storage** — S3-compatible buckets with access key management
- **Domains** — DNS zone and record management for hosted domains

## Why Jentic

- **Setup:** Wiring the Linode API by hand means running its OAuth2 authorization-code flow or personal access token, choosing between the v4 and v4beta hosts, sending Bearer headers on every call, and handling retries yourself. Through Jentic you install once, import the Linode API from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** These provisioning calls take their configuration in the request body rather than a resource id in the URL path, so limit the agent to the operations it needs, such as GET /linode/instances or GET /linode/types for read-only inventory. You choose the operations it may call, so create calls like POST /linode/instances, POST /lke/clusters, or POST /volumes are not included unless you add them.
- **Credential handling:** Your Linode personal access token or OAuth credential is stored once, encrypted, by your own Jentic One instance and injected as the Bearer header at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'deploy a managed PostgreSQL database' or 'create a NodeBalancer', and Jentic returns the matching Linode operation with its input schema, including valid plan and region identifiers, so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **DigitalOcean API** — DigitalOcean offers similar developer-focused cloud with more managed services but comparable pricing
- **Render API** — Render provides PaaS deployment while Linode offers full IaaS control over infrastructure
- **Netlify API** — Netlify handles frontend deployment and CDN while Linode manages backend compute and databases

## FAQ

### What authentication does the Linode API use?

The Linode API supports OAuth 2.0 and personal access tokens. Personal access tokens are passed as Bearer tokens in the Authorization header. OAuth 2.0 provides scoped access with granular permissions per service (linodes, volumes, domains, etc.). Through Jentic, tokens are stored encrypted in your Jentic One instance so agents never handle raw credentials.

### Can I create a Linode instance with a specific SSH key through the API?

Yes. The POST /linode/instances endpoint accepts an authorized_keys array with public SSH key strings and an authorized_users array with Linode usernames whose profile keys are injected. Keys are added to the root user's authorized_keys file on first boot, eliminating root password authentication.

### What are the rate limits for the Linode API?

The Linode API enforces rate limits per endpoint with specific limits varying by operation type. Standard GET endpoints allow approximately 800 requests per minute. Write operations (POST, PUT, DELETE) have lower limits. Rate limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) are included in every response.

### How do I deploy a Kubernetes cluster using the Linode API through Jentic?

Search Jentic for 'create kubernetes cluster on Linode'. The agent receives the POST /lke/clusters schema requiring label, region, k8s_version, and node_pools array. Each node pool specifies type (plan slug) and count. After creation, retrieve the kubeconfig via GET /lke/clusters/{clusterId}/kubeconfig to connect kubectl.

### Can I resize a Linode instance without data loss?

Yes. The POST /linode/instances/{linodeId}/resize endpoint accepts a new type (plan slug). The Linode shuts down, migrates to appropriate hardware, resizes the disk to fit the new plan's allocation, and reboots. Data on the primary disk is preserved. Downsizing requires the current disk usage to fit within the smaller plan's limit.

### How does Jentic simplify Linode infrastructure management for AI agents?

Agents search by intent (e.g., 'provision a 4GB Linux server') and Jentic returns matching Linode operations with full schemas including valid plan slugs, region IDs, and image identifiers. No SDK setup or OAuth flow implementation required: install with pip install jentic and run it through Jentic One, the self-hosted execution layer.

### Can I limit what my agent is allowed to do with the Linode API?

Yes. Because you run Jentic One yourself, you decide which Linode operations your agent may call, and only the ones you add are available to it. You can keep the agent read-only by granting just inventory calls like GET /linode/instances and GET /linode/types, while withholding provisioning calls such as POST /linode/instances, POST /lke/clusters, and POST /volumes. Since these calls take their configuration in the request body rather than a resource id in the URL path, scoping is done at the operation level, and your stored token is injected only when an allowed operation runs.
