{
"openapi": "3.0.0",
"info": {
"title": "Vultr API",
"version": "2.0",
"contact": {
"email": "support@vultr.com",
"name": "",
"url": "https://www.vultr.com"
},
"description": "# Introduction\n\nThe Vultr API v2 is a set of HTTP endpoints that adhere to RESTful design principles and CRUD actions with predictable URIs. It uses standard HTTP response codes, authentication, and verbs. The API has consistent and well-formed JSON requests and responses with cursor-based pagination to simplify list handling. Error messages are descriptive and easy to understand. All functions of the Vultr customer portal are accessible via the API, enabling you to script complex unattended scenarios with any tool fluent in HTTP.\n\n## Requests\n\nCommunicate with the API by making an HTTP request at the correct endpoint. The chosen method determines the action taken.\n\n| Method | Usage |\n| ------ | ------------- |\n| DELETE | Use the DELETE method to destroy a resource in your account. If it is not found, the operation will return a 4xx error and an appropriate message. |\n| GET | To retrieve information about a resource, use the GET method. The data is returned as a JSON object. GET methods are read-only and do not affect any resources. |\n| PATCH | Some resources support partial modification with PATCH, which modifies specific attributes without updating the entire object representation. |\n| POST | Issue a POST method to create a new object. Include all needed attributes in the request body encoded as JSON. |\n| PUT | Use the PUT method to update information about a resource. PUT will set new values on the item without regard to their current values. |\n\n**Rate Limit:** Vultr safeguards the API against bursts of incoming traffic based on the request's IP address to ensure stability for all users. If your application sends more than 30 requests per second, the API may return HTTP status code 429. If you do exceed the rate limit, we will send back a `Retry-After` header with how many seconds to wait before trying again.\n\n## Response Codes\n\nWe use standard HTTP response codes to show the success or failure of requests. Response codes in the 2xx range indicate success, while codes in the 4xx range indicate an error, such as an authorization failure or a malformed request. All 4xx errors will return a JSON response object with an `error` attribute explaining the error. Codes in the 5xx range indicate a server-side problem preventing Vultr from fulfilling your request.\n\n| Response | Description |\n| ------ | ------------- |\n| 200 OK | The response contains your requested information. |\n| 201 Created | Your request was accepted. The resource was created. |\n| 202 Accepted | Your request was accepted. The resource was created or updated. |\n| 204 No Content | Your request succeeded, there is no additional information returned. |\n| 400 Bad Request | Your request was malformed. |\n| 401 Unauthorized | You did not supply valid authentication credentials. |\n| 403 Forbidden | You are not allowed to perform that action. |\n| 404 Not Found | No results were found for your request. |\n| 429 Too Many Requests | Your request exceeded the API rate limit. We will send back a `Retry-After` header with how many seconds to wait before trying again. |\n| 500 Internal Server Error | We were unable to perform the request due to server-side problems. |\n\n## Meta and Pagination\n\nMany API calls will return a `meta` object with paging information.\n\n### Definitions\n\n| Term | Description |\n| ------ | ------------- |\n| **List** | The items returned from the database for your request (not necessarily shown in a single response depending on the **cursor** size). |\n| **Page** | A subset of the full **list** of items. Choose the size of a **page** with the `per_page` parameter. |\n| **Total** | The `total` attribute indicates the number of items in the full **list**.|\n| **Cursor** | Use the `cursor` query parameter to select a next or previous **page**. |\n| **Next** & **Prev** | Use the `next` and `prev` attributes of the `links` meta object as `cursor` values. |\n\n### How to use Paging\n\nIf your result **list** total exceeds the default **cursor** size (the default depends on the route, but is usually 100 records) or the value defined by the `per_page` query param (when present) the response will be returned to you paginated.\n\n### Paging Example\n\n> These examples have abbreviated attributes and sample values. Your actual `cursor` values will be encoded alphanumeric strings.\n\nTo return a **page** with the first two plans in the List:\n\n curl \"https://api.vultr.com/v2/plans?per_page=2\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n\nThe API returns an object similar to this:\n\n {\n \"plans\": [\n {\n \"id\": \"vc2-1c-2gb\",\n \"vcpu_count\": 1,\n \"ram\": 2048,\n \"locations\": []\n },\n {\n \"id\": \"vc2-24c-97gb\",\n \"vcpu_count\": 24,\n \"ram\": 98304,\n \"locations\": []\n }\n ],\n \"meta\": {\n \"total\": 19,\n \"links\": {\n \"next\": \"WxYzExampleNext\",\n \"prev\": \"WxYzExamplePrev\"\n }\n }\n }\n\nThe object contains two plans. The `total` attribute indicates that 19 plans are available in the List. To navigate forward in the **list**, use the `next` value (`WxYzExampleNext` in this example) as your `cursor` query parameter.\n\n curl \"https://api.vultr.com/v2/plans?per_page=2&cursor=WxYzExampleNext\" \\\n -X GET\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n\nLikewise, you can use the example `prev` value `WxYzExamplePrev` to navigate backward.\n\n## Parameters\n\nYou can pass information to the API with three different types of parameters.\n\n### Path parameters\n\nSome API calls require variable parameters as part of the endpoint path. For example, to retrieve information about a user, supply the `user-id` in the endpoint.\n\n curl \"https://api.vultr.com/v2/users/{user-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n\n### Query parameters\n\nSome API calls allow filtering with query parameters. For example, the `/v2/plans` endpoint supports a `type` query parameter. Setting `type=vhf` instructs the API only to return High Frequency Compute plans in the list. You'll find more specifics about valid filters in the endpoint documentation below.\n\n curl \"https://api.vultr.com/v2/plans?type=vhf\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n\nYou can also combine filtering with paging. Use the `per_page` parameter to retreive a subset of vhf plans.\n\n curl \"https://api.vultr.com/v2/plans?type=vhf&per_page=2\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n\n### Request Body\n\nPUT, POST, and PATCH methods may include an object in the request body with a content type of **application/json**. The documentation for each endpoint below has more information about the expected object.\n\n## API Example Conventions\n\nThe examples in this documentation use `curl`, a command-line HTTP client, to demonstrate useage. Linux and macOS computers usually have curl installed by default, and it's [available for download](https://curl.se/download.html) on all popular platforms including Windows.\n\nEach example is split across multiple lines with the `\\` character, which is compatible with a `bash` terminal. A typical example looks like this:\n\n curl \"https://api.vultr.com/v2/domains\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"domain\" : \"example.com\",\n \"ip\" : \"192.0.2.123\"\n }'\n\n* The `-X` parameter sets the request method. For consistency, we show the method on all examples, even though it's not explicitly required for GET methods.\n* The `-H` lines set required HTTP headers. These examples are formatted to expand the VULTR\\_API\\_KEY environment variable for your convenience.\n* Examples that require a JSON object in the request body pass the required data via the `--data` parameter.\n\nAll values in this guide are examples. Do not rely on the OS or Plan IDs listed in this guide; use the appropriate endpoint to retreive values before creating resources.\n"
},
"servers": [
{
"url": "https://api.vultr.com/v2"
}
],
"paths": {
"/cdns/pull-zones": {
"get": {
"summary": "List CDN Pull Zones",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/pull-zones/\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"pull_zones": {
"type": "array",
"items": {
"$ref": "#/components/schemas/pullzone"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"pull_zones": [
{
"id": "ef4d95d5-98dc-4710-94f5-0ee97e70a9a5",
"date_created": "2024-01-25 09:41:05",
"status": "active",
"label": "my-pullzone",
"origin_scheme": "https",
"origin_domain": "constant.com",
"cdn_url": "https://cdn-wdghak5h67sm.vultrcdn.com",
"vanity_domain": "my.domain.com",
"cache_size": 50000000,
"requests": null,
"in_bytes": null,
"out_bytes": null,
"packets_per_sec": 50,
"last_purge": "2024-01-25 11:39:04",
"cors": false,
"gzip": true,
"block_ai": false,
"block_bad_bots": true,
"regions": [
"..."
]
}
],
"meta": {
"total": 3,
"links": {
"next": "WxYzExampleNext",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-pullzones",
"security": [
{
"API Key": []
}
],
"description": "List CDN Pull Zones"
},
"post": {
"summary": "Create CDN Pull Zones",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/pull-zones/\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"pull_zone": {
"$ref": "#/components/schemas/pullzone"
}
}
},
"examples": {
"response": {
"value": {
"pull_zone": {
"id": "ef4d95d5-98dc-4710-94f5-0ee97e70a9a5",
"date_created": "2024-01-25 09:41:05",
"status": "active",
"label": "my-pullzone",
"origin_scheme": "https",
"origin_domain": "constant.com",
"cdn_url": "https://cdn-wdghak5h67sm.vultrcdn.com",
"vanity_domain": "my.domain.com",
"cache_size": 50000000,
"requests": null,
"in_bytes": null,
"out_bytes": null,
"packets_per_sec": 50,
"last_purge": "2024-01-25 11:39:04",
"cors": false,
"gzip": true,
"block_ai": false,
"block_bad_bots": true,
"regions": [
"..."
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-pullzone",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "The user-supplied label."
},
"origin_scheme": {
"type": "string",
"description": "The URI scheme of the origin domain.",
"enum": [
"http",
"https"
]
},
"origin_domain": {
"type": "string",
"description": "The domain name from which the content stored in the CDN will be pulled."
},
"vanity_domain": {
"type": "string",
"description": "An optional domain name that can be used to access the cached files in adition to the domain that is automaticaly created. This vanity domain will need to have a CNAME DNS record created to point it at the standard CDN domain that is automaticaly generated on creation of the CDN."
},
"ssl_cert": {
"type": "string",
"description": "Base 64 encoded file content for an ssl/tls certificate associated with the optional vanity_domain. This field is required if a vanity domain is provided and the origin_scheme is https."
},
"ssl_cert_key": {
"type": "string",
"description": "Base 64 encoded file content for the private key associated with the ssl_cert. This field is required if a vanity domain is provided and the origin_scheme is https."
},
"cors": {
"type": "boolean",
"description": "Enable Cross-origin resource sharing. CORS is a content validation mechanism used by web browsers to validate file access permissions. The Vultr CDN CORS policy protects your static assets from hotlinking threats by only accepting requests associated with your Origin URL."
},
"gzip": {
"type": "boolean",
"description": "Enable Gzip compression to reduce the static content size to speed up the delivery process."
},
"block_ai": {
"type": "boolean",
"description": "Block AI bots."
},
"block_bad_bots": {
"type": "boolean",
"description": "Block potentially malicious bots."
}
},
"required": [
"label",
"origin_scheme",
"origin_domain"
]
},
"examples": {
"request": {
"value": {
"label": "my-pullzone",
"origin_scheme": "https",
"origin_domain": "www.vultr.com",
"cors": false,
"gzip": true,
"block_ai": false,
"block_bad_bots": false
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a new CDN Pull Zone."
}
},
"/cdns/pull-zones/{pullzone-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "pullzone-id",
"in": "path",
"required": true,
"description": "The [Pull Zone ID](#operation/list-pullzones)."
}
],
"get": {
"summary": "Get CDN Pull Zone",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/pull-zones/{pullzone-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"pull_zone": {
"$ref": "#/components/schemas/pullzone"
}
}
},
"examples": {
"response": {
"value": {
"pull_zone": {
"id": "ef4d95d5-98dc-4710-94f5-0ee97e70a9a5",
"date_created": "2024-01-25 09:41:05",
"status": "active",
"label": "my-pullzone",
"origin_scheme": "https",
"origin_domain": "constant.com",
"cdn_url": "https://cdn-wdghak5h67sm.vultrcdn.com",
"vanity_domain": "my.domain.com",
"cache_size": 50000000,
"requests": null,
"in_bytes": null,
"out_bytes": null,
"packets_per_sec": 50,
"last_purge": "2024-01-25 11:39:04",
"cors": false,
"gzip": true,
"block_ai": false,
"block_bad_bots": true,
"regions": [
"..."
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-pullzone",
"security": [
{
"API Key": []
}
],
"description": "Get information about a CDN Pull Zones"
},
"put": {
"summary": "Update CDN Pull Zone",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/pull-zones/{pullzone-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"pull_zone": {
"$ref": "#/components/schemas/pullzone"
}
}
},
"examples": {
"response": {
"value": {
"pull_zone": {
"id": "ef4d95d5-98dc-4710-94f5-0ee97e70a9a5",
"date_created": "2024-01-25 09:41:05",
"status": "active",
"label": "my-pullzone",
"origin_scheme": "https",
"origin_domain": "constant.com",
"cdn_url": "https://cdn-wdghak5h67sm.vultrcdn.com",
"vanity_domain": "my.domain.com",
"cache_size": 50000000,
"requests": null,
"in_bytes": null,
"out_bytes": null,
"packets_per_sec": 50,
"last_purge": "2024-01-25 11:39:04",
"cors": false,
"gzip": true,
"block_ai": false,
"block_bad_bots": true,
"regions": [
"..."
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-pullzone",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "The user-supplied label."
},
"vanity_domain": {
"type": "string",
"description": "An optional domain name that can be used to access the cached files in adition to the domain that is automaticaly created. This vanity domain will need to have a CNAME DNS record created to point it at the standard CDN domain that is automaticaly generated on creation of the CDN."
},
"ssl_cert": {
"type": "string",
"description": "Base 64 encoded file content for an ssl/tls certificate associated with the optional vanity_domain. This field is required if a vanity domain is provided and the origin_scheme is https."
},
"ssl_cert_key": {
"type": "string",
"description": "Base 64 encoded file content for the private key associated with the ssl_cert. This field is required if a vanity domain is provided and the origin_scheme is https."
},
"cors": {
"type": "boolean",
"description": "Cross-origin resource sharing."
},
"gzip": {
"type": "boolean",
"description": "Optional feature to compress files, reduce the amount of data that's transferred."
},
"block_ai": {
"type": "boolean",
"description": "Optional feature to block AI bots."
},
"block_bad_bots": {
"type": "boolean",
"description": "Optional feature to block potentially malicious bots."
},
"regions": {
"type": "array",
"description": "a list of [Region ids](#operation/list-regions) for locations to be used for content delivery."
}
}
},
"examples": {
"request": {
"value": {
"label": "my-pullzone",
"cors": false,
"gzip": true,
"block_ai": false,
"block_bad_bots": false,
"regions": [
"..."
]
}
}
}
}
}
},
"description": "Update information for a CDN Pullzone. All attributes are optional. If not set, the attributes will retain their original values."
},
"delete": {
"summary": "Delete CDN Pullzone",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/pull-zones/{pullzone-id}\" \\\n-X DELETE \\\n-H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-pullzone",
"description": "Delete a CDN Pull Zone.",
"security": [
{
"API Key": []
}
]
}
},
"/cdns/pull-zones/{pullzone-id}/purge": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "pullzone-id",
"in": "path",
"required": true,
"description": "The [Pull Zone ID](#operation/list-pullzones)."
}
],
"get": {
"summary": "Purge CDN Pull Zone",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/pull-zones/{pullzone-id}/purge\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "array",
"properties": null
},
"examples": {
"response": {
"value": []
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "purge-pullzone",
"security": [
{
"API Key": []
}
],
"description": "Clears cached content on server proxies so that visitors can get the latest page versions.\n\n**Note:** This action may only be performed once every six hours.\n\n**Note:** This action may take a few extra seconds to complete."
}
},
"/cdns/pull-zones/{cdn-uuid}/metadata": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "cdn-uuid",
"in": "path",
"required": true,
"description": "The [Pull Zone ID](#operation/list-pullzones)."
}
],
"get": {
"summary": "Get CDN Pull Zone Metadata",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/pull-zones/{cdn-uuid}/metadata\" \\\n -X GET \\\n -H \"Authorization: Bearer ***}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ips": {
"type": "array",
"description": "An array of global CDN IP addresses.",
"items": {
"type": "string",
"description": "A CDN IP address."
}
}
}
},
"examples": {
"response": {
"value": {
"ips": [
"192.168.1.1",
"10.0.0.1",
"..."
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-pullzone-metadata",
"security": [
{
"API Key": []
}
],
"description": "Get the global CDN IP list for a CDN Pull Zone subscription. The IP list is sourced from Cortex and cached for 5 minutes."
}
},
"/cdns/push-zones": {
"get": {
"summary": "List CDN Push Zones",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/push-zones/\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"push_zones": {
"type": "array",
"items": {
"$ref": "#/components/schemas/pushzone"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"push_zones": [
{
"id": "ef4d95d5-98dc-4710-94f5-0ee97e70a9a5",
"date_created": "2024-01-25 09:41:05",
"status": "active",
"label": "my-pushzone",
"cdn_url": "https://cdn-wdghak5h67sm.vultrcdn.com",
"vanity_domain": "my.domain.com",
"cache_size": 50000000,
"requests": null,
"in_bytes": null,
"out_bytes": null,
"packets_per_sec": 50,
"cors": false,
"gzip": true,
"block_ai": false,
"block_bad_bots": true,
"regions": [
"..."
]
}
],
"meta": {
"total": 3,
"links": {
"next": "WxYzExampleNext",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-pushzones",
"security": [
{
"API Key": []
}
],
"description": "List CDN Push Zones"
},
"post": {
"summary": "Create CDN Push Zones",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/push-zones/\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"push_zone": {
"$ref": "#/components/schemas/pushzone"
}
}
},
"examples": {
"response": {
"value": {
"push_zone": {
"id": "ef4d95d5-98dc-4710-94f5-0ee97e70a9a5",
"date_created": "2024-01-25 09:41:05",
"status": "active",
"label": "my-pushzone",
"cdn_url": "https://cdn-wdghak5h67sm.vultrcdn.com",
"vanity_domain": "my.domain.com",
"cache_size": 50000000,
"requests": null,
"in_bytes": null,
"out_bytes": null,
"packets_per_sec": 50,
"cors": false,
"gzip": true,
"block_ai": false,
"block_bad_bots": true,
"regions": [
"..."
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-pushzone",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "The user-supplied label."
},
"vanity_domain": {
"type": "string",
"description": "An optional domain name that can be used to access the cached files in adition to the domain that is automaticaly created. This vanity domain will need to have a CNAME DNS record created to point it at the standard CDN domain that is automaticaly generated on creation of the CDN."
},
"ssl_cert": {
"type": "string",
"description": "Base 64 encoded file content for an ssl/tls certificate associated with the optional vanity_domain. This field is required if a vanity domain is provided."
},
"ssl_cert_key": {
"type": "string",
"description": "Base 64 encoded file content for the private key associated with the ssl_cert. This field is required if a vanity domain is provided."
},
"cors": {
"type": "boolean",
"description": "Enable Cross-origin resource sharing. CORS is a content validation mechanism used by web browsers to validate file access permissions. The Vultr CDN CORS policy protects your static assets from hotlinking threats by only accepting requests associated with your Origin URL."
},
"gzip": {
"type": "boolean",
"description": "Enable Gzip compression to reduce the static content size to speed up the delivery process."
},
"block_ai": {
"type": "boolean",
"description": "Block AI bots."
},
"block_bad_bots": {
"type": "boolean",
"description": "Block potentially malicious bots."
}
},
"required": [
"label"
]
},
"examples": {
"request": {
"value": {
"label": "my-pushzone",
"cors": false,
"gzip": true,
"block_ai": false,
"block_bad_bots": false
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a new CDN Push Zone."
}
},
"/cdns/push-zones/{pushzone-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "pushzone-id",
"in": "path",
"required": true,
"description": "The [Push Zone ID](#operation/list-pushzones)."
}
],
"get": {
"summary": "Get CDN Push Zone",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/push-zones/{pushzone-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"push_zone": {
"$ref": "#/components/schemas/pushzone"
}
}
},
"examples": {
"response": {
"value": {
"push_zone": {
"id": "ef4d95d5-98dc-4710-94f5-0ee97e70a9a5",
"date_created": "2024-01-25 09:41:05",
"status": "active",
"label": "my-pushzone",
"cdn_url": "https://cdn-wdghak5h67sm.vultrcdn.com",
"vanity_domain": "my.domain.com",
"cache_size": 50000000,
"requests": null,
"in_bytes": null,
"out_bytes": null,
"packets_per_sec": 50,
"cors": false,
"gzip": true,
"block_ai": false,
"block_bad_bots": true,
"regions": [
"..."
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-pushzone",
"security": [
{
"API Key": []
}
],
"description": "Get information about a CDN Push Zone"
},
"put": {
"summary": "Update CDN Push Zone",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/push-zones/{pushzone-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"push_zone": {
"$ref": "#/components/schemas/pushzone"
}
}
},
"examples": {
"response": {
"value": {
"push_zone": {
"id": "ef4d95d5-98dc-4710-94f5-0ee97e70a9a5",
"date_created": "2024-01-25 09:41:05",
"status": "active",
"label": "my-pushzone",
"cdn_url": "https://cdn-wdghak5h67sm.vultrcdn.com",
"vanity_domain": "my.domain.com",
"cache_size": 50000000,
"requests": null,
"in_bytes": null,
"out_bytes": null,
"packets_per_sec": 50,
"cors": false,
"gzip": true,
"block_ai": false,
"block_bad_bots": true,
"regions": [
"..."
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-pushzone",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "The user-supplied label."
},
"vanity_domain": {
"type": "string",
"description": "An optional domain name that can be used to access the cached files in adition to the domain that is automaticaly created. This vanity domain will need to have a CNAME DNS record created to point it at the standard CDN domain that is automaticaly generated on creation of the CDN."
},
"ssl_cert": {
"type": "string",
"description": "Base 64 encoded file content for an ssl/tls certificate associated with the optional vanity_domain. This field is required if a vanity domain is provided."
},
"ssl_cert_key": {
"type": "string",
"description": "Base 64 encoded file content for the private key associated with the ssl_cert. This field is required if a vanity domain is provided."
},
"cors": {
"type": "boolean",
"description": "Cross-origin resource sharing."
},
"gzip": {
"type": "boolean",
"description": "Optional feature to compress files, reduce the amount of data that's transferred."
},
"block_ai": {
"type": "boolean",
"description": "Optional feature to block AI bots."
},
"block_bad_bots": {
"type": "boolean",
"description": "Optional feature to block potentially malicious bots."
},
"regions": {
"type": "array",
"description": "a list of [Region ids](#operation/list-regions) for locations to be used for content delivery."
}
}
},
"examples": {
"request": {
"value": {
"label": "my-pushzone",
"cors": false,
"gzip": true,
"block_ai": false,
"block_bad_bots": false,
"regions": [
"..."
]
}
}
}
}
}
},
"description": "Update information for a CDN Pushzone. All attributes are optional. If not set, the attributes will retain their original values."
},
"delete": {
"summary": "Delete CDN Pushzone",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/push-zones/{pushzone-id}\" \\\n-X DELETE \\\n-H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-pushzone",
"description": "Delete a CDN Push Zone.",
"security": [
{
"API Key": []
}
]
}
},
"/cdns/push-zones/{pushzone-id}/files": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "pushzone-id",
"in": "path",
"required": true,
"description": "The [Push Zone ID](#operation/list-pushzones)."
}
],
"get": {
"summary": "List CDN Push Zone Files",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/push-zones/{pushzone-id}/files\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"files": {
"type": "array",
"items": {
"$ref": "#/components/schemas/pushzonefilemeta"
}
},
"count": {
"type": "integer",
"description": "number of files."
},
"total_size": {
"type": "integer",
"description": "total size of all files."
}
}
},
"examples": {
"response": {
"value": {
"files": [
{
"name": "my-file.jpg",
"size": 857773,
"last_modified": "2024-04-02T14:11:12+00:00\""
}
],
"count": 10,
"total_size": 189238221
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-pushzone-files",
"security": [
{
"API Key": []
}
],
"description": "Get a list of files that have been uploaded to a specific CDN Push Zones"
},
"post": {
"summary": "Create CDN Push Zone File Upload Endpoint",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/push-zones/{pushzone-id}/files\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"upload_endpoint": {
"$ref": "#/components/schemas/uploadendpoint"
}
}
},
"examples": {
"response": {
"value": {
"upload_endpoint": {
"URL": "https://cdn.s3-ewr-000.vultr.dev/v-cdn-agent-assets,",
"inputs": {
"acl": "public-read,",
"key": "cdn-ady5dwsa6mdh.vultrcdn.com/my-file.jpg,",
"X-Amz-Credential": "kNCaYoUJZ6szuajKsgN/20240418/us-east-1/s3/aws4_request,",
"X-Amz-Algorithm": "AWS4-HMAC-SHA256,",
"Policy": "eyJleHBpcmF0aW9uIjoiMjAyNC0wNC0xOFQxMzowNzo0MloiLCJjb25kaXRpb25zIjpbeyJhY2wiOiJwdWJsaWMtcmVhZCJ9LHsiYnVja2V0Ijoidi1jZG4tYWdlbnQtYXNzZXRzIn0seyJrZXkiOiJjZG4tYWR5NWR3c2E2bWRoLnZ1bHRyY2RuLmNvbVwvcGF0Y2guanBnIn0sWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsODU3NzczLDg1Nzc3M10seyJYLUFtei1EYXRlIjoiMjAyNDA0MThUMTMwMjQyWiJ9LHsiWC1BbXotQ3JlZGVudGlhbCI6InlrTkNhWW9VSlo2c3p1YWpLc2dOXC8yMDI0MDQxOFwvdXMtZWFzdC0xXC9zM1wvYXdzNF9yZXF1ZXN0In0seyJYLUFtei1BbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In1dfQ==,",
"X-Amz-Signature": "8cc2328bf9bd9531ccae5f8b156e7f578f3ee4414bb60f5eac97bbb62a0f2536,"
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-pushzone-upload",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "the name of the file to be uploaded including the file extension. If the uploaded file does not match this name the upload will fail."
},
"size": {
"type": "integer",
"description": "the size of the file to be uploaded. If the uploaded file does not match this size the upload will fail."
}
},
"required": [
"name",
"size"
]
},
"examples": {
"request": {
"value": {
"name": "my-image.jpg",
"size": 857773
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a presigned post endpoint that can be used to upload a file to your Push Zone. After sending this request you must send a second POST request to the returned URL. Include all of the returned inputs as form-data fields using the same key and value. You must also include a field named \"file\" that holds the file to be uploaded."
}
},
"/cdns/push-zones/{pushzone-id}/files/{file-name}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "pushzone-id",
"in": "path",
"required": true,
"description": "The [Push Zone ID](#operation/list-pushzones)."
},
{
"schema": {
"type": "string"
},
"name": "file-name",
"in": "path",
"required": true,
"description": "The [File Name](#operation/list-pushzone-files)."
}
],
"get": {
"summary": "Get CDN Push Zone File",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/push-zones/{pushzone-id}/files/{file-name}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"file": {
"$ref": "#/components/schemas/pushzonefile"
}
}
},
"examples": {
"response": {
"value": {
"file": {
"name": "my-image.jpg,",
"mime": "image/jpeg,",
"size": "patch.jpg,",
"content": "/9j/2wBDAAQDAwQDAwQEA...,",
"last_modified": "2024-04-18T13:07:15+00:00,"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-pushzone-file",
"security": [
{
"API Key": []
}
],
"description": "Get information about a CDN Push Zone file"
},
"delete": {
"summary": "Delete CDN Pushzone File",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/push-zones/{pushzone-id}/files/{file-name}\" \\\n-X DELETE \\\n-H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-pushzone-file",
"description": "Delete a CDN Push Zone file.",
"security": [
{
"API Key": []
}
]
}
},
"/cdns/push-zones/{pushzone-id}/files/{file-name}/deployment-status": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "pushzone-id",
"in": "path",
"required": true,
"description": "The [Push Zone ID](#operation/list-pushzones)."
},
{
"schema": {
"type": "string"
},
"name": "file-name",
"in": "path",
"required": true,
"description": "The [File Name](#operation/list-pushzone-files)."
}
],
"get": {
"summary": "Get CDN Push Zone File Deployment Status",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/push-zones/{pushzone-id}/files/{file-name}/deployment-status\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"deployment_status": {
"type": "string",
"description": "The deployment status of CDN Push Zone file:\n* `pending`\n* `completed`"
}
}
},
"examples": {
"response": {
"value": {
"deployment_status": "pending"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-pushzone-file-deployment-status",
"security": [
{
"API Key": []
}
],
"description": "Get the deployment status of a CDN Push Zone File"
}
},
"/cdns/push-zones/{cdn-uuid}/metadata": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "cdn-uuid",
"in": "path",
"required": true,
"description": "The [Push Zone ID](#operation/list-pushzones)."
}
],
"get": {
"summary": "Get CDN Push Zone Metadata",
"tags": [
"CDNs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/cdns/push-zones/{cdn-uuid}/metadata\" \\\n -X GET \\\n -H \"Authorization: Bearer ***}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ips": {
"type": "array",
"description": "An array of global CDN IP addresses.",
"items": {
"type": "string",
"description": "A CDN IP address."
}
}
}
},
"examples": {
"response": {
"value": {
"ips": [
"192.168.1.1",
"10.0.0.1",
"..."
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-pushzone-metadata",
"security": [
{
"API Key": []
}
],
"description": "Get the global CDN IP list for a CDN Push Zone subscription. The IP list is sourced from Cortex and cached for 5 minutes."
}
},
"/private-networks/{network-id}": {
"get": {
"summary": "Get a private network",
"tags": [
"private Networks"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/private-networks/{network-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"network": {
"$ref": "#/components/schemas/network"
}
}
},
"examples": {
"response": {
"value": {
"network": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"region": "ewr",
"description": "Example Network Description",
"v4_subnet": "10.99.0.0",
"v4_subnet_mask": 24
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-network",
"security": [
{
"API Key": []
}
],
"description": "Get information about a Private Network.
**Deprecated**: Use [Get a VPC](#operation/get-vpc) instead. ",
"deprecated": true
},
"delete": {
"summary": "Delete a private network",
"tags": [
"private Networks"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/private-networks/{network-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-network",
"description": "Delete a Private Network.
**Deprecated**: Use [Delete a VPC](#operation/delete-vpc) instead.",
"security": [
{
"API Key": []
}
],
"deprecated": true
},
"parameters": [
{
"schema": {
"type": "string"
},
"name": "network-id",
"in": "path",
"required": true,
"description": "The [Network id](#operation/list-networks)."
}
],
"put": {
"summary": "Update a Private Network",
"operationId": "update-network",
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"description": "Update information for a Private Network.
**Deprecated**: Use [Update a VPC](#operation/update-vpc) instead.",
"tags": [
"private Networks"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/private-networks/{network-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\" : \"Example Private Network\"\n }'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "The Private Network description."
}
},
"required": [
"description"
]
},
"examples": {
"request": {
"value": {
"description": "Example Private Network"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
],
"deprecated": true
}
},
"/private-networks": {
"get": {
"summary": "List Private Networks",
"tags": [
"private Networks"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/private-networks\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"networks": {
"type": "array",
"items": {
"$ref": "#/components/schemas/network"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"networks": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"region": "ewr",
"date_created": "2020-10-10T01:56:20+00:00",
"description": "Example Network Description",
"v4_subnet": "10.99.0.0",
"v4_subnet_mask": 24
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-networks",
"security": [
{
"API Key": []
}
],
"description": "Get a list of all Private Networks in your account.
**Deprecated**: Use [List VPCs](#operation/list-vpcs) instead.",
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"deprecated": true
},
"post": {
"summary": "Create a Private Network",
"tags": [
"private Networks"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/private-networks\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"description\" : \"Example Private Network\",\n \"v4_subnet\" : \"10.99.0.0\",\n \"v4_subnet_mask\" : 24\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"network": {
"$ref": "#/components/schemas/network"
}
}
},
"examples": {
"response": {
"value": {
"network": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"region": "ewr",
"description": "Example Private Network",
"v4_subnet": "10.99.0.0",
"v4_subnet_mask": 24
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-network",
"security": [
{
"API Key": []
}
],
"description": "Create a new Private Network in a `region`.\n\n**Deprecated**: Use [Create a VPC](#operation/create-vpc) instead.\n\n Private networks should use [RFC1918 private address space](https://tools.ietf.org/html/rfc1918):\n\n 10.0.0.0 - 10.255.255.255 (10/8 prefix)\n 172.16.0.0 - 172.31.255.255 (172.16/12 prefix)\n 192.168.0.0 - 192.168.255.255 (192.168/16 prefix)\n",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"region": {
"type": "string",
"description": "Create the Private Network in this [Region id](#operation/list-regions)."
},
"description": {
"type": "string",
"description": "A description of the private network."
},
"v4_subnet": {
"type": "string",
"description": "The IPv4 network address. For example: 10.99.0.0"
},
"v4_subnet_mask": {
"type": "integer",
"description": "The number of bits for the netmask in CIDR notation. Example: 24"
}
},
"required": [
"region"
]
},
"examples": {
"example": {
"value": {
"region": "ewr",
"description": "Example Private Network",
"v4_subnet": "10.99.0.0",
"v4_subnet_mask": 24
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"deprecated": true
}
},
"/vpcs/{vpc-id}": {
"get": {
"summary": "Get a VPC",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"vpc": {
"$ref": "#/components/schemas/vpc"
}
}
},
"examples": {
"response": {
"value": {
"vpc": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"region": "ewr",
"description": "Example VPC Description",
"v4_subnet": "10.99.0.0",
"v4_subnet_mask": 24,
"internet": {
"connectivity": true,
"types": [
"nat_gateway"
]
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-vpc",
"security": [
{
"API Key": []
}
],
"description": "Get information about a VPC.",
"tags": [
"VPCs"
]
},
"delete": {
"summary": "Delete a VPC",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-vpc",
"description": "Delete a VPC.",
"security": [
{
"API Key": []
}
],
"tags": [
"VPCs"
]
},
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vpc-id",
"in": "path",
"required": true,
"description": "The [VPC ID](#operation/list-vpcs)."
}
],
"put": {
"summary": "Update a VPC",
"operationId": "update-vpc",
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"description": "Update information for a VPC.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\" : \"Example VPC\"\n }'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "The VPC description."
}
},
"required": [
"description"
]
},
"examples": {
"request": {
"value": {
"description": "Example VPC"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
],
"tags": [
"VPCs"
]
}
},
"/vpcs": {
"get": {
"summary": "List VPCs",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"vpcs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/vpc"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"vpcs": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"region": "ewr",
"date_created": "2020-10-10T01:56:20+00:00",
"description": "Example VPC Description",
"v4_subnet": "10.99.0.0",
"v4_subnet_mask": 24,
"internet": {
"connectivity": true,
"types": [
"nat_gateway"
]
}
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-vpcs",
"security": [
{
"API Key": []
}
],
"description": "Get a list of all VPCs in your account.",
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"tags": [
"VPCs"
]
},
"post": {
"summary": "Create a VPC",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"description\" : \"Example VPC\",\n \"v4_subnet\" : \"10.99.0.0\",\n \"v4_subnet_mask\" : 24\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"vpc": {
"$ref": "#/components/schemas/vpc"
}
}
},
"examples": {
"response": {
"value": {
"vpc": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"region": "ewr",
"description": "Example VPC",
"v4_subnet": "10.99.0.0",
"v4_subnet_mask": 24
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-vpc",
"security": [
{
"API Key": []
}
],
"description": "Create a new VPC in a `region`. VPCs should use [RFC1918 private address space](https://tools.ietf.org/html/rfc1918):\n\n 10.0.0.0 - 10.255.255.255 (10/8 prefix)\n 172.16.0.0 - 172.31.255.255 (172.16/12 prefix)\n 192.168.0.0 - 192.168.255.255 (192.168/16 prefix)\n",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"region": {
"type": "string",
"description": "Create the VPC in this [Region id](#operation/list-regions)."
},
"description": {
"type": "string",
"description": "A description of the VPC."
},
"v4_subnet": {
"type": "string",
"description": "The IPv4 VPC address. For example: 10.99.0.0
If v4_subnet_mask is specified then v4_subnet is a required field."
},
"v4_subnet_mask": {
"type": "integer",
"description": "The number of bits for the netmask in CIDR notation. Example: 24
If v4_subnet is specified then v4_subnet_mask is a required field."
}
},
"required": [
"region"
]
},
"examples": {
"example": {
"value": {
"region": "ewr",
"description": "Example VPC",
"v4_subnet": "10.99.0.0",
"v4_subnet_mask": 24
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"tags": [
"VPCs"
]
},
"parameters": []
},
"/vpcs/{vpc-id}/attachments": {
"get": {
"summary": "List VPC Attachments",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/attachments\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"attachments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/vpc-attachment"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-vpc-attachments",
"security": [
{
"API Key": []
}
],
"description": "List VPC Attachments.",
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vpc-id",
"in": "path",
"required": true,
"description": "The [VPC ID](#operation/list-vpcs)."
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"tags": [
"VPCs"
]
}
},
"/vpcs/{vpc-id}/nat-gateway": {
"get": {
"summary": "List NAT Gateways",
"tags": [
"VPCs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/nat-gateway\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"nat_gateways": {
"type": "array",
"items": {
"$ref": "#/components/schemas/nat-gateway"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"nat_gateway": {
"value": {
"nat_gateways": [
{
"id": "7af46919-f6b0-4f34-8523-1d03911ebfc4",
"vpc_id": "59d6c282-00a7-4a92-9a41-3ad4d351ebd6",
"date_created": "2025-09-29 10:38:57",
"status": "active",
"label": "sample_label",
"tag": "sample tag",
"public_ips": [
"1.2.3.4"
],
"public_ips_v6": [
"1234:1234:1234:1234:1234:1234:1234:1234"
],
"private_ips": [
"10.1.2.3"
],
"billing": {
"charges": 9.9,
"monthly": 20.16
}
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-nat-gateways",
"description": "List all NAT Gateways for this VPC Network.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vpc-id",
"in": "path",
"required": true,
"description": "The [VPC ID](#operation/list-vpcs)."
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create NAT Gateway",
"tags": [
"VPCs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/nat-gateway\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"sample_label\",\n \"tag\" : \"sample tag\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"nat_gateway": {
"$ref": "#/components/schemas/nat-gateway"
}
}
},
"examples": {
"nat_gateway": {
"value": {
"nat_gateway": {
"id": "7af46919-f6b0-4f34-8523-1d03911ebfc4",
"vpc_id": "59d6c282-00a7-4a92-9a41-3ad4d351ebd6",
"date_created": "2025-09-29 10:38:57",
"status": "active",
"label": "sample_label",
"tag": "sample tag",
"public_ips": [
"1.2.3.4"
],
"public_ips_v6": [
"1234:1234:1234:1234:1234:1234:1234:1234"
],
"private_ips": [
"10.1.2.3"
],
"billing": {
"charges": 9.9,
"monthly": 20.16
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "create-nat-gateway",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vpc-id",
"in": "path",
"required": true,
"description": "The [VPC ID](#operation/list-vpcs)."
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "The user-supplied label for this NAT Gateway."
},
"tag": {
"type": "string",
"description": "The user-supplied tag for this NAT Gateway."
}
}
},
"examples": {
"request": {
"value": {
"label": "sample_label",
"tag": "sample tag"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a new NAT Gateway associated with this VPC Network. Supply optional attributes as desired."
}
},
"/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vpc-id",
"in": "path",
"required": true,
"description": "The [VPC ID](#operation/list-vpcs)."
},
{
"schema": {
"type": "string"
},
"name": "nat-gateway-id",
"in": "path",
"required": true,
"description": "The [NAT Gateway ID](#operation/list-nat-gateways)."
}
],
"get": {
"summary": "Get NAT Gateway",
"tags": [
"VPCs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"nat_gateway": {
"$ref": "#/components/schemas/nat-gateway"
}
}
},
"examples": {
"nat_gateway": {
"value": {
"nat_gateway": {
"id": "7af46919-f6b0-4f34-8523-1d03911ebfc4",
"vpc_id": "59d6c282-00a7-4a92-9a41-3ad4d351ebd6",
"date_created": "2025-09-29 10:38:57",
"status": "active",
"label": "sample_label",
"tag": "sample tag",
"public_ips": [
"1.2.3.4"
],
"public_ips_v6": [
"1234:1234:1234:1234:1234:1234:1234:1234"
],
"private_ips": [
"10.1.2.3"
],
"billing": {
"charges": 9.9,
"monthly": 20.16
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-nat-gateway",
"description": "Get information about a NAT Gateway.",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update NAT Gateway",
"tags": [
"VPCs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"sample_label_updated\",\n \"tag\" : \"sample tag updated\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"nat_gateway": {
"$ref": "#/components/schemas/nat-gateway"
}
}
},
"examples": {
"nat_gateway": {
"value": {
"nat_gateway": {
"id": "7af46919-f6b0-4f34-8523-1d03911ebfc4",
"vpc_id": "59d6c282-00a7-4a92-9a41-3ad4d351ebd6",
"date_created": "2025-09-29 10:38:57",
"status": "active",
"label": "sample_label_updated",
"tag": "sample tag updated",
"public_ips": [
"1.2.3.4"
],
"public_ips_v6": [
"1234:1234:1234:1234:1234:1234:1234:1234"
],
"private_ips": [
"10.1.2.3"
],
"billing": {
"charges": 9.9,
"monthly": 20.16
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "update-nat-gateway",
"description": "Update information for a NAT Gateway. All attributes are optional. If not set, the attributes will retain their original values.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "The user-supplied label for this NAT Gateway."
},
"tag": {
"type": "string",
"description": "The user-supplied tag for this NAT Gateway."
}
}
},
"examples": {
"request": {
"value": {
"label": "sample_label_updated",
"tag": "sample tag updated"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete NAT Gateway",
"tags": [
"VPCs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-nat-gateway",
"description": "Delete a NAT Gateway.",
"security": [
{
"API Key": []
}
]
}
},
"/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}/global/firewall-rules": {
"get": {
"summary": "List NAT Gateway Firewall Rules",
"tags": [
"VPCs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}/global/firewall-rules\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"firewall_rules": {
"type": "array",
"items": {
"$ref": "#/components/schemas/nat-gateway-firewall-rule"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"firewall_rules": {
"value": {
"firewall_rules": [
{
"id": "7af46919-f6b0-4f34-8523-1d03911ebfd5",
"action": "accept",
"protocol": "tcp",
"port": "123",
"subnet": "1.2.3.4",
"subnet_size": 24,
"notes": "sample rule"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-nat-gateway-firewall-rules",
"description": "List all Firewall Rules for this NAT Gateway.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vpc-id",
"in": "path",
"required": true,
"description": "The [VPC ID](#operation/list-vpcs)."
},
{
"schema": {
"type": "string"
},
"name": "nat-gateway-id",
"in": "path",
"required": true,
"description": "The [NAT Gateway ID](#operation/list-nat-gateways)."
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create NAT Gateway Firewall Rule",
"tags": [
"VPCs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}/global/firewall-rules\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"protocol\" : \"tcp\",\n \"port\": \"123\",\n \"subnet\" : \"1.2.3.4\",\n \"subnet_size\" : 24,\n \"notes\" : \"sample rule\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"firewall_rule": {
"$ref": "#/components/schemas/nat-gateway-firewall-rule"
}
}
},
"examples": {
"firewall_rule": {
"value": {
"firewall_rule": {
"id": "7af46919-f6b0-4f34-8523-1d03911ebfd5",
"action": "accept",
"protocol": "tcp",
"port": "123",
"subnet": "1.2.3.4",
"subnet_size": 24,
"notes": "sample rule"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "create-nat-gateway-firewall-rule",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vpc-id",
"in": "path",
"required": true,
"description": "The [VPC ID](#operation/list-vpcs)."
},
{
"schema": {
"type": "string"
},
"name": "nat-gateway-id",
"in": "path",
"required": true,
"description": "The [NAT Gateway ID](#operation/list-nat-gateways)."
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"protocol": {
"type": "string",
"description": "The protocol for this firewall rule\n\n* `tcp`\n* `udp`"
},
"port": {
"type": "string",
"description": "The port or port range for this firewall rule."
},
"subnet": {
"type": "string",
"description": "The IP address representing a subnet for this firewall rule."
},
"subnet_size": {
"type": "string",
"description": "The number of bits for the netmask in CIDR notation. Example: `24`"
},
"notes": {
"type": "string",
"description": "The user-supplied notes for this firewall rule."
}
}
},
"examples": {
"request": {
"value": {
"protocol": "tcp",
"port": "123",
"subnet": "1.2.3.4",
"subnet_size": 24,
"notes": "sample rule"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a new Firewall Rule associated with this NAT Gateway. Supply optional attributes as desired."
}
},
"/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}/global/firewall-rules/{firewall-rule-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vpc-id",
"in": "path",
"required": true,
"description": "The [VPC ID](#operation/list-vpcs)."
},
{
"schema": {
"type": "string"
},
"name": "nat-gateway-id",
"in": "path",
"required": true,
"description": "The [NAT Gateway ID](#operation/list-nat-gateways)."
},
{
"schema": {
"type": "string"
},
"name": "firewall-rule-id",
"in": "path",
"required": true,
"description": "The [Firewall Rule ID](#operation/list-nat-gateway-firewall-rules)."
}
],
"get": {
"summary": "Get NAT Gateway Firewall Rule",
"tags": [
"VPCs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}/global/firewall-rules/{firewall-rule-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"firewall_rule": {
"$ref": "#/components/schemas/nat-gateway-firewall-rule"
}
}
},
"examples": {
"firewall_rule": {
"value": {
"firewall_rule": {
"id": "7af46919-f6b0-4f34-8523-1d03911ebfd5",
"action": "accept",
"protocol": "tcp",
"port": "123",
"subnet": "1.2.3.4",
"subnet_size": 24,
"notes": "sample rule"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-nat-gateway-firewall-rule",
"description": "Get information about a NAT Gateway Firewall Rule.",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update NAT Gateway Firewall Rule",
"tags": [
"VPCs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}/global/firewall-rules/{firewall-rule-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"notes\" : \"sample rule updated\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"firewall_rule": {
"$ref": "#/components/schemas/nat-gateway-firewall-rule"
}
}
},
"examples": {
"firewall_rule": {
"value": {
"firewall_rule": {
"id": "7af46919-f6b0-4f34-8523-1d03911ebfd5",
"action": "accept",
"protocol": "tcp",
"port": "123",
"subnet": "1.2.3.4",
"subnet_size": 24,
"notes": "sample rule updated"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "update-nat-gateway-firewall-rule",
"description": "Update information for a NAT Gateway Firewall Rule. All attributes are optional. If not set, the attributes will retain their original values.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"notes": {
"type": "string",
"description": "The user-supplied notes for this firewall rule."
}
}
},
"examples": {
"request": {
"value": {
"notes": "sample rule updated"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete NAT Gateway Firewall Rule",
"tags": [
"VPCs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}/global/firewall-rules/{firewall-rule-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-nat-gateway-firewall-rule",
"description": "Delete a NAT Gateway Firewall Rule.",
"security": [
{
"API Key": []
}
]
}
},
"/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}/global/port-forwarding-rules": {
"get": {
"summary": "List NAT Gateway Port Forwarding Rules",
"tags": [
"VPCs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}/global/port-forwarding-rules\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"port_forwarding_rules": {
"type": "array",
"items": {
"$ref": "#/components/schemas/nat-gateway-port-forwarding-rule"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"port_forwarding_rules": {
"value": {
"port_forwarding_rules": [
{
"id": "7af46919-f6b0-4f34-8523-1d03911ebfe6",
"name": "sample_rule",
"protocol": "tcp",
"external_port": 1234,
"internal_ip": "10.1.2.3",
"internal_port": 4321,
"enabled": true,
"description": "sample_rule description",
"created_at": "2025-08-19 09:48:45",
"updated_at": "2025-08-22 14:18:47"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-nat-gateway-port-forwarding-rules",
"description": "List all Port Forwarding Rules for this NAT Gateway.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vpc-id",
"in": "path",
"required": true,
"description": "The [VPC ID](#operation/list-vpcs)."
},
{
"schema": {
"type": "string"
},
"name": "nat-gateway-id",
"in": "path",
"required": true,
"description": "The [NAT Gateway ID](#operation/list-nat-gateways)."
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create NAT Gateway Port Forwarding Rule",
"tags": [
"VPCs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}/global/port-forwarding-rules\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"sample_rule\",\n \"protocol\" : \"tcp\",\n \"external_port\": 1234,\n \"internal_ip\" : \"10.1.2.3\",\n \"internal_port\" : 4321,\n \"enabled\" : true,\n \"description\" : \"sample_rule description\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"port_forwarding_rule": {
"$ref": "#/components/schemas/nat-gateway-port-forwarding-rule"
}
}
},
"examples": {
"port_forwarding_rule": {
"value": {
"port_forwarding_rule": {
"id": "7af46919-f6b0-4f34-8523-1d03911ebfe6",
"name": "sample_rule",
"protocol": "tcp",
"external_port": 1234,
"internal_ip": "10.1.2.3",
"internal_port": 4321,
"enabled": true,
"description": "sample_rule description",
"created_at": "2025-08-19 09:48:45",
"updated_at": "2025-08-22 14:18:47"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "create-nat-gateway-port-forwarding-rule",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vpc-id",
"in": "path",
"required": true,
"description": "The [VPC ID](#operation/list-vpcs)."
},
{
"schema": {
"type": "string"
},
"name": "nat-gateway-id",
"in": "path",
"required": true,
"description": "The [NAT Gateway ID](#operation/list-nat-gateways)."
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of this port forwarding rule."
},
"protocol": {
"type": "string",
"description": "The protocol for this port forwarding rule\n\n* `tcp`\n* `udp`\n* `both`"
},
"external_port": {
"type": "integer",
"description": "The external port associated with this port forwarding rule."
},
"internal_ip": {
"type": "string",
"description": "The internal IP address associated with this port forwarding rule."
},
"internal_port": {
"type": "integer",
"description": "The internal port associated with this port forwarding rule."
},
"enabled": {
"type": "boolean",
"description": "Whether this port forwarding rule is enabled."
},
"description": {
"type": "string",
"description": "The user-supplied description for this port forwarding rule."
}
}
},
"examples": {
"request": {
"value": {
"name": "sample_rule",
"protocol": "tcp",
"external_port": 1234,
"internal_ip": "10.1.2.3",
"internal_port": 4321,
"enabled": true,
"description": "sample_rule description"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a new Port Forwarding Rule associated with this NAT Gateway. Supply optional attributes as desired."
}
},
"/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}/global/port-forwarding-rules/{port-forwarding-rule-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vpc-id",
"in": "path",
"required": true,
"description": "The [VPC ID](#operation/list-vpcs)."
},
{
"schema": {
"type": "string"
},
"name": "nat-gateway-id",
"in": "path",
"required": true,
"description": "The [NAT Gateway ID](#operation/list-nat-gateways)."
},
{
"schema": {
"type": "string"
},
"name": "port-forwarding-rule-id",
"in": "path",
"required": true,
"description": "The [Port Forwarding Rule ID](#operation/list-nat-gateway-port-forwarding-rules)."
}
],
"get": {
"summary": "Get NAT Gateway Port Forwarding Rule",
"tags": [
"VPCs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}/global/port-forwarding-rules/{port-forwarding-rule-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"port_forwarding_rule": {
"$ref": "#/components/schemas/nat-gateway-port-forwarding-rule"
}
}
},
"examples": {
"port_forwarding_rule": {
"value": {
"port_forwarding_rule": {
"id": "7af46919-f6b0-4f34-8523-1d03911ebfe6",
"name": "sample_rule",
"protocol": "tcp",
"external_port": 1234,
"internal_ip": "10.1.2.3",
"internal_port": 4321,
"enabled": true,
"description": "sample_rule description",
"created_at": "2025-08-19 09:48:45",
"updated_at": "2025-08-22 14:18:47"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-nat-gateway-port-forwarding-rule",
"description": "Get information about a NAT Gateway Port Forwarding Rule.",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update NAT Gateway Port Forwarding Rule",
"tags": [
"VPCs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}/global/port-forwarding-rules/{port-forwarding-rule-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"sample_rule updated\",\n \"protocol\" : \"tcp\",\n \"external_port\": 1234,\n \"internal_ip\" : \"10.1.2.3\",\n \"internal_port\" : 4321,\n \"enabled\" : true,\n \"description\" : \"sample_rule description updated\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"port_forwarding_rule": {
"$ref": "#/components/schemas/nat-gateway-port-forwarding-rule"
}
}
},
"examples": {
"port_forwarding_rule": {
"value": {
"port_forwarding_rule": {
"id": "7af46919-f6b0-4f34-8523-1d03911ebfe6",
"name": "sample_rule updated",
"protocol": "tcp",
"external_port": 1234,
"internal_ip": "10.1.2.3",
"internal_port": 4321,
"enabled": true,
"description": "sample_rule description updated",
"created_at": "2025-08-19 09:48:45",
"updated_at": "2025-08-22 14:18:47"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "update-nat-gateway-port-forwarding-rule",
"description": "Update information for a NAT Gateway Port Forwarding Rule. All attributes are optional. If not set, the attributes will retain their original values.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of this port forwarding rule."
},
"protocol": {
"type": "string",
"description": "The protocol for this port forwarding rule\n\n* `tcp`\n* `udp`\n* `both`"
},
"external_port": {
"type": "integer",
"description": "The external port associated with this port forwarding rule."
},
"internal_ip": {
"type": "string",
"description": "The internal IP address associated with this port forwarding rule."
},
"internal_port": {
"type": "integer",
"description": "The internal port associated with this port forwarding rule."
},
"enabled": {
"type": "boolean",
"description": "Whether this port forwarding rule is enabled."
},
"description": {
"type": "string",
"description": "The user-supplied description for this port forwarding rule."
}
}
},
"examples": {
"request": {
"value": {
"name": "sample_rule updated",
"protocol": "tcp",
"external_port": 1234,
"internal_ip": "10.1.2.3",
"internal_port": 4321,
"enabled": true,
"description": "sample_rule description updated"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete NAT Gateway Port Forwarding Rule",
"tags": [
"VPCs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/vpcs/{vpc-id}/nat-gateway/{nat-gateway-id}/global/port-forwarding-rules/{port-forwarding-rule-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-nat-gateway-port-forwarding-rule",
"description": "Delete a NAT Gateway port-forwarding Rule.",
"security": [
{
"API Key": []
}
]
}
},
"/users/{user-id}": {
"get": {
"summary": "Get User",
"tags": [
"users"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/{user-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/user"
},
"examples": {
"user": {
"value": {
"user": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"name": "Example User",
"first_name": "Example",
"last_name": "User",
"email": "user@example.com",
"api_enabled": true,
"service_user": true,
"acls": [
"manage_users",
"subscriptions_view",
"subscriptions",
"provisioning",
"billing",
"support",
"abuse",
"dns",
"upgrade",
"objstore",
"loadbalancer"
],
"invited_by": "admin@example.com",
"invited_on": "2026-01-01T12:00:00+00:00",
"invite_accepted": true,
"last_activity": "2024-10-15T12:34:56+00:00"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-user",
"description": "Get information about a User.",
"security": [
{
"API Key": []
}
]
},
"parameters": [
{
"schema": {
"type": "string"
},
"name": "user-id",
"in": "path",
"required": true,
"description": "The [User id](#operation/list-users)."
}
],
"delete": {
"summary": "Delete User",
"operationId": "delete-user",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/{user-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"description": "Delete a User.",
"security": [
{
"API Key": []
}
],
"tags": [
"users"
]
},
"patch": {
"summary": "Update User",
"operationId": "update-user",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/{user-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"api_enabled\" : true,\n \"acls\" : [\n \"manage_users\",\n \"subscriptions_view\",\n \"subscriptions\",\n \"provisioning\",\n \"billing\",\n \"support\",\n \"abuse\",\n \"dns\",\n \"upgrade\",\n \"objstore\",\n \"loadbalancer\"\n ]\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "The User's email address."
},
"name": {
"type": "string",
"description": "No longer supported as of 07/2025.",
"deprecated": true
},
"first_name": {
"type": "string",
"description": "No longer supported as of 07/2025.",
"deprecated": true
},
"last_name": {
"type": "string",
"description": "No longer supported as of 07/2025.",
"deprecated": true
},
"password": {
"type": "string",
"description": "No longer supported as of 07/2025.",
"deprecated": true
},
"api_enabled": {
"type": "boolean",
"description": "API access is permitted for this User.\n\n* true (default)\n* false"
},
"acls": {
"type": "array",
"description": "An array of permission granted. Valid values:\n\n* abuse\n* activity_logs\n* alerts\n* billing\n* dns\n* firewall\n* loadbalancer\n* manage\\_users\n* objstore\n* provisioning\n* subscriptions\n* subscriptions\\_view\n* support\n* upgrade",
"items": {
"type": "string"
}
}
}
},
"examples": {
"request": {
"value": {
"api_enabled": true,
"acls": [
"manage_users",
"subscriptions_view",
"subscriptions",
"provisioning",
"billing",
"support",
"abuse",
"dns",
"upgrade",
"objstore",
"loadbalancer"
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Update information for a User. All attributes are optional. If not set, the attributes will retain their original values.",
"security": [
{
"API Key": []
}
],
"tags": [
"users"
]
}
},
"/users/{user-id}/ip-whitelist/entry": {
"get": {
"summary": "Get User IP Whitelist Entry",
"operationId": "get-user-ip-whitelist-entry",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/{user-id}/ip-whitelist/entry?subnet=8.8.8.0&subnet_size=24\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ip_whitelist_entry": {
"$ref": "#/components/schemas/ip-whitelist-entry"
}
}
},
"examples": {
"ip_whitelist_entry": {
"value": {
"ip_whitelist_entry": {
"subnet": "8.8.8.0",
"subnet_size": 24,
"date_added": "2024-01-01T00:00:00Z",
"ip_type": "v4"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"description": "Get a specific IP whitelist entry for a User. Only root users or users with manage users permission can access this endpoint.",
"security": [
{
"API Key": []
}
],
"tags": [
"users"
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "subnet",
"in": "query",
"required": true,
"description": "The IP address or subnet."
},
{
"schema": {
"type": "integer"
},
"name": "subnet_size",
"in": "query",
"required": true,
"description": "The subnet size."
}
]
},
"parameters": [
{
"schema": {
"type": "string"
},
"name": "user-id",
"in": "path",
"required": true,
"description": "The [User id](#operation/list-users)."
}
]
},
"/users/{user-id}/ip-whitelist": {
"get": {
"summary": "List User IP Whitelist",
"operationId": "list-user-ip-whitelist",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/{user-id}/ip-whitelist\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ip_whitelist": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ip-whitelist-entry"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"ip_whitelist": {
"value": {
"ip_whitelist": [
{
"subnet": "8.8.8.0",
"subnet_size": 24,
"date_added": "2024-01-01T00:00:00Z",
"ip_type": "v4"
}
],
"meta": {
"total": 1
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"description": "Get the IP whitelist for a User. Only root users or users with manage users permission can access this endpoint.",
"security": [
{
"API Key": []
}
],
"tags": [
"users"
]
},
"parameters": [
{
"schema": {
"type": "string"
},
"name": "user-id",
"in": "path",
"required": true,
"description": "The [User id](#operation/list-users)."
}
],
"post": {
"summary": "Add IP to User Whitelist",
"operationId": "add-user-ip-whitelist",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/{user-id}/ip-whitelist\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"subnet\" : \"8.8.8.0\",\n \"subnet_size\" : 24\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"description": "Add an IP address or subnet to a User's whitelist. Only root users or users with manage users permission can access this endpoint.",
"security": [
{
"API Key": []
}
],
"tags": [
"users"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"subnet": {
"type": "string",
"description": "The IP address or subnet to whitelist."
},
"subnet_size": {
"type": "integer",
"description": "The subnet size. For IPv4: 0 (allow all) or 8-32. For IPv6: 0 (allow all) or 20-128."
}
},
"required": [
"subnet",
"subnet_size"
]
},
"examples": {
"request": {
"value": {
"subnet": "8.8.8.0",
"subnet_size": 24
}
}
}
}
}
}
},
"delete": {
"summary": "Remove IP from User Whitelist",
"operationId": "remove-user-ip-whitelist",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/{user-id}/ip-whitelist\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"subnet\" : \"8.8.8.0\",\n \"subnet_size\" : 24\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"description": "Remove an IP address or subnet from a User's whitelist. Only root users or users with manage users permission can access this endpoint.",
"security": [
{
"API Key": []
}
],
"tags": [
"users"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"subnet": {
"type": "string",
"description": "The IP address or subnet to remove."
},
"subnet_size": {
"type": "integer",
"description": "The subnet size."
}
},
"required": [
"subnet",
"subnet_size"
]
},
"examples": {
"request": {
"value": {
"subnet": "8.8.8.0",
"subnet_size": 24
}
}
}
}
}
}
}
},
"/users/{user-id}/apikeys": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "user-id",
"in": "path",
"required": true,
"description": "The [User id](#operation/list-users)."
}
],
"get": {
"summary": "List User API Keys",
"tags": [
"users"
],
"operationId": "list-user-api-keys",
"description": "Gets all API keys for the target user. API keys returned by this method are masked. Only root users or users with manage users permission can access this endpoint.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/{user-id}/apikeys\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"api_keys": {
"type": "array",
"items": {
"$ref": "#/components/schemas/apikey"
}
}
}
},
"examples": {
"response": {
"value": {
"api_keys": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"api_key": "*******************************00000",
"name": "Default",
"expire": true,
"date_expire": "2030-01-01T00:00:00Z"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create User API Key",
"operationId": "create-user-api-key",
"description": "Adds an API key to the target user's API key list. Only root users or users with manage users permission can access this endpoint.",
"security": [
{
"API Key": []
}
],
"tags": [
"users"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/{user-id}/apikeys\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"Production\",\n \"expire\" : true,\n \"date_expire\" : \"2030-01-01T00:00:00Z\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Custom name of the API key."
},
"expire": {
"type": "boolean",
"description": "Will the API key expire?"
},
"date_expire": {
"type": "string",
"description": "Date when the API key expires. Only valid when `expire` is `true`."
}
}
},
"examples": {
"request": {
"value": {
"name": "Production",
"expire": true,
"date_expire": "2030-01-01T00:00:00Z"
}
}
}
}
}
}
}
},
"/users/{user-id}/apikeys/{apikey-id}": {
"get": {
"summary": "Get User API Key",
"operationId": "get-user-api-key",
"description": "Gets information about a user's API key. API keys returned by this method are masked. Only root users or users with manage users permission can access this endpoint.",
"tags": [
"users"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/{user-id}/apikeys/{apikey-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"headers": {},
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"api_key": {
"$ref": "#/components/schemas/apikey"
}
}
},
"examples": {
"response": {
"value": {
"api_key": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"api_key": "*******************************00000",
"name": "Default",
"expire": true,
"date_expire": "2030-01-01T00:00:00Z"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete User API Key",
"tags": [
"users"
],
"operationId": "delete-user-api-key",
"description": "Delete an API key from the target user's API key list. Only root users or users with manage users permission can access this endpoint.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/{user-id}/apikeys/{apikey-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"security": [
{
"API Key": []
}
]
},
"parameters": [
{
"schema": {
"type": "string"
},
"name": "user-id",
"in": "path",
"required": true,
"description": "The [User id](#operation/list-users)."
},
{
"schema": {
"type": "string"
},
"name": "apikey-id",
"in": "path",
"required": true,
"description": "The [API key id](#operation/list-user-api-keys)."
}
]
},
"/users": {
"get": {
"summary": "Get Users",
"tags": [
"users"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"$ref": "#/components/schemas/user"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"users": {
"value": {
"users": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"name": "Example User",
"first_name": "Example",
"last_name": "User",
"email": "user@example.com",
"api_enabled": true,
"service_user": false,
"status": true,
"acls": [
"manage_users",
"subscriptions_view",
"subscriptions",
"provisioning",
"billing",
"support",
"abuse",
"dns",
"upgrade",
"objstore",
"loadbalancer"
],
"last_activity": "2024-10-15T12:34:56+00:00"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-users",
"description": "Get a list of all Users in your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create User",
"operationId": "create-user",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"email\" : \"user@example.com\",\n \"first_name\" : \"Example\",\n \"last_name\" : \"User\",\n \"password\" : \"example-password\",\n \"api_enabled\" : true,\n \"acls\" : [\n \"manage_users\",\n \"subscriptions_view\",\n \"subscriptions\",\n \"provisioning\",\n \"billing\",\n \"support\",\n \"abuse\",\n \"dns\",\n \"upgrade\",\n \"objstore\",\n \"loadbalancer\"\n ]\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/user"
},
"examples": {
"user": {
"value": {
"user": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"name": "Example User",
"first_name": "Example",
"last_name": "User",
"email": "user@example.com",
"api_enabled": true,
"service_user": false,
"acls": [
"manage_users",
"subscriptions_view",
"subscriptions",
"provisioning",
"billing",
"support",
"abuse",
"dns",
"upgrade",
"objstore",
"loadbalancer"
]
}
}
},
"service_user": {
"value": {
"user": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"name": "Service User",
"first_name": "Service",
"last_name": "User",
"email": "service@example.com",
"api_enabled": true,
"service_user": true,
"api_key": "ABCD7PQSLLGS6XDHQY4CMHUL55T5YO63EFGH",
"acls": [
"subscriptions_view",
"subscriptions",
"provisioning"
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"description": "Create a new User. The `email`, `first_name`, `last_name`, and `password` attributes are required.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "The User's email address."
},
"name": {
"type": "string",
"description": "Use `first_name`, `last_name` instead. The User's full name.",
"deprecated": true
},
"first_name": {
"type": "string",
"description": "The User's first name."
},
"last_name": {
"type": "string",
"description": "The User's last name."
},
"password": {
"type": "string",
"description": "The User's password."
},
"api_enabled": {
"type": "boolean",
"description": "API access is permitted for this User.\n\n* true (default)\n* false"
},
"acls": {
"type": "array",
"description": "An array of permissions granted.\n\n* abuse\n* activity_logs\n* alerts\n* billing\n* dns\n* firewall\n* loadbalancer\n* manage\\_users\n* objstore\n* provisioning\n* subscriptions\n* subscriptions\\_view\n* support\n* upgrade",
"items": {
"type": "string"
}
},
"service_user": {
"type": "boolean",
"description": "Create this user as a service user (API-only access, no portal login).\nService users will receive their API key upon creation.\n\n* true\n* false (default)"
}
},
"required": [
"email",
"first_name",
"last_name",
"password"
]
},
"examples": {
"request example": {
"value": {
"first_name": "Example",
"last_name": "User",
"email": "user@example.com",
"password": "sh#sedHA_FTdz6w+",
"api_enabled": true,
"acls": [
"manage_users",
"subscriptions_view",
"subscriptions",
"provisioning",
"billing",
"support",
"abuse"
]
}
},
"service user example": {
"value": {
"first_name": "Service",
"last_name": "User",
"email": "service@example.com",
"password": "serviceUserPa$$w0rd",
"api_enabled": true,
"service_user": true,
"acls": [
"subscriptions_view",
"subscriptions",
"provisioning",
"dns",
"upgrade",
"objstore",
"loadbalancer"
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
],
"tags": [
"users"
]
}
},
"/startup-scripts/{startup-id}": {
"get": {
"summary": "Get Startup Script",
"tags": [
"startup"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/startup-scripts/{startup-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"headers": {},
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"startup_script": {
"$ref": "#/components/schemas/startup"
}
}
},
"examples": {
"response": {
"value": {
"startup_script": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"date_modified": "2020-10-10T01:59:20+00:00",
"name": "Example Startup Script",
"type": "pxe",
"script": "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-startup-script",
"description": "Get information for a Startup Script.",
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Startup Script",
"tags": [
"startup"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/startup-scripts/{startup-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-startup-script",
"security": [
{
"API Key": []
}
],
"description": "Delete a Startup Script."
},
"patch": {
"summary": "Update Startup Script",
"tags": [
"startup"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/startup-scripts/{startup-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"Example Startup Script\",\n \"script\" : \"QmFzZTY0IEV4YW1wbGUgRGF0YQ==\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-startup-script",
"description": "Update a Startup Script. The attributes `name` and `script` are optional. If not set, the attributes will retain their original values. The `script` attribute is base-64 encoded. New deployments will use the updated script, but this action does not update previously deployed instances.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the Startup Script."
},
"script": {
"type": "string",
"description": "The base-64 encoded Startup Script."
},
"type": {
"type": "string",
"description": "The Startup Script type.\n\nboot (default)\npxe"
}
}
},
"examples": {
"request": {
"value": {
"name": "Example Startup Script",
"script": "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"parameters": [
{
"schema": {
"type": "string"
},
"name": "startup-id",
"in": "path",
"required": true,
"description": "The [Startup Script id](#operation/list-startup-scripts)."
}
]
},
"/startup-scripts": {
"get": {
"summary": "List Startup Scripts",
"tags": [
"startup"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/startup-scripts\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"startup_scripts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/startup"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"startup_scripts": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"date_modified": "2020-10-10T01:59:20+00:00",
"name": "Example Startup Script",
"type": "pxe"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"operationId": "list-startup-scripts",
"description": "Get a list of all Startup Scripts.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create Startup Script",
"tags": [
"startup"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/startup-scripts\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"Example Startup Script\",\n \"type\" : \"pxe\",\n \"script\" : \"QmFzZTY0IEV4YW1wbGUgRGF0YQ==\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"startup_script": {
"$ref": "#/components/schemas/startup"
}
}
},
"examples": {
"response": {
"value": {
"startup_script": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"date_modified": "2020-10-10T01:56:20+00:00",
"name": "Example Startup Script",
"type": "pxe",
"script": "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-startup-script",
"description": "Create a new Startup Script. The `name` and `script` attributes are required, and scripts are base-64 encoded.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the Startup Script."
},
"type": {
"type": "string",
"description": "The Startup Script type.\n\n* boot (default)\n* pxe"
},
"script": {
"type": "string",
"description": "The base-64 encoded Startup Script."
}
},
"required": [
"name",
"script"
]
},
"examples": {
"request": {
"value": {
"name": "Example Startup Script",
"type": "pxe",
"script": "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"parameters": []
},
"/ssh-keys/{ssh-key-id}": {
"get": {
"summary": "Get SSH Key",
"tags": [
"ssh"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/ssh-keys/{ssh-key-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ssh_key": {
"$ref": "#/components/schemas/ssh"
}
}
},
"examples": {
"response": {
"value": {
"ssh_key": {
"id": "3b8066a7-b438-455a-9688-44afc9a3597f",
"date_created": "2020-10-10T01:56:20+00:00",
"name": "Example SSH Key",
"ssh_key": "ssh-rsa AA... user@example.com"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-ssh-key",
"description": "Get information about an SSH Key.",
"security": [
{
"API Key": []
}
]
},
"patch": {
"summary": "Update SSH Key",
"tags": [
"ssh"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/ssh-keys/{ssh-key-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"Example SSH Key\",\n \"ssh_key\" : \"ssh-rsa AA... user@example.com\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-ssh-key",
"description": "Update an SSH Key. The attributes `name` and `ssh_key` are optional. If not set, the attributes will retain their original values. New deployments will use the updated key, but this action does not update previously deployed instances.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The user-supplied name for this SSH Key."
},
"ssh_key": {
"type": "string",
"description": "The SSH Key."
}
}
},
"examples": {
"request": {
"value": {
"name": "Example SSH Key",
"ssh_key": "ssh-rsa AA... user@example.com"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete SSH Key",
"tags": [
"ssh"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/ssh-keys/{ssh-key-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-ssh-key",
"description": "Delete an SSH Key.",
"security": [
{
"API Key": []
}
]
},
"parameters": [
{
"schema": {
"type": "string"
},
"name": "ssh-key-id",
"in": "path",
"required": true,
"description": "The [SSH Key id](#operation/list-ssh-keys)."
}
]
},
"/ssh-keys": {
"get": {
"summary": "List SSH Keys",
"tags": [
"ssh"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/ssh-keys\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ssh_keys": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ssh"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"ssh_keys": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"name": "Example SSH Key",
"ssh_key": "ssh-rsa AA... user@example.com"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"operationId": "list-ssh-keys",
"description": "List all SSH Keys in your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500.\n"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "instance-id",
"description": "Filter by SSH keys configured for a [Compute Instance id](#operation/list-instances) or a [Bare Metal Instance id](#operation/list-baremetals)."
}
]
},
"post": {
"summary": "Create SSH key",
"tags": [
"ssh"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/ssh-keys\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"Example SSH Key\",\n \"ssh_key\" : \"ssh-rsa AA... user@example.com\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ssh_key": {
"$ref": "#/components/schemas/ssh"
}
}
},
"examples": {
"response": {
"value": {
"ssh_key": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"name": "Example SSH Key",
"ssh_key": "ssh-rsa AA... user@example.com"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"operationId": "create-ssh-key",
"description": "Create a new SSH Key for use with future instances. This does not update any running instances.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The user-supplied name for this SSH Key."
},
"ssh_key": {
"type": "string",
"description": "The SSH Key."
}
},
"required": [
"name",
"ssh_key"
]
},
"examples": {
"request": {
"value": {
"name": "Example SSH Key",
"ssh_key": "ssh-rsa AA... user@example.com"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
]
}
},
"/software-licenses": {
"get": {
"summary": "List Software Licenses",
"tags": [
"software-licenses"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/software-licenses\" \\\n-X GET \\\n-H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"software_licenses": {
"type": "array",
"items": {
"$ref": "#/components/schemas/software-license"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"software_licenses": [
{
"id": "423c51da-b208-11f1-a02f-4ea691eb8110",
"license": "cPanel",
"price": 20,
"tier_current": "1 Account",
"tier_maximum": "100 Accounts",
"instance_id": "8138bda4-810c-4f58-b8f0-0be1393662e0"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"operationId": "list-software-licenses",
"description": "List all Software Licenses in your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500.\n"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "instance-id",
"description": "Filter by software licenses attached to a [Compute Instance id](#operation/list-instances) or a [Bare Metal Instance id](#operation/list-baremetals)."
}
]
}
},
"/snapshots/{snapshot-id}": {
"delete": {
"summary": "Delete Snapshot",
"tags": [
"snapshot"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/snapshots/{snapshot-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-snapshot",
"description": "Delete a Snapshot.",
"security": [
{
"API Key": []
}
]
},
"parameters": [
{
"schema": {
"type": "string"
},
"name": "snapshot-id",
"in": "path",
"required": true,
"description": "The [Snapshot id](#operation/list-snapshots)."
}
],
"get": {
"summary": "Get Snapshot",
"tags": [
"snapshot"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/snapshots/{snapshot-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"snapshot": {
"$ref": "#/components/schemas/snapshot"
}
}
},
"examples": {
"response": {
"value": {
"snapshot": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"date_expires": "0000-00-00T00:00:00+00:00",
"description": "Example Snapshot",
"size": 42949672960,
"compressed_size": 949678560,
"status": "complete",
"os_id": 215,
"app_id": 0,
"pending_charges": 0.33
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-snapshot",
"description": "Get information about a Snapshot.",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Snapshot",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/snapshots/{snapshot-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\": \"Example Snapshot\"\n }'"
}
],
"operationId": "put-snapshots-snapshot-id",
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"description": "Update the description for a Snapshot.",
"tags": [
"snapshot"
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "The user-supplied description for the Snapshot."
}
},
"required": [
"description"
]
},
"examples": {
"request": {
"value": {
"description": "Example Snapshot"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
]
}
},
"/snapshots": {
"get": {
"summary": "List Snapshots",
"tags": [
"snapshot"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/snapshots\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"snapshots": {
"type": "array",
"items": {
"$ref": "#/components/schemas/snapshot"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"snapshots": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"description": "Example Snapshot",
"size": 42949672960,
"compressed_size": 949678560,
"status": "complete",
"os_id": 215,
"app_id": 0
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"operationId": "list-snapshots",
"description": "Get information about all Snapshots in your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "description",
"description": "Filter the list of Snapshots by `description`"
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create Snapshot",
"tags": [
"snapshot"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/snapshots\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"instance_id\" : \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\",\n \"description\" : \"Example Snapshot\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"snapshot": {
"$ref": "#/components/schemas/snapshot"
}
}
},
"examples": {
"response": {
"value": {
"snapshot": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"description": "Example Snapshot",
"size": 0,
"compressed_size": 0,
"status": "pending",
"os_id": 215,
"app_id": 0
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"operationId": "create-snapshot",
"description": "Create a new Snapshot for `instance_id`.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance_id": {
"type": "string",
"description": "Create a Snapshot for this [Instance id](#operation/list-instances)."
},
"description": {
"type": "string",
"description": "The user-supplied description of the Snapshot."
}
},
"required": [
"instance_id"
]
},
"examples": {
"request": {
"value": {
"instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"description": "Example Snapshot"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/snapshots/create-from-url": {
"post": {
"summary": "Create Snapshot from URL",
"tags": [
"snapshot"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/snapshots/create-from-url\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"url\" : \"https://example.com/disk_image.raw\",\n \"description\" : \"Example Snapshot\",\n \"uefi\": false\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"snapshot": {
"$ref": "#/components/schemas/snapshot"
}
}
},
"examples": {
"snapshot": {
"value": {
"snapshot": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"description": "Example Snapshot",
"size": 0,
"compressed_size": 0,
"status": "pending",
"os_id": 215,
"app_id": 0
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-snapshot-create-from-url",
"description": "Create a new Snapshot from a RAW image located at `url`.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "The public URL containing a RAW image."
},
"description": {
"type": "string",
"description": "The user-supplied description of the Snapshot."
},
"uefi": {
"type": "boolean",
"description": "Whether or not the snapshot uses UEFI."
}
},
"required": [
"url"
]
},
"examples": {
"example": {
"value": {
"url": "http://example.com/disk_image.raw",
"description": "Example Snapshot",
"uefi": false
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
]
}
},
"/subaccounts": {
"get": {
"summary": "List Sub-Accounts",
"tags": [
"subaccount"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/subaccounts\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"subaccounts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/subaccount"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"subaccounts": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"email": "subaccount@vultr.com",
"subaccount_name": "Acme Widgets LLC",
"subaccount_id": 472924,
"activated": false,
"balance": 0,
"pending_charges": 0
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"operationId": "list-subaccounts",
"description": "Get information about all sub-accounts for your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create Sub-Account",
"tags": [
"subaccount"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/subaccounts\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"email\" : \"subaccount@vultr.com\",\n \"subaccount_name\" : \"Acme Widgets LLC\"\n \"subaccount_id\" : \"472924\"\n\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"subaccount": {
"$ref": "#/components/schemas/subaccount"
}
}
},
"examples": {
"response": {
"value": {
"subaccount": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"email": "subaccount@vultr.com",
"subaccount_name": "Acme Widgets LLC",
"subaccount_id": 472924,
"activated": false,
"balance": 0,
"pending_charges": 0
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"operationId": "create-subaccount",
"description": "Create a new subaccount.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Create a new sub-account with this email address."
},
"subaccount_name": {
"type": "string",
"description": "Your name for this sub-account."
},
"subaccount_id": {
"type": "string",
"description": "Your ID for this sub-account."
}
},
"required": [
"email"
]
},
"examples": {
"request": {
"value": {
"email": "subaccount@vultr.com",
"subaccount_name": "Acme Widgets LLC",
"subaccount_id": 472924
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/reserved-ips/{reserved-ip}": {
"get": {
"summary": "Get Reserved IP",
"tags": [
"reserved-ip"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/reserved-ips/{reserved-ip}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"reserved_ip": {
"$ref": "#/components/schemas/reserved-ip"
}
}
},
"examples": {
"example-1": {
"value": {
"reserved_ip": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"region": "ewr",
"ip_type": "v4",
"subnet": "192.0.2.123",
"subnet_size": 32,
"label": "Example Reserved IPv4",
"instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-reserved-ip",
"description": "Get information about a Reserved IP.",
"security": [
{
"API Key": []
}
]
},
"parameters": [
{
"schema": {
"type": "string"
},
"name": "reserved-ip",
"in": "path",
"required": true,
"description": "The [Reserved IP id](#operation/list-reserved-ips)."
}
],
"delete": {
"summary": "Delete Reserved IP",
"operationId": "delete-reserved-ip",
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"description": "Delete a Reserved IP.",
"tags": [
"reserved-ip"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/reserved-ips/{reserved-ip}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"security": [
{
"API Key": []
}
]
},
"patch": {
"summary": "Update Reserved IP",
"operationId": "patch-reserved-ips-reserved-ip",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"reserved_ip": {
"$ref": "#/components/schemas/reserved-ip"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"description": "Update information on a Reserved IP.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string"
}
},
"required": [
"label"
]
},
"examples": {
"request": {
"value": {
"label": "Example Label"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/reserved-ips/{reserved-ip}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"Example Label\"\n }'"
}
],
"tags": [
"reserved-ip"
]
}
},
"/reserved-ips": {
"get": {
"summary": "List Reserved IPs",
"tags": [
"reserved-ip"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/reserved-ips\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"reserved_ips": {
"type": "array",
"items": {
"$ref": "#/components/schemas/reserved-ip"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"reserved_ips": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"region": "ewr",
"ip_type": "v4",
"subnet": "192.0.2.123",
"subnet_size": 32,
"label": "Example Reserved IPv4",
"instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
},
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"region": "ewr",
"ip_type": "v6",
"subnet": "2001:0db8:5:5157::",
"subnet_size": 64,
"label": "Example Reserved IPv6",
"instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
}
],
"meta": {
"total": 2,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-reserved-ips",
"description": "List all Reserved IPs in your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create Reserved IP",
"tags": [
"reserved-ip"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/reserved-ips\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"ip_type\" : \"v4\",\n \"label\" : \"Example Reserved IPv4\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"reserved_ip": {
"$ref": "#/components/schemas/reserved-ip"
}
}
},
"examples": {
"response": {
"value": {
"reserved_ip": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"region": "ewr",
"ip_type": "v4",
"subnet": "192.0.2.123",
"subnet_size": 32,
"label": "Example Reserved IPv4",
"instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-reserved-ip",
"description": "Create a new Reserved IP. The `region` and `ip_type` attributes are required.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the Reserved IP will be created."
},
"ip_type": {
"type": "string",
"description": "The type of IP address.\n\n* v4\n* v6"
},
"label": {
"type": "string",
"description": "The user-supplied label."
}
},
"required": [
"region",
"ip_type"
]
},
"examples": {
"request": {
"value": {
"region": "ewr",
"ip_type": "v4",
"label": "Example Reserved IPv4"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"parameters": []
},
"/reserved-ips/{reserved-ip}/attach": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "reserved-ip",
"in": "path",
"required": true,
"description": "The [Reserved IP id](#operation/list-reserved-ips)"
}
],
"post": {
"summary": "Attach Reserved IP",
"tags": [
"reserved-ip"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/reserved-ips/{reserved-ip}/attach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"instance_id\" : \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "attach-reserved-ip",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance_id": {
"type": "string",
"description": "Attach the Reserved IP to a [Compute Instance id](#operation/list-instances) or a [Bare Metal Instance id](#operation/list-baremetals)."
}
},
"required": [
"instance_id"
]
},
"examples": {
"request": {
"value": {
"instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
],
"description": "Attach a Reserved IP to an compute instance or a baremetal instance - `instance_id`."
}
},
"/reserved-ips/{reserved-ip}/detach": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "reserved-ip",
"in": "path",
"required": true,
"description": "The [Reserved IP id](#operation/list-reserved-ips)"
}
],
"post": {
"summary": "Detach Reserved IP",
"tags": [
"reserved-ip"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/reserved-ips/{reserved-ip}/detach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "detach-reserved-ip",
"description": "Detach a Reserved IP.",
"security": [
{
"API Key": []
}
]
}
},
"/reserved-ips/convert": {
"post": {
"summary": "Convert Instance IP to Reserved IP",
"tags": [
"reserved-ip"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/reserved-ips/convert\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"ip_address\": \"192.0.2.123\",\n \"label\": \"Example Reserved IPv4\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"reserved_ip": {
"$ref": "#/components/schemas/reserved-ip"
}
}
},
"examples": {
"response": {
"value": {
"reserved_ip": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"region": "ewr",
"ip_type": "v4",
"subnet": "192.0.2.123",
"subnet_size": 64,
"label": "Example Reserved IPv4",
"instance_id": "3f26dfe9-6a18-4f3d-a543-0cbca7a3e496"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "convert-reserved-ip",
"description": "Convert the `ip_address` of an existing [instance](#operation/list-instances) into a Reserved IP.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ip_address": {
"type": "string",
"description": "The IP address to convert."
},
"label": {
"type": "string",
"description": "A user-supplied label for this IP address."
}
},
"required": [
"ip_address"
]
},
"examples": {
"request": {
"value": {
"ip_address": "192.0.2.123",
"label": "Example Reserved IPv4"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"parameters": []
},
"/reserved-ips/{reserved-ip}/reverse-dns": {
"get": {
"description": "Get Reverse DNS information for a Reserved IP.",
"parameters": [
{
"schema": {
"type": "string"
},
"name": "reserved-ip",
"in": "path",
"required": true,
"description": "The [Reserved IP id](#operation/list-reserved-ips)"
}
],
"summary": "Get Reverse DNS",
"tags": [
"reserved-ip"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/reserved-ips/{reserved-ip}/reverse-dns\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"type": "object",
"properties": {
"ipv4": {
"type": "string"
}
},
"required": [
"ipv4"
]
},
{
"type": "object",
"properties": {
"ipv6": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ip": {
"type": "string"
},
"domain": {
"type": "string"
}
}
}
}
},
"required": [
"ipv6"
]
}
]
},
"examples": {
"example1": {
"summary": "IPv6 Example",
"value": {
"ipv6": [
{
"ip": "2001:19f0:5401:98b::",
"domain": "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.b.8.9.0.1.0.4.5.0.f.9.1.1.0.0.2.ip6.arpa"
},
{
"ip": "2001:19f0:5401:98b:ffff:ffff:ffff:ffff",
"domain": "f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.f.b.8.9.0.1.0.4.5.0.f.9.1.1.0.0.2.ip6.arpa"
}
]
}
},
"example2": {
"summary": "IPv4 Example",
"value": {
"ipv4": "45.32.209.11.vultrusercontent.com"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "get-reserved-ip-reverse-dns",
"security": [
{
"API Key": []
}
]
}
},
"/reserved-ips/{reserved-ip}/reverse-dns/ipv4": {
"put": {
"summary": "Update Reverse DNS IPV4",
"tags": [
"reserved-ip"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/reserved-ips/{reserved-ip}/reverse-dns/ipv4\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"v4\": \"test.com\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-reserved-ip-reverse-dns-ipv4",
"description": "Update (ipv4) Reverse DNS for a Reserved IP.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"v4": {
"type": "string",
"description": "The Domain for the Reverse DNS Entry."
}
},
"required": [
"v4"
]
},
"examples": {
"request": {
"value": {
"v4": "test.com"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/reserved-ips/{reserved-ip}/reverse-dns/ipv6": {
"post": {
"summary": "Create Reverse DNS IPV6",
"tags": [
"reserved-ip"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/reserved-ips/{reserved-ip}/reverse-dns/ipv6\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"v6\": [\n {\n \"ip\": \"2001:0db8:0000:0000:34f4:0000:0000:f3dd\",\n \"domain\": \"test.com\"\n }\n ]\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-reserved-ip-reverse-dns-ipv6",
"description": "Create (ipv6) Reverse DNS for a Reserved IP.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"v6": {
"type": "array",
"items": {
"type": "object",
"properties": {
"ip": {
"type": "string",
"description": "The IPV6 IP for the Reverse DNS Entry."
},
"domain": {
"type": "string",
"description": "The Domain for the Reverse DNS Entry."
}
}
}
}
}
},
"examples": {
"request": {
"value": {
"v6": [
{
"ip": "2001:0db8:0000:0000:34f4:0000:0000:f3dd",
"domain": "test.com"
}
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/reserved-ips/{reserved-ip}/reverse-dns/ipv6/{ipv6}": {
"delete": {
"description": "Delete IPv6 Reverse DNS information for a Reserved IP.",
"parameters": [
{
"schema": {
"type": "string"
},
"name": "reserved-ip",
"in": "path",
"required": true,
"description": "The [Reserved IP id](#operation/list-reserved-ips)"
},
{
"schema": {
"type": "string"
},
"name": "ipv6",
"in": "path",
"required": true,
"description": "The [IPv6 id](#operation/get-reserved-ip-reverse-dns)"
}
],
"summary": "Delete IPv6 Reverse DNS IP",
"tags": [
"reserved-ip"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/reserved-ips/{reserved-ip}/reverse-dns/ipv6/{ipv6}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "delete-reserved-ipv6-reverse-dns",
"security": [
{
"API Key": []
}
]
}
},
"/os": {
"get": {
"summary": "List OS",
"tags": [
"os"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/os\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"os": {
"type": "array",
"items": {
"$ref": "#/components/schemas/os"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"os": [
{
"id": 127,
"name": "CentOS 6 x64",
"arch": "x64",
"family": "centos"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
}
},
"operationId": "list-os",
"description": "List the OS images available for installation at Vultr.",
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500.\n"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"security": []
}
},
"/apikeys/{apikey-id}": {
"get": {
"summary": "Get API Key",
"tags": [
"api-keys"
],
"operationId": "get-api-key",
"description": "Gets information about an API key for the currently authenticated user. API keys returned by this method are masked.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/apikeys/{apikey-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"headers": {},
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"api_key": {
"$ref": "#/components/schemas/apikey"
}
}
},
"examples": {
"response": {
"value": {
"api_key": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"api_key": "*******************************00000",
"name": "Default",
"expire": true,
"date_expire": "2030-01-01T00:00:00Z"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete API Key",
"tags": [
"api-keys"
],
"operationId": "delete-api-key",
"description": "Delete an API key from the currently authenticated user's API key list.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/apikeys/{apikey-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/apikeys": {
"get": {
"summary": "List API Keys",
"tags": [
"api-keys"
],
"operationId": "list-api-keys",
"description": "Gets all API keys for the currently authenticated user. API keys returned by this method are masked.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/apikeys\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"api_keys": {
"type": "array",
"items": {
"$ref": "#/components/schemas/apikey"
}
}
}
},
"examples": {
"response": {
"value": {
"api_keys": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"api_key": "*******************************00000",
"name": "Default",
"expire": true,
"date_expire": "2030-01-01T00:00:00Z"
}
]
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create API Key",
"tags": [
"api-keys"
],
"operationId": "create-api-key",
"description": "Adds an API key to the currently authenticated user's API key list.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/apikeys\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"Production\",\n \"expire\" : true,\n \"date_expire\" : \"2030-01-01T00:00:00Z\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"api_key": {
"$ref": "#/components/schemas/apikey"
}
}
},
"examples": {
"response": {
"value": {
"api_key": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"api_key": "000000000000000000000000000000012345",
"name": "Production",
"expire": true,
"date_expire": "2030-01-01T00:00:00Z"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Custom name of the API key."
},
"expire": {
"type": "boolean",
"description": "Will the API key expire?"
},
"date_expire": {
"type": "string",
"description": "Date when the API key expires. Only valid when `expire` is `true`."
}
}
},
"examples": {
"request": {
"value": {
"name": "Production",
"expire": true,
"date_expire": "2030-01-01T00:00:00Z"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"parameters": []
},
"/applications": {
"get": {
"summary": "List Applications",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/applications\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "",
"properties": {
"applications": {
"type": "array",
"description": "",
"items": {
"$ref": "#/components/schemas/application"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"applications": [
{
"id": 1,
"name": "LEMP",
"short_name": "lemp",
"deploy_name": "LEMP on CentOS 6 x64",
"type": "one-click",
"vendor": "vultr",
"image_id": ""
},
{
"id": 1028,
"name": "OpenLiteSpeed WordPress",
"short_name": "openlitespeedwordpress",
"deploy_name": "OpenLiteSpeed WordPress on Ubuntu 20.04 x64",
"type": "marketplace",
"vendor": "LiteSpeed_Technologies",
"image_id": "openlitespeed-wordpress"
}
],
"meta": {
"total": 2,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
}
},
"operationId": "list-applications",
"description": "Get a list of all available Applications.",
"tags": [
"application"
],
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "type",
"description": "Filter the results by type.\n\n| | Type | Description |\n| - | ------ | ------------- |\n| | all | All available application types |\n| | marketplace | Marketplace applications |\n| | one-click | Vultr One-Click applications |"
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"security": []
}
},
"/applications/{image-id}/variables": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "image-id",
"in": "path",
"required": true,
"description": "The application's [Image ID](#operation/list-applications)."
}
],
"get": {
"summary": "List Application Variables",
"tags": [
"application"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/applications/{image-id}/variables\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"variables": {
"type": "array",
"items": {
"$ref": "#/components/schemas/app-variable"
}
}
}
},
"examples": {
"variables": {
"value": {
"variables": [
{
"name": "some_required_field",
"description": "This is an example required variable field for this application.",
"required": true
},
{
"name": "some_optional_field",
"description": "This is an example optional variable field for this application.",
"required": false
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-app-variables",
"description": "List all user-supplied variables for an Application.",
"security": []
}
},
"/account": {
"get": {
"summary": "Get Account Info",
"tags": [
"account"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/account\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"account": {
"$ref": "#/components/schemas/account"
}
}
},
"examples": {
"response": {
"value": {
"account": {
"name": "Example Account",
"email": "admin@example.com",
"acls": [
"manage_users",
"subscriptions_view",
"subscriptions",
"billing",
"support",
"provisioning",
"dns",
"abuse",
"upgrade",
"firewall",
"alerts",
"objstore",
"loadbalancer"
],
"balance": -100.55,
"pending_charges": 60.25,
"last_payment_date": "2020-10-10T01:56:20+00:00",
"last_payment_amount": -1.25
}
}
}
}
}
}
}
},
"operationId": "get-account",
"security": [
{
"API Key": []
}
],
"description": "Get your Vultr account, permission, and billing information."
}
},
"/account/bgp": {
"get": {
"summary": "Get Account BGP Info",
"tags": [
"account"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/account/bgp\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/account-bgp"
},
"examples": {
"response": {
"value": {
"enabled": true,
"asn": 20473,
"pasword": "12345"
}
}
}
}
}
},
"500": {
"description": "Internal Server Error"
}
},
"operationId": "get-account-bgp",
"security": [
{
"API Key": []
}
],
"description": "Get your Vultr account BGP information."
}
},
"/account/bgp/setup": {
"post": {
"summary": "Setup BGP on your Account",
"tags": [
"account"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/account/bgp/setup\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"prefixes\": [\n \"192.0.2.0/24\",\n \"2001:db8:0:1::/64\"\n ],\n \"asn\": 1234,\n \"password\": \"topsecret\",\n \"letter_of_authorization\": \"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=\",\n \"requested_routes\": \"full\",\n \"usecase\": \"Use my IP space on Vultr\"\n }'"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ticket_reference": {
"type": "string",
"description": "The reference ID for the support ticket that was created."
}
}
},
"examples": {
"response": {
"value": {
"ticket_reference": "ABC-123"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"500": {
"description": "Internal Server Error"
}
},
"operationId": "create-account-bgp-setup",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"prefixes": {
"type": "array",
"items": {
"type": "string"
},
"description": "An array of prefixes you intend to announce to us. Required, but can be empty if you don't intend to bring your own IP space."
},
"asn": {
"type": "integer",
"description": "The BGP ASN your instances will use. If specified, this should be a public ASN you control. If unspecified, Vultr will assign a private range ASN for you to use."
},
"password": {
"type": "string",
"description": "The plaintext password (TCP-MD5) to use on your BGP sessions with Vultr. Optional but recommended."
},
"letter_of_authorization": {
"type": "string",
"description": "A base64-encoded PDF, PNG, or JPEG file. Required when announcing your own prefixes."
},
"requested_routes": {
"type": "string",
"description": "The routes Vultr should send to you. One of:\n* `none` Vultr sends no routes\n* `full` Full BGP table\n* `default_only` Only default routes"
},
"usecase": {
"type": "string",
"description": "Description of your use case for BGP."
}
},
"required": [
"prefixes",
"requested_routes",
"usecase"
]
},
"examples": {
"request": {
"value": {
"prefixes": [
"192.0.2.0/24",
"2001:db8:0:1::/64"
],
"asn": 1234,
"password": "topsecret",
"letter_of_authorization": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII=",
"requested_routes": "full",
"usecase": "Use my IP space on Vultr"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Request BGP setup on your account."
}
},
"/account/bgp/prefixes": {
"get": {
"summary": "List BGP Prefixes",
"tags": [
"account"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/account/bgp/prefixes\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"prefixes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/bgp_prefix"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"prefixes": [
{
"prefix": "192.0.2.0/24",
"date_added": "2020-01-01T13:10:10+00:00",
"rpki_status": "VALID"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"500": {
"description": "Internal Server Error"
}
},
"operationId": "bgp-prefix-list",
"security": [
{
"API Key": []
}
],
"description": "List BGP Prefixes configured for your account."
},
"post": {
"summary": "Add new BGP prefixes.",
"tags": [
"account"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/account/bgp/prefixes\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"prefixes\": [\n \"192.0.2.0/24\",\n \"2001:db8:0:1::/64\"\n ],\n }'"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ticket_reference": {
"type": "string",
"description": "The reference ID for the support ticket that was created."
}
}
},
"examples": {
"response": {
"value": {
"ticket_reference": "ABC-123"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"500": {
"description": "Internal Server Error"
}
},
"operationId": "create-account-bgp-prefixes",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"prefixes": {
"type": "array",
"items": {
"type": "string"
},
"description": "An array of prefixes you intend to announce to us."
}
},
"required": [
"prefixes"
]
},
"examples": {
"request": {
"value": {
"prefixes": [
"192.0.2.0/24",
"2001:db8:0:1::/64"
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Open a request to add new BGP prefixes."
}
},
"/account/bandwidth": {
"get": {
"summary": "Get Account Bandwidth Info",
"tags": [
"account"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/account/bandwidth\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"bandwidth": {
"$ref": "#/components/schemas/account-bandwidth"
}
}
},
"examples": {
"response": {
"value": {
"bandwidth": {
"previous_month": {
"timestamp_start": "1701388800",
"timestamp_end": "1704067200",
"gb_in": 0,
"gb_out": 0,
"total_instance_hours": 8736,
"total_instance_count": 13,
"instance_bandwidth_credits": 3099648,
"free_bandwidth_credits": 2048,
"purchased_bandwidth_credits": 0,
"overage": 0,
"overage_unit_cost": 0.01,
"overage_cost": 0
},
"current_month_to_date": {
"timestamp_start": "1704067200",
"timestamp_end": "1706212679",
"gb_in": 0,
"gb_out": 0,
"total_instance_hours": 7748,
"total_instance_count": 13,
"instance_bandwidth_credits": 2749086,
"free_bandwidth_credits": 2048,
"purchased_bandwidth_credits": 0,
"overage": 0,
"overage_unit_cost": 0.01,
"overage_cost": 0
},
"current_month_projected": {
"timestamp_start": "1704067200",
"timestamp_end": "1706745600",
"gb_in": 0,
"gb_out": 0,
"total_instance_hours": 8736,
"total_instance_count": 13,
"instance_bandwidth_credits": 3099648,
"free_bandwidth_credits": 2048,
"purchased_bandwidth_credits": 0,
"overage": 0,
"overage_unit_cost": 0.01,
"overage_cost": 0
}
}
}
}
}
}
}
},
"500": {
"description": "Internal Server Error"
}
},
"operationId": "get-account-bandwidth",
"security": [
{
"API Key": []
}
],
"description": "Get your Vultr account bandwidth information."
}
},
"/account/custom-subscriptions": {
"get": {
"summary": "List Custom Subscriptions",
"tags": [
"account"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/account/custom-subscriptions\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"custom_subscriptions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/custom-subscription"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"custom_subscriptions": [
{
"id": "ab123456-7c89-0123-d456-78901e23f4g5",
"label": "test",
"description": "test",
"type": "Compute Test",
"region": "sea",
"status": "active",
"date_created": "2026-01-26T14:27:35+00:00",
"cost": 5,
"pending_charges": 0
}
],
"meta": {
"total": 5,
"links": {
"next": "bmV4dF9fYWIxMjM0NTYtN2M4OS0wMTIzLWQ0NTYtNzg5MDFlMjNmNGc1",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"500": {
"description": "Internal Server Error"
}
},
"operationId": "list-custom-subscriptions",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "label",
"description": "Filter by label."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "region",
"description": "Filter by [Region id](#operation/list-regions)."
}
],
"description": "List all custom subscriptions in your account."
}
},
"/account/custom-subscriptions/{custom-id}": {
"get": {
"summary": "Get a Custom Subscription",
"tags": [
"account"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/account/custom-subscriptions/{custom-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"custom_subscription": {
"$ref": "#/components/schemas/custom-subscription"
}
}
},
"examples": {
"response": {
"value": {
"custom_subscription": {
"id": "ab123456-7c89-0123-d456-78901e23f4g5",
"label": "test",
"description": "test",
"type": "Compute Test",
"region": "sea",
"status": "active",
"date_created": "2026-01-26T14:27:35+00:00",
"cost": 5,
"pending_charges": 0
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"500": {
"description": "Internal Server Error"
}
},
"operationId": "get-custom-subscription",
"security": [
{
"API Key": []
}
],
"description": "Get a custom subscription."
}
},
"/backups": {
"get": {
"summary": "List Backups",
"tags": [
"backup"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/backups\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"backups": {
"type": "array",
"items": {
"$ref": "#/components/schemas/backup"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"backups": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"description": "Example Automatic Backup",
"size": 10000000,
"status": "complete",
"os_id": 215,
"app_id": 0
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-backups",
"description": "Get information about Backups in your account.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "instance_id",
"description": "Filter the backup list by [Instance id](#operation/list-instances)."
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"security": [
{
"API Key": []
}
]
}
},
"/blocks": {
"get": {
"summary": "List Block Storages",
"tags": [
"block"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/blocks\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"blocks": {
"type": "array",
"items": {
"$ref": "#/components/schemas/blockstorage"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"example": {
"blocks": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"cost": 5,
"pending_charges": 0,
"status": "active",
"size_gb": 50,
"region": "ewr",
"attached_to_instance": "742c9913-d088-4d67-bc61-5a10e922fbd1",
"attached_to_instance_ip": "10.0.0.1",
"attached_to_instance_label": "attached instance label",
"attached_to_instance_as_bd": false,
"label": "Example Block Storage",
"mount_id": "ewr-example112233",
"block_type": "high_perf",
"os_id": 0,
"snapshot_id": "",
"bootable": false
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"500": {
"description": "Internal Server Error"
}
},
"operationId": "list-blocks",
"description": "List all Block Storage in your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "instance-id",
"description": "Filter by block storage attached to a [Compute Instance id](#operation/list-instances)."
}
]
},
"post": {
"summary": "Create Block Storage",
"operationId": "create-block",
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"block": {
"$ref": "#/components/schemas/blockstorage"
}
}
},
"example": {
"block": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"cost": 5,
"pending_charges": 0,
"status": "active",
"size_gb": 50,
"region": "ewr",
"attached_to_instance": "742c9913-d088-4d67-bc61-5a10e922fbd1",
"attached_to_instance_ip": "10.0.0.1",
"attached_to_instance_label": "attached instance label",
"attached_to_instance_as_bd": false,
"label": "Example Block Storage",
"mount_id": "ewr-example112233",
"block_type": "high_perf",
"os_id": 0,
"snapshot_id": "",
"bootable": false
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"description": "Create new Block Storage in a `region` with a size of `size_gb`. Size may range between 10 and 40000 depending on the `block_type`.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the Block Storage will be created."
},
"size_gb": {
"type": "integer",
"description": "Size in GB may range between 10 and 40000, depending on the `block_type`."
},
"label": {
"type": "string",
"description": "The user-supplied label."
},
"block_type": {
"type": "string",
"description": "An optional parameter, that determines on the type of block storage volume that will be created.\nSoon to become a required parameter.\n\n* `high_perf` from 10GB to 10,000GB\n* `storage_opt` from 40GB to 40,000GB"
},
"snapshot_id": {
"type": "string",
"description": "An optional paremeter, allows you to create a block device as a clone of an existing block snapshot."
},
"bootable": {
"type": "boolean",
"description": "An optional parameter. Allows you to flag a block device as bootable."
},
"boot_plan": {
"type": "string",
"description": "An optional parameter. When creating a bootable block storage volume (`bootable: true`), specify the [Plan](#operation/list-plans) name of the instance that will boot from this volume. This ensures the correct bootable OS image is selected for the target instance type. If omitted for a bootable volume, a default boot image is chosen which may not match the intended instance plan."
}
},
"required": [
"region",
"size_gb"
]
},
"examples": {
"request": {
"value": {
"region": "ewr",
"size_gb": 50,
"label": "Example Block Storage",
"bootable": true,
"boot_plan": "vcg-8-mi300x"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"tags": [
"block"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/blocks\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"size_gb\" : 50,\n \"label\" : \"Example Block Storage\",\n \"block_type\": \"high_perf\",\n \"bootable\": true,\n \"boot_plan\": \"vcg-8-mi300x\"\n }'"
}
]
},
"parameters": []
},
"/blocks/{block-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "block-id",
"in": "path",
"required": true,
"description": "The [Block Storage id](#operation/list-blocks)."
}
],
"get": {
"summary": "Get Block Storage",
"tags": [
"block"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/blocks/{block-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"block": {
"$ref": "#/components/schemas/blockstorage"
}
}
},
"examples": {
"single block storage": {
"value": {
"block": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"cost": 5,
"pending_charges": 0.02,
"status": "active",
"size_gb": 50,
"region": "ewr",
"attached_to_instance": "742c9913-d088-4d67-bc61-5a10e922fbd1",
"attached_to_instance_ip": "",
"attached_to_instance_label": "",
"attached_to_instance_as_bd": false,
"label": "Example Block Storage",
"mount_id": "ewr-example112233",
"block_type": "high_perf",
"os_id": 0,
"snapshot_id": "f2ab2d00-0c71-4910-bbff-95d4557e31cc",
"bootable": false
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"operationId": "get-block",
"description": "Get information for Block Storage.",
"security": [
{
"API Key": []
}
]
},
"patch": {
"summary": "Update Block Storage",
"tags": [
"block"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/blocks/{block-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"Updated Block Storage Label\",\n \"size_gb\": 50\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-block",
"description": "Update information for Block Storage.\n",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "The user-supplied label."
},
"size_gb": {
"type": "integer",
"description": "New size of the Block Storage in GB. Size may range between 10 and 40000 depending on the `block_type`."
}
}
},
"examples": {
"patch request": {
"value": {
"label": "Updated Block Storage Label",
"size_gb": 50
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Block Storage",
"tags": [
"block"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/blocks/{block-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-block",
"description": "Delete Block Storage.",
"security": [
{
"API Key": []
}
]
}
},
"/blocks/{block-id}/attach": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "block-id",
"in": "path",
"required": true,
"description": "The [Block Storage id](#operation/list-blocks)."
}
],
"post": {
"summary": "Attach Block Storage",
"tags": [
"block"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/blocks/{block-id}/attach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"instance_id\" : \"a632673e-2fd5-4ff1-b251-2e28e7b65504\",\n \"live\" : true\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "attach-block",
"description": "Attach Block Storage to Instance `instance_id`.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance_id": {
"description": "Attach the Block Storage to this [Instance id](#operation/list-instances).",
"type": "string"
},
"live": {
"type": "boolean",
"description": "Attach Block Storage without restarting the Instance.\n\n| | Value | Description |\n| - | ----- | ----------- |\n| | true | Attach live, do not restart the instance. |\n| | false | Restart the instance and attach the Block Storage. |"
}
},
"required": [
"instance_id"
]
},
"examples": {
"post request": {
"value": {
"instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"live": true
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/blocks/{block-id}/detach": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "block-id",
"in": "path",
"required": true,
"description": "The [Block Storage id](#operation/list-blocks)."
}
],
"post": {
"summary": "Detach Block Storage",
"tags": [
"block"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/blocks/{block-id}/detach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"live\" : true\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "detach-block",
"security": [
{
"API Key": []
}
],
"description": "Detach Block Storage.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"live": {
"type": "boolean",
"description": "Detach Block Storage without restarting the Instance.\n\n| | Value | Description |\n| - | ----- | ----------- |\n| | true | Detach live, do not restart the instance. |\n| | false | Restart the instance and detach the Block Storage. |"
}
}
},
"examples": {
"post request": {
"value": {
"live": true
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/blocks/snapshots": {
"get": {
"summary": "List Block Storage Snapshots",
"tags": [
"block"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/blocks/snapshots\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"snapshots": {
"type": "array",
"items": {
"$ref": "#/components/schemas/blockstorage_snapshot"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"example": {
"snapshots": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"block_id": "ay2c5b1a-66fd-4dfb-b839-443f2e6c0b60",
"description": "Example block storage snapshot",
"state": "COMPLETE",
"added_at": "2020-10-10 01:56:20",
"updated_at": "2020-10-10 01:56:35",
"size": 10737418240,
"next_invoice_date": "2010-11-10",
"next_invoice_price": "5",
"region": "ewr",
"block_type": "high_perf"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"500": {
"description": "Internal Server Error"
}
},
"operationId": "list-block-snapshots",
"description": "List all Block Storage Snapshots in your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create Block Storage Snapshot",
"operationId": "create-block-snapshot",
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"block": {
"$ref": "#/components/schemas/blockstorage_snapshot"
}
}
},
"example": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"block_id": "ay2c5b1a-66fd-4dfb-b839-443f2e6c0b60",
"description": "Example block storage snapshot",
"state": "COMPLETE",
"added_at": "2020-10-10 01:56:20",
"updated_at": "2020-10-10 01:56:35",
"size": 10737418240,
"next_invoice_date": "2010-11-10",
"next_invoice_price": "5",
"region": "ewr",
"block_type": "high_perf"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"description": "Create new Block Snapshot of a Block Storage subscription.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"block_id": {
"type": "string",
"description": "The Block id of the block subscription you want to snapshot"
},
"description": {
"type": "string",
"description": "The user-supplied description."
}
},
"required": [
"block_id",
"description"
]
},
"examples": {
"request": {
"value": {
"block_id": "ay2c5b1a-66fd-4dfb-b839-443f2e6c0b60",
"description": "example-block-snapshot"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"tags": [
"block"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/blocks/snapshots\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"block_id\": \"ay2c5b1a-66fd-4dfb-b839-443f2e6c0b60\",\n \"description\" : \"Example Block Storage\"\n }'"
}
]
},
"parameters": []
},
"/blocks/snapshots/{snapshot-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "snapshot-id",
"in": "path",
"required": true,
"description": "The [Block Storage snapshot id](#operation/list-block-snapshots)."
}
],
"get": {
"summary": "Get Block Storage Snapshot",
"tags": [
"block"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/blocks/snapshots/{snapshot-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"snapshot": {
"$ref": "#/components/schemas/blockstorage_snapshot"
}
}
},
"example": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"block_id": "ay2c5b1a-66fd-4dfb-b839-443f2e6c0b60",
"description": "Example block storage snapshot",
"state": "COMPLETE",
"added_at": "2020-10-10 01:56:20",
"updated_at": "2020-10-10 01:56:35",
"size": 10737418240,
"next_invoice_date": "2010-11-10",
"next_invoice_price": "5",
"region": "ewr",
"block_type": "high_perf"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"operationId": "get-block-snapshot",
"description": "Get information about a Block Storage Snapshot.",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Block Storage Snapshot",
"tags": [
"block"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/blocks/snapshots/{snapshot-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\" : \"Updated Block Storage Description\",\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-block-snapshot",
"description": "Update information for Block Storage Snapshot.\n",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "The user-supplied description."
}
}
},
"examples": {
"patch request": {
"value": {
"description": "Updated Block Storage description"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Block Storage Snapshot",
"tags": [
"block"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/blocks/snapshots/{snapshot-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-block-snapshot",
"description": "Delete Block Storage Snapshot.",
"security": [
{
"API Key": []
}
]
}
},
"/firewalls": {
"get": {
"summary": "List Firewall Groups",
"tags": [
"firewall"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/firewalls\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"firewall_groups": {
"type": "array",
"items": {
"$ref": "#/components/schemas/firewall-group"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"firewall_groups": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"description": "Example Firewall Group",
"date_created": "2020-10-10T01:56:20+00:00",
"date_modified": "2020-10-10T01:59:20+00:00",
"instance_count": 0,
"rule_count": 0,
"max_rule_count": 50
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"operationId": "list-firewall-groups",
"description": "Get a list of all Firewall Groups.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create Firewall Group",
"tags": [
"firewall"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/firewalls\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\" : \"Example Firewall Group\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"firewall_group": {
"$ref": "#/components/schemas/firewall-group"
}
}
},
"examples": {
"response": {
"value": {
"firewall_group": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"description": "Example Firewall Group",
"date_created": "2020-10-10T01:56:20+00:00",
"date_modified": "2020-10-10T01:56:20+00:00",
"instance_count": 0,
"rule_count": 0,
"max_rule_count": 50
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-firewall-group",
"description": "Create a new Firewall Group.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "User-supplied description of this Firewall Group."
}
}
},
"examples": {
"request": {
"value": {
"description": "Example Firewall Group"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"parameters": []
},
"/firewalls/{firewall-group-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "firewall-group-id",
"in": "path",
"required": true,
"description": "The [Firewall Group id](#operation/list-firewall-groups)."
}
],
"get": {
"summary": "Get Firewall Group",
"tags": [
"firewall"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/firewalls/{firewall-group-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"firewall_group": {
"$ref": "#/components/schemas/firewall-group"
}
}
},
"examples": {
"response": {
"value": {
"firewall_group": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"description": "Example Firewall Group",
"date_created": "2020-10-10T01:56:20+00:00",
"date_modified": "2020-10-10T01:56:20+00:00",
"instance_count": 0,
"rule_count": 0,
"max_rule_count": 50
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-firewall-group",
"description": "Get information for a Firewall Group.",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Firewall Group",
"tags": [
"firewall"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/firewalls/{firewall-group-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\" : \"Updated Firewall Group Name\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-firewall-group",
"description": "Update information for a Firewall Group.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "User-supplied description of this Firewall Group."
}
},
"required": [
"description"
]
},
"examples": {
"request": {
"value": {
"description": "Updated Firewall Group Name"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete Firewall Group",
"tags": [
"firewall"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/firewalls/{firewall-group-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-firewall-group",
"security": [
{
"API Key": []
}
],
"description": "Delete a Firewall Group."
}
},
"/firewalls/{firewall-group-id}/rules": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "firewall-group-id",
"in": "path",
"required": true,
"description": "The [Firewall Group id](#operation/list-firewall-groups)."
}
],
"get": {
"summary": "List Firewall Rules",
"tags": [
"firewall"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/firewalls/{firewall-group-id}/rules\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"firewall_rules": {
"type": "array",
"items": {
"$ref": "#/components/schemas/firewall-rule"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"firewall_rules": [
{
"id": 1,
"type": "v4",
"ip_type": "v4",
"action": "accept",
"protocol": "tcp",
"port": "80",
"subnet": "192.0.2.0",
"subnet_size": 24,
"source": "",
"notes": "Example Firewall Rule"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-firewall-group-rules",
"description": "Get the Firewall Rules for a Firewall Group.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create Firewall Rules",
"tags": [
"firewall"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/firewalls/{firewall-group-id}/rules\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"ip_type\" : \"v4\",\n \"protocol\" : \"tcp\",\n \"port\" : \"80\",\n \"subnet\" : \"192.0.2.0\",\n \"subnet_size\" : 24,\n \"source\" : \"\",\n \"notes\" : \"Example Firewall Rule\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"firewall_rule": {
"$ref": "#/components/schemas/firewall-rule"
}
}
},
"examples": {
"response": {
"value": {
"firewall_rule": {
"id": 1,
"type": "v4",
"ip_type": "v4",
"action": "accept",
"protocol": "tcp",
"port": "80",
"subnet": "192.0.2.0",
"subnet_size": 24,
"source": "",
"notes": "Example Firewall Rule"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "post-firewalls-firewall-group-id-rules",
"description": "Create a Firewall Rule for a Firewall Group. The attributes `ip_type`, `protocol`, `subnet`, and `subnet_size` are required.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ip_type": {
"type": "string",
"description": "The type of IP rule.\n\n* v4\n* v6"
},
"protocol": {
"type": "string",
"description": "The protocol for this rule.\n\n* ICMP\n* TCP\n* UDP\n* GRE\n* ESP\n* AH\n"
},
"subnet": {
"type": "string",
"description": "IP address representing a subnet. The IP address format must match with the \"ip_type\" parameter value."
},
"subnet_size": {
"type": "integer",
"description": "The number of bits for the netmask in CIDR notation. Example: 32"
},
"port": {
"type": "string",
"description": "TCP/UDP only. This field can be a specific port or a colon separated port range."
},
"source": {
"type": "string",
"description": "If the source string is given a value of \"cloudflare\" subnet and subnet_size will both be ignored.\nPossible values:\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | \"\" | Use the value from `subnet` and `subnet_size`. |\n| | cloudflare | Allow all of Cloudflare's IP space through the firewall |\n| | [Load Balancer id](#operation/list-load-balancers) | Provide a load balancer ID to use its IPs |\n"
},
"notes": {
"type": "string",
"description": "User-supplied notes for this rule."
}
},
"required": [
"ip_type",
"protocol",
"subnet",
"subnet_size"
]
},
"examples": {
"request": {
"value": {
"ip_type": "v4",
"protocol": "tcp",
"port": "80",
"subnet": "192.0.2.0",
"subnet_size": 24,
"source": "",
"notes": "Example Firewall Rule"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
]
}
},
"/firewalls/{firewall-group-id}/rules/{firewall-rule-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "firewall-group-id",
"in": "path",
"required": true,
"description": "The [Firewall Group id](#operation/list-firewall-groups)."
},
{
"schema": {
"type": "string"
},
"name": "firewall-rule-id",
"in": "path",
"required": true,
"description": "The [Firewall Rule id](#operation/list-firewall-group-rules)."
}
],
"delete": {
"summary": "Delete Firewall Rule",
"tags": [
"firewall"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/firewalls/{firewall-group-id}/rules/{firewall-rule-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-firewall-group-rule",
"description": "Delete a Firewall Rule.",
"security": [
{
"API Key": []
}
]
},
"get": {
"summary": "Get Firewall Rule",
"operationId": "get-firewall-group-rule",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"firewall_rule": {
"$ref": "#/components/schemas/firewall-rule"
}
}
},
"examples": {
"example": {
"value": {
"firewall_rule": {
"id": 1,
"type": "v4",
"ip_type": "v4",
"action": "accept",
"protocol": "tcp",
"port": "80",
"subnet": "192.0.2.0",
"subnet_size": 24,
"source": "",
"notes": "Example Firewall Rule"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"description": "Get a Firewall Rule.",
"security": [
{
"API Key": []
}
],
"tags": [
"firewall"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/firewalls/{firewall-group-id}/rules/{firewall-rule-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/iso": {
"get": {
"summary": "List ISOs",
"tags": [
"iso"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/iso\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"isos": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iso"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"isos": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"description": "My ISO",
"filename": "my-iso.iso",
"size": 120586240,
"md5sum": "77ba289bdc966ec996278a5a740d96d8",
"sha512sum": "2b31b6fcab34d6ea9a6b293601c39b90cb044e5679fcc5",
"status": "complete"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-isos",
"description": "Get the ISOs in your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create ISO",
"tags": [
"iso"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/iso\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"url\" : \"https://example.com/my-iso.iso\",\n \"description\": \"My ISO\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"iso": {
"$ref": "#/components/schemas/iso"
}
}
},
"examples": {
"response": {
"value": {
"iso": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"description": "My ISO",
"filename": "my-iso.iso",
"status": "pending"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-iso",
"description": "Create a new ISO in your account from `url`.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Public URL location of the ISO image to download. Example: https://example.com/my-iso.iso"
},
"description": {
"type": "string",
"description": "The user-supplied description of the ISO"
}
},
"required": [
"url"
]
},
"examples": {
"request": {
"value": {
"url": "http://example.com/my-iso.iso",
"description": "My ISO"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
]
}
},
"/iso/{iso-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "iso-id",
"in": "path",
"required": true,
"description": "The [ISO id](#operation/list-isos)."
}
],
"get": {
"summary": "Get ISO",
"tags": [
"iso"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/iso/{iso-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"iso": {
"$ref": "#/components/schemas/iso"
}
}
},
"examples": {
"response": {
"value": {
"iso": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"description": "My ISO",
"filename": "my-iso.iso",
"size": 120586240,
"md5sum": "77ba289bdc966ec996278a5a740d96d8",
"sha512sum": "2b31b6fcab34d6ea9a6b293601c39b90cb044e5679fcc5",
"status": "complete"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "iso-get",
"description": "Get information for an ISO.",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update ISO",
"tags": [
"iso"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/iso/{iso-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\": \"My updated ISO\"\n }'\n"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "iso-edit",
"description": "Update the description for an ISO.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "The user-supplied description for the ISO."
}
},
"required": [
"description"
]
},
"examples": {
"request": {
"value": {
"description": "Example ISO"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete ISO",
"tags": [
"iso"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/iso/{iso-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-iso",
"description": "Delete an ISO.",
"security": [
{
"API Key": []
}
]
}
},
"/iso-public": {
"get": {
"summary": "List Public ISOs",
"tags": [
"iso"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/iso-public\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"public_isos": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iso-public"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"public_isos": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b604",
"name": "CentOS 7",
"description": "7 x86_64 Minimal",
"md5sum": "7f4df50f42ee1b52b193e79855a3aa19"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"operationId": "list-public-isos",
"description": "List all Vultr Public ISOs.",
"security": []
}
},
"/object-storage": {
"get": {
"summary": "List Object Storages",
"tags": [
"s3"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/object-storage\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"object_storages": {
"type": "array",
"items": {
"$ref": "#/components/schemas/object-storages"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"list of object-storages": {
"value": {
"object_storages": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"cluster_id": 2,
"region": "ewr",
"label": "Example Object Storage",
"status": "active",
"s3_hostname": "ewr1.vultrobjects.com",
"s3_access_key": "00example11223344",
"s3_secret_key": "00example1122334455667788990011",
"pending_charges": 0,
"tier": {
"OBJSTORETIERID": 5,
"bw_gb_price": 0.01,
"disk_gb_price": 0.05,
"archive_disk_gb_price": 0.006,
"is_default": "no",
"price": 50,
"ratelimit_ops_bytes": 1048576000,
"ratelimit_ops_secs": 4000,
"sales_desc": "Low-latency storage for datacenter workloads.",
"sales_name": "Performance",
"slug": "tier_004k_1000m"
}
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"operationId": "list-object-storages",
"description": "Get a list of all Object Storage in your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create Object Storage",
"tags": [
"s3"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/object-storage\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"Example Object Storage\",\n \"cluster_id\" : 2,\n \"tier_id\" : 4\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"object_storage": {
"$ref": "#/components/schemas/object-storage"
}
}
},
"examples": {
"response": {
"value": {
"object_storage": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"cluster_id": 2,
"region": "ewr",
"location": "New Jersey",
"label": "Example Object Storage",
"status": "pending",
"s3_hostname": "ewr1.vultrobjects.com",
"s3_access_key": "00example11223344",
"s3_secret_key": "00example1122334455667788990011",
"pending_charges": 0
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"operationId": "create-object-storage",
"description": "Create new Object Storage. The `cluster_id` attribute is required.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"cluster_id": {
"type": "integer",
"description": "The [Cluster id](#operation/list-object-storage-clusters) where the Object Storage will be created."
},
"tier_id": {
"type": "integer",
"description": "The [Tier id](#operation/list-object-storage-tiers) of the tier to set up for. Must be one of available tiers for the cluster."
},
"label": {
"type": "string",
"description": "The user-supplied label for this Object Storage."
}
},
"required": [
"cluster_id",
"tier_id"
]
},
"examples": {
"example request": {
"value": {
"label": "Example Object Storage",
"cluster_id": 2,
"tier_id": 4
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"parameters": []
},
"/object-storage/{object-storage-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "object-storage-id",
"in": "path",
"required": true,
"description": "The [Object Storage id](#operation/list-object-storages)."
}
],
"get": {
"summary": "Get Object Storage",
"tags": [
"s3"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/object-storage/{object-storage-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"object_storage": {
"$ref": "#/components/schemas/object-storage"
}
}
},
"examples": {
"response": {
"value": {
"object_storage": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"cluster_id": 2,
"region": "ewr",
"label": "Example Object Storage",
"status": "active",
"s3_hostname": "ewr1.vultrobjects.com",
"s3_access_key": "00example11223344",
"s3_secret_key": "00example1122334455667788990011",
"pending_charges": 0
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-object-storage",
"description": "Get information about an Object Storage.",
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Object Storage",
"tags": [
"s3"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/object-storage/{object-storage-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-object-storage",
"description": "Delete an Object Storage.",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Object Storage",
"operationId": "update-object-storage",
"responses": {
"204": {
"description": "No Content",
"headers": {}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"description": "Update the label for an Object Storage.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "The user-supplied label for the Object Storage."
}
},
"required": [
"label"
]
},
"examples": {
"request": {
"value": {
"label": "Updated Object Storage Label"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
],
"tags": [
"s3"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/object-storage/{object-storage-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"Updated Object Storage Label\"\n }'"
}
]
}
},
"/object-storage/{object-storage-id}/bucket": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "object-storage-id",
"in": "path",
"required": true,
"description": "The [Object Storage id](#operation/list-object-storages)."
}
],
"post": {
"summary": "Create Bucket",
"tags": [
"s3"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/object-storage/bucket\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"bucket_name\": \"my-cool-bucket\",\n \"versioning\": true,\n \"object_lock\": true,\n \"archival\": false\n }'"
}
],
"responses": {
"202": {
"description": "Accepted"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-object-storage-bucket",
"description": "Create new Bucket.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"bucket_name": {
"type": "string",
"description": "The user-supplied name of the bucket."
},
"versioning": {
"type": "boolean",
"description": "Enable versioning."
},
"object_lock": {
"type": "boolean",
"description": "Enable object lock. Automatically enables versioning."
},
"archival": {
"type": "boolean",
"description": "Enable archival mode. Cannot be mixed with versioning/object lock."
}
},
"required": [
"bucket_name"
]
},
"examples": {
"example request": {
"value": {
"bucket_name": "my-cool-bucket,",
"versioning": "false,",
"object_lock": "false,",
"archival": true
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/object-storage/{object-storage-id}/bucket/{bucket-name}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "object-storage-id",
"in": "path",
"required": true,
"description": "The [Object Storage id](#operation/list-object-storages)."
},
{
"schema": {
"type": "string"
},
"name": "bucket-name",
"in": "path",
"required": true,
"description": "The name of the bucket."
}
],
"delete": {
"summary": "Delete Bucket",
"tags": [
"s3"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/object-storage/{object-storage-id}/{bucket-name}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-object-storage-bucket",
"description": "Delete a Bucket.",
"security": [
{
"API Key": []
}
]
}
},
"/object-storage/{object-storage-id}/bucket/{bucket-name}/lifecycle": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "object-storage-id",
"in": "path",
"required": true,
"description": "The [Object Storage id](#operation/list-object-storages)."
},
{
"schema": {
"type": "string"
},
"name": "bucket-name",
"in": "path",
"required": true,
"description": "The name of the bucket."
}
],
"post": {
"summary": "Set Bucket Lifecycle Policy",
"tags": [
"s3"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/object-storage/{bucket-name}/lifecycle\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"archive_rules\": [\n {\n \"ID\": \"MyArchivalLifecycle\",\n \"Status\": \"Enabled\",\n \"Filter\": {\"Prefix\": \"\"},\n \"Transitions\": [{\"Days\": 0, \"StorageClass\": \"VULTR_ARCHIVE\"}]\n }\n ]\n }'"
}
],
"responses": {
"202": {
"description": "Accepted"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Content"
}
},
"operationId": "set-object-storage-bucket-lifecycle",
"description": "Set the lifecycle policy of a Bucket.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"archive_rules": {
"type": "array",
"objects": {
"$ref": "#/components/schemas/object-storage-bucket-lifecycle-policy"
}
}
},
"required": [
"archive_rules"
]
},
"examples": {
"example request": {
"value": {
"ID": "MyArchivalLifecycle,",
"Status": "Enabled,",
"Filter": {
"Prefix": null
},
"Transitions": {
"Days": "0,",
"StorageClass": "VULTR_ARCHIVE"
}
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete Bucket Lifecycle Policy",
"tags": [
"s3"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/object-storage/{object-storage-id}/{bucket-name}/lifecycle\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-object-storage-bucket-lifecycle-policy",
"description": "Delete the Bucket Lifecycle Policy.",
"security": [
{
"API Key": []
}
]
}
},
"/object-storage/{object-storage-id}/bucket/{bucket-name}/archival": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "object-storage-id",
"in": "path",
"required": true,
"description": "The [Object Storage id](#operation/list-object-storages)."
},
{
"schema": {
"type": "string"
},
"name": "bucket-name",
"in": "path",
"required": true,
"description": "The name of the bucket."
}
],
"post": {
"summary": "Enable Bucket Archival",
"tags": [
"s3"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/object-storage/{bucket-name}/archival\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"archival\": true\n }'"
}
],
"responses": {
"202": {
"description": "Accepted"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "set-object-storage-bucket-archival",
"description": "Set the archival status of a Bucket.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"archival": {
"type": "boolean"
}
},
"required": [
"archival"
]
},
"examples": {
"example request": {
"value": {
"archival": true
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/object-storage/{object-storage-id}/regenerate-keys": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "object-storage-id",
"in": "path",
"required": true,
"description": "The [Object Storage id](#operation/list-object-storages)."
}
],
"post": {
"summary": "Regenerate Object Storage Keys",
"tags": [
"s3"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/object-storage/{object-storage-id}/regenerate-keys\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"s3_credentials": {
"type": "object",
"properties": {
"s3_hostname": {
"type": "string",
"description": "The [Cluster hostname](#operation/list-object-storage-clusters) for this Object Storage."
},
"s3_access_key": {
"type": "string",
"description": "The new Object Storage access key."
},
"s3_secret_key": {
"type": "string",
"description": "The new Object Storage secret key."
}
}
}
}
},
"examples": {
"response": {
"value": {
"s3_credentials": {
"s3_hostname": "ewr1.vultrobjects.com",
"s3_access_key": "00example11223344",
"s3_secret_key": "00example1122334455667788990011"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "regenerate-object-storage-keys",
"description": "Regenerate the keys for an Object Storage.",
"security": [
{
"API Key": []
}
]
}
},
"/object-storage/clusters": {
"get": {
"summary": "Get All Clusters",
"tags": [
"s3"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/object-storage/clusters\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"clusters": {
"type": "array",
"items": {
"$ref": "#/components/schemas/clusters"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"clusters": [
{
"id": 2,
"region": "ewr",
"hostname": "ewr1.vultrobjects.com",
"deploy": "yes"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
},
"headers": {}
}
},
"operationId": "list-object-storage-clusters",
"description": "Get a list of all Object Storage Clusters.",
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"security": []
}
},
"/object-storage/tiers": {
"get": {
"summary": "Get All Tiers",
"tags": [
"s3"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/object-storage/tiers\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"tiers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/tiers"
}
}
}
},
"examples": {
"response": {
"value": {
"tiers": [
{
"id": 1,
"bw_gb_price": 0.01,
"disk_gb_price": 0.006,
"archive_disk_gb_price": 0.006,
"is_default": "yes",
"locations": [
{
"hostname": "ewr1.vultrobjects.com",
"id": 2,
"name": "New Jersey",
"region": "ewr"
}
],
"price": 6,
"ratelimit_ops_bytes": 314572800,
"ratelimit_ops_secs": 400,
"sales_desc": "Vultr's historic object storage solution.",
"sales_name": "Legacy",
"slug": "tier_004h_0300m"
}
]
}
}
}
}
},
"headers": {}
}
},
"operationId": "list-object-storage-tiers",
"description": "Get a list of all Object Storage Tiers.",
"parameters": [],
"security": []
}
},
"/object-storage/clusters/{cluster-id}/tiers": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "cluster-id",
"in": "path",
"required": true,
"description": "The [Cluster id](#operation/list-object-storage-clusters)."
}
],
"get": {
"summary": "Get All Cluster Tiers",
"tags": [
"s3"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/object-storage/clusters/{cluster-id}/tiers\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"tiers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/cluster-tiers"
}
}
}
},
"examples": {
"response": {
"value": {
"tiers": [
{
"id": 1,
"bw_gb_price": 0.01,
"disk_gb_price": 0.006,
"archive_disk_gb_price": 0.006,
"is_default": "yes",
"price": 6,
"ratelimit_ops_bytes": 314572800,
"ratelimit_ops_secs": 400,
"sales_desc": "Vultr's historic object storage solution.",
"sales_name": "Legacy",
"slug": "tier_004h_0300m"
}
]
}
}
}
}
},
"headers": {}
}
},
"operationId": "list-object-storage-cluster-tiers",
"description": "Get a list of all Object Storage Tiers for a given Cluster.",
"parameters": [],
"security": []
}
},
"/storage-gateways": {
"get": {
"summary": "List Storage Gateways",
"tags": [
"storage-gateways"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/storage-gateways\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"operationId": "list-storage-gateways",
"description": "Get a list of all Storage Gateways in your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"storage_gateways": {
"description": "List of Storage Gateways.",
"items": {
"allOf": [
{
"$ref": "#/components/schemas/storage-gateway"
},
{
"type": "object",
"properties": {
"export_config": {
"$ref": "#/components/schemas/storage-gateway-export-config"
}
}
},
{
"type": "object",
"properties": {
"network_config": {
"$ref": "#/components/schemas/storage-gateway-network-config"
}
}
}
]
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"storage-gateway-nfs4": {
"type": "object",
"value": {
"storage_gateways": [
{
"id": "ac45b2d3-ec8e-4e4a-9def-9db532f2d1c3",
"date_created": "2026-09-22 22:23:39",
"status": "active",
"type": "storage-gateway-nfs4",
"region": "ewr",
"label": "example storage gateway",
"pending_charges": 0,
"tags": [
"example tag"
],
"health": "Running",
"export_config": [
{
"id": "c003b85e-5f32-4abc-9bdb-197b6ee0fa49",
"name": "example export",
"pseudo_root_path": "/",
"vfs_uuid": "32b231f2-aad6-45e5-b56e-a5ff257b893a",
"allowed_ips": [
"10.1.96.0/20"
]
}
],
"network_config": {
"public_ips": [],
"vpc_ip_address": "10.1.96.3",
"vpc_uuid": "fb0df44c-fdda-4975-ab86-d465a24ca618",
"vpc_description": "example vpc"
}
}
],
"meta": {
"total": 1
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
}
},
"post": {
"summary": "Create Storage Gateway",
"tags": [
"storage-gateways"
],
"operationId": "create-storage-gateway",
"security": [
{
"API Key": []
}
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/storage-gateways\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"my_storage_gateway\",\n \"type\" : \"nfs4\",\n \"region\" : \"ewr\",\n \"export_config\" : [{\n \"label\" : \"my_export_1\",\n \"pseudo_root_path\" : \"/\",\n \"vfs_uuid\" : \"a632673e-2fd5-4ff1-b251-2e28e7b65504\",\n \"allowed_ips\" : [\"192.0.2.123\", \"10.1.96.0/20\"]\n }],\n \"network_config\" : {\n \"primary\" : {\n \"vpc\" : {\n \"vpc_ip_address\" : \"\",\n \"vpc_uuid\" : \"473bc00c-4aea-4e07-ae72-42633f18c3ea\",\n \"vpc_description\" : \"\"\n }\n }\n }\n }'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"label",
"type",
"region",
"export_config",
"network_config"
],
"properties": {
"label": {
"type": "string",
"description": "The user-supplied label for this Storage Gateway."
},
"type": {
"type": "string",
"enum": [
"nfs4"
],
"description": "The gateway type."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) for this Storage Gateway."
},
"export_config": {
"type": "array",
"items": {
"$ref": "#/components/schemas/storage-gateway-export"
}
},
"network_config": {
"$ref": "#/components/schemas/storage-gateway-network"
}
}
},
"example": {
"label": "example storage gateway",
"type": "nfs4",
"region": "ewr",
"export_config": [
{
"label": "example export",
"pseudo_root_path": "/",
"vfs_uuid": "32b231f2-aad6-45e5-b56e-a5ff257b893a",
"allowed_ips": [
"10.1.96.0/20"
]
}
],
"network_config": {
"primary": {
"vpc": {
"vpc_uuid": "fb0df44c-fdda-4975-ab86-d465a24ca618"
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"storage_gateways": {
"description": "Created Storage Gateway.",
"allOf": [
{
"$ref": "#/components/schemas/storage-gateway"
},
{
"type": "object",
"properties": {
"export_config": {
"$ref": "#/components/schemas/storage-gateway-export-config"
}
}
},
{
"type": "object",
"properties": {
"network_config": {
"$ref": "#/components/schemas/storage-gateway-network-config"
}
}
}
]
}
}
},
"example": {
"storage_gateways": {
"id": "ac45b2d3-ec8e-4e4a-9def-9db532f2d1c3",
"date_created": "2026-09-22 22:23:39",
"status": "active",
"type": "storage-gateway-nfs4",
"region": "ewr",
"label": "example storage gateway",
"pending_charges": 0,
"tags": [],
"health": "Running",
"export_config": [
{
"id": "c003b85e-5f32-4abc-9bdb-197b6ee0fa49",
"name": "example export",
"pseudo_root_path": "/",
"vfs_uuid": "32b231f2-aad6-45e5-b56e-a5ff257b893a",
"allowed_ips": [
"10.1.96.0/20"
]
}
],
"network_config": {
"public_ips": [],
"vpc_ip_address": "10.1.96.3",
"vpc_uuid": "fb0df44c-fdda-4975-ab86-d465a24ca618",
"vpc_description": "example vpc"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/storage-gateways/{storage-gateway-id}": {
"parameters": [
{
"schema": null,
"type": "string",
"name": "storage-gateway-id",
"in": "path",
"required": true,
"description": "The [Storage Gateway id](#operation/list-storage-gateways)."
}
],
"get": {
"summary": "Get Storage Gateway",
"tags": [
"storage-gateways"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/storage-gateways/{storage-gateway-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"storage_gateway": {
"description": "Requested Storage Gateway details.",
"allOf": [
{
"$ref": "#/components/schemas/storage-gateway"
},
{
"type": "object",
"properties": {
"export_config": {
"$ref": "#/components/schemas/storage-gateway-export-config"
}
}
},
{
"type": "object",
"properties": {
"network_config": {
"$ref": "#/components/schemas/storage-gateway-network-config"
}
}
}
]
}
}
},
"example": {
"storage_gateway": {
"id": "ac45b2d3-ec8e-4e4a-9def-9db532f2d1c3",
"date_created": "2026-09-22 22:23:39",
"status": "active",
"type": "storage-gateway-nfs4",
"region": "ewr",
"label": "example storage gateway",
"pending_charges": 0,
"tags": [],
"health": "Running",
"export_config": [
{
"id": "c003b85e-5f32-4abc-9bdb-197b6ee0fa49",
"name": "example export",
"pseudo_root_path": "/",
"vfs_uuid": "32b231f2-aad6-45e5-b56e-a5ff257b893a",
"allowed_ips": [
"10.1.96.0/20"
]
}
],
"network_config": {
"public_ips": [],
"vpc_ip_address": "10.1.96.3",
"vpc_uuid": "fb0df44c-fdda-4975-ab86-d465a24ca618",
"vpc_description": "example vpc"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-storage-gateway",
"description": "Get information about a Storage Gateway.",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Storage Gateway",
"tags": [
"storage-gateways"
],
"operationId": "update-storage-gateway",
"responses": {
"204": {
"description": "No Content",
"headers": {}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"description": "Update the label for a Storage Gateway.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "A new user-supplied label for the Storage Gateway."
}
},
"required": [
"label"
]
},
"example": {
"label": "New Storage Gateway Label"
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/storage-gateway/{storage-gateway-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"New Storage Gateway Label\"\n }'"
}
]
},
"delete": {
"summary": "Delete Storage Gateway",
"tags": [
"storage-gateways"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/storage-gateways/{storage-gateway-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-storage-gateway",
"description": "Delete a Storage Gateway.",
"security": [
{
"API Key": []
}
]
}
},
"/storage-gateways/{storage-gateway-id}/exports": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "storage-gateway-id",
"in": "path",
"required": true,
"description": "The [Storage Gateway id](#operation/list-storage-gateways)."
}
],
"post": {
"summary": "Add New Export to Storage Gateway",
"tags": [
"storage-gateways"
],
"x-codeSamples": [
{
"lang": "curl",
"source": "curl \"https://api.vultr.com/v2/storage-gateways/{storage-gateway-id}/exports\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n -- data '{\n \"label\" : \"my_export_1\",\n \"pseudo_root_path\" : \"/\",\n \"vfs_uuid\" : \"a632673e-2fd5-4ff1-b251-2e28e7b65504\",\n \"allowed_ips\" : [ \"10.1.96.0/20\" ]\n }'"
}
],
"operationId": "add-storage-gateway-export",
"description": "Add a new export to an existing Storage Gateway.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/storage-gateway-export"
},
"example": {
"label": "example export",
"pseudo_root_path": "/",
"vfs_uuid": "32b231f2-aad6-45e5-b56e-a5ff235b893a",
"allowed_ips": [
"10.1.96.0/20"
]
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "array"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
}
}
},
"/storage-gateways/{storage-gateway-id}/exports/{export-id}": {
"parameters": [
{
"schema": null,
"type": "string",
"name": "storage-gateway-id",
"in": "path",
"required": true,
"description": "The [Storage Gateway id](#operation/list-storage-gateways)."
},
{
"schema": null,
"type": "int",
"name": "export-id",
"in": "path",
"required": true,
"description": "The [Storage Gateway export id](#operation/list-storage-gateways)."
}
],
"patch": {
"summary": "Update Storage Gateway Export",
"tags": [
"storage-gateways"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/storage-gateways/{storage-gateway-id}/exports/{export-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\"allowed_ips\" : [ \"10.0.0.0/8\" ]}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"allowed_ips": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of allowed IPs with CIDR notation."
}
},
"required": [
"allowed_ips"
]
},
"example": {
"allowed_ips": [
"10.1.96.0/20"
]
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"allowed_ips": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"example": {
"allowed_ips": [
"10.1.96.0/20"
]
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-storage-gateway-export",
"description": "Update the allowed client IPs for a Storage Gateway Export.",
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Storage Gateway Export",
"tags": [
"storage-gateways"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/storage-gateways/{storage-gateway-id}/exports/{export-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-storage-gateway-export",
"description": "Delete a Storage Gateway Export.",
"security": [
{
"API Key": []
}
]
}
},
"/domains": {
"get": {
"summary": "List DNS Domains",
"tags": [
"dns"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/domains\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"domains": {
"type": "array",
"items": {
"$ref": "#/components/schemas/domain"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"list of domains": {
"value": {
"domains": [
{
"domain": "example.com",
"date_created": "2020-10-10T01:56:20+00:00",
"dns_sec": "enabled"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-dns-domains",
"description": "List all DNS Domains in your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500.\n"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create DNS Domain",
"tags": [
"dns"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/domains\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"domain\" : \"example.com\",\n \"ip\" : \"192.0.2.123\",\n \"dns_sec\" : \"enabled\"\n }'"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"domain": {
"$ref": "#/components/schemas/domain"
}
}
},
"examples": {
"response": {
"value": {
"domain": {
"domain": "example.com",
"date_created": "2020-10-10T01:56:20+00:00",
"dns_sec": "enabled"
}
}
}
}
}
}
}
},
"operationId": "create-dns-domain",
"description": "Create a DNS Domain for `domain`. If no `ip` address is supplied a domain with no records will be created.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"domain": {
"type": "string",
"description": "Your registered DNS Domain name."
},
"ip": {
"type": "string",
"description": "The default IP address for your DNS Domain. If omitted an empty domain zone will be created."
},
"dns_sec": {
"type": "string",
"description": "Enable or disable DNSSEC.\n\n* enabled\n* disabled (default)"
}
},
"required": [
"domain"
]
},
"examples": {
"request": {
"value": {
"domain": "example.com",
"ip": "192.0.2.123",
"dns_sec": "enabled"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"parameters": []
},
"/domains/{dns-domain}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "dns-domain",
"in": "path",
"required": true,
"description": "The [DNS Domain](#operation/list-dns-domains)."
}
],
"get": {
"summary": "Get DNS Domain",
"tags": [
"dns"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"domain": {
"$ref": "#/components/schemas/domain"
}
}
},
"examples": {
"response": {
"value": {
"domain": {
"domain": "example.com",
"date_created": "2020-10-10T01:56:20+00:00",
"dns_sec": "enabled"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-dns-domain",
"security": [
{
"API Key": []
}
],
"description": "Get information for the DNS Domain."
},
"delete": {
"summary": "Delete Domain",
"tags": [
"dns"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-dns-domain",
"security": [
{
"API Key": []
}
],
"description": "Delete the DNS Domain."
},
"put": {
"summary": "Update a DNS Domain",
"operationId": "update-dns-domain",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"dns_sec\" : \"enabled\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"dns_sec": {
"type": "string",
"description": "Enable or disable DNSSEC.\n\n* enabled\n* disabled"
}
},
"required": [
"dns_sec"
]
},
"examples": {
"request": {
"value": {
"dns_sec": "enabled"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Update the DNS Domain. ",
"tags": [
"dns"
]
}
},
"/domains/{dns-domain}/soa": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "dns-domain",
"in": "path",
"required": true,
"description": "The [DNS Domain](#operation/list-dns-domains)."
}
],
"get": {
"summary": "Get SOA information",
"tags": [
"dns"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/soa\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"dns_soa": {
"$ref": "#/components/schemas/dns-soa"
}
}
},
"examples": {
"response": {
"value": {
"dns_soa": {
"nsprimary": "ns1.vultr.com",
"email": "admin@example.com"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-dns-domain-soa",
"description": "Get SOA information for the DNS Domain.",
"security": [
{
"API Key": []
}
]
},
"patch": {
"summary": "Update SOA information",
"tags": [
"dns"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/soa\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"nsprimary\" : \"ns1.vultr.com\",\n \"email\" : \"admin@example.com\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-dns-domain-soa",
"description": "Update the SOA information for the DNS Domain. All attributes are optional. If not set, the attributes will retain their original values.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"nsprimary": {
"type": "string",
"description": "Set the primary nameserver."
},
"email": {
"type": "string",
"description": "Set the contact email address."
}
}
},
"examples": {
"request": {
"value": {
"nsprimary": "ns1.vultr.com",
"email": "admin@example.com"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/domains/{dns-domain}/dnssec": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "dns-domain",
"in": "path",
"required": true,
"description": "The [DNS Domain](#operation/list-dns-domains)."
}
],
"get": {
"summary": "Get DNSSec Info",
"tags": [
"dns"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/dnssec\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"dns_sec": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"examples": {
"response": {
"value": {
"dns_sec": [
"example.com IN DNSKEY 257 3 13 kRrxANp7YTGqVbaWtMy8hhsK0jcG4ajjICZKMb4fKv79Vx/RSn76vNjzIT7/Uo0BXil01Fk8RRQc4nWZctGJBA==",
"example.com IN DS 27933 13 1 2d9ac457e5c11a104e25d971d0a6254562bddde7",
"example.com IN DS 27933 13 2 8858e7b0dfb881280ce2ca1e0eafcd93d5b53687c21da284d4f8799ba82208a9"
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-dns-domain-dnssec",
"security": [
{
"API Key": []
}
],
"description": "Get the DNSSEC information for the DNS Domain."
}
},
"/domains/{dns-domain}/records": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "dns-domain",
"in": "path",
"required": true,
"description": "The [DNS Domain](#operation/list-dns-domains)."
}
],
"post": {
"summary": "Create Record",
"tags": [
"dns"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/records\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"www\",\n \"type\" : \"A\",\n \"data\" : \"192.0.2.123\",\n \"ttl\" : 300,\n \"priority\" : 0\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"record": {
"$ref": "#/components/schemas/dns-record"
}
}
},
"examples": {
"response": {
"value": {
"record": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"type": "A",
"name": "www",
"data": "192.0.2.123",
"priority": 0,
"ttl": 300
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-dns-domain-record",
"description": "Create a DNS record.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The hostname for this DNS record."
},
"type": {
"type": "string",
"description": "The DNS record type.\n\n* A\n* AAAA\n* CNAME\n* NS\n* MX\n* SRV\n* TXT\n* CAA\n* SSHFP"
},
"data": {
"type": "string",
"description": "The DNS data for this record type."
},
"ttl": {
"type": "integer",
"description": "Time to Live in seconds."
},
"priority": {
"type": "integer",
"description": "DNS priority. Does not apply to all record types. (Only required for MX and SRV)"
}
},
"required": [
"name",
"type",
"data"
]
},
"examples": {
"request": {
"value": {
"name": "www",
"type": "A",
"data": "192.0.2.123",
"ttl": 300,
"priority": 0
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
]
},
"get": {
"summary": "List Records",
"tags": [
"dns"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/records\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"records": {
"type": "array",
"items": {
"$ref": "#/components/schemas/dns-record"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"records": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"type": "A",
"name": "foo.example.com",
"data": "192.0.2.123",
"priority": 0,
"ttl": 300
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-dns-domain-records",
"description": "Get the DNS records for the Domain.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "name",
"description": "Filter by record name. The value is relative to the domain (for example `www`, not `www.example.com`). An empty value matches the domain apex."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "type",
"description": "Filter by DNS record type (e.g. `CNAME`)."
}
]
}
},
"/domains/{dns-domain}/records/{record-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "dns-domain",
"in": "path",
"required": true,
"description": "The [DNS Domain](#operation/list-dns-domains)."
},
{
"schema": {
"type": "string"
},
"name": "record-id",
"in": "path",
"required": true,
"description": "The [DNS Record id](#operation/list-dns-domain-records)."
}
],
"get": {
"summary": "Get Record",
"tags": [
"dns"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/records/{record-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"record": {
"$ref": "#/components/schemas/dns-record"
}
}
},
"examples": {
"response": {
"value": {
"record": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"type": "A",
"name": "www",
"data": "192.0.2.123",
"priority": 0,
"ttl": 300
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-dns-domain-record",
"description": "Get information for a DNS Record.",
"security": [
{
"API Key": []
}
]
},
"patch": {
"summary": "Update Record",
"tags": [
"dns"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/records/{record-id}}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"CNAME\",\n \"data\" : \"foo.example.com\",\n \"ttl\" : 300,\n \"priority\" : 0\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
}
},
"operationId": "update-dns-domain-record",
"description": "Update the information for a DNS record. All attributes are optional. If not set, the attributes will retain their original values.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The hostname for this DNS record."
},
"data": {
"type": "string",
"description": "The DNS data for this record type."
},
"ttl": {
"type": "integer",
"description": "Time to Live in seconds."
},
"priority": {
"type": "integer",
"description": "DNS priority. Does not apply to all record types."
}
}
},
"examples": {
"request": {
"value": {
"name": "CNAME",
"data": "foo.example.com",
"ttl": 300,
"priority": 0
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Record",
"tags": [
"dns"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/domains/{dns-domain}/records/{record-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-dns-domain-record",
"description": "Delete the DNS record.",
"security": [
{
"API Key": []
}
]
}
},
"/regions": {
"get": {
"summary": "List Regions",
"tags": [
"region"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/regions\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"regions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/region"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"region": {
"value": {
"regions": [
{
"id": "ams",
"city": "Amsterdam",
"country": "NL",
"continent": "Europe",
"options": [
"ddos_protection",
"block_storage_high_perf",
"block_storage_storage_opt",
"kubernetes",
"load_balancers"
],
"connectivity": [
"public_ip",
"nat_gateway"
]
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
}
},
"operationId": "list-regions",
"description": "List all Regions at Vultr.",
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"security": []
}
},
"/regions/{region-id}/availability": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "region-id",
"in": "path",
"required": true,
"description": "The [Region id](#operation/list-regions)."
}
],
"get": {
"summary": "List available plans in region",
"tags": [
"region"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/regions/{region-id}/availability\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"available_plans": {
"type": "array",
"description": "An array of Plans available in this Region.",
"items": {
"type": "string"
}
},
"available_vpc_only_plans": {
"type": "array",
"description": "An array of VPC-only Plans available in this Region. These plans require VPC connectivity and do not include a public IP.",
"items": {
"type": "string"
}
}
}
},
"examples": {
"plans": {
"value": {
"available_plans": [
"vc2-1c-1gb",
"vc2-1c-2gb",
"vc2-2c-4gb",
"vc2-4c-8gb",
"vc2-6c-16gb",
"vc2-8c-32gb",
"vc2-16c-64gb",
"vc2-24c-96gb",
"vdc-4vcpu-8gb",
"vdc-4vcpu-16gb",
"vdc-6vcpu-24gb",
"vdc-8vcpu-32gb",
"vhf-1c-1gb",
"vhf-1c-2gb",
"vhf-2c-4gb",
"vhf-3c-8gb",
"vhf-4c-16gb",
"vhf-6c-24gb",
"vhf-8c-32gb",
"vhf-12c-48gb"
],
"available_vpc_only_plans": [
"vhp-1c-1gb",
"vhp-1c-2gb"
]
}
}
}
}
}
}
},
"operationId": "list-available-plans-region",
"description": "Get a list of the available plans in Region `region-id`. Not all plans are available in all regions.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "type",
"description": "Filter the results by type.\n\n| **Type** | **Description** |\n|----------|-----------------|\n| all | All available types |\n| vc2 | Cloud Compute |\n| vdc | Dedicated Cloud |\n| vhf | High Frequency Compute |\n| vhp | High Performance |\n| voc | All Optimized Cloud types |\n| voc-g | General Purpose Optimized Cloud |\n| voc-c | CPU Optimized Cloud |\n| voc-m | Memory Optimized Cloud |\n| voc-s | Storage Optimized Cloud |\n| vbm | Bare Metal |\n| vcg | Cloud GPU |\n"
}
],
"security": []
}
},
"/load-balancers": {
"get": {
"summary": "List Load Balancers",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"operationId": "list-load-balancers",
"description": "List the Load Balancers in your account.",
"security": [
{
"API Key": []
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"load_balancers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/loadbalancer"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"load_balancers": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"region": "ewr",
"label": "Example Load Balancer",
"status": "active",
"ipv4": "192.0.2.123",
"ipv6": "2001:0db8:5:4973:ffff:ffff:ffff:ffff",
"generic_info": {
"balancing_algorithm": "roundrobin",
"ssl_redirect": false,
"sticky_sessions": {
"cookie_name": "example-cookie"
},
"proxy_protocol": false,
"timeout": 600,
"private_network": "9fed374c-0afc-42bf-926c-abcf840b5406"
},
"health_check": {
"protocol": "http",
"port": 80,
"path": "/health",
"check_interval": 10,
"response_timeout": 5,
"unhealthy_threshold": 3,
"healthy_threshold": 3
},
"has_ssl": false,
"http2": false,
"http3": false,
"nodes": 1,
"forwarding_rules": [
{
"id": "73d85156c2c3129d",
"frontend_protocol": "http",
"frontend_port": 80,
"backend_protocol": "http",
"backend_port": 80
}
],
"firewall_rules": [
{
"id": "abcd123b93016eafb",
"port": 80,
"source": "198.51.100.0/24",
"ip_type": "v4"
}
],
"instances": [],
"node_ips": {
"v4": [],
"v6": [],
"private": []
},
"auto_ssl": {
"domain_zone": "",
"domain": ""
},
"global_parent_id": "",
"global_regions": [],
"global_children_ids": [],
"global_cname": "",
"ssl_cert_b64": "",
"pending_charges": 0,
"cname": "vlb-cb676a46-66fd-4dfb-b839-443f2e6c0b60.vultrlb.com"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500.\n"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create Load Balancer",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"balancing_algorithm\" : \"roundrobin\",\n \"ssl_redirect\" : false,\n \"http2\": false,\n \"http3\": false,\n \"proxy_protocol\" : false,\n \"timeout\" : 600,\n \"label\" : \"Example Load Balancer\",\n \"nodes\" : 1,\n \"health_check\" : {\n \"protocol\" : \"http\",\n \"port\" : 80,\n \"path\" : \"/health\",\n \"check_interval\" : 10,\n \"response_timeout\" : 5,\n \"unhealthy_threshold\" : 3,\n \"healthy_threshold\" : 3\n },\n \"forwarding_rules\": [\n {\n \"frontend_protocol\" : \"http\",\n \"frontend_port\" : 80,\n \"backend_protocol\" : \"http\",\n \"backend_port\" : 80\n }\n ],\n \"ssl\": {\n \"private_key\": \"-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\",\n \"certificate\": \"-----BEGIN CERTIFICATE-----\\n...\\n-----END CERTIFICATE-----\",\n \"chain\": \"-----BEGIN CERTIFICATE-----\\n...\\n-----END CERTIFICATE-----\"\n },\n \"firewall_rules\": [\n {\n \"port\" : 80,\n \"source\" : \"0.0.0.0/0\",\n \"ip_type\" : \"v4\"\n }\n ],\n \"global_regions\": [\n {\n \"region_id\": \"lax\",\n \"vpc_id\": \"6c97149f-e340-453a-b3eb-67eaf6fb93b1\"\n },\n {\n \"region_id\": \"atl\"\n }\n ]\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"load_balancer": {
"$ref": "#/components/schemas/loadbalancer"
}
}
},
"examples": {
"response": {
"value": {
"load_balancer": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"region": "ewr",
"label": "Example Load Balancer",
"status": "pending",
"ipv4": "",
"ipv6": "",
"generic_info": {
"balancing_algorithm": "roundrobin",
"ssl_redirect": false,
"sticky_sessions": {
"cookie_name": ""
},
"proxy_protocol": false,
"timeout": 600,
"private_network": "9fed374c-0afc-42bf-926c-abcf840b5406",
"vpc": "9fed374c-0afc-42bf-926c-abcf840b5406"
},
"health_check": {
"protocol": "http",
"port": 80,
"path": "/health",
"check_interval": 10,
"response_timeout": 5,
"unhealthy_threshold": 3,
"healthy_threshold": 3
},
"has_ssl": true,
"http2": false,
"http3": false,
"nodes": 1,
"forwarding_rules": [
{
"id": "73d85156c2c3129d",
"frontend_protocol": "http",
"frontend_port": 80,
"backend_protocol": "http",
"backend_port": 80
}
],
"firewall_rules": [
{
"id": "abcd123b93016eafb",
"port": 80,
"source": "24.187.16.196/16",
"ip_type": "v4"
}
],
"instances": [],
"node_ips": {
"v4": [],
"v6": [],
"private": []
},
"auto_ssl": {
"domain_zone": "",
"domain": ""
},
"global_regions": [
{
"region_id": "lax",
"vpc_id": "6c97149f-e340-453a-b3eb-67eaf6fb93b1"
},
{
"region_id": "atl",
"vpc_id": ""
}
],
"ssl_cert_b64": "",
"pending_charges": 0
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "create-load-balancer",
"description": "Create a new Load Balancer in a particular `region`.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"region"
],
"properties": {
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) to create this Load Balancer."
},
"balancing_algorithm": {
"type": "string",
"description": "The balancing algorithm.\n\n* roundrobin (default)\n* leastconn"
},
"ssl_redirect": {
"type": "boolean",
"description": "If `true`, this will redirect all HTTP traffic to HTTPS. You must have an HTTPS forwarding rule and an SSL certificate in `ssl` to enable this option. With `auto_ssl` it stays off until the certificate is issued (`has_ssl` is `true`) and there is an HTTPS rule, then send `ssl_redirect: true` again. Removing the last HTTPS forwarding rule or the certificate turns it back off.\n\n* true\n* false"
},
"http2": {
"type": "boolean",
"description": "If `true`, this will enable HTTP2 traffic. You must have an HTTPS forwarding rule combo (HTTPS -> HTTPS) to enable this option.\n\n* true\n* false"
},
"http3": {
"type": "boolean",
"description": "If `true`, this will enable HTTP3/QUIC traffic. You must have HTTP2 enabled.\n\n* true\n* false"
},
"nodes": {
"type": "integer",
"minimum": 1,
"maximum": 99,
"description": "The number of nodes to add to the load balancer (1-99), must be an odd number. This defaults to 1."
},
"proxy_protocol": {
"description": "If `true`, you must configure backend nodes to accept Proxy protocol.\n\n* true\n* false (Default)",
"type": "boolean"
},
"timeout": {
"type": "integer",
"minimum": 1,
"description": "The maximum time allowed for the connection to remain inactive before timing out in seconds. This defaults to 600."
},
"health_check": {
"type": "object",
"description": "The health check configuration. See [Load Balancer documentation](https://docs.vultr.com/vultr-load-balancers/#Load_Balancer_Configuration).",
"properties": {
"protocol": {
"type": "string",
"description": "The protocol to use for health checks.\n\n* https\n* http\n* tcp"
},
"port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"description": "The port to use for health checks. 65300-65310 are reserved."
},
"path": {
"type": "string",
"description": "HTTP Path to check. Only applies if protocol is `http` or `https`."
},
"check_interval": {
"type": "integer",
"minimum": 1,
"maximum": 300,
"description": "Interval between health checks."
},
"response_timeout": {
"type": "integer",
"minimum": 1,
"maximum": 300,
"description": "Timeout before health check fails."
},
"unhealthy_threshold": {
"type": "integer",
"minimum": 1,
"description": "Number of times a check must fail before becoming unhealthy."
},
"healthy_threshold": {
"type": "integer",
"minimum": 1,
"description": "Number of times a check must succeed before returning to healthy status."
}
}
},
"forwarding_rules": {
"type": "array",
"maxItems": 1000,
"description": "An array of forwarding rule objects. `http` and `https` frontends forward to `http` or `https`, `tcp` and `udp` only to the same protocol. Frontend ports must be unique, except a `udp` rule can share one with a `tcp`, `http` or `https` rule. An `https` rule needs a certificate in `ssl` or `auto_ssl`.",
"items": {
"type": "object",
"required": [
"frontend_protocol",
"frontend_port",
"backend_protocol",
"backend_port"
],
"properties": {
"frontend_protocol": {
"type": "string",
"description": "The protocol on the Load Balancer to forward to the backend.\n\n* http\n* https\n* tcp\n* udp"
},
"frontend_port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"description": "The port number on the Load Balancer to forward to the backend. 65300-65310 are reserved."
},
"backend_protocol": {
"type": "string",
"description": "The protocol destination on the backend server.\n\n* http\n* https\n* tcp\n* udp"
},
"backend_port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"description": "The port number destination on the backend server. 65300-65310 are reserved."
}
}
}
},
"sticky_session": {
"type": "object",
"description": "Enables sticky sessions for your load balancer when a cookie_name is provided.",
"properties": {
"cookie_name": {
"type": "string",
"description": "The cookie name to make sticky. See [Load Balancer documentation](https://docs.vultr.com/vultr-load-balancers/#Load_Balancer_Configuration)."
}
}
},
"ssl": {
"type": "object",
"description": "An SSL certificate to install on the Load Balancer.",
"properties": {
"private_key": {
"type": "string",
"description": "The private key."
},
"certificate": {
"type": "string",
"description": "The SSL certificate."
},
"chain": {
"type": "string",
"description": "The certificate chain."
},
"private_key_b64": {
"type": "string",
"description": "The private key base64 encoded. (Base64 encoded values should not be used alongside with non-Base64 encoded values)"
},
"certificate_b64": {
"type": "string",
"description": "The SSL certificate base64 encoded. (Base64 encoded values should not be used alongside with non-Base64 encoded values)"
},
"chain_b64": {
"type": "string",
"description": "The certificate chain base64 encoded. (Base64 encoded values should not be used alongside with non-Base64 encoded values)"
}
}
},
"label": {
"type": "string",
"description": "Label for your Load Balancer."
},
"instances": {
"type": "array",
"description": "An array of instances IDs that you want attached to the load balancer.",
"items": {
"type": "string"
}
},
"firewall_rules": {
"type": "array",
"description": "An array of firewall rule objects.",
"items": {
"type": "object",
"properties": {
"port": {
"type": "integer",
"description": "Port for this rule."
},
"source": {
"type": "string",
"description": "If the source string is given a value of \"cloudflare\" then cloudflare IPs will be supplied. Otherwise enter a IP address with subnet size that you wish to permit through the firewall.\n\nPossible values:\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | \"192.168.1.1/16\" | Ip address with a subnet size. |\n| | cloudflare | Allow all of Cloudflare's IP space through the firewall |"
},
"ip_type": {
"type": "string",
"description": "The type of IP rule.\n\n* v4\n* v6"
}
}
}
},
"private_network": {
"type": "string",
"description": "Use `vpc` instead. Ignored if `vpc` is also sent.",
"deprecated": true
},
"vpc": {
"type": "string",
"description": "ID of the VPC you wish to use. The VPC must be in the same region as the Load Balancer. If a VPC ID is omitted it will default to the public network."
},
"auto_ssl": {
"type": "object",
"description": "The Auto SSL configuration. Must be using Vultr DNS for Auto SSL. Use either `ssl` or `auto_ssl`, not both.",
"properties": {
"domain_zone": {
"type": "string",
"description": "The domain zone. (example.com)"
},
"domain_sub": {
"type": "string",
"description": "(optional) Subdomain to append to the domain zone."
}
}
},
"global_regions": {
"type": "array",
"description": "List of region objects with VPC information. A child Load Balancer is created in each region. Don't include the Load Balancer's own `region`.",
"items": {
"type": "object",
"properties": {
"region_id": {
"type": "string",
"description": "A [Region id](#operation/list-regions) to deploy child Load Balancers to."
},
"vpc_id": {
"type": "string",
"description": "ID of the VPC you wish to use. The VPC must be in the same region as the child Load Balancer. If a VPC ID is omitted it will default to the public network."
}
},
"required": [
"region_id"
]
}
}
}
},
"examples": {
"request": {
"value": {
"region": "ewr",
"balancing_algorithm": "roundrobin",
"ssl_redirect": false,
"http2": false,
"http3": false,
"nodes": 1,
"proxy_protocol": false,
"timeout": 600,
"label": "Example Load Balancer",
"health_check": {
"protocol": "http",
"port": 80,
"path": "/health",
"check_interval": 10,
"response_timeout": 5,
"unhealthy_threshold": 3,
"healthy_threshold": 3
},
"forwarding_rules": [
{
"frontend_protocol": "http",
"frontend_port": 80,
"backend_protocol": "http",
"backend_port": 80
}
],
"ssl": {
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
"certificate": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
"chain": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----"
},
"firewall_rules": [
{
"port": 80,
"source": "24.187.16.196/16",
"ip_type": "v4"
}
],
"vpc": "9fed374c-0afc-42bf-926c-abcf840b5406",
"global_regions": [
{
"region_id": "lax",
"vpc_id": "6c97149f-e340-453a-b3eb-67eaf6fb93b1"
},
{
"region_id": "atl"
}
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"parameters": []
},
"/load-balancers/{load-balancer-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "load-balancer-id",
"in": "path",
"required": true,
"description": "The [Load Balancer id](#operation/list-load-balancers)."
}
],
"get": {
"summary": "Get Load Balancer",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"load_balancer": {
"$ref": "#/components/schemas/loadbalancer"
}
}
},
"examples": {
"response": {
"value": {
"load_balancer": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"region": "ewr",
"label": "Example Load Balancer",
"status": "active",
"ipv4": "192.0.2.123",
"ipv6": "2001:0db8:5:4973:ffff:ffff:ffff:ffff",
"generic_info": {
"balancing_algorithm": "roundrobin",
"ssl_redirect": false,
"sticky_sessions": {
"cookie_name": "example-cookie"
},
"proxy_protocol": false,
"timeout": 600,
"private_network": "9fed374c-0afc-42bf-926c-abcf840b5406",
"vpc": "9fed374c-0afc-42bf-926c-abcf840b5406"
},
"health_check": {
"protocol": "http",
"port": 80,
"path": "/health",
"check_interval": 10,
"response_timeout": 5,
"unhealthy_threshold": 3,
"healthy_threshold": 3
},
"has_ssl": false,
"http2": false,
"http3": false,
"nodes": 1,
"forwarding_rules": [
{
"id": "73d85156c2c3129d",
"frontend_protocol": "http",
"frontend_port": 80,
"backend_protocol": "http",
"backend_port": 80
}
],
"firewall_rules": [
{
"id": "abcd123b93016eafb",
"port": 80,
"source": "198.51.100.0/24",
"ip_type": "v4"
}
],
"instances": [],
"node_ips": {
"v4": [],
"v6": [],
"private": []
},
"auto_ssl": {
"domain_zone": "",
"domain": ""
},
"global_parent_id": "",
"global_regions": [
{
"region_id": "sea",
"vpc_id": "6c97149f-e340-453a-b3eb-67eaf6fb93b1"
},
{
"region_id": "atl",
"vpc_id": ""
}
],
"global_children_ids": [
"c613df4-de1e-491a-abd5-ee0aa7d46340"
],
"global_cname": "",
"ssl_cert_b64": "",
"pending_charges": 0,
"cname": "vlb-cb676a46-66fd-4dfb-b839-443f2e6c0b60.vultrlb.com"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "get-load-balancer",
"description": "Get information for a Load Balancer.",
"security": [
{
"API Key": []
}
]
},
"patch": {
"summary": "Update Load Balancer",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"ssl\": {\n \"private_key\": \"-----BEGIN PRIVATE KEY-----\\n...\\n-----END PRIVATE KEY-----\",\n \"certificate\": \"-----BEGIN CERTIFICATE-----\\n...\\n-----END CERTIFICATE-----\",\n \"chain\": \"-----BEGIN CERTIFICATE-----\\n...\\n-----END CERTIFICATE-----\"\n },\n \"sticky_session\": {\n \"cookie_name\": \"example-cookie\"\n },\n \"forwarding_rules\": [\n {\n \"frontend_protocol\": \"http\",\n \"frontend_port\": 80,\n \"backend_protocol\": \"http\",\n \"backend_port\": 80\n },\n {\n \"frontend_protocol\": \"https\",\n \"frontend_port\": 443,\n \"backend_protocol\": \"https\",\n \"backend_port\": 443\n }\n ],\n \"health_check\": {\n \"protocol\": \"http\",\n \"port\": 80,\n \"path\": \"/health\",\n \"check_interval\": 10,\n \"response_timeout\": 5,\n \"unhealthy_threshold\": 3,\n \"healthy_threshold\": 3\n },\n \"proxy_protocol\": true,\n \"timeout\": 600,\n \"ssl_redirect\": true,\n \"http2\": true,\n \"http3\": true,\n \"nodes\": 1,\n \"balancing_algorithm\": \"roundrobin\",\n \"instances\": [\n \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n ]\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "update-load-balancer",
"security": [
{
"API Key": []
}
],
"description": "Update information for a Load Balancer. All attributes are optional. If not set, the attributes will retain their original values.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ssl": {
"type": "object",
"description": "An SSL certificate to install on the Load Balancer.",
"properties": {
"private_key": {
"type": "string",
"description": "The private key."
},
"certificate": {
"type": "string",
"description": "The SSL certificate."
},
"chain": {
"type": "string",
"description": "The certificate chain."
},
"private_key_b64": {
"type": "string",
"description": "The private key base64 encoded. (Base64 encoded values should not be used alongside with non-Base64 encoded values)"
},
"certificate_b64": {
"type": "string",
"description": "The SSL certificate base64 encoded. (Base64 encoded values should not be used alongside with non-Base64 encoded values)"
},
"chain_b64": {
"type": "string",
"description": "The certificate chain base64 encoded. (Base64 encoded values should not be used alongside with non-Base64 encoded values)"
}
}
},
"sticky_session": {
"type": "object",
"description": "Enables sticky sessions for your load balancer when a cookie_name is provided.",
"properties": {
"cookie_name": {
"type": "string",
"description": "The cookie name to make sticky. See [Load Balancer documentation](https://docs.vultr.com/vultr-load-balancers/#Load_Balancer_Configuration)."
}
}
},
"forwarding_rules": {
"type": "array",
"maxItems": 1000,
"description": "Send the complete array of forwarding rules. Rules left out are removed, and removing every HTTPS rule also turns off `http2`, `http3` and `ssl_redirect`. `http` and `https` frontends forward to `http` or `https`, `tcp` and `udp` only to the same protocol. Frontend ports must be unique, except a `udp` rule can share one with a `tcp`, `http` or `https` rule. An `https` rule needs an SSL certificate, installed or sent in `ssl`.",
"items": {
"type": "object",
"required": [
"frontend_protocol",
"frontend_port",
"backend_protocol",
"backend_port"
],
"properties": {
"frontend_protocol": {
"type": "string",
"description": "The protocol on the Load Balancer to forward to the backend.\n\n* http\n* https\n* tcp\n* udp"
},
"frontend_port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"description": "The port number on the Load Balancer to forward to the backend. 65300-65310 are reserved."
},
"backend_protocol": {
"type": "string",
"description": "The protocol destination on the backend server.\n\n* http\n* https\n* tcp\n* udp"
},
"backend_port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"description": "The port number destination on the backend server. 65300-65310 are reserved."
}
}
}
},
"health_check": {
"type": "object",
"description": "The health check configuration. [See Load Balancer documentation](https://docs.vultr.com/vultr-load-balancers/#Load_Balancer_Configuration).",
"properties": {
"protocol": {
"type": "string",
"description": "The protocol to use for health checks.\n\n* https\n* http\n* tcp"
},
"port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"description": "The port to use for health checks. 65300-65310 are reserved."
},
"path": {
"type": "string",
"description": "HTTP Path to check. Only applies if protocol is `http` or `https`."
},
"check_interval": {
"type": "integer",
"minimum": 1,
"maximum": 300,
"description": "Interval between health checks."
},
"response_timeout": {
"type": "integer",
"minimum": 1,
"maximum": 300,
"description": "Timeout before health check fails."
},
"unhealthy_threshold": {
"type": "integer",
"minimum": 1,
"description": "Number of times a check must fail before becoming unhealthy."
},
"healthy_threshold": {
"type": "integer",
"minimum": 1,
"description": "Number of times a check must succeed before returning to healthy status."
}
}
},
"proxy_protocol": {
"type": "boolean",
"description": "If `true`, you must configure backend nodes to accept Proxy protocol.\n\n* true\n* false (Default)"
},
"timeout": {
"type": "integer",
"minimum": 1,
"description": "The maximum time allowed for the connection to remain inactive before timing out in seconds. This defaults to 600."
},
"ssl_redirect": {
"type": "boolean",
"description": "If `true`, this will redirect all HTTP traffic to HTTPS. You must have an HTTPS forwarding rule and an SSL certificate (installed or sent in `ssl`) to enable this option. With `auto_ssl` it stays off until the certificate is issued (`has_ssl` is `true`) and there is an HTTPS rule, then send `ssl_redirect: true` again. Removing the last HTTPS forwarding rule or the certificate turns it back off.\n\n* true\n* false"
},
"http2": {
"type": "boolean",
"description": "If `true`, this will enable HTTP2 traffic. You must have an HTTPS forwarding rule combo (HTTPS -> HTTPS) to enable this option.\n\n* true\n* false"
},
"http3": {
"type": "boolean",
"description": "If `true`, this will enable HTTP3/QUIC traffic. You must have HTTP2 enabled.\n\n* true\n* false"
},
"nodes": {
"type": "integer",
"minimum": 1,
"maximum": 99,
"description": "The total number of nodes for the Load Balancer (1-99), must be an odd number. If omitted, the current count is kept. With `global_regions`, every child region gets the same count."
},
"balancing_algorithm": {
"type": "string",
"description": "The balancing algorithm.\n\n* roundrobin (default)\n* leastconn"
},
"instances": {
"type": "array",
"description": "Send the complete array of Instances IDs that should be attached to this Load Balancer. Instances will be attached or detached to match your array. For example, if Instances **X**, **Y**, and **Z** are currently attached, and you send [A,B,Z], then Instance **A** and **B** will be attached, **X** and **Y** will be detached, and **Z** will remain attached.",
"items": {
"type": "string"
}
},
"label": {
"type": "string",
"description": "The label for your Load Balancer"
},
"private_network": {
"type": "string",
"description": "Use `vpc` instead. Ignored if empty or if `vpc` is also sent.",
"deprecated": true
},
"vpc": {
"type": "string",
"description": "ID of the VPC you wish to use. The VPC must be in the same region as the Load Balancer. Send an empty string to switch to the public network. If omitted, the current network is kept. Don't send it in the same request as `instances`."
},
"firewall_rules": {
"type": "array",
"description": "An array of firewall rule objects.",
"items": {
"type": "object",
"properties": {
"port": {
"type": "integer",
"description": "Port for this rule."
},
"source": {
"type": "string",
"description": "If the source string is given a value of \"cloudflare\" then cloudflare IPs will be supplied. Otherwise enter a IP address with subnet size that you wish to permit through the firewall.\n\nPossible values:\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | \"192.168.1.1/16\" | Ip address with a subnet size. |\n| | cloudflare | Allow all of Cloudflare's IP space through the firewall |"
},
"ip_type": {
"type": "string",
"description": "The type of IP rule.\n\n* v4\n* v6"
}
}
}
},
"auto_ssl": {
"type": "object",
"description": "The Auto SSL configuration. Must be using Vultr DNS for Auto SSL. Use either `ssl` or `auto_ssl`, not both.",
"properties": {
"domain_zone": {
"type": "string",
"description": "The domain zone. (example.com)"
},
"domain_sub": {
"type": "string",
"description": "(optional) Subdomain to append to the domain zone."
}
}
},
"global_regions": {
"type": "array",
"description": "Send the complete array of child regions, as region objects with VPC information. Child Load Balancers are created or destroyed to match your array, so an empty array removes all of them. A child region can't be removed until it has finished deploying. A bare array of [Region ids](#operation/list-regions) is also accepted, in which case new child Load Balancers use the public network. Send it in its own request. Other changes in the same request aren't applied to new child Load Balancers.",
"items": {
"type": "object",
"properties": {
"region_id": {
"type": "string",
"description": "A [Region id](#operation/list-regions) to deploy child Load Balancers to."
},
"vpc_id": {
"type": "string",
"description": "ID of the VPC you wish to use. The VPC must be in the same region as the child Load Balancer. If a VPC ID is omitted it will default to the public network. Only used when the region is added. It doesn't change the VPC of an existing child."
}
},
"required": [
"region_id"
]
}
}
}
},
"examples": {
"request": {
"value": {
"ssl": {
"private_key": "-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----",
"certificate": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
"chain": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----"
},
"sticky_session": {
"cookie_name": "example-cookie"
},
"forwarding_rules": [
{
"frontend_protocol": "http",
"frontend_port": 80,
"backend_protocol": "http",
"backend_port": 80
},
{
"frontend_protocol": "https",
"frontend_port": 443,
"backend_protocol": "https",
"backend_port": 443
}
],
"firewall_rules": [
{
"port": 80,
"source": "192.168.1.1/16",
"ip_type": "v4"
}
],
"health_check": {
"protocol": "http",
"port": 80,
"path": "/health",
"check_interval": 10,
"response_timeout": 5,
"unhealthy_threshold": 3,
"healthy_threshold": 3
},
"proxy_protocol": true,
"timeout": 600,
"ssl_redirect": true,
"http2": true,
"http3": true,
"nodes": 1,
"balancing_algorithm": "roundrobin",
"instances": [
"cb676a46-66fd-4dfb-b839-443f2e6c0b60"
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete Load Balancer",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "delete-load-balancer",
"description": "Delete a Load Balancer.",
"security": [
{
"API Key": []
}
]
}
},
"/load-balancers/{load-balancer-id}/ssl": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "load-balancer-id",
"in": "path",
"required": true,
"description": "The [Load Balancer id](#operation/list-load-balancers)."
}
],
"delete": {
"summary": "Delete Load Balancer SSL",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/ssl\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "delete-load-balancer-ssl",
"description": "Delete a Load Balancer SSL.",
"security": [
{
"API Key": []
}
]
}
},
"/load-balancers/{load-balancer-id}/auto_ssl": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "load-balancer-id",
"in": "path",
"required": true,
"description": "The [Load Balancer id](#operation/list-load-balancers)."
}
],
"delete": {
"summary": "Disable Load Balancer Auto SSL",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/auto_ssl\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "delete-load-balancer-auto-ssl",
"description": "Disable a Load Balancer Auto SSL. This will not remove an ssl certificate from the load balancer.",
"security": [
{
"API Key": []
}
]
}
},
"/load-balancers/{load-balancer-id}/forwarding-rules": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "load-balancer-id",
"in": "path",
"required": true,
"description": "The [Load Balancer id](#operation/list-load-balancers)."
}
],
"get": {
"summary": "List Forwarding Rules",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/forwarding-rules\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"forwarding_rules": {
"type": "array",
"items": {
"$ref": "#/components/schemas/forwarding-rule"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"forwarding_rules": [
{
"id": "73d85156c2c3129d",
"frontend_protocol": "http",
"frontend_port": 80,
"backend_protocol": "http",
"backend_port": 80
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "list-load-balancer-forwarding-rules",
"description": "List the fowarding rules for a Load Balancer.",
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Forwarding Rule",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/forwarding-rules\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"frontend_protocol\" : \"http\",\n \"frontend_port\" : 8080,\n \"backend_protocol\" : \"http\",\n \"backend_port\" : 80\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request. Returned when an identical forwarding rule already exists."
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "create-load-balancer-forwarding-rules",
"description": "Create a new forwarding rule for a Load Balancer. `http` and `https` frontends forward to `http` or `https`, `tcp` and `udp` only to the same protocol. Frontend ports must be unique, except a `udp` rule can share one with a `tcp`, `http` or `https` rule. An `https` rule needs an SSL certificate already installed. Returns `422` for Load Balancers managed by Kubernetes and for child Load Balancers. Max 1000 rules per Load Balancer.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"frontend_protocol": {
"type": "string",
"description": "The protocol on the Load Balancer to forward to the backend.\n\n* http\n* https\n* tcp\n* udp"
},
"frontend_port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"description": "The port number on the Load Balancer to forward to the backend. 65300-65310 are reserved."
},
"backend_protocol": {
"type": "string",
"description": "The protocol destination on the backend server.\n\n* http\n* https\n* tcp\n* udp"
},
"backend_port": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"description": "The port number destination on the backend server. 65300-65310 are reserved."
}
},
"required": [
"frontend_protocol",
"frontend_port",
"backend_protocol",
"backend_port"
]
},
"examples": {
"request": {
"value": {
"frontend_protocol": "http",
"frontend_port": 8080,
"backend_protocol": "http",
"backend_port": 80
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/load-balancers/{load-balancer-id}/forwarding-rules/{forwarding-rule-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "load-balancer-id",
"in": "path",
"required": true,
"description": "The [Load Balancer id](#operation/list-load-balancers)."
},
{
"schema": {
"type": "string"
},
"name": "forwarding-rule-id",
"in": "path",
"required": true,
"description": "The [Forwarding Rule id](#operation/list-load-balancer-forwarding-rules)."
}
],
"get": {
"summary": "Get Forwarding Rule",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/forwarding-rules/{forwarding-rule-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"forwarding_rule": {
"$ref": "#/components/schemas/forwarding-rule"
}
}
},
"examples": {
"response": {
"value": {
"forwarding_rule": {
"id": "73d85156c2c3129d",
"frontend_protocol": "http",
"frontend_port": 8080,
"backend_protocol": "http",
"backend_port": 80
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "get-load-balancer-forwarding-rule",
"description": "Get information for a Forwarding Rule on a Load Balancer.",
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Forwarding Rule",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/forwarding-rules/{forwarding-rule-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "delete-load-balancer-forwarding-rule",
"description": "Delete a Forwarding Rule on a Load Balancer.",
"security": [
{
"API Key": []
}
]
}
},
"/load-balancers/{load-balancer-id}/reverse-dns": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "load-balancer-id",
"in": "path",
"required": true,
"description": "The [Load Balancer id](#operation/list-load-balancers)."
}
],
"get": {
"summary": "Get Reverse DNS",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/reverse-dns\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ipv4": {
"type": "array",
"description": "The reverse DNS entry for each of the Load Balancer's IPv4 addresses. An address with no entry set shows its default, `.vultrusercontent.com`.",
"items": {
"type": "string"
}
},
"ipv6": {
"type": "array",
"description": "The reverse DNS entries set in the Load Balancer's IPv6 subnet, empty when none are set. Only present when the Load Balancer has an IPv6 address.",
"items": {
"type": "object",
"properties": {
"ip": {
"type": "string",
"description": "The IPv6 address, in compressed form."
},
"domain": {
"type": "string",
"description": "The domain set for that address."
}
}
}
}
}
},
"examples": {
"response": {
"value": {
"ipv4": [
"172.17.11.98.vultrusercontent.com"
],
"ipv6": [
{
"ip": "2001:db8::34f4:0:0:f3dd",
"domain": "test.com"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "get-load-balancer-reverse-dns",
"description": "Get Reverse DNS information for a Load Balancer.",
"security": [
{
"API Key": []
}
]
}
},
"/load-balancers/{load-balancer-id}/reverse-dns/ipv4": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "load-balancer-id",
"in": "path",
"required": true,
"description": "The [Load Balancer id](#operation/list-load-balancers)."
}
],
"put": {
"summary": "Update Reverse DNS IPV4",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/reverse-dns/ipv4\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"v4\": \"test.com\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "create-load-balancer-reverse-dns-ipv4",
"description": "Update (ipv4) Reverse DNS for a Load Balancer. To reset it, set it back to the default `.vultrusercontent.com`.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"v4"
],
"properties": {
"v4": {
"type": "string",
"description": "The Domain for the Reverse DNS Entry. If one exists it will be updated. It can't be empty."
}
}
},
"examples": {
"request": {
"value": {
"v4": "test.com"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/load-balancers/{load-balancer-id}/reverse-dns/ipv6": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "load-balancer-id",
"in": "path",
"required": true,
"description": "The [Load Balancer id](#operation/list-load-balancers)."
}
],
"post": {
"summary": "Create Reverse DNS IPV6",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/reverse-dns/ipv6\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"v6\": [\n {\n \"ip\": \"2001:0db8:0000:0000:34f4:0000:0000:f3dd\",\n \"domain\": \"test.com\"\n }\n ]\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "create-load-balancer-reverse-dns-ipv6",
"description": "Create Reverse DNS (ipv6) for a Load Balancer. Each `ip` must be in the Load Balancer's IPv6 subnet. An existing entry for the same address is updated. Does nothing if the Load Balancer has no IPv6 address.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"v6"
],
"properties": {
"v6": {
"type": "array",
"items": {
"type": "object",
"required": [
"ip",
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "The Domain for the Reverse DNS Entry."
},
"ip": {
"type": "string",
"description": "The IPV6 IP for the Reverse DNS Entry."
}
}
}
}
}
},
"examples": {
"request": {
"value": {
"v6": [
{
"ip": "2001:0db8:0000:0000:34f4:0000:0000:f3dd",
"domain": "test.com"
}
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/load-balancers/{load-balancer-id}/reverse-dns/ipv6/{ipv6}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "load-balancer-id",
"in": "path",
"required": true,
"description": "The [Load Balancer id](#operation/list-load-balancers)."
},
{
"schema": {
"type": "string"
},
"name": "ipv6",
"in": "path",
"required": true,
"description": "The IPv6 address of the reverse DNS entry."
}
],
"delete": {
"summary": "Delete Reverse DNS",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/reverse-dns/ipv6/{ipv6}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "delete-load-balancer-reverse-dns",
"description": "Delete a ipv6 reverse dns entry on a Load Balancer.",
"security": [
{
"API Key": []
}
]
}
},
"/logs": {
"get": {
"summary": "List Logs",
"tags": [
"logs"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/logs\"\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"operationId": "list-logs",
"description": "List the Logs for your account.",
"security": [
{
"API Key": []
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"logs": {
"type": "array",
"description": "Maximum of 5,000 log records returned per request",
"items": {
"$ref": "#/components/schemas/log"
}
},
"meta": {
"$ref": "#/components/schemas/log-meta"
}
}
},
"examples": {
"response": {
"value": {
"logs": [
{
"resource_id": "xb671a46-66ed-4dfb-b839-543f2c6c0b63",
"resource_type": "instances",
"log_level": "debug",
"message": "Success",
"timestamp": "2025-06-26T16:45:06+00:00",
"metadata": {}
}
],
"meta": {
"next_page_url": "https://api.vultr.com/v2/logs?end_time=2025-09-18T10:21:20Z&start_time=2025-09-18T00:00:00Z&resource_type=kubernetes",
"continue_time": "2025-06-26T12:24:03Z",
"returned_count": 5000,
"unreturned_count": 3524,
"total_count": 8524
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "start_time",
"description": "A UTC timestamp for the start of the time period from which to return logs. `start_time` is an inclusive endpoint. Logs with a timestamp equal to, or after `start_time` are included in the response
\nThis field is required if the end_time field is not provided.\n**Expected Format:** yyyy-mm-ddThh:mm:ssZ
\n**EX:** `2025-06-26T00:00:00Z`
\n*start_time must be after to the date added for start_time*
\n*start_time and end_time may not be more than 30 days and 1 hour apart*
\n*If no start_time is provided a time 30 days and 1 hour prior to the end_time will be used by default*\n"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "end_time",
"description": "A UTC timestamp for the end of the time period from which to return logs. `end_time` is an exclusive endpoint. Only logs with a timestamp before the `end_time` are included in the response.
\nThis field is required if the start_time field is not provided.\n**Expected Format:** yyyy-mm-ddThh:mm:ssZ
\n**EX:** `2025-06-26T00:00:00Z`
\n*end_time must be before the date added for start_time*
\n*start_time and end_time may not be more than 30 days and 1 hour apart*
\n*If no end_time is provided the current time will be used by default*"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "log_level",
"description": "Filter the logs by the level assigned to the log.\n* `info`\n* `debug`\n* `warning`\n* `error`\n* `critical`"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "resource_type",
"description": "Filter the logs by the type of a resource such as an instances, bare-metals, kubernetes, etc.
\n*resource_type must be an exact match to the value of the resource type set in the log.*\n"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "resource_id",
"description": "Filter the logs by the UUID of a specific resource such as an instance."
}
]
}
},
"/logs/audit-logs": {
"post": {
"tags": [
"logs"
],
"summary": "Create audit logs subscription",
"operationId": "CreateAuditLogs",
"description": "Create a subscription for audit logging to hold logs in immutable object storage for a set duration. An account may only have one audit logs subscription. Once the subscription is created and the object storage is activated logs are transfered in 15 minute intervals.",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"cluster_id",
"label",
"expiration_days"
],
"properties": {
"cluster_id": {
"type": "integer",
"description": "Used to select the cluster on which to host the object storage in which the logs will be stored. Use the [List Audit Logs Clusters](https://www.vultr.com/api/#tag/s3/operation/ListAuditLogsClusters) endpoint for available cluster_id values.",
"example": 2
},
"label": {
"type": "string",
"description": "A label to identify the subscription.",
"example": "my_audit_logs"
},
"expiration_days": {
"type": "integer",
"description": "The number of days to store log files for. After a log file is upload it can not be deleted until the number of days set for expiration_days has elapsed. Once that time has elapsed the file will be deleted automaticaly. Once this value is set it can only be increased.",
"example": 400
}
}
}
}
}
},
"responses": {
"201": {
"description": "Audit Log Details",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuditLog"
}
}
}
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
}
}
},
"get": {
"tags": [
"logs"
],
"summary": "List audit logs subscriptions",
"operationId": "ListAuditLogs",
"description": "List existing audit logs subscriptions.",
"responses": {
"200": {
"description": "List of audit logs subscriptions",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"subscriptions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AuditLog"
}
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
}
}
}
},
"/logs/audit-logs/{id}": {
"get": {
"tags": [
"logs"
],
"summary": "Get audit logs subscription",
"operationId": "GetAuditLog",
"description": "View information for a specific audit logs subscription",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"description": "Audit Log subscription UUID",
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"responses": {
"200": {
"description": "Audit Log Details",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuditLog"
}
}
}
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
}
}
},
"put": {
"tags": [
"logs"
],
"summary": "Update audit logs subscription",
"operationId": "UpdateAuditLog",
"description": "Update information for a specific audit logs subscription",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"description": "Audit Log subscription UUID",
"schema": {
"type": "string",
"format": "uuid"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "A label to identify the subscription.",
"example": "my_audit_logs"
},
"expiration_days": {
"type": "integer",
"description": "The number of days for log files to be stored. After a log file is upload it can not be deleted until the number of days set for expiration_days has elapsed. Once that time has elapsed the file will be deleted automaticaly.",
"example": 400
}
}
}
}
}
},
"responses": {
"200": {
"description": "Audit Log Details",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AuditLog"
}
}
}
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
}
}
}
},
"/logs/audit-logs/clusters": {
"get": {
"tags": [
"logs"
],
"summary": "List audit logs Clusters",
"operationId": "ListAuditLogsClusters",
"description": "List Clusters available for audit logs.",
"responses": {
"200": {
"description": "List of audit logs clusters",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"locations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AuditLogCluster"
}
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/Unauthorized"
},
"403": {
"$ref": "#/components/responses/Forbidden"
},
"404": {
"$ref": "#/components/responses/NotFound"
}
}
}
},
"/plans": {
"get": {
"summary": "List Plans",
"tags": [
"plans"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/plans\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"plans": {
"type": "array",
"items": {
"$ref": "#/components/schemas/plans"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"plans": [
{
"id": "vhf-8c-32gb",
"vcpu_count": 8,
"ram": 32768,
"disk": 512,
"disk_count": 1,
"bandwidth": 6144,
"invoice_type": "monthly",
"monthly_cost": 192,
"hourly_cost": 0.26,
"monthly_cost_preemptible": 192,
"hourly_cost_preemptible": 0.26,
"type": "vhf",
"locations": [
"sea"
],
"location_cost": {
"sea": {
"monthly_cost": 192,
"hourly_cost": 0.26,
"monthly_cost_preemptible": 192,
"hourly_cost_preemptible": 0.26
}
},
"gpu_brand": "none"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
}
},
"operationId": "list-plans",
"description": "Get a list of all VPS plans at Vultr.\n\nThe response is an array of JSON `plan` objects, with unique `id` with sub-fields in the general format of:\n\n ---\n\nFor example: `vc2-24c-96gb-sc1`\n\nMore about the sub-fields:\n\n* ``: The Vultr type code. For example, `vc2`, `vhf`, `vdc`, etc.\n* ``: The number of cores, such as `4c` for \"4 cores\", `8c` for \"8 cores\", etc.\n* ``: Size in GB, such as `32gb`.\n* ``: Some plans include a modifier for internal identification purposes, such as CPU type or location surcharges.\n\n> Note: This information about plan id format is for general education. Vultr may change the sub-field format or values at any time. You should not attempt to parse the plan ID sub-fields in your code for any specific purpose.\n",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "type",
"description": "Filter the results by type.\n\n| **Type** | **Description** |\n|----------|-----------------|\n| all | All available types |\n| vc2 | Cloud Compute |\n| vdc | Dedicated Cloud |\n| vhf | High Frequency Compute |\n| vhp | High Performance |\n| voc | All Optimized Cloud types |\n| voc-g | General Purpose Optimized Cloud |\n| voc-c | CPU Optimized Cloud |\n| voc-m | Memory Optimized Cloud |\n| voc-s | Storage Optimized Cloud |\n| vcg | Cloud GPU |"
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "os",
"description": "Filter the results by operating system.\n\n| | Type | Description |\n| - | ------ | ------------- |\n| | windows | All available plans that support windows |"
}
],
"security": []
}
},
"/plans-metal": {
"get": {
"summary": "List Bare Metal Plans",
"tags": [
"plans"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/plans-metal\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"plans": {
"type": "array",
"items": {
"$ref": "#/components/schemas/plans-metal"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"bare metal": {
"value": {
"plans_metal": [
{
"id": "vbm-4c-32gb",
"cpu_count": 4,
"cpu_threads": 8,
"cpu_model": "E3-1270v6",
"ram": 32768,
"disk": 240,
"disk_count": 2,
"bandwidth": 5120,
"invoice_type": "monthly",
"monthly_cost": 300,
"hourly_cost": 0.41,
"monthly_cost_preemptible": 300,
"hourly_cost_preemptible": 0.41,
"type": "SSD",
"locations": [
"ewr"
],
"gpu_brand": "none"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
}
},
"operationId": "list-metal-plans",
"description": "Get a list of all Bare Metal plans at Vultr.\n\nThe response is an array of JSON `plan` objects, with unique `id` with sub-fields in the general format of:\n\n ---\n\nFor example: `vc2-24c-96gb-sc1`\n\nMore about the sub-fields:\n\n* ``: The Vultr type code. For example, `vc2`, `vhf`, `vdc`, etc.\n* ``: The number of cores, such as `4c` for \"4 cores\", `8c` for \"8 cores\", etc.\n* ``: Size in GB, such as `32gb`.\n* ``: Some plans include a modifier for internal identification purposes, such as CPU type or location surcharges.\n\n> Note: This information about plan id format is for general education. Vultr may change the sub-field format or values at any time. You should not attempt to parse the plan ID sub-fields in your code for any specific purpose.\n",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"security": []
}
},
"/bare-metals": {
"get": {
"summary": "List Bare Metal Instances",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"bare_metals": {
"type": "array",
"items": {
"$ref": "#/components/schemas/baremetal-get"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"bare metal": {
"value": {
"bare_metals": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"os": "Application",
"ram": "32768 MB",
"disk": "2x 240GB SSD",
"main_ip": "192.0.2.123",
"cpu_count": 4,
"region": "ams",
"default_password": "example-password",
"date_created": "2020-10-10T01:56:20+00:00",
"status": "active",
"power_status": "running",
"netmask_v4": "255.255.254.0",
"gateway_v4": "192.0.2.1",
"plan": "vbm-4c-32gb",
"v6_network": "2001:0db8:5001:3990::",
"v6_main_ip": "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a",
"v6_network_size": 64,
"label": "Example Bare Metal",
"internal_ip": "",
"vpcs": [
{
"id": "775e26b3-f67d-46b7-87ed-1a0457fb3a5e",
"version": 1,
"subnet": "10.1.96.3"
}
],
"mac_address": 2199756823533,
"os_id": 186,
"app_id": 3,
"image_id": "",
"snapshot_id": "",
"features": [
"ipv6"
],
"tags": [
"a tag",
"another"
],
"user_scheme": "root",
"hostname": "server01.example.com",
"vserial": "442115ef-ec63-4864-a9dd-55a8030aeeeb@par1.vserial.vultr.com",
"mdisk_mode": "raid1"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-baremetals",
"description": "List all Bare Metal instances in your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500.\n"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "label",
"description": "Filter by label."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "main_ip",
"description": "Filter by main ip address."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "region",
"description": "Filter by [Region id](#operation/list-regions)."
}
]
},
"post": {
"summary": "Create Bare Metal Instance",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ams\",\n \"plan\" : \"vbm-4c-32gb\",\n \"label\" : \"Example Bare Metal\",\n \"app_id\" : 3,\n \"enable_ipv6\" : true\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"baremetal": {
"$ref": "#/components/schemas/baremetal"
}
}
},
"examples": {
"bare metal": {
"value": {
"bare_metal": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"os": "Application",
"ram": "32768 MB",
"disk": "2x 240GB SSD",
"main_ip": "",
"cpu_count": 4,
"region": "ams",
"date_created": "2020-10-10T01:56:20+00:00",
"status": "pending",
"power_status": "running",
"netmask_v4": "",
"gateway_v4": "",
"plan": "vbm-4c-32gb",
"v6_network": "",
"v6_main_ip": "",
"v6_network_size": 0,
"label": "Example Bare Metal",
"mac_address": 2199756823533,
"tag": "Example Tag",
"tags": [
"Another tag"
],
"os_id": 186,
"app_id": 3,
"image_id": "",
"snapshot_id": "",
"features": [
"ipv6"
],
"user_scheme": "root",
"mdisk_mode": "raid1"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-baremetal",
"description": "Create a new Bare Metal instance in a `region` with the desired `plan`. Choose one of the following to deploy the instance:\n\n* `os_id`\n* `snapshot_id`\n* `app_id`\n* `image_id`\n\nSupply other attributes as desired.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) to create the instance."
},
"plan": {
"type": "string",
"description": "The [Bare Metal plan id](#operation/list-metal-plans) to use for this instance."
},
"script_id": {
"type": "string",
"description": "The [Startup Script id](#operation/list-startup-scripts) to use for this instance."
},
"enable_ipv6": {
"type": "boolean",
"description": "Enable IPv6.\n\n* true"
},
"sshkey_id": {
"type": "array",
"description": "The [SSH Key id](#operation/list-ssh-keys) to install on this instance.",
"items": {
"type": "string"
}
},
"user_data": {
"type": "string",
"description": "The user-supplied, base64 encoded [user data](https://docs.vultr.com/manage-instance-user-data-with-the-vultr-metadata-api/) for this Instance."
},
"label": {
"type": "string",
"description": "The user-supplied label."
},
"activation_email": {
"type": "boolean",
"description": "Notify by email after deployment.\n\n* true\n* false (default)"
},
"hostname": {
"type": "string",
"description": "The user-supplied hostname to use when deploying this instance."
},
"tag": {
"type": "string",
"description": "Use `tags` instead. The user-supplied tag.",
"deprecated": true
},
"reserved_ipv4": {
"type": "string",
"description": "The [Reserved IP id](#operation/list-reserved-ips) for this instance."
},
"os_id": {
"type": "integer",
"description": "If supplied, deploy the instance using this [Operating System id](#operation/list-os)."
},
"snapshot_id": {
"type": "string",
"description": "If supplied, deploy the instance using this [Snapshot ID](#operation/list-snapshots)."
},
"app_id": {
"type": "integer",
"description": "If supplied, deploy the instance using this [Application id](#operation/list-applications)."
},
"image_id": {
"type": "string",
"description": "If supplied, deploy the instance using this [Application image_id](#operation/list-applications)."
},
"ipxe_chain_url": {
"type": "string",
"description": "The URL location of the iPXE chainloader. If used, `os_id` must be set to 159."
},
"persistent_pxe": {
"type": "boolean",
"description": "Enable persistent PXE.\n\n* true\n* false (default)"
},
"attach_vpc": {
"type": "array",
"description": "An array of [VPC IDs](#operation/list-vpcs) to attach to this Bare Metal Instance. This parameter takes precedence over `enable_vpc`. Please choose one parameter.",
"items": {
"type": "string"
}
},
"enable_vpc": {
"type": "boolean",
"description": "If `true`, VPC support will be added to the new server.\n\nThis parameter attaches a single VPC. When no VPC exists in the region, it will be automatically created.\n\nIf there are multiple VPCs in the instance's region, use `attach_vpc` instead to specify a network."
},
"user_scheme": {
"type": "string",
"description": "Linux-only: The user scheme used for logging into this instance. By default, the \"root\" user is configured. Alternatively, a limited user with sudo permissions can be selected.\n\n* root\n* limited"
},
"mdisk_mode": {
"type": "string",
"description": "The RAID configuration used for the disks on this instance. The instance must be reinstalled for this change to take effect.\n\n* raid1\n* jbod\n* none (default)"
},
"app_variables": {
"type": "object",
"description": "The [app variable inputs](#operation/list-marketplace-app-variables) for configuring the marketplace app (name/value pairs)."
}
},
"required": [
"region",
"plan"
]
},
"examples": {
"request": {
"value": {
"region": "ams",
"plan": "vbm-4c-32gb",
"label": "Example Bare Metal",
"app_id": 3,
"enable_ipv6": true
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"parameters": []
},
"/bare-metals/{baremetal-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal id](#operation/list-baremetals)."
}
],
"get": {
"summary": "Get Bare Metal",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"bare_metal": {
"$ref": "#/components/schemas/baremetal-get"
}
}
},
"examples": {
"bare-metal": {
"value": {
"bare_metal": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"os": "Application",
"ram": "32768 MB",
"disk": "2x 240GB SSD",
"main_ip": "192.0.2.123",
"cpu_count": 4,
"region": "ams",
"default_password": "example-password",
"date_created": "2020-10-10T01:56:20+00:00",
"status": "pending",
"power_status": "running",
"netmask_v4": "255.255.254.0",
"gateway_v4": "192.0.2.1",
"plan": "vbm-4c-32gb",
"v6_network": "2001:0db8:5001:3990::",
"v6_main_ip": "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a",
"v6_network_size": 64,
"mac_address": 2199756823533,
"label": "Example Bare Metal",
"internal_ip": "",
"vpcs": [
{
"id": "775e26b3-f67d-46b7-87ed-1a0457fb3a5e",
"version": 1,
"subnet": "10.1.96.3"
}
],
"kvm": "https://console.vultr.com/subs/vps/novnc/api.php?data=00example11223344",
"os_id": 183,
"app_id": 3,
"image_id": "",
"snapshot_id": "",
"features": [
"ipv6"
],
"tags": [
"a tag",
"another"
],
"user_scheme": "root",
"hostname": "server01.example.com",
"vserial": "442115ef-ec63-4864-a9dd-55a8030aeeeb@par1.vserial.vultr.com"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-baremetal",
"security": [
{
"API Key": []
}
],
"description": "Get information for a Bare Metal instance."
},
"patch": {
"summary": "Update Bare Metal",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"Updated Bare Metal Label\",\n \"tags\" : [\"a tag\", \"another\"],\n \"user_data\" : \"QmFzZTY0IEV4YW1wbGUgRGF0YQ==\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"bare_metal": {
"$ref": "#/components/schemas/baremetal"
}
}
},
"examples": {
"example": {
"value": {
"bare_metal": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"os": "Application",
"ram": "32768 MB",
"disk": "2x 240GB SSD",
"main_ip": "192.0.2.123",
"cpu_count": 4,
"region": "ams",
"date_created": "2020-10-10T01:56:20+00:00",
"status": "pending",
"power_status": "running",
"netmask_v4": "255.255.254.0",
"gateway_v4": "192.0.2.1",
"plan": "vbm-4c-32gb",
"v6_network": "2001:0db8:5001:3990::",
"v6_main_ip": "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a",
"v6_network_size": 64,
"mac_address": 2199756823533,
"label": "Updated Bare Metal Label",
"os_id": 183,
"app_id": 3,
"image_id": "",
"snapshot_id": "",
"features": [
"ipv6"
],
"tags": [
"a tag",
"another"
],
"user_scheme": "root",
"mdisk_mode": "raid1"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-baremetal",
"description": "Update a Bare Metal instance. All attributes are optional. If not set, the attributes will retain their original values.\n\n**Note:** Changing `os_id`, `app_id` or `image_id` may take a few extra seconds to complete.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user_data": {
"type": "string",
"description": "The user-supplied, base64 encoded [user data](https://docs.vultr.com/manage-instance-user-data-with-the-vultr-metadata-api/) to attach to this instance."
},
"label": {
"type": "string",
"description": "The user-supplied label."
},
"tag": {
"type": "string",
"description": "Use `tags` instead. The user-supplied tag.",
"deprecated": true
},
"os_id": {
"type": "integer",
"description": "If supplied, reinstall the instance using this [Operating System id](#operation/list-os)."
},
"app_id": {
"type": "integer",
"description": "If supplied, reinstall the instance using this [Application id](#operation/list-applications)."
},
"image_id": {
"type": "string",
"description": "If supplied, reinstall the instance using this [Application image_id](#operation/list-applications)."
},
"enable_ipv6": {
"type": "boolean",
"description": "Enable IPv6.\n\n* true"
},
"user_scheme": {
"type": "string",
"description": "Linux-only: The user scheme used for logging into this instance. The instance must be reinstalled for this change to take effect.\n\n* root\n* limited"
},
"mdisk_mode": {
"type": "string",
"description": "The RAID configuration used for the disks on this instance. The instance must be reinstalled for this change to take effect.\n\n* raid1\n* jbod\n* none (default)"
},
"ipxe_chain_url": {
"type": "string",
"description": "The URL location of the iPXE chainloader."
}
}
},
"examples": {
"request": {
"value": {
"label": "Updated Bare Metal Label",
"tags": [
"a tag",
"another"
],
"user_data": "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Bare Metal",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-baremetal",
"description": "Delete a Bare Metal instance.",
"security": [
{
"API Key": []
}
]
}
},
"/bare-metals/{baremetal-id}/ipv4": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal id](#operation/list-baremetals)."
}
],
"get": {
"summary": "Bare Metal IPv4 Addresses",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/ipv4\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ipv4s": {
"type": "array",
"items": {
"$ref": "#/components/schemas/baremetal-ipv4"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"ipv4s": {
"value": {
"ipv4s": [
{
"ip": "192.0.2.123",
"netmask": "255.255.254.0",
"gateway": "192.0.2.1",
"type": "main_ip",
"reverse": "192.0.2.123.vultr.com"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-ipv4-baremetal",
"security": [
{
"API Key": []
}
],
"description": "Get the IPv4 information for the Bare Metal instance."
}
},
"/bare-metals/{baremetal-id}/ipv6": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal id](#operation/list-baremetals)."
}
],
"get": {
"summary": "Bare Metal IPv6 Addresses",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/ipv6\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ipv6s": {
"type": "array",
"items": {
"$ref": "#/components/schemas/baremetal-ipv6"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"ipv6s": {
"value": {
"ipv6s": [
{
"ip": "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a",
"network": "2001:0db8:5001:3990::",
"network_size": 64,
"type": "main_ip"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-ipv6-baremetal",
"description": "Get the IPv6 information for the Bare Metal instance.",
"security": [
{
"API Key": []
}
]
}
},
"/bare-metals/{baremetal-id}/ipv4/reverse": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal ID](#operation/baremetals)."
}
],
"post": {
"summary": "Create Baremetal Reverse IPv4",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/ipv4/reverse\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"ip\" : \"192.0.2.123\",\n \"reverse\" : \"foo.example.com\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-baremetal-reverse-ipv4",
"description": "Create a reverse IPv4 entry for a Bare Metal Instance. The `ip` and `reverse` attributes are required. ",
"parameters": [],
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ip": {
"type": "string",
"description": "The IPv4 address."
},
"reverse": {
"type": "string",
"description": "The IPv4 reverse entry."
}
},
"required": [
"ip",
"reverse"
]
},
"examples": {
"request": {
"value": {
"ip": "192.0.2.123",
"reverse": "foo.example.com"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/bare-metals/{baremetal-id}/ipv6/reverse": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare metal ID](#operation/baremetals)."
}
],
"post": {
"summary": "Create Baremetal Reverse IPv6",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/ipv6/reverse\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"ip\" : \"2001:0db8:5:6bb:5400:2ff:fee5:2\",\n \"reverse\" : \"foo.example.com\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-baremetal-reverse-ipv6",
"description": "Create a reverse IPv6 entry for a Bare Metal Instance. The `ip` and `reverse` attributes are required. IP address must be in full, expanded format.",
"parameters": [],
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ip": {
"type": "string",
"description": "The IPv6 address in full, expanded format."
},
"reverse": {
"type": "string",
"description": "The IPv6 reverse entry."
}
},
"required": [
"ip",
"reverse"
]
},
"examples": {
"request": {
"value": {
"ip": "2001:0db8:0005:6bb0:5400:2ff0:fee5:0002",
"reverse": "foo.example.com"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/bare-metals/{baremetal-id}/ipv4/reverse/default": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal ID](#operation/list-baremetals)."
}
],
"post": {
"summary": "Set Default Reverse DNS Entry",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/reverse/default\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"ip\" : \"192.0.2.123\"\n }'"
}
],
"operationId": "post-baremetal-instance-id-ipv4-reverse-default",
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"description": "Set a reverse DNS entry for an IPv4 address",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ip": {
"type": "string"
}
},
"required": [
"ip"
]
},
"examples": {
"example": {
"value": {
"ip": "192.0.2.123"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"tags": [
"baremetal"
]
},
"get": {
"summary": "List Baremetal Reverse IPv6",
"operationId": "list-baremetal-reverse-ipv6",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"reverse_ipv6s": {
"type": "array",
"items": {
"type": "object",
"properties": {
"reverse": {
"type": "string",
"description": "The IPv6 reverse entry."
},
"ip": {
"type": "string",
"description": "The IPv6 address."
}
}
}
}
}
},
"examples": {
"response": {
"value": {
"reverse_ipv6s": [
{
"ip": "2001:0db8:5:6bb:5400:2ff:fee5:1",
"reverse": "foo.example.com"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"500": {
"description": "Internal Server Error"
}
},
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/ipv6/reverse\" \\\n -X GET \\\n -H \"Authorization: Bearer ***}\""
}
],
"description": "List the reverse IPv6 information for a Bare Metal Instance.",
"security": [
{
"API Key": []
}
]
}
},
"/bare-metals/{baremetal-id}/ipv6/reverse/{ipv6}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal id](#operation/list-baremetals)."
},
{
"schema": {
"type": "string"
},
"name": "ipv6",
"in": "path",
"required": true,
"description": "The IPv6 address."
}
],
"delete": {
"summary": "Delete BareMetal Reverse IPv6",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/baremetal/{baremetal-id}/ipv6/reverse/{ipv6}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"operationId": "delete-baremetal-reverse-ipv6",
"description": "Delete the reverse IPv6 for a Bare metal instance.",
"security": [
{
"API Key": []
}
]
}
},
"/bare-metals/{baremetal-id}/start": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal id](#operation/list-baremetals)."
}
],
"post": {
"summary": "Start Bare Metal",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/start\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "start-baremetal",
"description": "Start the Bare Metal instance.",
"security": [
{
"API Key": []
}
]
}
},
"/bare-metals/{baremetal-id}/reboot": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal id](#operation/list-baremetals)."
}
],
"post": {
"summary": "Reboot Bare Metal",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/reboot\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "reboot-baremetal",
"description": "Reboot the Bare Metal instance.",
"security": [
{
"API Key": []
}
]
}
},
"/bare-metals/{baremetal-id}/reinstall": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal id](#operation/list-baremetals)."
}
],
"post": {
"summary": "Reinstall Bare Metal",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/reinstall\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n --data '{\n \"hostname\" : \"my_new_hostname\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"bare_metal": {
"$ref": "#/components/schemas/baremetal"
}
}
},
"examples": {
"bare_metal": {
"value": {
"bare_metal": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"os": "Application",
"ram": "32768 MB",
"disk": "2x 240GB SSD",
"main_ip": "192.0.2.123",
"cpu_count": 4,
"region": "ams",
"date_created": "2020-10-10T01:56:20+00:00",
"status": "pending",
"power_status": "running",
"netmask_v4": "255.255.254.0",
"gateway_v4": "192.0.2.1",
"plan": "vbm-4c-32gb",
"v6_network": "2001:0db8:5001:3990::",
"v6_main_ip": "2001:0db8:5001:3990:0ec4:7aff:fe8e:f97a",
"v6_network_size": 64,
"label": "Example Bare Metal",
"mac_address": 2199756823533,
"tag": "Example Tag",
"os_id": 183,
"app_id": 3,
"image_id": "",
"snapshot_id": ""
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"409": {
"description": "Conflict"
}
},
"operationId": "reinstall-baremetal",
"description": "Reinstall the Bare Metal instance using an optional `hostname`.\n\n\n**Note:** This action may take some time to complete.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"hostname": {
"type": "string",
"description": "The hostname to use when reinstalling this bare metal server."
}
}
},
"examples": {
"request": {
"value": {
"hostname": "my_new_hostname"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
]
}
},
"/bare-metals/{baremetal-id}/halt": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal id](#operation/list-baremetals)."
}
],
"post": {
"summary": "Halt Bare Metal",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/halt\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "halt-baremetal",
"security": [
{
"API Key": []
}
],
"description": "Halt the Bare Metal instance."
}
},
"/bare-metals/{baremetal-id}/bandwidth": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal id](#operation/list-baremetals)."
}
],
"get": {
"summary": "Bare Metal Bandwidth",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/bandwidth\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"bandwidth": {
"type": "object",
"description": "This object will contain objects that represent days in the month (UTC). The date is denoted by the nested objects keys.",
"properties": {
"2020-10-10": {
"$ref": "#/components/schemas/bandwidth"
},
"2020-10-11": {
"$ref": "#/components/schemas/bandwidth"
}
}
}
}
},
"examples": {
"bandwidth": {
"value": {
"bandwidth": {
"2020-07-25": {
"incoming_bytes": 15989787,
"outgoing_bytes": 25327729
},
"2020-07-26": {
"incoming_bytes": 13964112,
"outgoing_bytes": 22257069
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-bandwidth-baremetal",
"description": "Get bandwidth information for the Bare Metal instance.
The `bandwidth` object in a successful response contains objects representing a day in the month. The date is denoted by the nested object keys. Days begin and end in the UTC timezone. Bandwidth utilization data contained within the date object is refreshed periodically. We do not recommend using this endpoint to gather real-time metrics.",
"security": [
{
"API Key": []
}
]
}
},
"/bare-metals/halt": {
"post": {
"summary": "Halt Bare Metals",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/halt\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"baremetal_ids\" : [\n \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\",\n \"7f6f84ea-8f87-4d9e-af01-ac44db05911c\",\n \"54a83807-64ce-42e8-a0da-4d6c31c5b93b\"\n ]\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "halt-baremetals",
"description": "Halt Bare Metals.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"baremetal_ids": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"examples": {
"example": {
"value": {
"baremetal_ids": [
"cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"7f6f84ea-8f87-4d9e-af01-ac44db05911c",
"54a83807-64ce-42e8-a0da-4d6c31c5b93b"
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/bare-metals/reboot": {
"post": {
"summary": "Reboot Bare Metals",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/reboot\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"baremetal_ids\" : [\n \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\",\n \"54a83807-64ce-42e8-a0da-4d6c31c5b93b\",\n \"d092ee75-a113-480c-ae2e-e24cc6f588c3\"\n ]\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "reboot-bare-metals",
"description": "Reboot Bare Metals.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"baremetal_ids": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"examples": {
"example": {
"value": {
"baremetal_ids": [
"cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"54a83807-64ce-42e8-a0da-4d6c31c5b93b",
"d092ee75-a113-480c-ae2e-e24cc6f588c3"
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/bare-metals/start": {
"post": {
"summary": "Start Bare Metals",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/start\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"baremetal_ids\" : [\n \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\",\n \"1d651bd2-b93c-4bb6-8b91-0546fd765f15\",\n \"c2790719-278d-474c-8dff-cb35d6e5503f\"\n ]\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "start-bare-metals",
"description": "Start Bare Metals.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"baremetal_ids": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"examples": {
"example": {
"value": {
"baremetal_ids": [
"cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"1d651bd2-b93c-4bb6-8b91-0546fd765f15",
"c2790719-278d-474c-8dff-cb35d6e5503f"
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/bare-metals/{baremetal-id}/user-data": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal id](#operation/list-baremetals)."
}
],
"get": {
"summary": "Get Bare Metal User Data",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/user-data\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user_data": {
"type": "object",
"properties": {
"data": {
"type": "string",
"description": "The user-supplied, base64 encoded [user data](https://docs.vultr.com/manage-instance-user-data-with-the-vultr-metadata-api/) attached to this bare metal."
}
}
}
}
},
"examples": {
"response": {
"value": {
"user_data": {
"data": "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-bare-metal-userdata",
"security": [
{
"API Key": []
}
],
"description": "Get the user-supplied, base64 encoded [user data](https://docs.vultr.com/manage-instance-user-data-with-the-vultr-metadata-api/) for a Bare Metal."
}
},
"/instances": {
"get": {
"summary": "List Instances",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instances": {
"type": "array",
"items": {
"$ref": "#/components/schemas/instance-get"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"instance": {
"value": {
"instances": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"os": "CentOS SELinux 8 x64",
"ram": 2048,
"disk": 55,
"main_ip": "192.0.2.123",
"vcpu_count": 1,
"region": "atl",
"plan": "vc2-6c-16gb",
"date_created": "2020-10-10T01:56:20+00:00",
"status": "active",
"allowed_bandwidth": 2000,
"netmask_v4": "255.255.252.0",
"gateway_v4": "192.0.2.1",
"power_status": "running",
"server_status": "ok",
"v6_network": "2001:0db8:1112:18fb::",
"v6_main_ip": "2001:0db8:1112:18fb:0200:00ff:fe00:0000",
"v6_network_size": 64,
"label": "Example Instance",
"internal_ip": "",
"vpc_only": false,
"vpcs": [
{
"id": "775e26b3-f67d-46b7-87ed-1a0457fb3a5e",
"version": 1,
"subnet": "10.1.96.3"
},
{
"id": "090a49c0-a1a2-4aab-a263-5d58f180c905",
"version": 2,
"subnet": "10.1.128.3"
}
],
"enable_memorybacking": "none",
"kvm": "https://console.vultr.com/subs/vps/novnc/api.php?data=00example11223344",
"hostname": "my_hostname",
"os_id": 215,
"app_id": 0,
"image_id": "",
"snapshot_id": "",
"firewall_group_id": "",
"features": [
"ddos_protection",
"ipv6",
"auto_backups"
],
"tags": [
"a tag",
"another"
],
"user_scheme": "root",
"vke_cluster_id": "97940dc9-1f8f-4404-8556-9fe0a181d5ea",
"pending_charges": 5.42
}
],
"meta": {
"total": 3,
"links": {
"next": "WxYzExampleNext",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "list-instances",
"description": "List all VPS instances in your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "tag",
"description": "Filter by specific tag.",
"deprecated": true
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "label",
"description": "Filter by label."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "main_ip",
"description": "Filter by main ip address."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "region",
"description": "Filter by [Region id](#operation/list-regions)."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "firewall_group_id",
"description": "Filter by [Firewall group id](#operation/list-firewall-groups)."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "hostname",
"description": "Filter by hostname."
},
{
"schema": {
"type": "boolean"
},
"in": "query",
"name": "show_pending_charges",
"description": "Set to `true` to show pending charges."
}
]
},
"post": {
"summary": "Create Instance",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"plan\" : \"vc2-6c-16gb\",\n \"label\" : \"Example Instance\",\n \"os_id\" : 215,\n \"user_data\" : \"QmFzZTY0IEV4YW1wbGUgRGF0YQ==\",\n \"backups\" : \"enabled\",\n \"hostname\": \"my_hostname\",\n \"tags\": [\n \"a tag\",\n \"another\"\n ]\n }'"
}
],
"responses": {
"202": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance": {
"$ref": "#/components/schemas/instance"
}
}
},
"examples": {
"instance": {
"value": {
"instance": {
"id": "4f0f12e5-1f84-404f-aa84-85f431ea5ec2",
"os": "CentOS 8 Stream",
"ram": 1024,
"disk": 0,
"main_ip": "0.0.0.0",
"vcpu_count": 1,
"region": "ewr",
"plan": "vc2-1c-1gb",
"date_created": "2021-09-14T13:22:20+00:00",
"status": "pending",
"allowed_bandwidth": 1000,
"netmask_v4": "",
"gateway_v4": "0.0.0.0",
"power_status": "running",
"server_status": "none",
"v6_network": "",
"v6_main_ip": "",
"v6_network_size": 0,
"label": "",
"internal_ip": "",
"vpc_only": false,
"kvm": "",
"hostname": "my_hostname",
"os_id": 401,
"app_id": 0,
"image_id": "",
"snapshot_id": "",
"firewall_group_id": "",
"features": [],
"default_password": "v5{Fkvb#2ycPGwHs",
"tags": [
"a tag",
"another"
],
"user_scheme": "root"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-instance",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the Instance is located."
},
"plan": {
"type": "string",
"description": "The [Plan id](#operation/list-plans) to use when deploying this instance."
},
"os_id": {
"type": "integer",
"description": "The [Operating System id](#operation/list-os) to use when deploying this instance."
},
"ipxe_chain_url": {
"type": "string",
"description": "The URL location of the iPXE chainloader."
},
"iso_id": {
"type": "string",
"description": "The [ISO id](#operation/list-isos) to use when deploying this instance."
},
"script_id": {
"type": "string",
"description": "The [Startup Script id](#operation/list-startup-scripts) to use when deploying this instance."
},
"snapshot_id": {
"type": "string",
"description": "The [Snapshot id](#operation/list-snapshots) to use when deploying the instance."
},
"enable_ipv6": {
"type": "boolean",
"description": "Enable IPv6.\n\n* true"
},
"disable_public_ipv4": {
"type": "boolean",
"description": "Don't set up a public IPv4 address when IPv6 is enabled. Will not do anything unless `enable_ipv6` is also `true`.\n\n* true"
},
"attach_private_network": {
"type": "array",
"description": "Use `attach_vpc` instead. An array of [Private Network ids](#operation/list-networks) to attach to this Instance. This parameter takes precedence over `enable_private_network`. Please choose one parameter.",
"deprecated": true,
"items": {
"type": "string"
}
},
"attach_vpc": {
"type": "array",
"description": "An array of [VPC IDs](#operation/list-vpcs) to attach to this Instance. This parameter takes precedence over `enable_vpc`. Please choose one parameter.",
"items": {
"type": "string"
}
},
"label": {
"type": "string",
"description": "A user-supplied label for this instance."
},
"sshkey_id": {
"type": "array",
"description": "The [SSH Key id](#operation/list-ssh-keys) to install on this instance.",
"items": {
"type": "string"
}
},
"backups": {
"type": "string",
"description": "Enable automatic backups for the instance (does not work for VX1 block storage).\n\n* enabled\n* disabled"
},
"block_devices": {
"type": "array",
"items": {
"type": "object"
},
"description": "Available for VX1 instances: Define your block devices, create bootable block devices, use local storage (if plan has local storage) as scratch disk.\nLocal Only:\n```\n\"block_devices\": [\n {\n \"block_id\": \"local\",\n \"bootable\": true\n }\n]\n```\nLocal Boot + New Block:\n```\n\"block_devices\": [\n {\n \"block_id\": \"local\",\n \"bootable\": true\n },\n {\n \"disk_size\": 50,\n \"label\": \"New Block Label\"\n }\n]\n```\nBootable Block (new):\n```\n\"block_devices\": [\n {\n \"disk_size\": 50,\n \"label\": \"New Bootable Block\",\n \"bootable\": true\n }\n]\n```\nBootable Block (existing):\n```\n\"block_devices\": [\n {\n \"block_id\": \"BLOCK_DEVICE_UUID\",\n \"bootable\": true\n }\n]\n```\nBootable Block (existing) and Local NVMe:\n```\n\"block_devices\": [\n {\n \"block_id\": \"local\"\n },\n {\n \"block_id\": \"BLOCK_DEVICE_UUID\",\n \"bootable\": true\n }\n]\n```"
},
"app_id": {
"type": "integer",
"description": "The [Application id](#operation/list-applications) to use when deploying this instance."
},
"image_id": {
"type": "string",
"description": "The [Application image_id](#operation/list-applications) to use when deploying this instance."
},
"user_data": {
"type": "string",
"description": "The user-supplied, base64 encoded [user data](https://docs.vultr.com/manage-instance-user-data-with-the-vultr-metadata-api/) to attach to this instance."
},
"ddos_protection": {
"type": "boolean",
"description": "Enable DDoS protection (there is an additional charge for this).\n\n* true\n* false"
},
"activation_email": {
"type": "boolean",
"description": "Notify by email after deployment.\n\n* true\n* false (default)"
},
"hostname": {
"type": "string",
"description": "The hostname to use when deploying this instance."
},
"tag": {
"type": "string",
"description": "Use `tags` instead. The user-supplied tag.",
"deprecated": true
},
"firewall_group_id": {
"type": "string",
"description": "The [Firewall Group id](#operation/list-firewall-groups) to attach to this Instance."
},
"reserved_ipv4": {
"type": "string",
"description": "ID of the floating IP to use as the main IP of this server."
},
"enable_private_network": {
"type": "boolean",
"description": "Use `enable_vpc` instead.\n\nIf `true`, private networking support will be added to the new server.\n\nThis parameter attaches a single network. When no network exists in the region, it will be automatically created.\n\nIf there are multiple private networks in the instance's region, use `attach_private_network` instead to specify a network.",
"deprecated": true
},
"enable_vpc": {
"type": "boolean",
"description": "If `true`, VPC support will be added to the new server.\n\nThis parameter attaches a single VPC. When no VPC exists in the region, it will be automatically created.\n\nIf there are multiple VPCs in the instance's region, use `attach_vpc` instead to specify a network."
},
"vpc_only": {
"type": "boolean",
"description": "if `true`, this VPS will not receive a public IP or public NIC.\n\nA `vpc_id` will be required in the `attach_vpc` array. The first `vpc_id` provided must have a NAT Gateway attached.\n\nThis VPS will gain access to the internet via the NAT Gateway attached to the VPC."
},
"tags": {
"type": "array",
"description": "Tags to apply to the instance",
"items": {
"type": "string"
}
},
"user_scheme": {
"type": "string",
"description": "Linux-only: The user scheme used for logging into this instance. By default, the \"root\" user is configured. Alternatively, a limited user with sudo permissions can be selected.\n\n* root\n* limited"
},
"app_variables": {
"type": "object",
"description": "The [app variable inputs](#operation/list-marketplace-app-variables) for configuring the marketplace app (name/value pairs)."
}
},
"required": [
"region",
"plan"
]
},
"examples": {
"request": {
"value": {
"region": "ewr",
"plan": "vc2-6c-16gb",
"label": "Example Instance",
"os_id": 215,
"user_data": "QmFzZTY0IEV4YW1wbGUgRGF0YQ==",
"backups": "enabled",
"hostname": "my_hostname",
"tags": [
"a tag",
"another"
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a new VPS Instance in a `region` with the desired `plan`. Choose one of the following to deploy the instance:\n\n* `os_id`\n* `iso_id`\n* `snapshot_id`\n* `app_id`\n* `image_id`\n\nSupply other attributes as desired."
}
},
"/instances/{instance-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"get": {
"summary": "Get Instance",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance": {
"$ref": "#/components/schemas/instance-get"
}
}
},
"examples": {
"instance": {
"value": {
"instance": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"os": "Ubuntu 20.04 x64",
"ram": 16384,
"disk": 384,
"main_ip": "192.0.2.123",
"vcpu_count": 4,
"region": "ewr",
"plan": "vc2-6c-16gb",
"date_created": "2020-10-10T01:56:20+00:00",
"status": "active",
"allowed_bandwidth": 5000,
"netmask_v4": "255.255.254.0",
"gateway_v4": "192.0.2.1",
"power_status": "running",
"server_status": "ok",
"v6_network": "",
"v6_main_ip": "",
"v6_network_size": 0,
"label": "Example Instance",
"internal_ip": "",
"vpc_only": false,
"vpcs": [
{
"id": "775e26b3-f67d-46b7-87ed-1a0457fb3a5e",
"version": 1,
"subnet": "10.1.96.3"
},
{
"id": "090a49c0-a1a2-4aab-a263-5d58f180c905",
"version": 2,
"subnet": "10.1.128.3"
}
],
"enable_memorybacking": "none",
"kvm": "https://console.vultr.com/subs/vps/novnc/api.php?data=00example11223344",
"hostname": "my_hostname",
"os_id": 215,
"app_id": 0,
"image_id": "",
"snapshot_id": "",
"firewall_group_id": "",
"features": [
"ddos_protection",
"ipv6",
"auto_backups"
],
"tags": [
"a tag",
"another"
],
"vke_cluster_id": "97940dc9-1f8f-4404-8556-9fe0a181d5ea",
"user_scheme": "root",
"pending_charges": 5.42
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-instance",
"description": "Get information about an Instance.",
"security": [
{
"API Key": []
}
]
},
"patch": {
"summary": "Update Instance",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"Example Instance\",\n \"tags\" : [\"a tag\", \"another\"],\n \"plan\" : \"vc2-24c-97gb\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance": {
"$ref": "#/components/schemas/instance"
}
}
},
"examples": {
"example": {
"value": {
"instance": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"os": "Ubuntu 20.04 x64",
"ram": 16384,
"disk": 384,
"main_ip": "192.0.2.123",
"vcpu_count": 4,
"region": "ewr",
"plan": "vc2-24c-97gb",
"date_created": "2020-10-10T01:56:20+00:00",
"status": "active",
"allowed_bandwidth": 5000,
"netmask_v4": "255.255.254.0",
"gateway_v4": "192.0.2.1",
"power_status": "running",
"server_status": "ok",
"v6_network": "",
"v6_main_ip": "",
"v6_network_size": 0,
"label": "Example Instance",
"internal_ip": "",
"vpc_only": false,
"enable_memorybacking": "none",
"kvm": "https://console.vultr.com/subs/vps/novnc/api.php?data=00example11223344",
"hostname": "my_hostname",
"os_id": 215,
"app_id": 0,
"image_id": "",
"snapshot_id": "",
"firewall_group_id": "",
"features": [
"ddos_protection",
"ipv6",
"auto_backups"
],
"tags": [
"a tag",
"another"
],
"user_scheme": "root"
},
"job_ids": [
"b3123d06-ec83-456c-ac71-ae8c4bc95e18"
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-instance",
"description": "Update information for an Instance. All attributes are optional. If not set, the attributes will retain their original values.\n\n**Note:** Changing `os_id`, `app_id` or `image_id` may take a few extra seconds to complete.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"app_id": {
"type": "integer",
"description": "Reinstall the instance with this [Application id](#operation/list-applications)."
},
"image_id": {
"type": "string",
"description": "Reinstall the instance with this [Application image_id](#operation/list-applications)."
},
"backups": {
"description": "Enable automatic backups for the instance.\n\n* enabled\n* disabled",
"type": "string"
},
"firewall_group_id": {
"type": "string",
"description": "The [Firewall Group id](#operation/list-firewall-groups) to attach to this Instance."
},
"enable_ipv6": {
"type": "boolean",
"description": "Enable IPv6.\n\n* true"
},
"os_id": {
"type": "string",
"description": "Reinstall the instance with this [ISO id](#operation/list-isos)."
},
"user_data": {
"type": "string",
"description": "The user-supplied, base64 encoded [user data](https://docs.vultr.com/manage-instance-user-data-with-the-vultr-metadata-api/) to attach to this instance."
},
"label": {
"type": "string",
"description": "The user-supplied label."
},
"tag": {
"type": "string",
"description": "Use `tags` instead. The user-supplied tag.",
"deprecated": true
},
"plan": {
"type": "string",
"description": "Upgrade the instance with this [Plan id](#operation/list-plans)."
},
"ddos_protection": {
"description": "Enable DDoS Protection (there is an additional charge for this).\n\n* true\n* false",
"type": "boolean"
},
"attach_private_network": {
"type": "array",
"description": "Use `attach_vpc` instead. An array of [Private Network ids](#operation/list-networks) to attach to this Instance. This parameter takes precedence over `enable_private_network`. Please choose one parameter.",
"deprecated": true,
"items": {
"type": "string"
}
},
"attach_vpc": {
"type": "array",
"description": "An array of [VPC IDs](#operation/list-vpcs) to attach to this Instance. This parameter takes precedence over `enable_vpc`. Please choose one parameter.",
"items": {
"type": "string"
}
},
"detach_private_network": {
"type": "array",
"description": "Use `detach_vpc` instead. An array of [Private Network ids](#operation/list-networks) to detach from this Instance. This parameter takes precedence over `enable_private_network`.",
"deprecated": true,
"items": {
"type": "string"
}
},
"detach_vpc": {
"type": "array",
"description": "An array of [VPC IDs](#operation/list-vpcs) to detach from this Instance. This parameter takes precedence over `enable_vpc`.",
"items": {
"type": "string"
}
},
"enable_private_network": {
"type": "boolean",
"description": "Use `enable_vpc` instead.\n\nIf `true`, private networking support will be added to the new server.\n\nThis parameter attaches a single network. When no network exists in the region, it will be automatically created.\n\nIf there are multiple private networks in the instance's region, use `attach_private_network` instead to specify a network.",
"deprecated": true
},
"enable_vpc": {
"type": "boolean",
"description": "If `true`, VPC support will be added to the new server.\n\nThis parameter attaches a single VPC. When no VPC exists in the region, it will be automatically created.\n\nIf there are multiple VPCs in the instance's region, use `attach_vpc` instead to specify a VPC."
},
"enable_memorybacking": {
"type": "string",
"description": "The memory backing used for the instance. Shared memory backing is required to attach Vultr File System (VFS) shares. Changing this value will reboot your instance.",
"enum": [
"none",
"shared"
]
},
"tags": {
"type": "array",
"description": "Tags to apply to the instance.",
"items": {
"type": "string"
}
},
"user_scheme": {
"type": "string",
"description": "Linux-only: The user scheme used for logging into this instance. The instance must be reinstalled for this change to take effect.\n\n* root\n* limited"
}
}
},
"examples": {
"request": {
"value": {
"label": "Example Instance",
"tags": [
"a tag",
"another"
],
"plan": "vc2-24c-97gb"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete Instance",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-instance",
"description": "Delete an Instance.",
"security": [
{
"API Key": []
}
]
}
},
"/instances/halt": {
"post": {
"summary": "Halt Instances",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/halt\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"instance_ids\" : [\n \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\",\n \"1d651bd2-b93c-4bb6-8b91-0546fd765f15\",\n \"c2790719-278d-474c-8dff-cb35d6e5503f\"\n ]\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "halt-instances",
"description": "Halt Instances.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance_ids": {
"type": "array",
"description": "The [Instance IDs](#operation/list-instances) to halt.",
"items": {
"type": "string"
}
}
}
},
"examples": {
"example": {
"value": {
"instance_ids": [
"cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"1d651bd2-b93c-4bb6-8b91-0546fd765f15",
"c2790719-278d-474c-8dff-cb35d6e5503f"
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/instances/reboot": {
"post": {
"summary": "Reboot instances",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/reboot\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"instance_ids\" : [\n \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\",\n \"1d651bd2-b93c-4bb6-8b91-0546fd765f15\",\n \"c2790719-278d-474c-8dff-cb35d6e5503f\"\n ]\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "reboot-instances",
"description": "Reboot Instances.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance_ids": {
"type": "array",
"description": "The [Instance IDs](#operation/list-instances) to reboot.",
"items": {
"type": "string"
}
}
}
},
"examples": {
"example": {
"value": {
"instance_ids": [
"cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"1d651bd2-b93c-4bb6-8b91-0546fd765f15",
"c2790719-278d-474c-8dff-cb35d6e5503f"
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/instances/start": {
"post": {
"summary": "Start instances",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/start\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"instance_ids\" : [\n \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\",\n \"1d651bd2-b93c-4bb6-8b91-0546fd765f15\",\n \"c2790719-278d-474c-8dff-cb35d6e5503f\"\n ]\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "start-instances",
"description": "Start Instances.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance_ids": {
"type": "array",
"description": "The [Instance IDs](#operation/list-instances) to start.",
"items": {
"type": "string"
}
}
}
},
"examples": {
"example": {
"value": {
"instance_ids": [
"cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"1d651bd2-b93c-4bb6-8b91-0546fd765f15",
"c2790719-278d-474c-8dff-cb35d6e5503f"
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/instances/{instance-id}/start": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"post": {
"summary": "Start instance",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/start\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "start-instance",
"description": "Start an Instance.",
"security": [
{
"API Key": []
}
]
}
},
"/instances/{instance-id}/reboot": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"post": {
"summary": "Reboot Instance",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/reboot\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "reboot-instance",
"description": "Reboot an Instance.",
"security": [
{
"API Key": []
}
]
}
},
"/instances/{instance-id}/reinstall": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"post": {
"summary": "Reinstall Instance",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/reinstall\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"hostname\" : \"my_new_hostname\",\n \"ssh_keys\" : [\n \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n ]\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance": {
"$ref": "#/components/schemas/instance"
}
}
},
"examples": {
"example": {
"value": {
"instance": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"os": "Ubuntu 20.04 x64",
"ram": 16384,
"disk": 384,
"main_ip": "192.0.2.123",
"vcpu_count": 4,
"region": "ewr",
"plan": "vc2-6c-16gb",
"date_created": "2020-10-10T01:56:20+00:00",
"status": "active",
"allowed_bandwidth": 5000,
"netmask_v4": "255.255.254.0",
"gateway_v4": "192.0.2.1",
"power_status": "running",
"server_status": "ok",
"v6_network": "",
"v6_main_ip": "",
"v6_network_size": 0,
"label": "Example Instance",
"internal_ip": "",
"vpc_only": false,
"kvm": "https://console.vultr.com/subs/vps/novnc/api.php?data=00example11223344",
"hostname": "my_new_hostname",
"tag": "Example Tag",
"os_id": 215,
"app_id": 0,
"image_id": "",
"snapshot_id": "",
"firewall_group_id": "",
"features": [
"ddos_protection",
"ipv6",
"auto_backups"
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"409": {
"description": "Conflict"
}
},
"operationId": "reinstall-instance",
"description": "Reinstall an Instance using an optional `hostname`.\n\n**Note:** This action may take a few extra seconds to complete.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"hostname": {
"type": "string",
"description": "The hostname to use when reinstalling this instance."
},
"ssh_keys": {
"type": "array",
"description": "Array of [SSH Key ids](#operation/list-ssh-keys) to install on the instance during reinstallation. If an empty array is provided, all SSH keys will be removed from the instance. If omitted, the instance retains its currently assigned keys.",
"items": {
"type": "string"
}
}
}
},
"examples": {
"request": {
"value": {
"hostname": "my_new_hostname",
"ssh_keys": [
"cb676a46-66fd-4dfb-b839-443f2e6c0b60"
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
]
}
},
"/instances/{instance-id}/bandwidth": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "date_range",
"description": "The range of days to include, represented as the number of days relative to the current date. Default 30, Minimum 1 and Max 180."
}
],
"get": {
"summary": "Instance Bandwidth",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/bandwidth\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"bandwidth": {
"type": "object",
"description": "This object will contain objects that represent days in the month (UTC). The date is denoted by the nested objects keys.",
"properties": {
"2020-10-10": {
"$ref": "#/components/schemas/bandwidth"
},
"2020-10-11": {
"$ref": "#/components/schemas/bandwidth"
}
}
}
}
},
"examples": {
"bandwidth": {
"value": {
"bandwidth": {
"2020-07-25": {
"incoming_bytes": 15989787,
"outgoing_bytes": 25327729
},
"2020-07-26": {
"incoming_bytes": 13964112,
"outgoing_bytes": 22257069
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-instance-bandwidth",
"description": "Get bandwidth information about an Instance.
The `bandwidth` object in a successful response contains objects representing a day in the month. The date is denoted by the nested object keys. Days begin and end in the UTC timezone. The bandwidth utilization data contained within the date object is refreshed periodically. We do not recommend using this endpoint to gather real-time metrics.",
"security": [
{
"API Key": []
}
]
}
},
"/instances/{instance-id}/neighbors": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"get": {
"summary": "Get Instance neighbors",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/neighbors\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"neighbors": {
"type": "array",
"description": "An array of [Instance ids](#operation/list-instances) in the same location as this Instance.",
"items": {
"type": "string"
}
}
}
},
"examples": {
"response": {
"value": {
"neighbors": [
"478dbfe7-43f8-4dc8-940c-8bb61f547400",
"a8047e6b-16bd-42be-8351-58df7e5ab89c"
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-instance-neighbors",
"security": [
{
"API Key": []
}
],
"description": "Get a list of other instances in the same location as this Instance."
}
},
"/instances/{instance-id}/private-networks": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"get": {
"summary": "List instance Private Networks",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/private-networks\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"private_networks": {
"type": "array",
"items": {
"$ref": "#/components/schemas/private-networks"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"private_networks": [
{
"network_id": "d325e78b-bcec-4d4e-b9b8-9c294f37b04d",
"mac_address": "00:00:5e:00:53:5e",
"ip_address": "10.99.0.123"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-instance-private-networks",
"security": [
{
"API Key": []
}
],
"description": "**Deprecated**: use [List Instance VPCs](#operation/list-instance-vpcs) instead.
List the private networks for an Instance.",
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"deprecated": true
}
},
"/instances/{instance-id}/vpcs": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"get": {
"summary": "List instance VPCs",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/vpcs\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"vpcs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/instance-vpc"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"vpcs": [
{
"id": "d325e78b-bcec-4d4e-b9b8-9c294f37b04d",
"mac_address": "00:00:5e:00:53:5e",
"ip_address": "10.99.0.123"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-instance-vpcs",
"security": [
{
"API Key": []
}
],
"description": "List the VPCs for an Instance.",
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
}
},
"/instances/{instance-id}/iso": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"get": {
"summary": "Get Instance ISO Status",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/iso\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"iso_status": {
"type": "object",
"properties": {
"iso_id": {
"description": "The [ISO id](#operation/list-isos).",
"type": "string"
},
"state": {
"type": "string",
"description": "The status of this ISO.\n* ready\n* attached"
}
}
}
}
},
"examples": {
"response": {
"value": {
"iso_status": {
"state": "ready",
"iso_id": "0532a75b-14e8-48b8-b27e-1ebcf382a804"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-instance-iso-status",
"description": "Get the ISO status for an Instance.",
"security": [
{
"API Key": []
}
]
}
},
"/instances/{instance-id}/iso/attach": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true
}
],
"post": {
"summary": "Attach ISO to Instance",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/iso/attach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"iso_id\" : \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"iso_status": {
"type": "object",
"properties": {
"state": {
"type": "string",
"description": "State of the ISO\n\n* ismounting"
},
"iso_id": {
"type": "string",
"description": "The [ISO id](#operation/list-isos) being attached."
}
}
}
}
},
"examples": {
"example": {
"value": {
"iso_status": {
"status": "ismounting",
"iso_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "attach-instance-iso",
"description": "Attach an ISO to an Instance.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"iso_id": {
"description": "The [ISO id](#operation/list-isos) to attach to this Instance.",
"type": "string"
}
}
},
"examples": {
"request": {
"value": {
"iso_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
]
}
},
"/instances/{instance-id}/iso/detach": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"post": {
"summary": "Detach ISO from instance",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/iso/detach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"iso_status": {
"type": "object",
"properties": {
"state": {
"type": "string",
"description": "State of the ISO\n\n* isunmounting"
}
}
}
}
},
"examples": {
"example": {
"value": {
"iso_status": {
"status": "isunmounting"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "detach-instance-iso",
"description": "Detach the ISO from an Instance.",
"security": [
{
"API Key": []
}
]
}
},
"/instances/{instance-id}/private-networks/attach": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"post": {
"summary": "Attach Private Network to Instance",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/private-networks/attach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"network_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "attach-instance-network",
"description": "Attach Private Network to an Instance.
**Deprecated**: use [Attach VPC to Instance](#operation/attach-instance-vpc) instead.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"network_id": {
"type": "string",
"description": "The [Private Network id](#operation/list-networks) to attach to this Instance."
}
}
},
"examples": {
"example": {
"value": {
"network_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"deprecated": true
}
},
"/instances/{instance-id}/private-networks/detach": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"post": {
"summary": "Detach Private Network from Instance.",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/private-networks/detach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"network_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "detach-instance-network",
"description": "Detach Private Network from an Instance.
**Deprecated**: use [Detach VPC from Instance](#operation/detach-instance-vpc) instead.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"network_id": {
"type": "string",
"description": "The [Private Network id](#operation/list-networks) to detach from this Instance."
}
}
},
"examples": {
"example": {
"value": {
"network_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"deprecated": true
}
},
"/instances/{instance-id}/vpcs/attach": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"post": {
"summary": "Attach VPC to Instance",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/vpcs/attach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"vpc_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "attach-instance-vpc",
"description": "Attach a VPC to an Instance.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"vpc_id": {
"type": "string",
"description": "The [VPC ID](#operation/list-vpcs) to attach to this Instance."
}
}
},
"examples": {
"example": {
"value": {
"vpc_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/instances/{instance-id}/vpcs/detach": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"post": {
"summary": "Detach VPC from Instance",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/vpcs/detach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"vpc_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "detach-instance-vpc",
"description": "Detach a VPC from an Instance.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"vpc_id": {
"type": "string",
"description": "The [VPC ID](#operation/list-vpcs) to detach from this Instance."
}
}
},
"examples": {
"example": {
"value": {
"vpc_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/instances/{instance-id}/backup-schedule": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"post": {
"summary": "Set Instance Backup Schedule",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/backup-schedule\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"type\": \"daily\",\n \"hour\": 10,\n \"dow\": 1,\n \"dom\": 1\n }'"
}
],
"responses": {
"200": {
"description": "OK"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-instance-backup-schedule",
"description": "Set the backup schedule for an Instance in UTC. The `type` is required.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"description": "Type of backup schedule:\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | daily | Back up once per day at `hour`. |\n| | weekly | Back up once per week on `dow` at `hour`. |\n| | monthly | Back up each month at `dom` at `hour`. |\n| | daily\\_alt\\_even | Back up on even dates at `hour`. |\n| | daily\\_alt\\_odd | Back up on odd dates at `hour`. |"
},
"hour": {
"description": "Hour of day to run in UTC.",
"type": "integer"
},
"dow": {
"description": "Day of week to run.\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | 1 | Sunday |\n| | 2 | Monday |\n| | 3 | Tuesday |\n| | 4 | Wednesday |\n| | 5 | Thursday |\n| | 6 | Friday |\n| | 7 | Saturday |",
"type": "integer"
},
"dom": {
"description": "Day of month to run. Use values between 1 and 28.",
"type": "integer"
}
},
"required": [
"type"
]
},
"examples": {
"request": {
"value": {
"type": "daily",
"hour": 10,
"dow": 1,
"dom": 1
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"security": [
{
"API Key": []
}
]
},
"get": {
"summary": "Get Instance Backup Schedule",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/backup-schedule\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"backup_schedule": {
"$ref": "#/components/schemas/backup-schedule"
}
}
},
"examples": {
"backup-schedule": {
"value": {
"backup_schedule": {
"enabled": true,
"type": "daily",
"next_scheduled_time_utc": "2020-07-28 00:00:00",
"hour": 10,
"dow": 1,
"dom": 1
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-instance-backup-schedule",
"description": "Get the backup schedule for an Instance.",
"security": [
{
"API Key": []
}
]
}
},
"/instances/{instance-id}/restore": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"post": {
"summary": "Restore Instance",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/restore\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"backup_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "object",
"properties": {
"restore_type": {
"type": "string"
},
"restore_id": {
"type": "string"
},
"status": {
"type": "string"
}
}
}
}
},
"examples": {
"example": {
"value": {
"status": {
"restore_type": "backup_id",
"restore_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"status": "inprogress"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "restore-instance",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"backup_id": {
"type": "string",
"description": "The [Backup id](#operation/list-backups) used to restore this instance."
},
"snapshot_id": {
"type": "string",
"description": "The [Snapshot id](#operation/list-snapshots) used to restore this instance."
}
}
},
"examples": {
"request": {
"value": {
"backup_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Restore an Instance from either `backup_id` or `snapshot_id`.",
"security": [
{
"API Key": []
}
]
}
},
"/instances/{instance-id}/ipv4": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"get": {
"summary": "List Instance IPv4 Information",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv4\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ipv4s": {
"type": "array",
"items": {
"$ref": "#/components/schemas/baremetal-ipv4"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"ipv4": {
"value": {
"ipv4s": [
{
"ip": "192.0.2.123",
"netmask": "255.255.254.0",
"gateway": "192.0.2.1",
"type": "main_ip",
"reverse": "host1.example.com"
},
{
"ip": "203.0.113.123",
"netmask": "255.255.255.255",
"gateway": "",
"type": "secondary_ip",
"reverse": "host2.example.com"
},
{
"ip": "10.99.0.123",
"netmask": "255.255.0.0",
"gateway": "",
"type": "private",
"reverse": ""
}
],
"meta": {
"total": 3,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-instance-ipv4",
"security": [
{
"API Key": []
}
],
"description": "List the IPv4 information for an Instance.",
"parameters": [
{
"schema": {
"type": "boolean"
},
"in": "query",
"name": "public_network",
"description": "If `true`, includes information about the public network adapter (such as MAC address) with the `main_ip` entry."
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500.\n"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create IPv4",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv4\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"reboot\" : true\n }'"
}
],
"operationId": "create-instance-ipv4",
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {}
},
"examples": {
"example": {
"value": {
"ipv4": {
"ip": "192.0.2.123",
"netmask": "255.255.254.0",
"gateway": "192.0.2.1",
"type": "secondary_ip",
"reverse": "192.0.2.123.vultr.com"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"description": "Create an IPv4 address for an Instance.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"reboot": {
"type": "boolean",
"description": "Set if the server is rebooted immediately after the IPv4 address is created.\n\n* true (default)\n* false"
}
}
},
"examples": {
"example": {
"value": {
"reboot": true
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"tags": [
"instances"
]
}
},
"/instances/{instance-id}/ipv6": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"get": {
"summary": "Get Instance IPv6 Information",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv6\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ipv6s": {
"type": "array",
"items": {
"$ref": "#/components/schemas/baremetal-ipv6"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"ipv6": {
"value": {
"ipv6s": [
{
"ip": "2001:0db8:5:6bb:5400:02ff:fee5:3fe3",
"network": "2001:0db8:5:6bb::",
"network_size": 64,
"type": "main_ip"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-instance-ipv6",
"security": [
{
"API Key": []
}
],
"description": "Get the IPv6 information for an VPS Instance."
}
},
"/instances/{instance-id}/ipv6/reverse": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"post": {
"summary": "Create Instance Reverse IPv6",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv6/reverse\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"ip\" : \"2001:0db8:5:6bb:5400:2ff:fee5:2\",\n \"reverse\" : \"foo.example.com\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-instance-reverse-ipv6",
"description": "Create a reverse IPv6 entry for an Instance. The `ip` and `reverse` attributes are required. IP address must be in full, expanded format.",
"parameters": [],
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ip": {
"type": "string",
"description": "The IPv6 address in full, expanded format."
},
"reverse": {
"type": "string",
"description": "The IPv6 reverse entry."
}
},
"required": [
"ip",
"reverse"
]
},
"examples": {
"request": {
"value": {
"ip": "2001:0db8:0005:6bb0:5400:2ff0:fee5:0002",
"reverse": "foo.example.com"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"get": {
"summary": "List Instance IPv6 Reverse",
"operationId": "list-instance-ipv6-reverse",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"reverse_ipv6s": {
"type": "array",
"items": {
"type": "object",
"properties": {
"reverse": {
"type": "string",
"description": "The IPv6 reverse entry."
},
"ip": {
"type": "string",
"description": "The IPv6 address."
}
}
}
}
}
},
"examples": {
"response": {
"value": {
"reverse_ipv6s": [
{
"ip": "2001:0db8:5:6bb:5400:2ff:fee5:1",
"reverse": "foo.example.com"
}
]
}
}
}
}
}
}
},
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv6/reverse\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"description": "List the reverse IPv6 information for an Instance.",
"security": [
{
"API Key": []
}
]
}
},
"/instances/{instance-id}/ipv4/reverse": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"post": {
"summary": "Create Instance Reverse IPv4",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv4/reverse\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"ip\" : \"192.0.2.123\",\n \"reverse\" : \"foo.example.com\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-instance-reverse-ipv4",
"description": "Create a reverse IPv4 entry for an Instance. The `ip` and `reverse` attributes are required. ",
"parameters": [],
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ip": {
"type": "string",
"description": "The IPv4 address."
},
"reverse": {
"type": "string",
"description": "The IPv4 reverse entry."
}
},
"required": [
"ip",
"reverse"
]
},
"examples": {
"request": {
"value": {
"ip": "192.0.2.123",
"reverse": "foo.example.com"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/backups/{backup-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "backup-id",
"in": "path",
"required": true,
"description": "The [Backup id](#operation/list-backups)."
}
],
"get": {
"summary": "Get a Backup",
"tags": [
"backup"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/backups/{backup-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"backup": {
"$ref": "#/components/schemas/backup"
}
}
},
"examples": {
"backup": {
"value": {
"backup": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"description": "Example Description",
"size": 10000000,
"status": "complete",
"os_id": 215,
"app_id": 0
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-backup",
"security": [
{
"API Key": []
}
],
"description": "Get the information for the Backup."
}
},
"/instances/{instance-id}/user-data": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"get": {
"summary": "Get Instance User Data",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/user-data\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user_data": {
"type": "object",
"properties": {
"data": {
"type": "string",
"description": "The user-supplied, base64 encoded [user data](https://docs.vultr.com/manage-instance-user-data-with-the-vultr-metadata-api/) attached to this instance."
}
}
}
}
},
"examples": {
"response": {
"value": {
"user_data": {
"data": "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
}
}
}
}
}
}
}
},
"operationId": "get-instance-userdata",
"security": [
{
"API Key": []
}
],
"description": "Get the user-supplied, base64 encoded [user data](https://docs.vultr.com/manage-instance-user-data-with-the-vultr-metadata-api/) for an Instance."
}
},
"/instances/{instance-id}/halt": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"post": {
"summary": "Halt Instance",
"operationId": "halt-instance",
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"description": "Halt an Instance.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/halt\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"security": [
{
"API Key": []
}
],
"tags": [
"instances"
]
}
},
"/instances/{instance-id}/ipv4/reverse/default": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"post": {
"summary": "Set Default Reverse DNS Entry",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/reverse/default\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"ip\" : \"192.0.2.123\"\n }'"
}
],
"operationId": "post-instances-instance-id-ipv4-reverse-default",
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"description": "Set a reverse DNS entry for an IPv4 address",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ip": {
"type": "string"
}
},
"required": [
"ip"
]
},
"examples": {
"example": {
"value": {
"ip": "192.0.2.123"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"tags": [
"instances"
]
}
},
"/instances/{instance-id}/ipv4/{ipv4}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
},
{
"schema": {
"type": "string"
},
"name": "ipv4",
"in": "path",
"required": true,
"description": "The IPv4 address."
}
],
"delete": {
"summary": "Delete IPv4 Address",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv4/{ipv4}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"operationId": "delete-instance-ipv4",
"description": "Delete an IPv4 address from an Instance.",
"security": [
{
"API Key": []
}
],
"parameters": []
}
},
"/instances/{instance-id}/ipv6/reverse/{ipv6}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
},
{
"schema": {
"type": "string"
},
"name": "ipv6",
"in": "path",
"required": true,
"description": "The IPv6 address."
}
],
"delete": {
"summary": "Delete Instance Reverse IPv6",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/ipv6/reverse/{ipv6}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"operationId": "delete-instance-reverse-ipv6",
"description": "Delete the reverse IPv6 for an Instance.",
"security": [
{
"API Key": []
}
]
}
},
"/instances/{instance-id}/upgrades": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"get": {
"summary": "Get Available Instance Upgrades",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/{instance-id}/upgrades\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"upgrades": {
"type": "object",
"properties": {
"applications": {
"type": "array",
"items": {}
},
"plans": {
"type": "array",
"items": {}
},
"os": {
"type": "array",
"items": {}
}
}
}
}
},
"examples": {
"example": {
"value": {
"upgrades": {
"os": [
{
"id": 900,
"name": "Example CentOS 6 x64",
"arch": "x64",
"family": "centos"
},
{
"id": 901,
"name": "Example CentOS 6 i386",
"arch": "i386",
"family": "centos"
}
],
"applications": [
{
"id": 1,
"name": "LEMP",
"short_name": "lemp",
"deploy_name": "LEMP on CentOS 6 x64",
"type": "one-click",
"vendor": "vultr",
"image_id": ""
},
{
"id": 39,
"name": "LEMP",
"short_name": "lemp",
"deploy_name": "LEMP on CentOS 7 x64",
"type": "one-click",
"vendor": "vultr",
"image_id": ""
},
{
"id": 1028,
"name": "OpenLiteSpeed WordPress",
"short_name": "openlitespeedwordpress",
"deploy_name": "OpenLiteSpeed WordPress on Ubuntu 20.04 x64",
"type": "marketplace",
"vendor": "LiteSpeed_Technologies",
"image_id": "openlitespeed-wordpress"
}
],
"plans": [
"vc2-2c-4gb",
"vc2-4c-8gb",
"vc2-6c-16gb",
"vc2-8c-64gb",
"vc2-16c-64gb",
"vc2-24c-97gb"
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-instance-upgrades",
"description": "Get available upgrades for an Instance",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "type",
"description": "Filter upgrade by type:\n\n- all (applications, os, plans)\n- applications\n- os\n- plans"
}
]
}
},
"/instances/jobs/{job-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "job-id",
"in": "path",
"required": true,
"description": "The [Job ID](#operation/update-instance)."
}
],
"get": {
"summary": "Get Instance Job",
"tags": [
"instances"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/jobs/{job-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"job": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the instance job."
},
"vps_id": {
"type": "string",
"description": "ID of the VPS subscription"
},
"type": {
"type": "string",
"description": "The type of job performed on the Instance."
},
"state": {
"type": "string",
"description": "Current state of the Instance job."
},
"info": {
"type": "string",
"description": "Information on the Instance job."
},
"added_at": {
"type": "string",
"description": "The date this job was added."
},
"updated_at": {
"type": "string",
"description": "The date this job was updated."
}
}
}
}
},
"examples": {
"example": {
"value": {
"job": {
"id": "b3123d06-ec83-456c-ac71-ae8c4bc95e18",
"vps_id": "243f120d-400a-4060-b864-8b21d5b9cc2b",
"type": "UPGRADE",
"state": "success",
"info": "Upgrade completed successfully!",
"added_at": "2025-05-05 14:54:34",
"updated_at": "2025-05-05 14:54:44"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-instance-job",
"description": "Get available information for an Instance job",
"security": [
{
"API Key": []
}
]
}
},
"/bare-metals/{baremetal-id}/upgrades": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal id](#operation/list-baremetals)."
}
],
"get": {
"summary": "Get Available Bare Metal Upgrades",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/upgrades\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"upgrades": {
"type": "object",
"description": "This object will contain the available Bare Metal Upgrades",
"properties": {
"applications": {
"type": "array",
"items": {}
},
"os": {
"type": "array",
"items": {}
}
}
}
}
},
"examples": {
"example": {
"value": {
"upgrades": {
"os": [
{
"id": 127,
"name": "CentOS 6 x64",
"arch": "x64",
"family": "centos"
},
{
"id": 147,
"name": "CentOS 6 i386",
"arch": "i386",
"family": "centos"
}
],
"applications": [
{
"id": 1,
"name": "LEMP",
"short_name": "lemp",
"deploy_name": "LEMP on CentOS 6 x64",
"type": "one-click",
"vendor": "vultr",
"image_id": ""
},
{
"id": 39,
"name": "LEMP",
"short_name": "lemp",
"deploy_name": "LEMP on CentOS 7 x64",
"type": "one-click",
"vendor": "vultr",
"image_id": ""
},
{
"id": 1028,
"name": "OpenLiteSpeed WordPress",
"short_name": "openlitespeedwordpress",
"deploy_name": "OpenLiteSpeed WordPress on Ubuntu 20.04 x64",
"type": "marketplace",
"vendor": "LiteSpeed_Technologies",
"image_id": "openlitespeed-wordpress"
}
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-bare-metals-upgrades",
"description": "Get available upgrades for a Bare Metal",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "type",
"description": "Filter upgrade by type:\n\n- all (applications, plans)\n- applications\n- os"
}
],
"security": [
{
"API Key": []
}
]
}
},
"/bare-metals/{baremetal-id}/vnc": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal id](#operation/list-baremetals)."
}
],
"get": {
"summary": "Get VNC URL for a Bare Metal",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/vnc\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"vnc": {
"type": "object",
"description": "This object will contain the VNC URL for the Bare Metal Instance",
"properties": {
"url": {
"type": "string",
"description": "This is the VNC URL for the Bare Metal Instance"
}
}
}
}
},
"examples": {
"example": {
"value": {
"vnc": {
"url": "https://console.vultr.com/subs/baremetal/novnc/api.php?data=00example11223344"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-bare-metal-vnc",
"description": "Get the VNC URL for a Bare Metal",
"security": [
{
"API Key": []
}
]
}
},
"/bare-metals/{baremetal-id}/vpcs/attach": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal ID](#operation/list-baremetals)."
}
],
"post": {
"summary": "Attach VPC Network to Bare Metal Instance",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/vpcs/attach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"vpc_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "attach-baremetals-vpcs",
"description": "Attach a VPC Network to a Bare Metal Instance.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"vpc_id": {
"type": "string",
"description": "The [VPC ID](#operation/list-vpcs) to attach to this Bare Metal Instance."
}
}
},
"examples": {
"example": {
"value": {
"vpc_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/bare-metals/{baremetal-id}/vpcs/detach": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [bare-metal ID](#operation/list-baremetals)."
}
],
"post": {
"summary": "Detach VPC Network from Bare Metal Instance",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/vpcs/detach\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"vpc_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "detach-baremetal-vpcs",
"description": "Detach a VPC Network from an Bare Metal Instance.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"vpc_id": {
"type": "string",
"description": "The [VPC ID](#operation/list-vpcs) to detach from this Bare Metal Instance."
}
}
},
"examples": {
"example": {
"value": {
"vpc_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/bare-metals/{baremetal-id}/vpcs": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "baremetal-id",
"in": "path",
"required": true,
"description": "The [Bare Metal ID](#operation/list-baremetals)."
}
],
"get": {
"summary": "List Bare Metal Instance VPC Networks",
"tags": [
"baremetal"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/bare-metals/{baremetal-id}/vpcs\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"vpcs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/instance-vpc"
}
}
}
},
"examples": {
"response": {
"value": {
"vpcs": [
{
"id": "d325e78b-bcec-4d4e-b9b8-9c294f37b04d",
"mac_address": "00:00:5e:00:53:5e",
"ip_address": "10.99.0.123"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-baremetal-vpcs",
"security": [
{
"API Key": []
}
],
"description": "List the VPC networks for a Bare Metal Instance."
}
},
"/load-balancers/{load-balancer-id}/firewall-rules": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "load-balancer-id",
"in": "path",
"required": true,
"description": "The [Load Balancer id](#operation/list-load-balancers)."
}
],
"get": {
"summary": "List Firewall Rules",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/firewall-rules\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"firewall_rules": {
"type": "array",
"items": {
"$ref": "#/components/schemas/loadbalancer-firewall-rule"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"Response": {
"value": {
"firewall_rules": [
{
"id": "asb123f2e6c0b60",
"port": 80,
"source": "24.187.16.196/16",
"ip_type": "v4"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "list-loadbalancer-firewall-rules",
"description": "List the firewall rules for a Load Balancer.",
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Firewall Rules",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/firewall-rules\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"firewall_rules\": [\n {\n \"port\": 80,\n \"source\": \"192.168.1.1/16\",\n \"ip_type\": \"v4\"\n }\n ]\n }'"
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "create-loadbalancer-firewall-rules",
"description": "Create the firewall rules for a Load Balancer.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"firewall_rules": {
"type": "array",
"description": "An array of firewall rule objects.",
"items": {
"type": "object",
"properties": {
"port": {
"type": "integer",
"description": "Port for this rule."
},
"source": {
"type": "string",
"description": "If the source string is given a value of \"cloudflare\" then cloudflare IPs will be supplied. Otherwise enter a IP address with subnet size that you wish to permit through the firewall.\n\nPossible values:\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | \"192.168.1.1/16\" | Ip address with a subnet size. |\n| | cloudflare | Allow all of Cloudflare's IP space through the firewall |"
},
"ip_type": {
"type": "string",
"description": "The type of IP rule.\n\n* v4\n* v6"
}
}
}
}
},
"required": [
"firewall_rules"
]
},
"examples": {
"request": {
"value": {
"firewall_rules": [
{
"port": 80,
"source": "192.168.1.1/16",
"ip_type": "v4"
}
]
}
}
}
}
}
}
}
},
"/load-balancers/{load-balancer-id}/firewall-rules/{firewall-rule-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "load-balancer-id",
"in": "path",
"required": true,
"description": "The [Load Balancer id](#operation/list-load-balancers)."
},
{
"schema": {
"type": "string"
},
"name": "firewall-rule-id",
"in": "path",
"required": true
}
],
"get": {
"summary": "Get Firewall Rule",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/firewall-rules/{firewall-rule-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"firewall_rule": {
"$ref": "#/components/schemas/loadbalancer-firewall-rule"
}
}
},
"examples": {
"Example": {
"value": {
"firewall_rule": {
"id": "asb123f2e6c0b60",
"port": 80,
"source": "24.187.16.196/16",
"ip_type": "v4"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "get-loadbalancer-firewall-rule",
"description": "Get a firewall rule for a Load Balancer.",
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Firewall Rule",
"tags": [
"load-balancer"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/load-balancers/{load-balancer-id}/firewall-rules/{firewall-rule-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "delete-loadbalancer-firewall-rule",
"description": "Delete a firewall rule for a Load Balancer.",
"security": [
{
"API Key": []
}
]
}
},
"/kubernetes/clusters": {
"post": {
"summary": "Create Kubernetes Cluster",
"tags": [
"kubernetes"
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"vke_cluster": {
"$ref": "#/components/schemas/vke-cluster"
}
}
},
"examples": {
"example create response": {
"value": {
"vke_cluster": {
"id": "455dcd32-e621-48ee-a10e-0cb5f754e13e",
"firewall_group_id": "",
"label": "vke",
"date_created": "2021-07-07T22:57:01+00:00",
"cluster_subnet": "10.244.0.0/16",
"service_subnet": "10.96.0.0/12",
"ip": "0.0.0.0",
"endpoint": "455dcd32-e621-48ee-a10e-0cb5f754e13e.vultr-k8s.com",
"version": "v1.20.0+1",
"region": "lax",
"status": "pending",
"ha_controlplanes": false,
"oidc": {
"issuer_url": "https://example.com",
"client_id": "my-client-id",
"username_claim": "email",
"groups_claim": "groups"
},
"node_pools": [
{
"id": "11e4443a-f92a-46d6-94c8-61c1a1a7514e",
"date_created": "2021-07-07T22:57:01+00:00",
"date_updated": "2021-07-07T22:58:44+00:00",
"label": "my-label",
"tag": "my-tag",
"plan": "vc2-1c-2gb",
"status": "pending",
"node_quantity": 2,
"min_nodes": 2,
"max_nodes": 5,
"auto_scaler": true,
"vpc_only": true,
"nodes": [
{
"id": "43eda5c8-67f7-4c63-88bc-2f568b48b2b0",
"label": "my-label-6ac60e6313dd1",
"date_created": "2021-07-07T22:57:01+00:00",
"status": "pending"
},
{
"id": "15a7893d-d584-45d5-a74c-d9f46866aa3c",
"label": "my-label-6ac60e6313ddc",
"date_created": "2021-07-07T22:57:01+00:00",
"status": "pending"
}
]
}
],
"vpcs": [
{
"id": "775e26b3-f67d-46b7-87ed-1a0457fb3a5e",
"version": 1,
"subnet": "10.1.96.3"
}
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-kubernetes-cluster",
"description": "Create Kubernetes Cluster",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "The label for your Kubernetes cluster."
},
"region": {
"type": "string",
"description": "Region you want to deploy VKE in. See [Regions](#tag/region) for more information."
},
"version": {
"type": "string",
"description": "Version of Kubernetes you want to deploy."
},
"vpc_id": {
"type": "string",
"description": "The [VPC id](#operation/list-vpcs) to use when deploying this VKE. Omitting or leaving this empty will configure a new VPC network with this deployment."
},
"ha_controlplanes": {
"type": "boolean",
"description": "Whether a highly available control planes configuration should be deployed\n* true\n* false (default)"
},
"enable_firewall": {
"type": "boolean",
"description": "Whether a [Firewall Group](#tag/firewall) should be deployed and managed by this cluster\n* true\n* false (default)"
},
"oidc": {
"type": "object",
"description": "Configure OpenID Connect (OIDC) support for this VKE cluster",
"properties": {
"issuer_url": {
"type": "string",
"description": "The URL of the OIDC provider that issues authentication tokens."
},
"client_id": {
"type": "string",
"description": "The unique identifier assigned to your application by the OIDC provider."
},
"username_claim": {
"type": "string",
"description": "The claim in the OIDC token that identifies the end user's username."
},
"groups_claim": {
"type": "string",
"description": "The claim in the OIDC token that contains the user's group memberships."
}
},
"required": [
"issuer_url",
"client_id"
]
},
"node_pools": {
"type": "array",
"items": {
"type": "object",
"properties": {
"node_quantity": {
"type": "integer",
"description": "Number of instances to deploy in this nodepool. Minimum of 1 node required, but at least 3 is recommended."
},
"label": {
"type": "string",
"description": "Label for this nodepool. You cannot change the label after a nodepool is created. You cannot have duplicate node pool labels in the same cluster."
},
"plan": {
"type": "string",
"description": "Plan you want this nodepool to use. Note: minimum plan must be $10"
},
"vpc_only": {
"type": "boolean",
"description": "Requires the cluster to have a VPC with an active NAT Gateway subscription. If true, VPS instances in this node pool will not receive a public IP or public NIC. It will gain access to the internet via the NAT Gateway attached to the VPC."
},
"tag": {
"type": "string",
"description": "Tag for node pool"
},
"auto_scaler": {
"type": "boolean",
"description": "Option to use the auto scaler with your cluster. Default false."
},
"min_nodes": {
"type": "integer",
"description": "Auto scaler field for minimum nodes you want for your cluster. Default 1."
},
"max_nodes": {
"type": "integer",
"description": "Auto scaler field for maximum nodes you want for your cluster. Default 1."
},
"user_data": {
"type": "string",
"description": "The user-supplied, base64 encoded user data for all nodes in nodepool (only applied on nodes created after user data is set)."
}
},
"required": [
"node_quantity",
"label",
"plan"
]
}
}
},
"required": [
"region",
"version"
]
},
"examples": {
"example request": {
"value": {
"label": "vke",
"region": "lax",
"version": "v1.20.0+1",
"node_pools": [
{
"node_quantity": 2,
"min_nodes": 2,
"max_nodes": 5,
"auto_scaler": true,
"label": "my-label",
"plan": "vc2-1c-2gb",
"vpc_only": true,
"tag": "my-tag"
}
]
}
}
}
}
},
"description": "Request Body"
},
"security": [
{
"API Key": []
}
]
},
"get": {
"summary": "List all Kubernetes Clusters",
"tags": [
"kubernetes"
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"vke_clusters": {
"type": "array",
"items": {
"$ref": "#/components/schemas/vke-cluster"
}
}
}
},
"examples": {
"example response": {
"value": {
"vke_clusters": [
{
"id": "c907e832-3080-48a6-a54d-7379e645c0b7",
"label": "my-vke",
"date_created": "2021-07-02T12:12:43+00:00",
"cluster_subnet": "10.244.0.0/16",
"service_subnet": "10.96.0.0/12",
"ip": "8.9.30.155",
"endpoint": "c907e832-3080-48a6-a54d-7379e645c0b7.vultr-k8s.com",
"version": "v1.20.0+1",
"region": "ewr",
"status": "active",
"ha_controlplanes": false,
"oidc": {
"issuer_url": "https://example.com",
"client_id": "my-client-id",
"username_claim": "email",
"groups_claim": "groups"
},
"node_pools": [
{
"id": "74de1914-63ea-4a78-9da5-b7220063c701",
"date_created": "2021-07-02T12:12:44+00:00",
"date_updated": "2021-07-03T12:12:44+00:00",
"label": "nodepool",
"tag": "my-tag",
"plan": "vc2-1c-2gb",
"status": "active",
"node_quantity": 2,
"min_nodes": 2,
"max_nodes": 5,
"auto_scaler": true,
"vpc_only": true,
"nodes": [
{
"id": "cafd4673-2a62-49c4-a045-44d05ecc0a7b",
"label": "nodepool-6a960df02bc1b",
"date_created": "2021-07-02T12:12:44+00:00",
"status": "active",
"private_ip": "10.0.0.10"
},
{
"id": "5fc5ae88-f73e-46b5-9fa1-ac5ed8dcd33c",
"label": "nodepool-6a960df02bc25",
"date_created": "2021-07-02T12:12:44+00:00",
"status": "active",
"private_ip": "10.0.0.11"
}
]
}
],
"vpcs": [
{
"id": "775e26b3-f67d-46b7-87ed-1a0457fb3a5e",
"version": 1,
"subnet": "10.1.96.3"
}
]
},
{
"id": "455dcd32-e621-48ee-a10e-0cb5f754e13e",
"label": "vke",
"date_created": "2021-07-07T22:57:01+00:00",
"cluster_subnet": "10.244.0.0/16",
"service_subnet": "10.96.0.0/12",
"ip": "207.246.109.187",
"endpoint": "455dcd32-e621-48ee-a10e-0cb5f754e13e.vultr-k8s.com",
"version": "v1.20.0+1",
"region": "lax",
"status": "active",
"oidc": {
"issuer_url": "https://example.com",
"client_id": "my-client-id",
"username_claim": "email",
"groups_claim": "groups"
},
"node_pools": [
{
"id": "11e4443a-f92a-46d6-94c8-61c1a1a7514e",
"date_created": "2021-07-07T22:57:01+00:00",
"date_updated": "2021-07-08T12:12:44+00:00",
"label": "my-label",
"tag": "my-tag",
"plan": "vc2-1c-2gb",
"status": "active",
"node_quantity": 2,
"min_nodes": 2,
"max_nodes": 5,
"auto_scaler": true,
"vpc_only": true,
"nodes": [
{
"id": "43eda5c8-67f7-4c63-88bc-2f568b48b2b0",
"label": "my-label-6ac60e6313dd1",
"date_created": "2021-07-07T22:57:01+00:00",
"status": "active",
"private_ip": "10.0.1.10"
},
{
"id": "15a7893d-d584-45d5-a74c-d9f46866aa3c",
"label": "my-label-6ac60e6313ddc",
"date_created": "2021-07-07T22:57:01+00:00",
"status": "active",
"private_ip": "10.0.1.11"
}
]
}
],
"vpcs": [
{
"id": "775e26b3-f67d-46b7-87ed-1a0457fb3a5e",
"version": 1,
"subnet": "10.1.96.3"
}
]
}
],
"meta": {
"total": 2,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-kubernetes-clusters",
"description": "List all Kubernetes clusters currently deployed",
"security": [
{
"API Key": []
}
]
}
},
"/kubernetes/clusters/{vke-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The [VKE ID](#operation/list-kubernetes-clusters)."
}
],
"get": {
"summary": "Get Kubernetes Cluster",
"tags": [
"kubernetes"
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"vke_cluster": {
"$ref": "#/components/schemas/vke-cluster"
}
}
},
"examples": {
"example response": {
"value": {
"vke_cluster": {
"id": "455dcd32-e621-48ee-a10e-0cb5f754e13e",
"firewall_group_id": "",
"label": "vke",
"date_created": "2021-07-07T22:57:01+00:00",
"cluster_subnet": "10.244.0.0/16",
"service_subnet": "10.96.0.0/12",
"ip": "207.246.109.187",
"endpoint": "455dcd32-e621-48ee-a10e-0cb5f754e13e.vultr-k8s.com",
"version": "v1.20.0+1",
"region": "lax",
"status": "active",
"ha_controlplanes": false,
"oidc": {
"issuer_url": "https://example.com",
"client_id": "my-client-id",
"username_claim": "email",
"groups_claim": "groups"
},
"node_pools": [
{
"id": "11e4443a-f92a-46d6-94c8-61c1a1a7514e",
"date_created": "2021-07-07T22:57:01+00:00",
"date_updated": "2021-07-08T12:12:44+00:00",
"label": "my-label",
"tag": "my-tag",
"plan": "vc2-1c-2gb",
"status": "active",
"node_quantity": 2,
"min_nodes": 2,
"max_nodes": 5,
"auto_scaler": true,
"vpc_only": true,
"nodes": [
{
"id": "43eda5c8-67f7-4c63-88bc-2f568b48b2b0",
"label": "my-label-6ac60e6313dd1",
"date_created": "2021-07-07T22:57:01+00:00",
"status": "active",
"private_ip": "10.0.0.10"
},
{
"id": "15a7893d-d584-45d5-a74c-d9f46866aa3c",
"label": "my-label-6ac60e6313ddc",
"date_created": "2021-07-07T22:57:01+00:00",
"status": "active",
"private_ip": "10.0.0.11"
}
]
}
],
"vpcs": [
{
"id": "775e26b3-f67d-46b7-87ed-1a0457fb3a5e",
"version": 1,
"subnet": "10.1.96.3"
}
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-kubernetes-clusters",
"description": "Get Kubernetes Cluster",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Kubernetes Cluster",
"tags": [
"kubernetes"
],
"responses": {
"204": {
"description": "No Content",
"headers": {}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-kubernetes-cluster",
"description": "Update Kubernetes Cluster",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Label for the Kubernetes cluster"
},
"oidc": {
"type": "object",
"description": "Configure OpenID Connect (OIDC) support for this VKE cluster",
"properties": {
"issuer_url": {
"type": "string",
"description": "The URL of the OIDC provider that issues authentication tokens."
},
"client_id": {
"type": "string",
"description": "The unique identifier assigned to your application by the OIDC provider."
},
"username_claim": {
"type": "string",
"description": "The claim in the OIDC token that identifies the end user's username."
},
"groups_claim": {
"type": "string",
"description": "The claim in the OIDC token that contains the user's group memberships."
}
},
"required": [
"issuer_url",
"client_id"
]
}
},
"required": [
"label"
]
},
"examples": {
"example-1": {
"value": {
"label": "my new label",
"oidc": {
"issuer_url": "https://example.com",
"client_id": "my-client-id",
"username_claim": "email",
"groups_claim": "groups"
}
}
}
}
}
},
"description": "Request Body"
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Kubernetes Cluster",
"tags": [
"kubernetes"
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-kubernetes-cluster",
"description": "Delete Kubernetes Cluster",
"security": [
{
"API Key": []
}
]
}
},
"/kubernetes/clusters/{vke-id}/delete-with-linked-resources": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true
}
],
"delete": {
"summary": "Delete VKE Cluster and All Related Resources",
"tags": [
"kubernetes"
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-kubernetes-cluster-vke-id-delete-with-linked-resources",
"description": "Delete Kubernetes Cluster and all related resources. ",
"security": [
{
"API Key": []
}
]
}
},
"/kubernetes/clusters/{vke-id}/resources": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The [VKE ID](#operation/list-kubernetes-clusters)."
}
],
"get": {
"summary": "Get Kubernetes Resources",
"tags": [
"kubernetes"
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"x-examples": {
"example-1": {
"resources": {
"block_storage": [
{
"id": "7eb35f6c-c4fa-4835-9548-d4730912cbd4",
"label": "track-again3",
"date_created": "2021-07-29T16:41:07+00:00",
"status": "pending"
},
{
"id": "6d1526c9-2d55-4f6b-a775-0024ec5048f0",
"label": "tracking",
"date_created": "2021-08-04T15:34:50+00:00",
"status": "pending"
}
],
"load_balancer": [
{
"id": "04a27709-8d3d-42c2-ae69-c7d8ae6155d8",
"label": "tracking8",
"date_created": "2021-07-29T16:46:12+00:00",
"status": "active"
}
]
}
}
},
"properties": {
"resources": {
"type": "object",
"properties": {
"block_storage": {
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Unique identifier for the block storage volume"
},
"label": {
"type": "string",
"minLength": 1,
"description": "Label given to the block storage volume"
},
"date_created": {
"type": "string",
"minLength": 1,
"description": "Date the block storage volume was created"
},
"status": {
"type": "string",
"minLength": 1,
"description": "Status of the block storage volume"
},
"size_gb": {
"type": "integer",
"description": "Size of the block storage volume"
}
}
}
},
"load_balancer": {
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "Unique identifier for the load balancer"
},
"label": {
"type": "string",
"minLength": 1,
"description": "Label given to the load balancer"
},
"date_created": {
"type": "string",
"minLength": 1,
"description": "Date the load balancer was created"
},
"status": {
"type": "string",
"minLength": 1,
"description": "Status of the load balancer"
},
"ipv4": {
"type": "string",
"description": "IPv4 address assigned to the load balancer"
},
"nodes": {
"type": "integer",
"description": "Number of nodes attached to the load balancer"
}
}
}
}
}
}
}
},
"examples": {
"example": {
"value": {
"resources": {
"block_storage": [
{
"id": "29479a12-6edd-48cf-a883-24eccafab094",
"label": "29479a12-6edd-48cf-a883-24eccafab094",
"date_created": "2021-07-29T16:41:07+00:00",
"status": "active",
"size_gb": 50
},
{
"id": "0fa3097e-aef9-475e-958a-56f697ed3998",
"label": "0fa3097e-aef9-475e-958a-56f697ed3998",
"date_created": "2021-08-04T15:34:50+00:00",
"status": "pending",
"size_gb": 50
}
],
"load_balancer": [
{
"id": "369ed902-2ec4-4a22-b959-cb1709394c3a",
"label": "369ed902-2ec4-4a22-b959-cb1709394c3a",
"date_created": "2021-07-29T16:46:12+00:00",
"status": "active",
"ipv4": "192.0.2.123",
"nodes": 5
}
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-kubernetes-resources",
"description": "Get the block storage volumes and load balancers deployed by the specified Kubernetes cluster.",
"security": [
{
"API Key": []
}
]
}
},
"/kubernetes/clusters/{vke-id}/available-upgrades": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The [VKE ID](#operation/list-kubernetes-clusters)."
}
],
"get": {
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/kubernetes/clusters/{vke-id}/available-upgrades\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"summary": "Get Kubernetes Available Upgrades",
"tags": [
"kubernetes"
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"x-examples": {
"example-1": {
"available_upgrades": [
"v1.22.8+3",
"v1.21.11+3"
]
}
},
"properties": {
"available_upgrades": {
"type": "array",
"description": "Array of available upgrade version strings",
"items": {
"type": "string"
}
}
}
},
"examples": {
"example": {
"value": {
"available_upgrades": [
"v1.22.8+3",
"v1.21.11+3"
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-kubernetes-available-upgrades",
"description": "Get the available upgrades for the specified Kubernetes cluster.",
"security": [
{
"API Key": []
}
]
}
},
"/kubernetes/clusters/{vke-id}/upgrades": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The [VKE ID](#operation/list-kubernetes-clusters)."
}
],
"post": {
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/kubernetes/clusters/{vke-id}/upgrades\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"upgrade_version\" : \"v1.22.8+3\"\n }'"
}
],
"summary": "Start Kubernetes Cluster Upgrade",
"tags": [
"kubernetes"
],
"responses": {
"202": {
"description": "Accepted"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "start-kubernetes-cluster-upgrade",
"description": "Start a Kubernetes cluster upgrade.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"upgrade_version": {
"type": "string",
"description": "The version you're upgrading to."
}
},
"required": [
"upgrade_version"
]
},
"examples": {
"example request": {
"value": {
"upgrade_version": "v1.22.8+3"
}
}
}
}
},
"description": "Request Body"
},
"security": [
{
"API Key": []
}
]
}
},
"/kubernetes/applications": {
"get": {
"summary": "List Available Kubernetes Applications",
"tags": [
"kubernetes"
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"apps": {
"type": "array",
"items": {
"$ref": "#/components/schemas/vke-app"
}
}
}
},
"examples": {
"example response": {
"value": {
"apps": [
{
"id": "8cf93f5f-875e-4aea-8a84-ec2dd592b5ae",
"name": "Bitnami NGINX",
"description": "Bitnami NGINX",
"url": "https://example.com/nginx",
"icon_url": "https://www.vultr.com/marketplace-assets-dev/default-icon.png",
"version": "18.1.5",
"date_created": "2024-05-07T12:07:58+00:00",
"date_updated": "2026-07-16T13:21:16+00:00"
},
{
"id": "c2750a77-0261-11ef-a8cb-ac1f6b643f32",
"name": "Kubernetes Dashboard",
"description": "Kubernetes Dashboard",
"url": "https://example.com/kubernetes-dashboard",
"icon_url": "https://www.vultr.com/marketplace-assets-dev/default-icon.png",
"version": "7.5.0",
"date_created": "2024-04-08T11:00:29+00:00",
"date_updated": "2024-07-16T15:02:00+00:00"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-kubernetes-applications",
"description": "Returns the catalog of VKE applications available for deployment.",
"security": [
{
"API Key": []
}
]
}
},
"/kubernetes/clusters/{vke-id}/applications": {
"post": {
"summary": "Create Kubernetes Application",
"tags": [
"kubernetes"
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The VKE ID."
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"app_deployment": {
"$ref": "#/components/schemas/app-deployment"
}
}
},
"examples": {
"example response": {
"value": {
"app_deployment": {
"id": "9a8ca6e2-e77f-4b07-8fd7-aefc6c41cecc",
"app_id": "8cf93f5f-875e-4aea-8a84-ec2dd592b5ae",
"app_name": "Bitnami NGINX",
"version": "18.1.5",
"status": "pending_install",
"timeout": "60m",
"config": "replicaCount: 2",
"date_created": "2026-09-14T16:00:00+00:00",
"date_updated": "2026-09-14T16:00:00+00:00"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-kubernetes-cluster-application",
"description": "Creates an application deployment on the specified VKE cluster from a catalog VKE application.",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "UUID of the catalog VKE application to deploy to the cluster."
},
"timeout": {
"type": "string",
"description": "Timeout for application deployment operations."
},
"config": {
"type": "string",
"description": "Custom Helm values for this deployment."
}
},
"required": [
"id"
]
},
"examples": {
"example request": {
"value": {
"id": "8cf93f5f-875e-4aea-8a84-ec2dd592b5ae",
"timeout": "60m",
"config": "replicaCount: 2"
}
}
}
}
},
"description": "Request Body"
},
"security": [
{
"API Key": []
}
]
},
"get": {
"summary": "List Kubernetes Applications for Cluster",
"tags": [
"kubernetes"
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The VKE ID."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"app_deployments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/app-deployment"
}
}
}
},
"examples": {
"example response": {
"value": {
"app_deployments": [
{
"id": "9a8ca6e2-e77f-4b07-8fd7-aefc6c41cecc",
"app_id": "8cf93f5f-875e-4aea-8a84-ec2dd592b5ae",
"app_name": "Bitnami NGINX",
"version": "18.1.5",
"status": "active",
"timeout": "60m",
"config": "replicaCount: 2",
"date_created": "2026-09-10T14:00:00+00:00",
"date_updated": "2026-09-10T14:00:00+00:00"
},
{
"id": "7a083d30-f984-427e-a684-41a1997368c1",
"app_id": "c2750a77-0261-11ef-a8cb-ac1f6b643f32",
"app_name": "Kubernetes Dashboard",
"version": "7.5.0",
"status": "active",
"timeout": "60m",
"config": "",
"date_created": "2026-09-11T15:00:00+00:00",
"date_updated": "2026-09-11T15:00:00+00:00"
}
]
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-kubernetes-cluster-applications",
"description": "Returns the application deployments associated with the specified VKE cluster.",
"security": [
{
"API Key": []
}
]
}
},
"/kubernetes/clusters/{vke-id}/applications/{application-id}": {
"get": {
"summary": "Get Kubernetes Application for Cluster",
"tags": [
"kubernetes"
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The VKE ID."
},
{
"schema": {
"type": "string"
},
"name": "application-id",
"in": "path",
"required": true,
"description": "The AppDeployment ID."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"app_deployment": {
"$ref": "#/components/schemas/app-deployment"
}
}
},
"examples": {
"example response": {
"value": {
"app_deployment": {
"id": "9a8ca6e2-e77f-4b07-8fd7-aefc6c41cecc",
"app_id": "8cf93f5f-875e-4aea-8a84-ec2dd592b5ae",
"app_name": "Bitnami NGINX",
"version": "18.1.5",
"status": "active",
"timeout": "60m",
"config": "replicaCount: 2",
"created_at": "2026-09-10T14:00:00+00:00",
"updated_at": "2026-09-10T14:00:00+00:00"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-kubernetes-cluster-application",
"description": "Returns a specific application deployment for the specified VKE cluster.",
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Kubernetes Application from Cluster",
"tags": [
"kubernetes"
],
"parameters": [
{
"schema": null,
"type": "string",
"name": "vke-id",
"in": "path",
"required": true,
"description": "The VKE ID."
},
{
"schema": {
"type": "string"
},
"name": "application-id",
"in": "path",
"required": true,
"description": "The AppDeployment ID."
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-kubernetes-cluster-application",
"description": "Starts the uninstall flow for an application deployment on the specified VKE cluster.",
"security": [
{
"API Key": []
}
]
}
},
"/kubernetes/clusters/{vke-id}/applications/{application-id}/upgrade": {
"post": {
"summary": "Upgrade Kubernetes Application for Cluster",
"tags": [
"kubernetes"
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The VKE ID."
},
{
"schema": {
"type": "string"
},
"name": "application-id",
"in": "path",
"required": true,
"description": "The AppDeployment ID."
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "upgrade-kubernetes-cluster-application",
"description": "Starts an upgrade of the application deployment to the latest version defined by its catalog VKE application.",
"security": [
{
"API Key": []
}
]
}
},
"/kubernetes/clusters/{vke-id}/node-pools": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The [VKE ID](#operation/list-kubernetes-clusters)."
}
],
"post": {
"summary": "Create NodePool",
"tags": [
"kubernetes"
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"node_pool": {
"$ref": "#/components/schemas/nodepools"
}
}
},
"examples": {
"example response": {
"value": {
"node_pool": {
"id": "4130764b-5276-4552-546f-32513239732b",
"date_created": "2021-07-07T23:29:18+00:00",
"date_updated": "2021-07-08T23:29:18+00:00",
"label": "nodepool",
"tag": "my-tag",
"plan": "vc2-1c-2gb",
"status": "pending",
"node_quantity": 2,
"min_nodes": 2,
"max_nodes": 5,
"auto_scaler": true,
"vpc_only": true,
"allow_forced_replacement": true,
"nodes": [
{
"id": "2f863151-d784-4184-804e-31e4e60945bd",
"label": "nodepool-6c360e638ce61",
"date_created": "2021-07-07T23:29:18+00:00",
"status": "pending"
},
{
"id": "73a459dc-293f-4c2b-92f7-61be459a033b",
"label": "nodepool-6c360e638ce6c",
"date_created": "2021-07-07T23:29:18+00:00",
"status": "pending"
}
],
"labels": null,
"taints": []
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-nodepools",
"description": "Create NodePool for a Existing Kubernetes Cluster",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"node_quantity": {
"type": "integer",
"description": "Number of instances in this nodepool"
},
"label": {
"type": "string",
"description": "Label for the nodepool. You cannot change the label after a nodepool is created. You cannot have duplicate node pool labels in the same cluster."
},
"plan": {
"type": "string",
"description": "Plan that this nodepool will use"
},
"vpc_only": {
"type": "boolean",
"description": "Requires the cluster to have a VPC with an active NAT Gateway subscription. If true, VPS instances in this node pool will not receive a public IP or public NIC. It will gain access to the internet via the NAT Gateway attached to the VPC."
},
"tag": {
"type": "string",
"description": "Tag for node pool"
},
"auto_scaler": {
"type": "boolean",
"description": "Option to use the auto scaler with your cluster. Default false."
},
"min_nodes": {
"type": "integer",
"description": "Auto scaler field for minimum nodes you want for your cluster. Default 1."
},
"max_nodes": {
"type": "integer",
"description": "Auto scaler field for maximum nodes you want for your cluster. Default 1."
},
"labels": {
"type": "object",
"description": "Map of key/value pairs defining labels to automatically apply to all nodes in this nodepool. Labels will be applied to both new and existing nodes."
},
"taints": {
"type": "array",
"items": {
"$ref": "#/components/schemas/nodepool-taint-req"
},
"description": "Array of objects containing key, value, and effect."
},
"user_data": {
"type": "string",
"description": "The user-supplied, base64 encoded user data for all nodes in nodepool (only applied on nodes created after user data is set)."
},
"allow_forced_replacement": {
"$ref": "#/components/schemas/nodepools/properties/allow_forced_replacement"
}
},
"required": [
"node_quantity",
"label",
"plan"
]
},
"examples": {
"request body example": {
"value": {
"node_quantity": 2,
"label": "nodepool",
"plan": "vc2-1c-2gb",
"vpc_only": true,
"tag": "my-tag",
"min_nodes": 2,
"max_nodes": 5,
"auto_scaler": true,
"allow_forced_replacement": true
}
}
}
}
},
"description": "Request Body"
},
"security": [
{
"API Key": []
}
]
},
"get": {
"summary": "List NodePools",
"tags": [
"kubernetes"
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"node_pools": {
"type": "array",
"items": {
"$ref": "#/components/schemas/nodepools"
}
}
}
},
"examples": {
"example response": {
"value": {
"node_pools": [
{
"id": "e97bdee9-2781-4f31-be03-60fc75f399ae",
"date_created": "2021-07-07T23:27:08+00:00",
"date_updated": "2021-07-08T12:12:44+00:00",
"label": "my-label",
"tag": "my-tag",
"plan": "vc2-1c-2gb",
"status": "active",
"node_quantity": 2,
"min_nodes": 2,
"max_nodes": 5,
"auto_scaler": true,
"vpc_only": true,
"allow_forced_replacement": true,
"nodes": [
{
"id": "f2e11430-76e5-4dc6-a1c9-ef5682c21ddf",
"label": "my-label-44060e6384c45",
"date_created": "2021-07-07T23:27:08+00:00",
"status": "active",
"private_ip": "10.0.0.10"
},
{
"id": "c0a160eb-a7bc-4377-a6fb-52a9531167ca",
"label": "my-label-44060e6384c50",
"date_created": "2021-07-07T23:27:08+00:00",
"status": "active",
"private_ip": "10.0.0.11"
}
]
},
{
"id": "4130764b-5276-4552-546f-32513239732b",
"date_created": "2021-07-07T23:29:18+00:00",
"label": "nodepool",
"tag": "my-tag",
"plan": "vc2-1c-2gb",
"status": "active",
"node_quantity": 2,
"min_nodes": 2,
"max_nodes": 5,
"auto_scaler": true,
"vpc_only": true,
"nodes": [
{
"id": "2f863151-d784-4184-804e-31e4e60945bd",
"label": "nodepool-6c360e638ce61",
"date_created": "2021-07-07T23:29:18+00:00",
"status": "active",
"private_ip": "10.0.1.10"
},
{
"id": "73a459dc-293f-4c2b-92f7-61be459a033b",
"label": "nodepool-6c360e638ce6c",
"date_created": "2021-07-07T23:29:18+00:00",
"status": "active",
"private_ip": "10.0.1.11"
}
]
}
],
"meta": {
"total": 2,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-nodepools",
"description": "List all available NodePools on a Kubernetes Cluster",
"security": [
{
"API Key": []
}
]
}
},
"/kubernetes/clusters/{vke-id}/node-pools/{nodepool-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The [VKE ID](#operation/list-kubernetes-clusters)."
},
{
"schema": {
"type": "string"
},
"name": "nodepool-id",
"in": "path",
"required": true,
"description": "The [NodePool ID](#operation/get-nodepools)."
}
],
"get": {
"summary": "Get NodePool",
"tags": [
"kubernetes"
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"node_pool": {
"$ref": "#/components/schemas/nodepools"
}
}
},
"examples": {
"example response": {
"value": {
"node_pool": {
"id": "e97bdee9-2781-4f31-be03-60fc75f399ae",
"date_created": "2021-07-07T23:27:08+00:00",
"date_updated": "2021-07-08T12:12:44+00:00",
"label": "my-label",
"tag": "my-tag",
"plan": "vc2-1c-2gb",
"status": "active",
"node_quantity": 2,
"min_nodes": 2,
"max_nodes": 5,
"auto_scaler": true,
"vpc_only": true,
"allow_forced_replacement": true,
"nodes": [
{
"id": "f2e11430-76e5-4dc6-a1c9-ef5682c21ddf",
"label": "my-label-44060e6384c45",
"date_created": "2021-07-07T23:27:08+00:00",
"status": "active",
"private_ip": "10.0.0.10"
},
{
"id": "c0a160eb-a7bc-4377-a6fb-52a9531167ca",
"label": "my-label-44060e6384c50",
"date_created": "2021-07-07T23:27:08+00:00",
"status": "active",
"private_ip": "10.0.0.11"
}
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-nodepool",
"description": "Get Nodepool from a Kubernetes Cluster",
"security": [
{
"API Key": []
}
]
},
"patch": {
"summary": "Update Nodepool",
"tags": [
"kubernetes"
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"node_pool": {
"$ref": "#/components/schemas/nodepools"
}
}
},
"examples": {
"example-1": {
"value": {
"node_pool": {
"id": "e97bdee9-2781-4f31-be03-60fc75f399ae",
"date_created": "2021-07-07T23:27:08+00:00",
"date_updated": "2021-07-08T12:12:44+00:00",
"label": "my-label",
"tag": "my-tag",
"plan": "vc2-1c-2gb",
"status": "active",
"node_quantity": 1,
"min_nodes": 1,
"max_nodes": 5,
"auto_scaler": true,
"vpc_only": true,
"allow_forced_replacement": true,
"labels": null,
"taints": [],
"nodes": [
{
"id": "f2e11430-76e5-4dc6-a1c9-ef5682c21ddf",
"label": "my-label-44060e6384c45",
"date_created": "2021-07-07T23:27:08+00:00",
"status": "active"
}
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-nodepool",
"description": "Update a Nodepool on a Kubernetes Cluster",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"node_quantity": {
"type": "integer",
"description": "Number of instances in the NodePool. Minimum of 1 is required, but at least 3 is recommended."
},
"tag": {
"type": "string",
"description": "Tag for your node pool"
},
"auto_scaler": {
"type": "boolean",
"description": "Option to use the auto scaler for your cluster. Default false."
},
"min_nodes": {
"type": "integer",
"description": "Auto scaler field for minimum nodes you want for your cluster. Default 1."
},
"max_nodes": {
"description": "Auto scaler field for maximum nodes you want for your cluster. Default 1.",
"type": "integer"
},
"labels": {
"type": "object",
"description": "Map of key/value pairs defining labels to automatically apply to all nodes in this nodepool. Labels will be applied to both new and existing nodes. Existing labels are not removed when adding or updating, but can be managed in the separate labels endpoints."
},
"taints": {
"type": "array",
"items": {
"$ref": "#/components/schemas/nodepool-taint-req"
},
"description": "Array of objects containing key, value, and effect. Existing taints are not removed when adding or updating, but can be managed in the separate taints endpoints."
},
"user_data": {
"type": "string",
"description": "The user-supplied, base64 encoded user data for all nodes in nodepool (only applied on nodes created after user data is set)."
},
"allow_forced_replacement": {
"$ref": "#/components/schemas/nodepools/properties/allow_forced_replacement"
}
}
},
"examples": {
"example-1": {
"value": {
"node_quantity": 1,
"tag": "my-tag",
"min_nodes": 1,
"max_nodes": 5,
"auto_scaler": true,
"allow_forced_replacement": true
}
}
}
},
"application/xml": {
"schema": {
"type": "object",
"properties": {
"node_quantity": {
"type": "integer",
"description": "Number of instances in the nodepool. Minimum of 1 is required, but at least 3 is recommended."
}
},
"required": [
"node_quantity"
]
}
}
},
"description": "Request Body"
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Nodepool",
"tags": [
"kubernetes"
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-nodepool",
"description": "Delete a NodePool from a Kubernetes Cluster",
"security": [
{
"API Key": []
}
]
}
},
"/kubernetes/clusters/{vke-id}/node-pools/{nodepool-id}/labels": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The [VKE ID](#operation/list-kubernetes-clusters)."
},
{
"schema": {
"type": "string"
},
"name": "nodepool-id",
"in": "path",
"required": true,
"description": "The [NodePool ID](#operation/get-nodepools)."
}
],
"get": {
"summary": "List NodePool Labels",
"tags": [
"kubernetes"
],
"operationId": "list-nodepool-labels",
"description": "List NodePool Labels on Kubernetes Nodepool",
"responses": {
"200": {
"description": "success",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"labels": {
"$ref": "#/components/schemas/nodepool-label"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
}
},
"post": {
"summary": "Create NodePool Label",
"tags": [
"kubernetes"
],
"operationId": "create-nodepool-label",
"description": "Add NodePool Label to Existing Kubernetes Nodepool",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"$ref": "#/components/schemas/nodepool-label-req"
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"$ref": "#/components/schemas/nodepool-label"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
}
}
},
"/kubernetes/clusters/{vke-id}/node-pools/{nodepool-id}/labels/{label-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The [VKE ID](#operation/list-kubernetes-clusters)."
},
{
"schema": {
"type": "string"
},
"name": "nodepool-id",
"in": "path",
"required": true,
"description": "The [NodePool ID](#operation/get-nodepools)."
},
{
"schema": {
"type": "string"
},
"name": "label-id",
"in": "path",
"required": true,
"description": "The [NodePool Label ID](#operation/list-labels)."
}
],
"get": {
"summary": "Read NodePool Label",
"tags": [
"kubernetes"
],
"operationId": "read-nodepool-label",
"description": "Read NodePool Label on Kubernetes Nodepool",
"responses": {
"200": {
"description": "success",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"$ref": "#/components/schemas/nodepool-label"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
}
},
"delete": {
"summary": "Delete NodePool Label",
"tags": [
"kubernetes"
],
"operationId": "delete-nodepool-label",
"description": "Delete NodePool Label on Kubernetes Nodepool",
"responses": {
"204": {
"description": "success"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
}
}
},
"/kubernetes/clusters/{vke-id}/node-pools/{nodepool-id}/taints": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The [VKE ID](#operation/list-kubernetes-clusters)."
},
{
"schema": {
"type": "string"
},
"name": "nodepool-id",
"in": "path",
"required": true,
"description": "The [NodePool ID](#operation/get-nodepools)."
}
],
"get": {
"summary": "List NodePool Taints",
"tags": [
"kubernetes"
],
"operationId": "list-nodepool-taints",
"description": "List NodePool Taints on Kubernetes Nodepool",
"responses": {
"200": {
"description": "success",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"taints": {
"$ref": "#/components/schemas/nodepool-taint"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
}
},
"post": {
"summary": "Create NodePool Taint",
"tags": [
"kubernetes"
],
"operationId": "create-nodepool-taint",
"description": "Add NodePool Taint to Existing Kubernetes Nodepool",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"$ref": "#/components/schemas/nodepool-taint-req"
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"taint": {
"$ref": "#/components/schemas/nodepool-taint"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
}
}
},
"/kubernetes/clusters/{vke-id}/node-pools/{nodepool-id}/taints/{taint-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The [VKE ID](#operation/list-kubernetes-clusters)."
},
{
"schema": {
"type": "string"
},
"name": "nodepool-id",
"in": "path",
"required": true,
"description": "The [NodePool ID](#operation/get-nodepools)."
},
{
"schema": {
"type": "string"
},
"name": "taint-id",
"in": "path",
"required": true,
"description": "The [NodePool Taint ID](#operation/list-taints)."
}
],
"get": {
"summary": "Read NodePool Taint",
"tags": [
"kubernetes"
],
"operationId": "read-nodepool-taint",
"description": "Read NodePool Taint on Kubernetes Nodepool",
"responses": {
"200": {
"description": "success",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"taint": {
"$ref": "#/components/schemas/nodepool-taint"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
}
},
"delete": {
"summary": "Delete NodePool Taint",
"tags": [
"kubernetes"
],
"operationId": "delete-nodepool-taint",
"description": "Delete NodePool Taint on Kubernetes Nodepool",
"responses": {
"204": {
"description": "success"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
}
}
},
"/kubernetes/clusters/{vke-id}/node-pools/{nodepool-id}/nodes": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The [VKE ID](#operation/list-kubernetes-clusters)."
},
{
"schema": {
"type": "string"
},
"name": "nodepool-id",
"in": "path",
"required": true,
"description": "The [NodePool ID](#operation/get-nodepools)."
}
]
},
"/kubernetes/clusters/{vke-id}/node-pools/{nodepool-id}/nodes/{node-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The [VKE ID](#operation/list-kubernetes-clusters)."
},
{
"schema": {
"type": "string"
},
"name": "nodepool-id",
"in": "path",
"required": true,
"description": "The [NodePool ID](#operation/get-nodepools)."
},
{
"schema": {
"type": "string"
},
"name": "node-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"delete": {
"summary": "Delete NodePool Instance",
"tags": [
"kubernetes"
],
"operationId": "delete-nodepool-instance",
"security": [
{
"API Key": []
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"description": "Delete a single nodepool instance from a given Nodepool"
}
},
"/kubernetes/clusters/{vke-id}/node-pools/{nodepool-id}/nodes/{node-id}/recycle": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The [VKE ID](#operation/list-kubernetes-clusters)."
},
{
"schema": {
"type": "string"
},
"name": "nodepool-id",
"in": "path",
"required": true,
"description": "The [NodePool ID](#operation/get-nodepools)."
},
{
"schema": {
"type": "string"
},
"name": "node-id",
"in": "path",
"required": true,
"description": "Node ID"
}
],
"post": {
"summary": "Recycle a NodePool Instance",
"tags": [
"kubernetes"
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "recycle-nodepool-instance",
"description": "Recycle a specific NodePool Instance",
"security": [
{
"API Key": []
}
]
}
},
"/kubernetes/clusters/{vke-id}/config": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vke-id",
"in": "path",
"required": true,
"description": "The [VKE ID](#operation/list-kubernetes-clusters)."
}
],
"get": {
"summary": "Get Kubernetes Cluster Kubeconfig",
"tags": [
"kubernetes"
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"kube_config": {
"type": "string",
"description": "Base64 encoded KubeConfig"
}
}
},
"examples": {
"example response": {
"value": {
"kube_config": "YXBpdmVyc2lvbjogdjEKY2x1c3RlcnM6Ci0gY2x1c3RlcjoKICAgIGNlcnRpZmljYXRlLWF1dGhvcml0eS1kYXRhOiBMUzB0TFMxQ1JVZEpUaUJEUlZKVVNVWkpRMEZVUlMwdExTMHRDazFKU1VSblZFTkRRVzF0WjBGM1NVSkJaMGxKU2psdFN6bEViRk5pY0RSM1JGRlpTa3R2V2tsb2RtTk9RVkZGVEVKUlFYZFVla1ZNVFVGclIwRXhWVVVLUW1oTlExWldUWGhHYWtGVlFtZE9Wa0pCWTFSRVZrNW9ZbWxDUjJOdFJuVlpNbXg2V1RJNGVFVjZRVkpDWjA1V1FrRnZWRU5yZERGWmJWWjVZbTFXTUFwYVdFMTRSWHBCVWtKblRsWkNRVTFVUTJ0ME1WbHRWbmxpYlZZd1dsaE5kMGhvWTA1TmFrVjNUbnBCZVUxVVNYaE5la0Y1VjJoalRrMXFTWGRPZWtGNUNrMVVTWGhOZWtGNVYycENVRTFSYzNkRFVWbEVWbEZSUjBWM1NsWlZla1ZYVFVKUlIwRXhWVVZDZUUxT1ZUSkdkVWxGV25sWlZ6VnFZVmhPYW1KNlJWUUtUVUpGUjBFeFZVVkRhRTFMVXpOV2FWcFlTblZhV0ZKc1kzcEZWRTFDUlVkQk1WVkZRWGhOUzFNelZtbGFXRXAxV2xoU2JHTjZRME5CVTBsM1JGRlpTZ3BMYjFwSmFIWmpUa0ZSUlVKQ1VVRkVaMmRGVUVGRVEwTkJVVzlEWjJkRlFrRk1laTlITXpOaVlWZG5TMU5GVmpKQ2RsQlhZbWd6WkhZclYybEhOVlJqQ2s1bllVTlZNMlJWVm5KdGNtaHVXbVJPYWtkTVl5OUJTR3RIWm1OaVIxQlRXbkJ2UVZCbWFuaGtWRTA0WlVOTFlXdGxkR0Z6YkRsdFNDOVhlVTlETXpnS1pGcEZVWGRSZWpseFIzWnpaa3BTT0RKQ01WWTBWM3AxUVdRMEwxSmtaVGxqU3psaVdIWktkRUZMU2xrNVF6aG9VM2RtTDNNM1drRlNabGxYYTIxb1R3cHZkSHBFUnpaR2JtaFljSFJtUkRZdmRXNXNXRWhyYTNveFVHSjZhR1Z2ZG5adU9GUkNUamR2UWpkTVdUaG9kRE5tVTBJeFEwSlRTMGxxV1hsaGJEaHJDbU5XZVU1R1MyUndVRVoxV0ZvelkyYzRaMHN2ZUROS1VXZHBLMGxqVTA0Mk9GZDJaa3gxYXpjM2JXOXNWWE5IY25neWNWRkZTa2RwU2k5SGEzUm5kMndLWlVnNU1FbHpMMkZDZERjd1dsaG9aM2cyTnpkSmVuTnVWMnN3UWpWSFlVeGpaRk5oYUN0WlNraGthbkpMU0N0R01qVTNWekpvTUVOQmQwVkJRV0ZPYUFwTlJqaDNSR2RaUkZaU01GQkJVVWd2UWtGUlJFRm5TMFZOUWpCSFFURlZaRXBSVVZkTlFsRkhRME56UjBGUlZVWkNkMDFEUW1kbmNrSm5SVVpDVVdORUNrRlVRVkJDWjA1V1NGSk5Ra0ZtT0VWQ1ZFRkVRVkZJTDAxQ01FZEJNVlZrUkdkUlYwSkNVME5EVWtoSmFERm1XbnBzU210MFMwVmtOalpITVZWWGRqQUtNRVJCVGtKbmEzRm9hMmxIT1hjd1FrRlJjMFpCUVU5RFFWRkZRV0V3VG1SUVlYa3dPREp0YVcxWllUa3ZOVVpMY1hWa1YwSmpabVpHVkVScFdrTmljUXA1YVUxNFZXeEVTQzl6Tm1Od1YzbEJORXRuY0ZGRWMySXdiM0pzYTNwTk1ERjNieTlsTUc1clUxTTFVVkIyWVZvNU9FaFNObFlyTUV4a0swZzViM1JCQ2xZM2VUbEdlQzlJVUhCdldGWTJhVWswYWpCaVpFdFBNMHQ0VUZKVWRsaDFRMUZETTNRd2FHc3pjVnBRSzFSalNEaHhWRTV6VkVwb1JGTnlSMWRLUjNvS1dqZ3liMGwwY0c5RVRsaEJZVUpqYmxSRmNUUkNXRzFoTTJVNVJHSkpVMU5SZW5aaGFIYzBWMkZwVTFWNGVYUllVakJ5Um1oaFpFUnpkbFJuVVhZNGF3cEdlbkV5TjNkS2RUaHZUV2hIWTJWb2VGUlRXVUpyWjNGWVUzYzNPR2xsTVZadk1XVlBMMGxTYlhsM1ZtMWlhM2M1TWswcldtZFdOV0Z3VERCNlNYRnNDbFEzWmtkekszWTViREkwYkM4eGFIbExVekZCU1ZKTmVrRkljMGw1YVdWdE1GUkZUM0Z6WVVVNVFYWjBlWEZZZEZKblBUMEtMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0KICAgIHNlcnZlcjogaHR0cHM6Ly9jOTA3ZTgzMi0zMDgwLTQ4YTYtYTU0ZC03Mzc5ZTY0NWMwYjcudnVsdHItazhzLmNvbTo2NDQzCiAgbmFtZTogdmtlCmNvbnRleHRzOgotIGNvbnRleHQ6CiAgICBjbHVzdGVyOiB2a2UKICAgIHVzZXI6IGFkbWluCiAgbmFtZTogdmtlCmN1cnJlbnQtY29udGV4dDogdmtlCmtpbmQ6IENvbmZpZwpwcmVmZXJlbmNlczoge30KdXNlcnM6Ci0gbmFtZTogYWRtaW4KICB1c2VyOgogICAgY2xpZW50LWNlcnRpZmljYXRlLWRhdGE6IExTMHRMUzFDUlVkSlRpQkRSVkpVU1VaSlEwRlVSUzB0TFMwdENrMUpTVVJWUkVORFFXcHBaMEYzU1VKQlowbEpUVmg0VTFOSGRFRnliR2QzUkZGWlNrdHZXa2xvZG1OT1FWRkZURUpSUVhkVWVrVk1UVUZyUjBFeFZVVUtRbWhOUTFaV1RYaEdha0ZWUW1kT1ZrSkJZMVJFVms1b1ltbENSMk50Um5WWk1teDZXVEk0ZUVWNlFWSkNaMDVXUWtGdlZFTnJkREZaYlZaNVltMVdNQXBhV0UxNFJYcEJVa0puVGxaQ1FVMVVRMnQwTVZsdFZubGliVll3V2xoTmQwaG9ZMDVOYWtWM1RucEJlVTFVU1hoTmVrRjVWMmhqVGsxcVNYZE9la0Y1Q2sxVVNYaE5la0Y1VjJwQ1QwMVJjM2REVVZsRVZsRlJSMFYzU2xaVmVrVlhUVUpSUjBFeFZVVkNlRTFPVlRKR2RVbEZXbmxaVnpWcVlWaE9hbUo2UlZnS1RVSlZSMEV4VlVWRGFFMVBZek5zZW1SSFZuUlBiVEZvWXpOU2JHTnVUWGhFYWtGTlFtZE9Wa0pCVFZSQ1YwWnJZbGRzZFUxSlNVSkpha0ZPUW1kcmNRcG9hMmxIT1hjd1FrRlJSVVpCUVU5RFFWRTRRVTFKU1VKRFowdERRVkZGUVhselRIVndNSHBvYXpsUFVHODVWa05TTUZSbmJ6UTFORThyV0hOTVEyUXhDbE5CWVdKNmFtMVJaM1pEVVZKeFdEaEZUa0Z0VW5kbVdFUjNaRkJMWTFkbmFtcHpRaTlQU2pSR2F6TmpWWFZIVVdkNmFrRkRXVVJYVjNBM1RWaG1TM1VLVm5GeVNGTmtZMnhQWVV0dEwwbGpNMEkxWVd0a1pYcGxRVFJ4UzFGRlRrbFVSbXR1VkdSWVJ6RTFVV3MxU2tNMGNIWXpaa3M1ZUhVMldqZHhjVmRXVlFwdmVFMXdjR2huV1hGWFVsUkNSMnByT0hSRk5sbDZOazVZZGs5NkwxVXpNWEprV0ZOVFluYzRWakpxTUdnNU1FTlRMMkZLVkN0U01sRmxNRWh3YkZNeUNsSjBWek0yYlRjMFVGaHpXRGQ2Ym1aTVZWZEpaMGQxYjBvNVdYTkJNRFphUTFSVllrdFNTekV2V0haRmFGZHVPSGRtWTFCblRHTXlRWEJRTnpsMVlYa0taV0phZVV4SmFXOWFXRXRNVERWQ05tcEZaVkZWV2pGWlRFTjNSV0pCTXpWYVdYSm1lRTVCUmsxcFUwcDFTMnhhUlRWSGNYRlJTVVJCVVVGQ2IzcEZkd3BNZWtGUFFtZE9Wa2hST0VKQlpqaEZRa0ZOUTBGdlVYZElVVmxFVmxJd2JFSkNXWGRHUVZsSlMzZFpRa0pSVlVoQmQwbEhRME56UjBGUlZVWkNkMDFDQ2sxQk1FZERVM0ZIVTBsaU0wUlJSVUpEZDFWQlFUUkpRa0ZSUWpWbUwwdHJVVGxRV1d4WE1uQllUek13V1dSYVZHMUlhbWRhTm10RlFUUmhVelJvVWs4S2NqSldSbHBwUjBoUVluZGFZMjVuZFc1UVRXTnJaRmh2UWs5a1dsVkhkelpoYkUxaVFVOUZhRlpIUVVOSU5IcEhkM2RUUlZrMk5HRTJVV0ZsVFVaSWF3cHZkalU1UW1GclJIZFJkVlprTVdoMk1rcFZkMXB3WTFsTVZUZE5PWGRLWTI5a09FODBNM0EyVGxwTmNrVjBObHB2YmtsSWJGbEpkMGhFTWxWaGVYcHZDamhUVkhWeWNXVm5jakJvYzAwd1ltWlFRbkZzY25CdE9VTXZOV2hVVjJVemJ6STJiRFpNUTBabWFFdzBaamN5VURSaWFYWnNkVTVoYVc5UFp6QXZXVVlLZFVwd09WUjZkMnRuUWtSVE9DOU5hVTFUVDFwSFpVdHlia2hWYlhKa2FGbHpSbTFCVVRCRVRYWlJiMnh1TWtwVlRYSXlkWE4yU0VGcFJGWm9PVkZMWlFwM1lrSlRMMlJ3UW04M09UbEZRWHBpWkdaclpIcG5iVWhDU2k5WU4wVjNNR3B4Tm5Nek5YTkRNMUpqY0dNNFJrd0tMUzB0TFMxRlRrUWdRMFZTVkVsR1NVTkJWRVV0TFMwdExRbz0KICAgIGNsaWVudC1rZXktZGF0YTogTFMwdExTMUNSVWRKVGlCU1UwRWdVRkpKVmtGVVJTQkxSVmt0TFMwdExRcE5TVWxGYjJkSlFrRkJTME5CVVVWQmVYTk1kWEF3ZW1ock9VOVFiemxXUTFJd1ZHZHZORFUwVHl0WWMweERaREZUUVdGaWVtcHRVV2QyUTFGU2NWZzRDa1ZPUVcxU2QyWllSSGRrVUV0alYyZHFhbk5DTDA5S05FWnJNMk5WZFVkUlozcHFRVU5aUkZkWGNEZE5XR1pMZFZaeGNraFRaR05zVDJGTGJTOUpZek1LUWpWaGEyUmxlbVZCTkhGTFVVVk9TVlJHYTI1VVpGaEhNVFZSYXpWS1F6Undkak5tU3psNGRUWmFOM0Z4VjFaVmIzaE5jSEJvWjFseFYxSlVRa2RxYXdvNGRFVTJXWG8yVGxoMlQzb3ZWVE14Y21SWVUxTmlkemhXTW1vd2FEa3dRMU12WVVwVUsxSXlVV1V3U0hCc1V6SlNkRmN6Tm0wM05GQlljMWczZW01bUNreFZWMGxuUjNWdlNqbFpjMEV3TmxwRFZGVmlTMUpMTVM5WWRrVm9WMjQ0ZDJaalVHZE1ZekpCY0ZBM09YVmhlV1ZpV25sTVNXbHZXbGhMVEV3MVFqWUtha1ZsVVZWYU1WbE1RM2RGWWtFek5WcFpjbVo0VGtGR1RXbFRTblZMYkZwRk5VZHhjVkZKUkVGUlFVSkJiMGxDUVVKaWN6VXpUQzlJUm5CTmFESmpjd3A1Tm5WdVVFRmpRMHQwU1VzNGVVMXBObll6VkRCWVdVWjVSRTFzTlVGdk5EVnJSVFJhTjNWTlVsZExjbTUxV0VsT1NtdG5WSFE0Tmpndk1FSnVURWMyQ2xVd05tazRaMDlvUkRWME4ySlFkMHRZYlM5eFN6RktUVUY1WkRkSWIzQmhPVE4yYVV0dlNYa3pMemxwWjB4Tk0yRkZkRXB2Vlc5S2NUaDJaMDFxVDNRS2MxWk5aMVJWVmpKVVVYZGFUR056ZEdFNU5YTlphamh1V214S2QyczNhSHBFTmtFemNUSTBhRVJ0YUU1a2FUZ3dSSEJEVDJjMk1IbFpTaXQ2Y0dab1dBcHZORkJPTlhsTVZGaFhkSG80SzJ0UllqaDZaR3B0Wms5a1pHVnJaeTlOTTA1T1pUY3JPRVZHV2tJMWExWkRkbEV3UmxoSVIxRlZPREUzV1dNdlNEZHZDamhpVFZsM2QySlZRbEppTkdobmVWWnZkemxVV2s5YVkwMXVMM2xoYVd3M1JtVmljblpGU2s5dVJtdG9Wa3BoUlRKdVlWSlJjbEJ1TmtORWRVdEdXRGdLUTJNM2JHZGhSVU5uV1VWQmVuZEVURlpFY1UxWlYxcHNiWFJUYzJGdWVGaEJhMnBwUW5GVWFreFhTbGRIZVZSTk0xZEtUM2RzZG1GWk9FTlRiSHB5TkFwelMyOTNOMXByT0doQ1ZXSm1WRFJCV1ZWTlpVRlBSV0p2UkhCTVpYQTBURmxYU0hSUmJuQkpWakY1ZURSMVdWZHlSM28yZVhSemVGbE1MMnRvYTBSMENtUnVRVTFDVTBOdlZXOW1VVWczSzBWa2NHdFpZbGxrYW05bFZuWXdlalpPVG1SQ1ZYSk9VbFpQWlc1NFR6WkllR1JIZDNwSFUxVkRaMWxGUVN0elJXVUtVMk5wU0RSbWIybDVkRlZNWW5VMVJVVmtaM0YwTDFseUszTmtVMjl6TURGTWVtOXpSVU4wZGpFMGJrNHZWVlpIYTI5WE5UUTRVVEpOYmtkeUswSTFLd3BvUkRCME1XTXpXQ3RPT1dOc2FYRXdWVzVGZVhad09DOXhWblJUZGxSYWFscEdOVTFKTXpadWJqWXhVVkkxV0hOcFNEVmhWbWQyUlRoYWNFNTBSbHBsQ21sWlRVNHpRM2R6VjNCb1drMUJTV2hVZDI1S1RVOVZlVXhHVlhWT05rTjNhelJFUlhacVZVTm5XVUZ2UWs5R1MxVldPV1ZZVTNRM1pWYzBlakJCU1VzS1VWRnFhR1V2VFc1cVVVWlZhMmhNUWtsbldsUTRUMjlTY1hWTmMwNVplSEZ4ZUhneVkzTXJUMUZZTld4QmFESlZjME5OVjNwSE5Va3hZbmhPTkd0M1ZRbzRXbVZ4TmtoVlpqTndNMDVZWlc4MFVEUkdhM2R0WlZSaGMxaEdXbkozUW5vM2RXcExhVTFuWjFnd2RFSm9kVmg1YUZVNE5UVllUbU5OZG1weVVUUnFDblo2YWk5cFRGWktWWFkzSzBwc2NrWjRWREZFZFZGTFFtZEhZbkJrVmxoUk1FUjJiRmhtZDJrellrNXJXa1pzZVdZeU0wdDNXbWRHTUVKMGVUTjJORWtLUVU5bFRpOUVVRmx2WTNKMFkwbzFXRGxqWms0d2JsSXphRW95Y2xocU9VWnZTbU5qUTFOU2FDOHllU3RGUVRJMU1scHhNRmgyZEZKMVN6Vm9UVkFyVkFwV0szQkdXU3RSTjNwRVVHeERlRTlzZWpoME5uWjRVblJSVEVSbWRHRk1ORkF5Y2paVmFWaEpWM1Z3UTBwWmREZDBOaXQ1YTFKdWVYZzJiMkUzTHpGS0NtNTJWakZCYjBkQlRtRkZSV1VyZERoNGFXUlFaeXRIUm5FemN6VkhUa1pPU0VKQmMzcG1NV3BxVFdwdmF6ZEtiMmxyWWxaVU1FNUJWVmhLZEdWclNra0taekZPVUd0UVQxSjRWakZWY0dKUGVsUXJhMWhyTjBwVmExTTNiVE0zV0VneWRuUm1abVIxTlhFNVEzWkhObkZaYW1OcVpVOHZSRWhzYUZWRmNrMUpXUXBsVHpSQk9FOUNWRWgwUVRkM01XTjVVa2hIVUZWUE1VRlFiRXRTTWtWVU9XMXVOeXROV0hSRU1GQmxjRWh2TVV0UU9VRTlDaTB0TFMwdFJVNUVJRkpUUVNCUVVrbFdRVlJGSUV0RldTMHRMUzB0Q2c9PQo="
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-kubernetes-clusters-config",
"security": [
{
"API Key": []
}
],
"description": "Get Kubernetes Cluster Kubeconfig"
}
},
"/kubernetes/versions": {
"get": {
"summary": "Get Kubernetes Versions",
"tags": [
"kubernetes"
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"versions": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"examples": {
"example": {
"value": {
"versions": [
"v1.20.0+1"
]
}
}
}
}
}
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-kubernetes-versions",
"description": "Get a list of supported Kubernetes versions",
"security": []
}
},
"/billing/history": {
"get": {
"summary": "List Billing History",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"billing_history": {
"type": "array",
"description": "List of all billing history.",
"items": {
"$ref": "#/components/schemas/billing"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"example-1": {
"value": {
"billing_history": [
{
"id": 123456,
"date": "2020-10-10T01:56:20+00:00",
"type": "invoice",
"description": "Invoice #123456",
"amount": 100.03,
"balance": 79.48
},
{
"id": 123457,
"date": "2020-10-10T01:46:05+00:00",
"type": "credit",
"description": "Account Credit",
"amount": 50.55,
"balance": -20.55
}
],
"meta": {
"total": 3,
"links": {
"next": "WxYzExampleNext",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-billing-history",
"description": "Retrieve list of billing history",
"security": [
{
"API Key": []
}
],
"tags": [
"billing"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/billing/history\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"parameters": []
},
"/billing/invoices": {
"get": {
"summary": "List Invoices",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"x-examples": {
"example-1": {
"billing_invoice": [
{
"id": 123456,
"billing_period": "09-01-2021",
"amount": 5
}
]
}
},
"properties": {
"billing_invoices": {
"type": "array",
"description": "List of billing invoices.",
"items": {
"$ref": "#/components/schemas/invoice"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"example-1": {
"value": {
"billing_invoices": [
{
"id": 123456,
"date": "2021-10-10T00:00:00+00:00",
"description": "Invoice #123456",
"amount": 5.25,
"balance": 10.25
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-invoices",
"description": "Retrieve a list of invoices",
"security": [
{
"API Key": []
}
],
"tags": [
"billing"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/billing/invoices\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"parameters": []
},
"/billing/invoices/{invoice-id}": {
"get": {
"summary": "Get Invoice",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"x-examples": {
"example-1": {
"billing_invoice": {
"id": 123456,
"description": "Account Credit",
"billing_period": "09-01-2021",
"amount": 5
}
}
},
"properties": {
"billing_invoice": {
"$ref": "#/components/schemas/invoice"
}
}
},
"examples": {
"example-1": {
"value": {
"billing_invoice": {
"id": 123456,
"description": "Account Credit",
"date": "09-01-2021T00:00:00+00:00",
"amount": 5.25
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-invoice",
"description": "Retrieve specified invoice",
"security": [
{
"API Key": []
}
],
"tags": [
"billing"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/billing/invoices/{invoice-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"parameters": [
{
"schema": {
"type": "string"
},
"name": "invoice-id",
"in": "path",
"required": true,
"description": "ID of invoice"
}
]
},
"/billing/invoices/{invoice-id}/items": {
"get": {
"summary": "Get Invoice Items",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"x-examples": {
"example-1": {
"invoice_items": [
{
"description": "Load Balancer (my-loadbalancer)",
"product": "Load Balancer",
"start_date": "2021-08-31 20:00:00",
"end_date": "2021-09-30 20:00:00",
"units": 720,
"unit_type": "hours",
"unit_price": 0.0149,
"total": 10
},
{
"description": "1.1.1.1 (8192 MB) [my-instance]",
"product": "Vultr Cloud Compute",
"start_date": "2021-09-15 09:13:15",
"end_date": "2021-09-30 20:00:00",
"units": 371,
"unit_type": "hours",
"unit_price": 0.0595,
"total": 22.09
}
],
"meta": {
"total": 3,
"links": {
"next": "WxYzExampleNext",
"prev": ""
}
}
}
},
"properties": {
"invoice_items": {
"type": "array",
"description": "List of invoice items.",
"items": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "Invoice item description"
},
"product": {
"type": "string",
"description": "Product name"
},
"start_date": {
"type": "string",
"description": "Start date of item"
},
"end_date": {
"type": "string",
"description": "End date of item"
},
"units": {
"type": "number",
"description": "Number of units item consumed in billing period"
},
"unit_type": {
"type": "string",
"description": "Unit type. Options include \"hours\", \"overage\", and \"discount\""
},
"unit_price": {
"type": "number",
"description": "Price per unit in dollars"
},
"total": {
"type": "number",
"description": "Total amount due in dollars"
}
}
}
},
"meta": {
"type": "object",
"properties": {
"total": {
"type": "number"
},
"links": {
"type": "object",
"properties": {
"next": {
"type": "string"
},
"prev": {
"type": "string"
}
}
}
}
}
}
},
"examples": {
"example-1": {
"value": {
"invoice_items": [
{
"description": "Load Balancer (my-loadbalancer)",
"product": "Load Balancer",
"start_date": "2021-08-31T00:00:00+00:00",
"end_date": "2021-09-30T00:00:00+00:00",
"units": 720,
"unit_type": "hours",
"unit_price": 0.0149,
"total": 10
},
{
"description": "1.1.1.1 (8192 MB) [my-instance]",
"product": "Vultr Cloud Compute",
"start_date": "2021-09-15T00:00:00+00:00",
"end_date": "2021-09-30T00:00:00+00:00",
"units": 371,
"unit_type": "hours",
"unit_price": 0.0595,
"total": 22.09
}
],
"meta": {
"total": 3,
"links": {
"next": "WxYzExampleNext",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-invoice-items",
"description": "Retrieve full specified invoice",
"security": [
{
"API Key": []
}
],
"tags": [
"billing"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/billing/invoices/{invoice-id}/items\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"parameters": [
{
"schema": {
"type": "string"
},
"name": "invoice-id",
"in": "path",
"required": true,
"description": "ID of invoice"
}
]
},
"/billing/pending-charges": {
"get": {
"summary": "List Pending Charges",
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"pending_charges": {
"type": "array",
"description": "List of pending charges.",
"items": {
"$ref": "#/components/schemas/billing"
}
}
}
},
"examples": {
"example-1": {
"value": {
"pending_charges": [
{
"description": "Load Balancer (my-loadbalancer)",
"start_date": "2020-10-10T01:56:20+00:00",
"end_date": "2020-10-10T01:56:20+00:00",
"units": 720,
"unit_type": "hours",
"unit_price": 0.0149,
"total": 10,
"product": "Load Balancer"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "pending-charges",
"description": "Retrieve list of billing pending charges",
"security": [
{
"API Key": []
}
],
"tags": [
"billing"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/billing/pending-charges\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"parameters": []
},
"/billing/pending-charges/csv": {
"get": {
"summary": "Get Pending Charges CSV",
"responses": {
"200": {
"description": "OK",
"content": {
"text/csv": {
"schema": {
"type": "string",
"format": "binary"
},
"example": "\"Start Date\",\"End Date\",\"Description\",\"Unit Price\",\"Units\",\"Amount\"\n\"2020-10-01 00:00\",\"2020-10-31 23:59\",\"Load Balancer (my-loadbalancer)\",\"0.0149\",\"720\",\"10.73\"\n\"2020-10-01 00:00\",\"2020-10-31 23:59\",\"Cloud Compute (192.0.2.1)\",\"0.0059\",\"744\",\"4.39\"\n"
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "pending-charges-csv",
"description": "Get pending charges as CSV file. Returns all current month charges.",
"security": [
{
"API Key": []
}
],
"tags": [
"billing"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/billing/pending-charges/csv\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -o estimated_charges.csv"
}
]
},
"parameters": []
},
"/databases/plans": {
"get": {
"summary": "List Managed Database Plans",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/plans\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"plans": {
"type": "array",
"items": {
"$ref": "#/components/schemas/dbaas-plan"
}
}
}
},
"examples": {
"plans": {
"value": {
"plans": [
{
"id": "vultr-dbaas-hobbyist-cc-1-25-1",
"number_of_nodes": 1,
"type": "vc2",
"vcpu_count": 1,
"ram": 1024,
"disk": 25,
"monthly_cost": 15,
"supported_engines": {
"mysql": true,
"pg": true,
"valkey": false,
"kafka": false
},
"max_connections": {
"mysql": 75,
"pg": 22
},
"locations": [
"DEV",
"ICN",
"SEA"
]
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-database-plans",
"description": "List all Managed Databases plans.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "engine",
"description": "Filter by engine type\n\n* `mysql`\n* `pg`\n* `valkey`\n* `kafka`"
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "nodes",
"description": "Filter by number of nodes."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "region",
"description": "Filter by [Region id](#operation/list-regions)."
}
]
}
},
"/databases/available-services": {
"get": {
"summary": "Get Available Services",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/available-services\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"databases": {
"type": "array",
"items": {
"$ref": "#/components/schemas/dbaas-services"
}
}
}
},
"examples": {
"available_services": {
"value": {
"kafka": [
"3.8",
"3.9",
"4.0",
"4.1"
],
"mysql": [
"8",
"8.4"
],
"pg": [
"14",
"15",
"16",
"17",
"18"
],
"valkey": [
"8.1",
"9.0"
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
},
"operationId": "available-services",
"description": "Get a list of available services",
"security": [
{
"API Key": []
}
]
}
},
"/databases": {
"get": {
"summary": "List Managed Databases",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"databases": {
"type": "array",
"items": {
"$ref": "#/components/schemas/database"
}
},
"meta": {
"$ref": "#/components/schemas/dbaas-meta"
}
}
},
"examples": {
"database": {
"value": {
"databases": [
{
"id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5",
"date_created": "2022-05-09 10:13:31",
"plan": "vultr-dbaas-hobbyist-cc-1-25-1",
"plan_disk": 25,
"plan_ram": 1024,
"plan_vcpus": 1,
"plan_replicas": 0,
"plan_price": 30,
"region": "EWR",
"database_engine": "mysql",
"database_engine_version": 8,
"vpc_id": "d39bf0bf-e050-47d4-a291-5d6fc736f250",
"status": "Running",
"label": "some label",
"tag": "some tag",
"dbname": "defaultdb",
"host": "HOSTNAME_GOES_HERE",
"public_host": "PUBLIC_HOSTNAME_GOES_HERE",
"user": "vultradmin",
"password": "PASSWORD_GOES_HERE",
"port": 16751,
"maintenance_dow": "sunday",
"maintenance_time": "06:00:00",
"backup_hour": "23",
"backup_minute": "57",
"pending_charges": 0,
"latest_backup": "2022-11-02 12:58:18\"",
"trusted_ips": [
"..."
],
"ca_certificate": "-----BEGIN CERTIFICATE ...",
"mysql_sql_modes": [
"ANSI",
"ERROR_FOR_DIVISION_BY_ZERO",
"NO_ENGINE_SUBSTITUTION",
"NO_ZERO_DATE",
"NO_ZERO_IN_DATE",
"STRICT_ALL_TABLES"
],
"mysql_require_primary_key": true,
"mysql_slow_query_log": false,
"cluster_time_zone": "America/New_York",
"read_replicas": [
"..."
]
}
],
"meta": {
"total": 1
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-databases",
"description": "List all Managed Databases in your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "label",
"description": "Filter by label."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "tag",
"description": "Filter by specific tag."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "region",
"description": "Filter by [Region id](#operation/list-regions)."
}
]
},
"post": {
"summary": "Create Managed Database",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"database_engine\" : \"mysql\",\n \"database_engine_version\" : \"8\",\n \"region\" : \"ewr\",\n \"plan\" : \"vultr-dbaas-hobbyist-cc-1-25-1\",\n \"label\" : \"Example Managed Database\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"database": {
"$ref": "#/components/schemas/database"
}
}
},
"examples": {
"database": {
"value": {
"database": {
"id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5",
"date_created": "2022-05-09 10:13:31",
"plan": "vultr-dbaas-hobbyist-cc-1-25-1",
"plan_disk": 25,
"plan_ram": 1024,
"plan_vcpus": 1,
"plan_replicas": 0,
"plan_price": 30,
"region": "EWR",
"database_engine": "mysql",
"database_engine_version": 8,
"vpc_id": "d39bf0bf-e050-47d4-a291-5d6fc736f250",
"status": "Running",
"label": "some label",
"tag": "some tag",
"dbname": "defaultdb",
"host": "HOSTNAME_GOES_HERE",
"public_host": "PUBLIC_HOSTNAME_GOES_HERE",
"user": "vultradmin",
"password": "PASSWORD_GOES_HERE",
"port": 16751,
"maintenance_dow": "sunday",
"maintenance_time": "06:00:00",
"backup_hour": "23",
"backup_minute": "57",
"pending_charges": 0,
"latest_backup": "2022-11-02 12:58:18\"",
"trusted_ips": [
"..."
],
"ca_certificate": "-----BEGIN CERTIFICATE ...",
"mysql_sql_modes": [
"ANSI",
"ERROR_FOR_DIVISION_BY_ZERO",
"NO_ENGINE_SUBSTITUTION",
"NO_ZERO_DATE",
"NO_ZERO_IN_DATE",
"STRICT_ALL_TABLES"
],
"mysql_require_primary_key": true,
"mysql_slow_query_log": false,
"cluster_time_zone": "America/New_York",
"read_replicas": [
"..."
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "create-database",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"database_engine": {
"type": "string",
"description": "The database engine type for the Managed Database.\n* `mysql`\n* `pg`\n* `valkey`\n* `kafka`"
},
"database_engine_version": {
"type": "string",
"description": "The version of the chosen database engine type for the Managed Database.\n* MySQL: `8`\n* PostgreSQL: `14` - `18`\n* Valkey: `8.1`\n* Kafka: `3.8` - `4.1`"
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the Managed Database is located."
},
"plan": {
"type": "string",
"description": "The [Plan id](#operation/list-database-plans) to use when deploying this Managed Database."
},
"label": {
"type": "string",
"description": "A user-supplied label for this Managed Database."
},
"tag": {
"type": "string",
"description": "The user-supplied tag for this Managed Database."
},
"vpc_id": {
"type": "string",
"description": "The [VPC id](#operation/list-vpcs) to use when deploying this Managed Database. It can also be set to `new` to configure a new VPC network with this deployment."
},
"maintenance_dow": {
"type": "string",
"description": "The day of week for routine maintenance updates.\n* `monday`\n* `tuesday`\n* `wednesday`\n* `thursday`\n* `friday`\n* `saturday`\n* `sunday`"
},
"maintenance_time": {
"type": "string",
"description": "The preferred time (UTC) for routine maintenance updates to occur in 24-hour HH:00 format (e.g. `01:00`, `13:00`, `23:00`, etc.)."
},
"backup_hour": {
"type": "string",
"description": "The preferred hour of the day (UTC) for daily backups to take place (unavailable for Kafka engine types)."
},
"backup_minute": {
"type": "string",
"description": "The preferred minute of the backup hour for daily backups to take place (unavailable for Kafka engine types)."
},
"pending_charges": {
"type": "number",
"description": "Charges due for this subscription at the end of the billing period."
},
"trusted_ips": {
"type": "array",
"description": "A list of IP addresses allowed to access the Managed Database in CIDR notation (defaults to /32 if excluded).",
"items": {
"type": "string"
}
},
"mysql_binlog_retention_period": {
"type": "integer",
"description": "The minimum amount of time in seconds to keep binlog entries before deletion (MySQL engine types only)."
},
"mysql_sql_modes": {
"type": "array",
"description": "A list of SQL modes to enable on the Managed Database (MySQL engine types only).\n* `ALLOW_INVALID_DATES`\n* `ANSI` (Combination Mode)\n* `ANSI_QUOTES`\n* `ERROR_FOR_DIVISION_BY_ZERO`\n* `HIGH_NOT_PRECEDENCE`\n* `IGNORE_SPACE`\n* `NO_AUTO_VALUE_ON_ZERO`\n* `NO_DIR_IN_CREATE`\n* `NO_ENGINE_SUBSTITUTION`\n* `NO_UNSIGNED_SUBTRACTION`\n* `NO_ZERO_DATE`\n* `NO_ZERO_IN_DATE`\n* `ONLY_FULL_GROUP_BY`\n* `PIPES_AS_CONCAT`\n* `REAL_AS_FLOAT`\n* `STRICT_ALL_TABLES`\n* `STRICT_TRANS_TABLES`\n* `TIME_TRUNCATE_FRACTIONAL`\n* `TRADITIONAL` (Combination Mode)",
"items": {
"type": "string"
}
},
"mysql_require_primary_key": {
"type": "boolean",
"description": "Require a primary key for all tables on the Managed Database (MySQL engine types only)."
},
"mysql_slow_query_log": {
"type": "boolean",
"description": "Enable or disable slow query logging on the Managed Database (MySQL engine types only)."
},
"mysql_long_query_time": {
"type": "integer",
"description": "The number of seconds to denote a slow query when logging is enabled (MySQL engine types only)."
},
"redis_eviction_policy": {
"type": "string",
"description": "Set the data eviction policy for the Managed Database (Redis engine types only)",
"deprecated": true
},
"eviction_policy": {
"type": "string",
"description": "Set the data eviction policy for the Managed Database (Valkey engine types only)"
},
"enable_kafka_rest": {
"type": "boolean",
"description": "Enable or disable Kafka REST support on the Managed Database (Kafka engine types only on business plans or higher)."
},
"enable_schema_registry": {
"type": "boolean",
"description": "Enable or disable Schema Registry support on the Managed Database (Kafka engine types only on business plans or higher)."
},
"enable_kafka_connect": {
"type": "boolean",
"description": "Enable or disable Kafka Connect support on the Managed Database (Kafka engine types only on business plans or higher)."
},
"kafka_private_access": {
"type": "boolean",
"description": "Enable or disable Kafka Private Access support on the Managed Database (Kafka engine types only on business plans or higher)."
}
},
"required": [
"database_engine",
"database_engine_version",
"region",
"plan",
"label"
]
},
"examples": {
"request": {
"value": {
"database_engine": "mysql",
"database_engine_version": "8",
"region": "ewr",
"plan": "vultr-dbaas-hobbyist-cc-1-25-1",
"label": "Example Managed Database"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a new Managed Database in a `region` with the desired `plan`. Supply optional attributes as desired."
}
},
"/databases/{database-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "Get Managed Database",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"database": {
"$ref": "#/components/schemas/database"
}
}
},
"examples": {
"database": {
"value": {
"database": {
"id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5",
"date_created": "2022-05-09 10:13:31",
"plan": "vultr-dbaas-hobbyist-cc-1-25-1",
"plan_disk": 25,
"plan_ram": 1024,
"plan_vcpus": 1,
"plan_replicas": 0,
"plan_price": 30,
"region": "EWR",
"database_engine": "mysql",
"database_engine_version": 8,
"vpc_id": "d39bf0bf-e050-47d4-a291-5d6fc736f250",
"status": "Running",
"label": "some label",
"tag": "some tag",
"dbname": "defaultdb",
"host": "HOSTNAME_GOES_HERE",
"public_host": "PUBLIC_HOSTNAME_GOES_HERE",
"user": "vultradmin",
"password": "PASSWORD_GOES_HERE",
"port": 16751,
"maintenance_dow": "sunday",
"maintenance_time": "06:00:00",
"backup_hour": "23",
"backup_minute": "57",
"pending_charges": 0,
"latest_backup": "2022-11-02 12:58:18\"",
"trusted_ips": [
"..."
],
"ca_certificate": "-----BEGIN CERTIFICATE ...",
"mysql_sql_modes": [
"ANSI",
"ERROR_FOR_DIVISION_BY_ZERO",
"NO_ENGINE_SUBSTITUTION",
"NO_ZERO_DATE",
"NO_ZERO_IN_DATE",
"STRICT_ALL_TABLES"
],
"mysql_require_primary_key": true,
"mysql_slow_query_log": false,
"cluster_time_zone": "America/New_York",
"read_replicas": [
"..."
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-database",
"description": "Get information about a Managed Database.",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Managed Database",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"plan\" : \"vultr-dbaas-startup-cc-1-55-2\",\n \"label\" : \"Example Managed Database\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"database": {
"$ref": "#/components/schemas/database"
}
}
},
"examples": {
"database": {
"value": {
"database": {
"id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5",
"date_created": "2022-05-09 10:13:31",
"plan": "vultr-dbaas-hobbyist-cc-1-25-1",
"plan_disk": 25,
"plan_ram": 1024,
"plan_vcpus": 1,
"plan_replicas": 0,
"plan_price": 30,
"region": "EWR",
"database_engine": "mysql",
"database_engine_version": 8,
"vpc_id": "d39bf0bf-e050-47d4-a291-5d6fc736f250",
"status": "Running",
"label": "some label",
"tag": "some tag",
"dbname": "defaultdb",
"host": "HOSTNAME_GOES_HERE",
"public_host": "PUBLIC_HOSTNAME_GOES_HERE",
"user": "vultradmin",
"password": "PASSWORD_GOES_HERE",
"port": 16751,
"maintenance_dow": "sunday",
"maintenance_time": "06:00:00",
"backup_hour": "23",
"backup_minute": "57",
"pending_charges": 0,
"latest_backup": "2022-11-02 12:58:18\"",
"trusted_ips": [
"..."
],
"ca_certificate": "-----BEGIN CERTIFICATE ...",
"mysql_sql_modes": [
"ANSI",
"ERROR_FOR_DIVISION_BY_ZERO",
"NO_ENGINE_SUBSTITUTION",
"NO_ZERO_DATE",
"NO_ZERO_IN_DATE",
"STRICT_ALL_TABLES"
],
"mysql_require_primary_key": true,
"mysql_slow_query_log": false,
"cluster_time_zone": "America/New_York",
"read_replicas": [
"..."
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "update-database",
"description": "Update information for a Managed Database. All attributes are optional. If not set, the attributes will retain their original values.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the Managed Database is located."
},
"plan": {
"type": "string",
"description": "The [Plan id](#operation/list-database-plans) for this Managed Database."
},
"label": {
"type": "string",
"description": "A user-supplied label for this Managed Database."
},
"tag": {
"type": "string",
"description": "The user-supplied tag for this Managed Database."
},
"vpc_id": {
"type": "string",
"description": "The [VPC id](#operation/list-vpcs) for this Managed Database."
},
"maintenance_dow": {
"type": "string",
"description": "The day of week for routine maintenance updates.\n* `monday`\n* `tuesday`\n* `wednesday`\n* `thursday`\n* `friday`\n* `saturday`\n* `sunday`"
},
"maintenance_time": {
"type": "string",
"description": "The preferred time (UTC) for routine maintenance updates to occur in 24-hour HH:00 format (e.g. `01:00`, `13:00`, `23:00`, etc.)."
},
"backup_hour": {
"type": "string",
"description": "The preferred hour of the day (UTC) for daily backups to take place (unavailable for Kafka engine types)."
},
"backup_minute": {
"type": "string",
"description": "The preferred minute of the backup hour for daily backups to take place (unavailable for Kafka engine types)."
},
"pending_charges": {
"type": "number",
"description": "Charges due for this subscription at the end of the billing period."
},
"cluster_time_zone": {
"type": "string",
"description": "The configured time zone for the Managed Database in TZ database format (e.g. `UTC`, `America/New_York`, `Europe/London`, etc.)."
},
"trusted_ips": {
"type": "array",
"description": "A list of IP addresses allowed to access the Managed Database in CIDR notation (defaults to /32 if excluded).",
"items": {
"type": "string"
}
},
"mysql_binlog_retention_period": {
"type": "integer",
"description": "The minimum amount of time in seconds to keep binlog entries before deletion (MySQL engine types only)."
},
"mysql_sql_modes": {
"type": "array",
"description": "A list of SQL modes to enable on the Managed Database (MySQL engine types only).\n* `ALLOW_INVALID_DATES`\n* `ANSI` (Combination Mode)\n* `ANSI_QUOTES`\n* `ERROR_FOR_DIVISION_BY_ZERO`\n* `HIGH_NOT_PRECEDENCE`\n* `IGNORE_SPACE`\n* `NO_AUTO_VALUE_ON_ZERO`\n* `NO_DIR_IN_CREATE`\n* `NO_ENGINE_SUBSTITUTION`\n* `NO_UNSIGNED_SUBTRACTION`\n* `NO_ZERO_DATE`\n* `NO_ZERO_IN_DATE`\n* `ONLY_FULL_GROUP_BY`\n* `PIPES_AS_CONCAT`\n* `REAL_AS_FLOAT`\n* `STRICT_ALL_TABLES`\n* `STRICT_TRANS_TABLES`\n* `TIME_TRUNCATE_FRACTIONAL`\n* `TRADITIONAL` (Combination Mode)",
"items": {
"type": "string"
}
},
"mysql_require_primary_key": {
"type": "boolean",
"description": "Require a primary key for all tables on the Managed Database (MySQL engine types only)."
},
"mysql_slow_query_log": {
"type": "boolean",
"description": "Enable or disable slow query logging on the Managed Database (MySQL engine types only)."
},
"mysql_long_query_time": {
"type": "integer",
"description": "The number of seconds to denote a slow query when logging is enabled (MySQL engine types only)."
},
"redis_eviction_policy": {
"type": "string",
"description": "Set the data eviction policy for the Managed Database (Redis engine types only)",
"deprecated": true
},
"eviction_policy": {
"type": "string",
"description": "Set the data eviction policy for the Managed Database (Valkey engine types only)"
},
"enable_kafka_rest": {
"type": "boolean",
"description": "Enable or disable Kafka REST support on the Managed Database (Kafka engine types only on business plans or higher)."
},
"enable_schema_registry": {
"type": "boolean",
"description": "Enable or disable Schema Registry support on the Managed Database (Kafka engine types only on business plans or higher)."
},
"enable_kafka_connect": {
"type": "boolean",
"description": "Enable or disable Kafka Connect support on the Managed Database (Kafka engine types only on business plans or higher)."
},
"kafka_private_access": {
"type": "boolean",
"description": "Enable or disable Kafka Private Access support on the Managed Database (Kafka engine types only on business plans or higher)."
}
}
},
"examples": {
"request": {
"value": {
"plan": "vultr-dbaas-startup-cc-1-55-2",
"label": "Example Managed Database"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete Managed Database",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-database",
"description": "Delete a Managed Database.",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/usage": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "Get Database Usage Information",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/usage\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"usage": {
"$ref": "#/components/schemas/database-usage"
}
}
},
"examples": {
"usage": {
"value": {
"usage": {
"disk": {
"current_gb": 1.25,
"max_gb": 55,
"percentage": 2.27
},
"memory": {
"current_mb": 768,
"max_mb": 2048,
"percentage": 37.5
},
"cpu": {
"percentage": 4.65
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-database-usage",
"description": "Get disk, memory, and vCPU usage information for a Managed Database.",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/users": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "List Database Users",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/users\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"$ref": "#/components/schemas/database-user"
}
},
"meta": {
"$ref": "#/components/schemas/dbaas-meta"
}
}
},
"examples": {
"users": {
"value": {
"users": [
{
"username": "vultradmin",
"password": "PASSWORD_GOES_HERE",
"encryption": "Default (MySQL 8+)"
},
{
"username": "ANOTHER_USER_HERE",
"password": "PASSWORD_GOES_HERE",
"encryption": "Legacy (MySQL 5.x)"
}
],
"meta": {
"total": 2
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-database-users",
"description": "List all database users within the Managed Database.",
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Database User",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/users\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"username\" : \"some_new_user\",\n \"password\" : \"some_secure_password\",\n \"encryption\" : \"ewrcaching_sha2_password\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/database-user"
}
}
},
"examples": {
"user": {
"value": {
"user": {
"username": "some_new_user",
"password": "some_secure_password",
"encryption": "Default (MySQL 8+)"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "create-database-user",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"username": {
"type": "string",
"description": "The username of the database user."
},
"password": {
"type": "string",
"description": "The password for the database user. This can be omitted to auto-generate a secure password."
},
"encryption": {
"type": "string",
"description": "The password encryption type for the database user (MySQL engine types only).\n* `caching_sha2_password` (default if omitted)\n* `mysql_native_password`"
},
"permission": {
"type": "string",
"description": "The permission level for the database user (Kafka engine types only).\n* `admin`\n* `read`\n* `write`\n* `readwrite`"
}
},
"required": [
"username"
]
},
"examples": {
"request": {
"value": {
"username": "some_new_user",
"password": "some_secure_password",
"encryption": "caching_sha2_password"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a new database user within the Managed Database. Supply optional attributes as desired."
}
},
"/databases/{database-id}/users/{username}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
},
{
"schema": {
"type": "string"
},
"name": "username",
"in": "path",
"required": true,
"description": "The [database user](#operation/list-database-users)."
}
],
"get": {
"summary": "Get Database User",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/users/{username}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/database-user"
}
}
},
"examples": {
"user": {
"value": {
"user": {
"username": "some_username",
"password": "some_secure_password",
"encryption": "Default (MySQL 8+)"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-database-user",
"description": "Get information about a Managed Database user.",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Database User",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/users/{username}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"password\" : \"some_new_password_here\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/database-user"
}
}
},
"examples": {
"user": {
"value": {
"user": {
"username": "some_username",
"password": "some_secure_password",
"encryption": "Default (MySQL 8+)"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "update-database-user",
"description": "Update database user information within a Managed Database.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"password": {
"type": "string",
"description": "The password for the database user. This can be empty to auto-generate a new secure password."
}
},
"required": [
"password"
]
},
"examples": {
"request": {
"value": {
"password": "some_new_password_here"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete Database User",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/users/{username}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-database-user",
"description": "Delete a database user within a Managed Database.",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/users/{username}/access-control": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
},
{
"schema": {
"type": "string"
},
"name": "username",
"in": "path",
"required": true,
"description": "The [database user](#operation/list-database-users)."
}
],
"put": {
"summary": "Set Database User Access Control",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/users/{username}/access-control\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"acl_categories\" : [\n \"+@all\"\n ],\n \"acl_channels\" : [\n \"*\"\n ],\n \"acl_commands\" : [],\n \"acl_keys\" : [\n \"*\"\n ]\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"user": {
"$ref": "#/components/schemas/database-user"
}
}
},
"examples": {
"user": {
"value": {
"user": {
"username": "some_username",
"password": "some_secure_password",
"access_control": {
"acl_categories": [
"+@all"
],
"acl_channels": [
"*"
],
"acl_commands": [],
"acl_keys": [
"*"
]
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "set-database-user-acl",
"description": "Configure access control settings for a Managed Database user (Valkey and Kafka engine types only).",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/access-control"
},
{
"$ref": "#/components/schemas/kafka-permissions"
}
]
},
"examples": {
"request": {
"value": {
"acl_categories": [
"+@all"
],
"acl_channels": [
"*"
],
"acl_commands": [],
"acl_keys": [
"*"
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/databases/{database-id}/dbs": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "List Logical Databases",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/dbs\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"dbs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/database-db"
}
},
"meta": {
"$ref": "#/components/schemas/dbaas-meta"
}
}
},
"examples": {
"dbs": {
"value": {
"dbs": [
{
"name": "defaultdb"
},
{
"name": "another_db"
}
],
"meta": {
"total": 2
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-database-dbs",
"description": "List all logical databases within the Managed Database (MySQL and PostgreSQL only).",
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Logical Database",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/dbs\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"new_db_name\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"db": {
"$ref": "#/components/schemas/database-db"
}
}
},
"examples": {
"db": {
"value": {
"db": {
"name": "new_db_name"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "create-database-db",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the logical database."
}
},
"required": [
"name"
]
},
"examples": {
"request": {
"value": {
"name": "new_db_name"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a new logical database within the Managed Database (MySQL and PostgreSQL only)."
}
},
"/databases/{database-id}/dbs/{db-name}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
},
{
"schema": {
"type": "string"
},
"name": "db-name",
"in": "path",
"required": true,
"description": "The [logical database name](#operation/list-database-dbs)."
}
],
"get": {
"summary": "Get Logical Database",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/dbs/{db-name}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"db": {
"$ref": "#/components/schemas/database-db"
}
}
},
"examples": {
"db": {
"value": {
"db": {
"name": "some_db_name"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-database-db",
"description": "Get information about a logical database within a Managed Database (MySQL and PostgreSQL only).",
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Logical Database",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/dbs/{db-name}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-database-db",
"description": "Delete a logical database within a Managed Database (MySQL and PostgreSQL only).",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/topics": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "List Database Topics",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/topics\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"topics": {
"type": "array",
"items": {
"$ref": "#/components/schemas/database-topic"
}
},
"meta": {
"$ref": "#/components/schemas/dbaas-meta"
}
}
},
"examples": {
"topics": {
"value": {
"topics": [
{
"name": "some_topic",
"partitions": 3,
"replication": 2,
"retention_hours": 160,
"retention_bytes": -1
},
{
"name": "some_topic_2",
"partitions": 5,
"replication": 3,
"retention_hours": 120,
"retention_bytes": 150000
}
],
"meta": {
"total": 2
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-database-topics",
"description": "List all topics within the Managed Database (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Database Topic",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/topics\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"some_new_topic\",\n \"partitions\" : 3,\n \"replication\" : 2,\n \"retention_hours\" : 160,\n \"retention_bytes\" : -1\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"topic": {
"$ref": "#/components/schemas/database-topic"
}
}
},
"examples": {
"topic": {
"value": {
"topic": {
"name": "some_new_topic",
"partitions": 3,
"replication": 2,
"retention_hours": 160,
"retention_bytes": -1
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "create-database-topic",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name for the database topic."
},
"partitions": {
"type": "integer",
"description": "The number of partitions for the database topic."
},
"replication": {
"type": "integer",
"description": "The replication factor for the database topic."
},
"retention_hours": {
"type": "integer",
"description": "The retention hours for the database topic."
},
"retention_bytes": {
"type": "integer",
"description": "The retention bytes for the database topic."
}
},
"required": [
"name",
"partitions",
"replication",
"retention_hours",
"retention_bytes"
]
},
"examples": {
"request": {
"value": {
"name": "some_new_topic",
"partitions": 3,
"replication": 2,
"retention_hours": 160,
"retention_bytes": -1
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a new topic within the Managed Database (Kafka engine types only)."
}
},
"/databases/{database-id}/topics/{topic-name}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
},
{
"schema": {
"type": "string"
},
"name": "topic-name",
"in": "path",
"required": true,
"description": "The [database topic](#operation/list-database-topics)."
}
],
"get": {
"summary": "Get Database Topic",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/topics/{topic-name}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"topic": {
"$ref": "#/components/schemas/database-topic"
}
}
},
"examples": {
"topic": {
"value": {
"topic": {
"name": "some_topic",
"partitions": 3,
"replication": 2,
"retention_hours": 160,
"retention_bytes": -1
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-database-topic",
"description": "Get information about a Managed Database topic (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Database Topic",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/topics/{topic-name}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"partitions\" : 5,\n \"replication\" : 3,\n \"retention_hours\" : 120,\n \"retention_bytes\" : 150000\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"topic": {
"$ref": "#/components/schemas/database-topic"
}
}
},
"examples": {
"topic": {
"value": {
"topic": {
"name": "some_topic",
"partitions": 5,
"replication": 3,
"retention_hours": 120,
"retention_bytes": 150000
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "update-database-topic",
"description": "Update topic information within a Managed Database (Kafka engine types only).",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"partitions": {
"type": "integer",
"description": "The number of partitions for the database topic."
},
"replication": {
"type": "integer",
"description": "The replication factor for the database topic."
},
"retention_hours": {
"type": "integer",
"description": "The retention hours for the database topic."
},
"retention_bytes": {
"type": "integer",
"description": "The retention bytes for the database topic."
}
}
},
"examples": {
"request": {
"value": {
"partitions": 5,
"replication": 3,
"retention_hours": 120,
"retention_bytes": 150000
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete Database Topic",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/topics/{topic-name}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-database-topic",
"description": "Delete a topic within a Managed Database (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/quotas": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "List Database Quotas",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/quotas\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"quotas": {
"type": "array",
"items": {
"$ref": "#/components/schemas/database-quota"
}
},
"meta": {
"$ref": "#/components/schemas/dbaas-meta"
}
}
},
"examples": {
"quotas": {
"value": {
"quotas": [
{
"client_id": "some_client",
"user": "vultradmin",
"consumer_byte_rate": 12345,
"producer_byte_rate": 23456,
"request_percentage": 20
}
],
"meta": {
"total": 1
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-database-quotas",
"description": "List all quotas within the Managed Database (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Database Quota",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/quotas\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"client_id\" : \"some_new_client\",,\n \"user\" : \"vultradmin\"\n \"consumer_byte_rate\" : 12345,\n \"producer_byte_rate\" : 23456,\n \"request_percentage\" : 20\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"quota": {
"$ref": "#/components/schemas/database-quota"
}
}
},
"examples": {
"quota": {
"value": {
"quota": {
"client_id": "some_new_quota",
"user": "vultradmin",
"consumer_byte_rate": 12345,
"producer_byte_rate": 23456,
"request_percentage": 20
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "create-database-quota",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"client_id": {
"type": "string",
"description": "The client ID for the database quota. Note: Creating a new quota with the same client ID and user will overwrite the previous record."
},
"user": {
"type": "string",
"description": "The [user](#operation/list-database-users) for the database quota."
},
"consumer_byte_rate": {
"type": "integer",
"description": "The consumer byte rate for the database quota."
},
"producer_byte_rate": {
"type": "integer",
"description": "The producer byte rate for the database quota."
},
"request_percentage": {
"type": "integer",
"description": "The CPU request percentage for the database quota."
}
},
"required": [
"client_id",
"user",
"consumer_byte_rate",
"producer_byte_rate",
"request_percentage"
]
},
"examples": {
"request": {
"value": {
"client_id": "some_new_client",
"user": "vultradmin",
"consumer_byte_rate": 12345,
"producer_byte_rate": 23456,
"request_percentage": 20
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a new quota within the Managed Database (Kafka engine types only)."
}
},
"/databases/{database-id}/quotas/{client-id}/{username}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
},
{
"schema": {
"type": "string"
},
"name": "client-id",
"in": "path",
"required": true,
"description": "The [database quota's client ID](#operation/list-database-quotas)."
},
{
"schema": {
"type": "string"
},
"name": "username",
"in": "path",
"required": true,
"description": "The [database quota's user](#operation/list-database-quotas)."
}
],
"get": {
"summary": "Get Database Quota",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/quotas/{client-id}/{username}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"quota": {
"$ref": "#/components/schemas/database-quota"
}
}
},
"examples": {
"quota": {
"value": {
"quota": {
"client_id": "some_quota",
"user": "vultradmin",
"consumer_byte_rate": 12345,
"producer_byte_rate": 23456,
"request_percentage": 20
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-database-quota",
"description": "Get information about a Managed Database quota (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Database Quota",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/quotas/{client-id}/{username}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"consumer_byte_rate\" : 12345,\n \"producer_byte_rate\" : 23456,\n \"request_percentage\" : 20\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"quota": {
"$ref": "#/components/schemas/database-quota"
}
}
},
"examples": {
"quota": {
"value": {
"quota": {
"client_id": "some_quota",
"user": "vultradmin",
"consumer_byte_rate": 12345,
"producer_byte_rate": 23456,
"request_percentage": 20
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "update-database-quota",
"description": "Update quota information within a Managed Database (Kafka engine types only).",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"consumer_byte_rate": {
"type": "integer",
"description": "The consumer byte rate for the database quota."
},
"producer_byte_rate": {
"type": "integer",
"description": "The producer byte rate for the database quota."
},
"request_percentage": {
"type": "integer",
"description": "The CPU request percentage for the database quota."
}
},
"required": [
"consumer_byte_rate",
"producer_byte_rate",
"request_percentage"
]
},
"examples": {
"request": {
"value": {
"consumer_byte_rate": 12345,
"producer_byte_rate": 23456,
"request_percentage": 20
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete Database Quota",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/quotas/{client-id}/{username}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-database-quota",
"description": "Delete a quota within a Managed Database (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/available-connectors": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "List Database Available Connectors",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/available-connectors\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"available_connectors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/database-available-connector"
}
}
}
},
"examples": {
"available_connectors": {
"value": {
"available_connectors": [
{
"class": "com.couchbase.connect.kafka.CouchbaseSinkConnector",
"title": "Couchbase Sink",
"version": "4.1.11",
"type": "sink",
"doc_url": "https://github.com/couchbase/kafka-connect-couchbase"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-database-available-connectors",
"description": "List all available connectors for the Managed Database (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/available-connectors/{connector-class}/configuration": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
},
{
"schema": {
"type": "string"
},
"name": "connector-class",
"in": "path",
"required": true,
"description": "The [database connector's identifying class](#operation/list-database-available-connectors)."
}
],
"get": {
"summary": "Get Database Connector Configuration Schema",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/available-connectors/{connector-class}/configuration\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"configuration_schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/database-connector-configuration-schema"
}
}
}
},
"examples": {
"configuration_schema": {
"value": {
"configuration_schema": [
{
"name": "couchbase.seed.nodes",
"type": "LIST",
"required": true,
"default_value": "",
"description": "Addresses of Couchbase Server nodes, delimited by commas.\n\nIf a custom port is specified, it must be the KV port (which is normally 11210 for insecure connections, or 11207 for secure connections)."
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-database-connector-configuration-schema",
"description": "Get the configuration schema for the Managed Database connector (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/connectors": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "List Database Connectors",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connectors\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"connectors": {
"type": "array",
"items": {
"$ref": "#/components/schemas/database-connector"
}
},
"meta": {
"$ref": "#/components/schemas/dbaas-meta"
}
}
},
"examples": {
"connectors": {
"value": {
"connectors": [
{
"name": "some_connector",
"class": "com.couchbase.connect.kafka.CouchbaseSinkConnector",
"topics": "some_topic",
"config": {
"couchbase.seed.nodes": 3,
"couchbase.username": "some_username",
"couchbase.password": "some_password"
}
}
],
"meta": {
"total": 1
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-database-connectors",
"description": "List all connectors within the Managed Database (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Database Connector",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connectors\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"some_connector\",\n \"class\" : \"com.couchbase.connect.kafka.CouchbaseSinkConnector\",\n \"topics\" : \"some_topic\",\n \"config\" : {\n \"couchbase.seed.nodes\": 3,\n \"couchbase.username\": \"some_username\",\n \"couchbase.password\": \"some_password\"\n }\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"connector": {
"$ref": "#/components/schemas/database-connector"
}
}
},
"examples": {
"connector": {
"value": {
"connector": {
"name": "some_connector",
"class": "com.couchbase.connect.kafka.CouchbaseSinkConnector",
"topics": "some_topic",
"config": {
"couchbase.seed.nodes": 3,
"couchbase.username": "some_username",
"couchbase.password": "some_password"
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "create-database-connector",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name for the database connector."
},
"class": {
"type": "string",
"description": "The class for the database connector."
},
"topics": {
"type": "string",
"description": "A comma-separated list of topics to use with the database connector."
},
"config": {
"type": "object",
"description": "A JSON object containing the configuration properties you wish to use with this database connector. See [Get Database Connector Configuration Schema](#operation/get-database-connector-configuration-schema) for a list of available/required options for a connector."
}
},
"required": [
"name",
"class",
"topics"
]
},
"examples": {
"request": {
"value": {
"name": "some_connector",
"class": "com.couchbase.connect.kafka.CouchbaseSinkConnector",
"topics": "some_topic",
"config": {
"couchbase.seed.nodes": 3,
"couchbase.username": "some_username",
"couchbase.password": "some_password"
}
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a new connector within the Managed Database (Kafka engine types only)."
}
},
"/databases/{database-id}/connectors/{connector-name}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
},
{
"schema": {
"type": "string"
},
"name": "connector-name",
"in": "path",
"required": true,
"description": "The [database connector's name](#operation/list-database-connectors)."
}
],
"get": {
"summary": "Get Database Connector",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connectors/{connector-name}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"connector": {
"$ref": "#/components/schemas/database-connector"
}
}
},
"examples": {
"connector": {
"value": {
"connector": {
"name": "some_connector",
"class": "com.couchbase.connect.kafka.CouchbaseSinkConnector",
"topics": "some_topic",
"config": {
"couchbase.seed.nodes": 3,
"couchbase.username": "some_username",
"couchbase.password": "some_password"
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-database-connector",
"description": "Get information about a Managed Database connector (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Database Connector",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connectors/{connector-name}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"topics\" : \"some_topic\",\n \"config\" : {\n \"couchbase.seed.nodes\": 3,\n \"couchbase.username\": \"some_username\",\n \"couchbase.password\": \"some_password\"\n }\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"connector": {
"$ref": "#/components/schemas/database-connector"
}
}
},
"examples": {
"connector": {
"value": {
"connector": {
"name": "some_connector",
"class": "com.couchbase.connect.kafka.CouchbaseSinkConnector",
"topics": "some_topic",
"config": {
"couchbase.seed.nodes": 3,
"couchbase.username": "some_username",
"couchbase.password": "some_password"
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "update-database-connector",
"description": "Update connector information within a Managed Database (Kafka engine types only).",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"topics": {
"type": "string",
"description": "A comma-separated list of topics to use with the database connector."
},
"config": {
"type": "object",
"description": "A JSON object containing the configuration properties you wish to use with this database connector. See [Get Database Connector Configuration Schema](#operation/get-database-connector-configuration-schema) for a list of available/required options for a connector. Updating this will replace the entire configuration object currently set."
}
}
},
"examples": {
"request": {
"value": {
"topics": "some_topic",
"config": {
"couchbase.seed.nodes": 3,
"couchbase.username": "some_username",
"couchbase.password": "some_password"
}
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete Database Connector",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connectors/{connector-name}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-database-connector",
"description": "Delete a connector within a Managed Database (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/connectors/{connector-name}/status": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
},
{
"schema": {
"type": "string"
},
"name": "connector-name",
"in": "path",
"required": true,
"description": "The [database connector's name](#operation/list-database-connectors)."
}
],
"get": {
"summary": "Get Database Connector Status",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connectors/{connector-name}/status\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"connector_status": {
"$ref": "#/components/schemas/database-connector-status"
}
}
},
"examples": {
"connector_status": {
"value": {
"connector_status": {
"state": "RUNNING",
"tasks": [
{
"id": 0,
"state": "RUNNING",
"trace": ""
}
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-database-connector-status",
"description": "Get status information about a Managed Database connector (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/connectors/{connector-name}/restart": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
},
{
"schema": {
"type": "string"
},
"name": "connector-name",
"in": "path",
"required": true,
"description": "The [database connector's name](#operation/list-database-connectors)."
}
],
"post": {
"summary": "Restart Database Connector",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connectors/{connector-name}/restart\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "restart-database-connector",
"description": "Restart a connector within a Managed Database (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/connectors/{connector-name}/pause": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
},
{
"schema": {
"type": "string"
},
"name": "connector-name",
"in": "path",
"required": true,
"description": "The [database connector's name](#operation/list-database-connectors)."
}
],
"post": {
"summary": "Pause Database Connector",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connectors/{connector-name}/pause\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "pause-database-connector",
"description": "Pause a connector within a Managed Database (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/connectors/{connector-name}/resume": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
},
{
"schema": {
"type": "string"
},
"name": "connector-name",
"in": "path",
"required": true,
"description": "The [database connector's name](#operation/list-database-connectors)."
}
],
"post": {
"summary": "Resume Database Connector",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connectors/{connector-name}/resume\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "resume-database-connector",
"description": "Resume a paused connector within a Managed Database (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/connectors/{connector-name}/tasks/{task-id}/restart": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
},
{
"schema": {
"type": "string"
},
"name": "connector-name",
"in": "path",
"required": true,
"description": "The [database connector's name](#operation/list-database-connectors)."
},
{
"schema": {
"type": "string"
},
"name": "task-id",
"in": "path",
"required": true,
"description": "The [connector task's ID](#operation/get-database-connector-status)."
}
],
"post": {
"summary": "Restart Database Connector Task",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connectors/{connector-name}/tasks/{task-id}/restart\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "restart-database-connector-task",
"description": "Restart a task within a Managed Database connector (Kafka engine types only).",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/maintenance": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "List Maintenance Updates",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/maintenance\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"available_updates": {
"type": "array",
"description": "A list of available maintenance updates for the Managed Database.",
"items": {
"type": "string"
}
}
}
},
"examples": {
"available_updates": {
"value": {
"available_updates": [
"update_description_here",
"another_description_here"
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-maintenance-updates",
"description": "List all available maintenance updates within the Managed Database.",
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Start Maintenance Updates",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/maintenance\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "A message indicating whether the maintenance updates were successfully initialized."
}
}
},
"examples": {
"message": {
"value": {
"message": "Maintenance updates initialized. Please note the maintenance consists of switching to a new server that will host the service and all pending updates will be applied. This will cause a short service interruption."
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "start-maintenance-updates",
"security": [
{
"API Key": []
}
],
"description": "Start maintenance updates for the Managed Database."
}
},
"/databases/{database-id}/alerts": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"post": {
"summary": "List Service Alerts",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/alerts\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"period\" : \"day\"\n }'"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"alerts": {
"$ref": "#/components/schemas/dbaas-alerts"
}
}
},
"examples": {
"alerts": {
"value": {
"alerts": [
{
"timestamp": "2023-02-10 12:40:19",
"message_type": "RESOURCE USAGE DISK",
"description": "Disk usage is critically high for a database service, service is not performing normally.",
"recommendation": "We recommend you review your application or upgrade to the next plan size.",
"resource_type": "disk"
},
{
"timestamp": "2023-02-09 15:41:20",
"message_type": "MAINTENANCE SCHEDULED",
"description": "Mandatory maintenance has been scheduled for a database service.",
"maintenance_scheduled": "2023-02-12 01:00:00 (UTC)"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "list-service-alerts",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"period": {
"type": "string",
"description": "The time range to list Managed Database service alerts from."
}
},
"required": [
"period"
]
},
"examples": {
"request": {
"value": {
"period": "day"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "List service alert messages for the Managed Database."
}
},
"/databases/{database-id}/migration": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "Get Migration Status",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/migration\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"migration": {
"$ref": "#/components/schemas/dbaas-migration"
}
}
},
"examples": {
"migration": {
"value": {
"migration": {
"status": "complete",
"method": "replication",
"credentials": {
"host": "some_host",
"port": 3306,
"username": "some_username",
"password": "some_password",
"database": "some_database",
"ignored_databases": "",
"ssl": true
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "view-migration-status",
"description": "View the status of a migration attached to the Managed Database.",
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Start Migration",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/migration\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"host\" : \"some_host\",\n \"port\" : 3306,\n \"username\" : \"some_username\",\n \"password\" : \"some_password\",\n \"database\" : \"some_database\",\n \"ssl\" : true\n }'"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"migration": {
"$ref": "#/components/schemas/dbaas-migration"
}
}
},
"examples": {
"migration": {
"value": {
"migration": {
"status": "pending",
"credentials": {
"host": "some_host",
"port": 3306,
"username": "some_username",
"password": "some_password",
"database": "some_database",
"ignored_databases": "",
"ssl": true
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "database-start-migration",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"host": {
"type": "string",
"description": "The host name of the source server."
},
"port": {
"type": "integer",
"description": "The connection port of the source server."
},
"username": {
"type": "string",
"description": "The username of the source server. Uses `default` for Valkey if left empty or unset."
},
"password": {
"type": "string",
"description": "The password of the source server."
},
"database": {
"type": "string",
"description": "The database of the source server. Required for MySQL/PostgreSQL engine types, but excluded for Valkey."
},
"ignored_databases": {
"type": "string",
"description": "Comma-separated list of ignored databases on the source server. Excluded for Valkey engine types."
},
"ssl": {
"type": "boolean",
"description": "The true/false value for whether SSL is needed to connect to the source server."
}
},
"required": [
"host",
"port",
"username",
"password",
"ssl"
]
},
"examples": {
"request": {
"value": {
"host": "some_host",
"port": 3306,
"username": "some_username",
"password": "some_password",
"database": "some_database",
"ignored_databases": "",
"ssl": true
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Start a migration to the Managed Database."
},
"delete": {
"summary": "Detach Migration",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/migration\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "database-detach-migration",
"description": "Detach a migration from the Managed Database.",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/read-replica": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"post": {
"summary": "Add Read-Only Replica",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/read-replica\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"label\" : \"new_read_replica_label\"\n }'"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"database": {
"$ref": "#/components/schemas/database"
}
}
},
"examples": {
"database": {
"value": {
"database": {
"id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5",
"date_created": "2022-05-09 10:13:31",
"plan": "vultr-dbaas-hobbyist-cc-1-25-1",
"plan_disk": 25,
"plan_ram": 1024,
"plan_vcpus": 1,
"plan_replicas": 0,
"plan_price": 30,
"region": "EWR",
"database_engine": "mysql",
"database_engine_version": 8,
"vpc_id": "d39bf0bf-e050-47d4-a291-5d6fc736f250",
"status": "Running",
"label": "some label",
"tag": "some tag",
"dbname": "defaultdb",
"host": "HOSTNAME_GOES_HERE",
"public_host": "PUBLIC_HOSTNAME_GOES_HERE",
"user": "vultradmin",
"password": "PASSWORD_GOES_HERE",
"port": 16751,
"maintenance_dow": "sunday",
"maintenance_time": "06:00:00",
"backup_hour": "23",
"backup_minute": "57",
"latest_backup": "2022-11-02 12:58:18\"",
"trusted_ips": [
"..."
],
"ca_certificate": "-----BEGIN CERTIFICATE ...",
"mysql_sql_modes": [
"ANSI",
"ERROR_FOR_DIVISION_BY_ZERO",
"NO_ENGINE_SUBSTITUTION",
"NO_ZERO_DATE",
"NO_ZERO_IN_DATE",
"STRICT_ALL_TABLES"
],
"mysql_require_primary_key": true,
"mysql_slow_query_log": false,
"cluster_time_zone": "America/New_York"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "database-add-read-replica",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the Managed Database is located."
},
"label": {
"type": "string",
"description": "A user-supplied label for this Managed Database."
}
},
"required": [
"region",
"label"
]
},
"examples": {
"request": {
"value": {
"region": "ewr",
"label": "new_read_replica_label"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a read-only replica node for the Managed Database."
}
},
"/databases/{database-id}/promote-read-replica": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"post": {
"summary": "Promote Read-Only Replica",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/promote-read-replica\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "database-promote-read-replica",
"security": [
{
"API Key": []
}
],
"description": "Promote a read-only replica node to its own primary Managed Database."
}
},
"/databases/{database-id}/backups": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "Get Backup Information",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/backups \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"latest_backup": {
"$ref": "#/components/schemas/database-latest-backup"
},
"oldest_backup": {
"$ref": "#/components/schemas/database-oldest-backup"
}
}
},
"examples": {
"backups": {
"value": {
"latest_backup": {
"date": "2023-02-07",
"time": "20:51:05"
},
"oldest_backup": {
"date": "2023-02-05",
"time": "20:51:07"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-backup-information",
"description": "Get backup information for the Managed Database.",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/restore": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"post": {
"summary": "Restore from Backup",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/restore\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"new_restore_label\",\n \"type\" : \"pitr\",\n \"date\" : \"2023-02-06\",\n \"time\" : \"08:00:00\"\n }'"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"database": {
"$ref": "#/components/schemas/database"
}
}
},
"examples": {
"database": {
"value": {
"database": {
"id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5",
"date_created": "2022-05-09 10:13:31",
"plan": "vultr-dbaas-hobbyist-cc-1-25-1",
"plan_disk": 25,
"plan_ram": 1024,
"plan_vcpus": 1,
"plan_replicas": 0,
"plan_price": 30,
"region": "EWR",
"database_engine": "mysql",
"database_engine_version": 8,
"vpc_id": "d39bf0bf-e050-47d4-a291-5d6fc736f250",
"status": "Running",
"label": "some label",
"tag": "some tag",
"dbname": "defaultdb",
"host": "HOSTNAME_GOES_HERE",
"public_host": "PUBLIC_HOSTNAME_GOES_HERE",
"user": "vultradmin",
"password": "PASSWORD_GOES_HERE",
"port": 16751,
"maintenance_dow": "sunday",
"maintenance_time": "06:00:00",
"backup_hour": "23",
"backup_minute": "57",
"latest_backup": "2022-11-02 12:58:18\"",
"trusted_ips": [
"..."
],
"ca_certificate": "-----BEGIN CERTIFICATE ...",
"mysql_sql_modes": [
"ANSI",
"ERROR_FOR_DIVISION_BY_ZERO",
"NO_ENGINE_SUBSTITUTION",
"NO_ZERO_DATE",
"NO_ZERO_IN_DATE",
"STRICT_ALL_TABLES"
],
"mysql_require_primary_key": true,
"mysql_slow_query_log": false,
"cluster_time_zone": "America/New_York"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "database-restore-from-backup",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "A user-supplied label for this Managed Database."
},
"type": {
"type": "string",
"description": "The type of backup restoration to use for this Managed Database.\n* `pitr`: Point-in-time recovery\n* `basebackup`: Latest backup (default if omitted)"
},
"date": {
"type": "string",
"description": "The [backup date](#operation/get-backup-information) to use when restoring the Managed Database in YYYY-MM-DD date format. Required for `pitr` type requests."
},
"time": {
"type": "string",
"description": "The [backup time](#operation/get-backup-information) to use when restoring the Managed Database in HH-MM-SS time format (24-hour UTC). Required for `pitr` type requests."
}
},
"required": [
"label"
]
},
"examples": {
"request": {
"value": {
"label": "new_restore_label",
"type": "pitr",
"date": "2023-02-06",
"time": "08:00:00"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a new Managed Database from a backup."
}
},
"/databases/{database-id}/fork": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"post": {
"summary": "Fork Managed Database",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/fork\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"new_fork_label\",\n \"region\" : \"sea\",\n \"plan\" : \"vultr-dbaas-startup-cc-2-80-4\",\n \"type\" : \"pitr\",\n \"date\" : \"2023-02-06\",\n \"time\" : \"08:00:00\"\n }'"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"database": {
"$ref": "#/components/schemas/database"
}
}
},
"examples": {
"database": {
"value": {
"database": {
"id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5",
"date_created": "2022-05-09 10:13:31",
"plan": "vultr-dbaas-startup-cc-2-80-4",
"plan_disk": 80,
"plan_ram": 4096,
"plan_vcpus": 2,
"plan_replicas": 0,
"plan_price": 30,
"region": "SEA",
"database_engine": "mysql",
"database_engine_version": 8,
"vpc_id": "d39bf0bf-e050-47d4-a291-5d6fc736f250",
"status": "Running",
"label": "new_fork_label",
"tag": "some tag",
"dbname": "defaultdb",
"host": "HOSTNAME_GOES_HERE",
"public_host": "PUBLIC_HOSTNAME_GOES_HERE",
"user": "vultradmin",
"password": "PASSWORD_GOES_HERE",
"port": 16751,
"maintenance_dow": "sunday",
"maintenance_time": "06:00:00",
"backup_hour": "23",
"backup_minute": "57",
"latest_backup": "2022-11-02 12:58:18\"",
"trusted_ips": [
"..."
],
"ca_certificate": "-----BEGIN CERTIFICATE ...",
"mysql_sql_modes": [
"ANSI",
"ERROR_FOR_DIVISION_BY_ZERO",
"NO_ENGINE_SUBSTITUTION",
"NO_ZERO_DATE",
"NO_ZERO_IN_DATE",
"STRICT_ALL_TABLES"
],
"mysql_require_primary_key": true,
"mysql_slow_query_log": false,
"cluster_time_zone": "America/New_York"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "database-fork",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "A user-supplied label for this Managed Database."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the Managed Database is located."
},
"plan": {
"type": "string",
"description": "The [Plan id](#operation/list-database-plans) to use when deploying this Managed Database."
},
"vpc_id": {
"type": "string",
"description": "The [VPC id](#operation/list-vpcs) to use when deploying this Managed Database. It can also be set to `new` to configure a new VPC network with this deployment."
},
"type": {
"type": "string",
"description": "The type of backup restoration to use for this Managed Database.\n* `pitr`: Point-in-time recovery\n* `basebackup`: Latest backup (default if omitted)"
},
"date": {
"type": "string",
"description": "The [backup date](#operation/get-backup-information) to use when restoring the Managed Database in YYYY-MM-DD date format. Required for `pitr` type requests."
},
"time": {
"type": "string",
"description": "The [backup time](#operation/get-backup-information) to use when restoring the Managed Database in HH-MM-SS time format (24-hour UTC). Required for `pitr` type requests."
}
},
"required": [
"label",
"region",
"plan"
]
},
"examples": {
"request": {
"value": {
"label": "new_fork_label",
"region": "sea",
"plan": "vultr-dbaas-startup-cc-2-80-4",
"type": "pitr",
"date": "2023-02-06",
"time": "08:00:00"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Fork a Managed Database to a new subscription from a backup."
}
},
"/databases/{database-id}/connection-pools": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "List Connection Pools",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connection-pools\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"connections": {
"$ref": "#/components/schemas/database-connections"
},
"connection_pools": {
"type": "array",
"items": {
"$ref": "#/components/schemas/connection-pool"
}
},
"meta": {
"$ref": "#/components/schemas/dbaas-meta"
}
}
},
"examples": {
"connection_pools": {
"value": {
"connections": {
"used": 12,
"available": 10,
"max": 22
},
"connection_pools": [
{
"name": "first_pool_name",
"database": "some_db_name",
"username": "some_username",
"mode": "transaction",
"size": 5
},
{
"name": "second_pool_name",
"database": "another_db_name",
"username": "another_username",
"mode": "session",
"size": 7
}
],
"meta": {
"total": 2
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-connection-pools",
"description": "List all connection pools within the Managed Database (PostgreSQL engine types only).",
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Connection Pool",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connection-pools\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"name\" : \"new_connection_pool\",\n \"database\" : \"some_database\",\n \"username\" : \"some_user\",\n \"mode\" : \"transaction\",\n \"size\" : 5\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"connection_pool": {
"$ref": "#/components/schemas/connection-pool"
}
}
},
"examples": {
"connection_pool": {
"value": {
"connection_pool": {
"name": "new_connection_pool",
"database": "some_database",
"username": "some_user",
"mode": "transaction",
"size": 5
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "create-connection-pool",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The name of the connection pool."
},
"database": {
"type": "string",
"description": "The logical database associated with the connection pool."
},
"username": {
"type": "string",
"description": "The database user associated with the connection pool."
},
"mode": {
"type": "string",
"description": "The mode for the connection pool.\n* `session`\n* `transaction`\n* `statement`"
},
"size": {
"type": "integer",
"description": "The size of the connection pool."
}
},
"required": [
"name",
"database",
"username",
"mode",
"size"
]
},
"examples": {
"request": {
"value": {
"name": "new_connection_pool",
"database": "some_database",
"username": "some_user",
"mode": "transaction",
"size": 5
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a new connection pool within the Managed Database (PostgreSQL engine types only)."
}
},
"/databases/{database-id}/connection-pools/{pool-name}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
},
{
"schema": {
"type": "string"
},
"name": "pool-name",
"in": "path",
"required": true,
"description": "The [connection pool name](#operation/list-connection-pools)."
}
],
"get": {
"summary": "Get Connection Pool",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connection-pools/{pool-name}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"connection_pool": {
"$ref": "#/components/schemas/connection-pool"
}
}
},
"examples": {
"connection_pool": {
"value": {
"connection_pool": {
"name": "some_connection_pool",
"database": "some_database",
"username": "some_user",
"mode": "transaction",
"size": 5
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-connection-pool",
"description": "Get information about a Managed Database connection pool (PostgreSQL engine types only).",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Connection Pool",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connection-pools/{pool-name}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"mode\" : \"session\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"connection_pool": {
"$ref": "#/components/schemas/connection-pool"
}
}
},
"examples": {
"connection_pool": {
"value": {
"connection_pool": {
"name": "some_connection_pool",
"database": "some_database",
"username": "some_user",
"mode": "transaction",
"size": 5
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "update-connection-pool",
"description": "Update connection-pool information within a Managed Database (PostgreSQL engine types only).",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"database": {
"type": "string",
"description": "The logical database associated with the connection pool."
},
"username": {
"type": "string",
"description": "The database user associated with the connection pool."
},
"mode": {
"type": "string",
"description": "The mode for the connection pool.\n* `session`\n* `transaction`\n* `statement`"
},
"size": {
"type": "integer",
"description": "The size of the connection pool."
}
}
},
"examples": {
"request": {
"value": {
"mode": "session"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete Connection Pool",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/connection-pools/{pool-name}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-connection-pool",
"description": "Delete a connection pool within a Managed Database (PostgreSQL engine types only).",
"security": [
{
"API Key": []
}
]
}
},
"/databases/{database-id}/advanced-options": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "List Advanced Options",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/advanced-options\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"configured_options": {
"type": "object"
},
"available_options": {
"type": "array",
"items": {
"$ref": "#/components/schemas/dbaas-available-options"
}
}
}
},
"examples": {
"advanced_options": {
"value": {
"configured_options": {
"jit": false,
"temp_file_limit": 10000,
"track_io_timing": "off"
},
"available_options": [
{
"name": "autovacuum_analyze_scale_factor",
"type": "float",
"min_value": 0,
"max_value": 1
},
{
"name": "autovacuum_analyze_threshold",
"type": "int",
"min_value": 0,
"max_value": 2147483647
},
"..."
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-advanced-options",
"description": "List all configured and available advanced options for the Managed Database (MySQL, PostgreSQL, and Kafka engine types only).",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Advanced Options",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/advanced-options\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"jit\" : false,\n \"temp_file_limit\" : 10000,\n \"track_io_timing\" : \"off\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"configured_options": {
"type": "object"
},
"available_options": {
"type": "array",
"items": {
"$ref": "#/components/schemas/dbaas-available-options"
}
}
}
},
"examples": {
"advanced_options": {
"value": {
"configured_options": {
"jit": false,
"temp_file_limit": 10000,
"track_io_timing": "off"
},
"available_options": [
{
"name": "autovacuum_analyze_scale_factor",
"type": "float",
"min_value": 0,
"max_value": 1
},
{
"name": "autovacuum_analyze_threshold",
"type": "int",
"min_value": 0,
"max_value": 2147483647
},
"..."
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "update-advanced-options",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"oneOf": [
{
"$ref": "#/components/schemas/pg-advanced-options"
},
{
"$ref": "#/components/schemas/mysql-advanced-options"
},
{
"$ref": "#/components/schemas/kafka-advanced-options"
}
]
},
"examples": {
"request": {
"value": {
"jit": false,
"temp_file_limit": 10000,
"track_io_timing": "off"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Updates an advanced configuration option for the Managed Database (MySQL, PostgreSQL, and Kafka engine types only)."
}
},
"/databases/{database-id}/advanced-options/pgbouncer": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "List PostgreSQL PGBouncer Advanced Options",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/advanced-options/pgbouncer\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"configured_options": {
"type": "object"
},
"available_options": {
"type": "array",
"items": {
"$ref": "#/components/schemas/dbaas-available-options"
}
}
}
},
"examples": {
"advanced_options": {
"value": {
"configured_options": {
"autodb_idle_timeout": 3600,
"max_prepared_statements": 100
},
"available_options": [
{
"name": "server_reset_query_always",
"type": "bool"
},
{
"name": "server_login_retry",
"type": "int",
"min_value": 1,
"max_value": 86400,
"unit": "seconds"
},
"..."
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-advanced-options-pgbouncer",
"description": "List all configured and available PostgreSQL PGBouncer advanced options for the Managed Database.",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update PostgreSQL PGBouncer Advanced Options",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/advanced-options/pgbouncer\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"autodb_idle_timeout\" : \"3600\",\n \"max_prepared_statements\" : \"100\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"configured_options": {
"type": "object"
},
"available_options": {
"type": "array",
"items": {
"$ref": "#/components/schemas/dbaas-available-options"
}
}
}
},
"examples": {
"advanced_options": {
"value": {
"configured_options": {
"autodb_idle_timeout": "3600",
"max_prepared_statements": "100"
},
"available_options": [
{
"name": "server_reset_query_always",
"type": "bool"
},
{
"name": "server_idle_timeout",
"type": "int",
"min_value": 0,
"max_value": 86400,
"unit": "seconds"
},
"..."
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "update-advanced-options-pgbouncer",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/pgbouncer-advanced-options"
},
"examples": {
"request": {
"value": {
"autodb_idle_timeout": "3600",
"max_prepared_statements": "100"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Updates a PostgreSQL PGBouncer advanced configuration option for the Managed Database."
}
},
"/databases/{database-id}/advanced-options/kafka-rest": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "List Kafka REST Advanced Options",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/advanced-options/kafka-rest\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"configured_options": {
"type": "object"
},
"available_options": {
"type": "array",
"items": {
"$ref": "#/components/schemas/dbaas-available-options"
}
}
}
},
"examples": {
"advanced_options": {
"value": {
"configured_options": {
"producer_acks": "1",
"producer_compression_type": "none"
},
"available_options": [
{
"name": "consumer_enable_auto_commit",
"type": "bool"
},
{
"name": "consumer_request_max_bytes",
"type": "int",
"min_value": 1,
"max_value": 671088640,
"unit": "bytes"
},
"..."
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-advanced-options-kafka-rest",
"description": "List all configured and available Kafka REST advanced options for the Managed Database (Kafka engine types only on business plans or higher).",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Kafka REST Advanced Options",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/advanced-options/kafka-rest\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"producer_acks\" : \"1\",\n \"producer_compression_type\" : \"none\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"configured_options": {
"type": "object"
},
"available_options": {
"type": "array",
"items": {
"$ref": "#/components/schemas/dbaas-available-options"
}
}
}
},
"examples": {
"advanced_options": {
"value": {
"configured_options": {
"producer_acks": "1",
"producer_compression_type": "none"
},
"available_options": [
{
"name": "consumer_enable_auto_commit",
"type": "bool"
},
{
"name": "consumer_request_max_bytes",
"type": "int",
"min_value": 1,
"max_value": 671088640,
"unit": "bytes"
},
"..."
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "update-advanced-options-kafka-rest",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/kafka-rest-advanced-options"
},
"examples": {
"request": {
"value": {
"producer_acks": "1",
"producer_compression_type": "none"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Updates a Kafka REST advanced configuration option for the Managed Database (Kafka engine types only on business plans or higher)."
}
},
"/databases/{database-id}/advanced-options/schema-registry": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "List Schema Registry Advanced Options",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/advanced-options/schema-registry\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"configured_options": {
"type": "object"
},
"available_options": {
"type": "array",
"items": {
"$ref": "#/components/schemas/dbaas-available-options"
}
}
}
},
"examples": {
"advanced_options": {
"value": {
"configured_options": {
"leader_eligibility": true,
"retriable_errors_silenced": true
},
"available_options": [
{
"name": "schema_reader_strict_mode",
"type": "bool"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-advanced-options-schema-registry",
"description": "List all configured and available Schema Registry advanced options for the Managed Database (Kafka engine types only on business plans or higher).",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Schema Registry Advanced Options",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/advanced-options/schema-registry\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"leader_eligibility\" : true,\n \"retriable_errors_silenced\" : true\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"configured_options": {
"type": "object"
},
"available_options": {
"type": "array",
"items": {
"$ref": "#/components/schemas/dbaas-available-options"
}
}
}
},
"examples": {
"advanced_options": {
"value": {
"configured_options": {
"leader_eligibility": true,
"retriable_errors_silenced": true
},
"available_options": [
{
"name": "schema_reader_strict_mode",
"type": "bool"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "update-advanced-options-schema-registry",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/schema-registry-advanced-options"
},
"examples": {
"request": {
"value": {
"leader_eligibility": true,
"retriable_errors_silenced": true
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Updates a Schema Registry advanced configuration option for the Managed Database (Kafka engine types only on business plans or higher)."
}
},
"/databases/{database-id}/advanced-options/kafka-connect": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "List Kafka Connect Advanced Options",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/advanced-options/kafka-connect\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"configured_options": {
"type": "object"
},
"available_options": {
"type": "array",
"items": {
"$ref": "#/components/schemas/dbaas-available-options"
}
}
}
},
"examples": {
"advanced_options": {
"value": {
"configured_options": {
"consumer_max_poll_records": 500,
"offset_flush_timeout_ms": 5000
},
"available_options": [
{
"name": "connector_client_config_override_policy",
"type": "string"
},
{
"name": "consumer_auto_offset_reset",
"type": "string"
},
"..."
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-advanced-options-kafka-connect",
"description": "List all configured and available Kafka Connect advanced options for the Managed Database (Kafka engine types only on business plans or higher).",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Kafka Connect Advanced Options",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/advanced-options/kafka-connect\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"consumer_max_poll_records\" : 500,\n \"offset_flush_timeout_ms\" : 5000\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"configured_options": {
"type": "object"
},
"available_options": {
"type": "array",
"items": {
"$ref": "#/components/schemas/dbaas-available-options"
}
}
}
},
"examples": {
"advanced_options": {
"value": {
"configured_options": {
"consumer_max_poll_records": 500,
"offset_flush_timeout_ms": 5000
},
"available_options": [
{
"name": "connector_client_config_override_policy",
"type": "string"
},
{
"name": "consumer_auto_offset_reset",
"type": "string"
},
"..."
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "update-advanced-options-kafka-connect",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/kafka-connect-advanced-options"
},
"examples": {
"request": {
"value": {
"consumer_max_poll_records": 500,
"offset_flush_timeout_ms": 5000
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Updates a Kafka Connect advanced configuration option for the Managed Database (Kafka engine types only on business plans or higher)."
}
},
"/databases/{database-id}/version-upgrade": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "database-id",
"in": "path",
"required": true,
"description": "The [Managed Database ID](#operation/list-databases)."
}
],
"get": {
"summary": "List Available Versions",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/version-upgrade\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"available_versions": {
"type": "array",
"description": "A list of available versions greater than the current version of the Managed Database.",
"items": {
"type": "string"
}
}
}
},
"examples": {
"available_versions": {
"value": {
"available_versions": [
"12",
"13",
"14",
"15"
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-available-versions",
"description": "List all available version upgrades within the Managed Database.",
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Start Version Upgrade",
"tags": [
"managed-databases"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/databases/{database-id}/version-upgrade\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"version\" : \"15\"\n }'"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "A message indicating whether the version upgrade was successfully initialized."
}
}
},
"examples": {
"message": {
"value": {
"message": "Version upgrade successfully initialized."
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "start-version-upgrade",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"version": {
"type": "string",
"description": "The version number to upgrade the Managed Database to."
}
},
"required": [
"version"
]
},
"examples": {
"request": {
"value": {
"version": "15"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Start a version upgrade for the Managed Database."
}
},
"/inference": {
"get": {
"summary": "List Serverless Inference",
"tags": [
"serverless-inference"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/inference\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"subscriptions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/inference-subscription"
}
}
}
},
"examples": {
"inference-subscription": {
"value": {
"subscriptions": [
{
"id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5",
"date_created": "2024-06-05T10:13:31+00:00",
"label": "example-inference",
"api_key": "ABCD7PQSLLGS6XDHQY4CMHUL55T5YO63EFGH"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-inference",
"description": "List all Serverless Inference subscriptions in your account.",
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Serverless Inference",
"tags": [
"serverless-inference"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/inference\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"example-inference\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"subscription": {
"$ref": "#/components/schemas/inference-subscription"
}
}
},
"examples": {
"inference-subscription": {
"value": {
"subscription": {
"id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5",
"date_created": "2024-06-05T10:13:31+00:00",
"label": "example-inference",
"api_key": "ABCD7PQSLLGS6XDHQY4CMHUL55T5YO63EFGH"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "create-inference",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "A user-supplied label for this Serverless Inference subscription."
}
},
"required": [
"label"
]
},
"examples": {
"request": {
"value": {
"label": "example-inference"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
},
"description": "Create a new Serverless Inference subscription."
}
},
"/inference/{inference-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "inference-id",
"in": "path",
"required": true,
"description": "The [Inference ID](#operation/list-inference)."
}
],
"get": {
"summary": "Get Serverless Inference",
"tags": [
"serverless-inference"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/inference/{inference-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"subscription": {
"$ref": "#/components/schemas/inference-subscription"
}
}
},
"examples": {
"inference-subscription": {
"value": {
"subscription": {
"id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5",
"date_created": "2024-06-05T10:13:31+00:00",
"label": "example-inference",
"api_key": "ABCD7PQSLLGS6XDHQY4CMHUL55T5YO63EFGH"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-inference",
"description": "Get information about a Serverless Inference subscription.",
"security": [
{
"API Key": []
}
]
},
"patch": {
"summary": "Update Serverless Inference",
"tags": [
"serverless-inference"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/inference/{inference-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"example-inference-updated\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"subscription": {
"$ref": "#/components/schemas/inference-subscription"
}
}
},
"examples": {
"inference-subscription": {
"value": {
"subscription": {
"id": "999c4ed0-f2e4-4f2a-a951-de358ceb9ab5",
"date_created": "2024-06-05T10:13:31+00:00",
"label": "example-inference-updated",
"api_key": "ABCD7PQSLLGS6XDHQY4CMHUL55T5YO63EFGH"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "update-inference",
"description": "Update information for a Serverless Inference subscription.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "A user-supplied label for this Serverless Inference subscription."
}
}
},
"examples": {
"request": {
"value": {
"label": "example-inference-udpated"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete Serverless Inference",
"tags": [
"serverless-inference"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/inference/{inference-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-inference",
"description": "Delete a Serverless Inference subscription.",
"security": [
{
"API Key": []
}
]
}
},
"/inference/{inference-id}/api-key": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "inference-id",
"in": "path",
"required": true,
"description": "The [Inference ID](#operation/list-inference)."
}
],
"patch": {
"summary": "Regenerate Serverless Inference API Key",
"tags": [
"serverless-inference"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/inference/{inference-id}/api-key\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"202": {
"description": "Accepted"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "regenerate-inference-api-key",
"description": "Regenerate the API Key for a Serverless Inference subscription.",
"security": [
{
"API Key": []
}
]
}
},
"/inference/{inference-id}/usage": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "inference-id",
"in": "path",
"required": true,
"description": "The [Inference ID](#operation/list-inference)."
}
],
"get": {
"summary": "Get Serverless Inference Usage Information",
"tags": [
"serverless-inference"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/inference/{inference-id}/usage\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"usage": {
"$ref": "#/components/schemas/inference-usage"
}
}
},
"examples": {
"inference-usage": {
"value": {
"usage": {
"chat_by_model": {
"current_month": [
{
"model": "MiniMaxAI/MiniMax-M2.5",
"tokens": 1000000,
"input_tokens": 500000,
"output_price": 120,
"input_price": 30
},
{
"model": "moonshotai/Kimi-K2.5",
"tokens": 1234567,
"input_tokens": 500000,
"output_price": 275,
"input_price": 55
}
],
"previous_month": [
{
"model": "moonshotai/Kimi-K2.5",
"tokens": 6543210,
"input_tokens": 12425821,
"output_price": 275,
"input_price": 55
}
]
},
"audio": {
"tts_characters": 45678,
"tts_sm_characters": 23456
},
"image": {
"megapixels": 21.35,
"sm_megapixels": 6.55
},
"chat": {
"completion_tokens": 56782401,
"cost": 156.16,
"input_tokens": 10380472,
"input_cost": 5.71,
"current_tokens": null,
"monthly_allotment": null,
"overage": null
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-inference-usage",
"description": "Get usage information for a Serverless Inference subscription.",
"security": [
{
"API Key": []
}
]
}
},
"/marketplace/apps": {
"get": {
"summary": "List Marketplace Apps",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"apps": {
"type": "array",
"items": {
"$ref": "#/components/schemas/marketplace-app"
}
}
}
},
"examples": {
"apps": {
"value": {
"apps": [
{
"id": 1001,
"name": "My Application",
"name_id_format": "my_application",
"description": "A short description of my application",
"os": "Windows",
"repo_url": "https://github.com/myapplication",
"categories": [
14,
15
],
"support_email": "support@myapplication.com",
"support_url": "https://www.myapplicatiom.com/support",
"website_url": "https://www.myapplicatiom.com",
"x_handle": "myapplication",
"slack_url": "https://www.myapplication.com/slack",
"stackoverflow_url": "https://stackoverflow.com/questions/tagged/my_application",
"discord_invite_url": "https://discord.gg/my_application",
"public": true,
"public_url_slug": "my_application",
"deployable_on_vps": true,
"deployable_on_bm": false,
"deployable_on_gpu_compute": false,
"deployable_on_gpu_workstation": false,
"min_cpu_core": 1,
"min_mem_mb": 1000,
"icon_light": "https://www.myapplicatiom.com/icon-light.png",
"icon_dark": "https://www.myapplicatiom.com/icon-dark.png",
"readme": "**README markdown for My Application**",
"instructions": "**Usage instructions markdown for My Application**"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-marketplace-apps",
"description": "List all Marketplace Apps owned by the authenticated vendor account.",
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Marketplace App",
"tags": [
"marketplace"
],
"description": "Create a new marketplace app for the authenticated vendor account.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\": \"My App\",\n \"name_id_format\": \"my-app\",\n \"description\": \"Description of my app\",\n \"os\": \"Linux\",\n \"repo_url\": \"https://github.com/example/app\",\n \"support_url\": \"https://example.com/support\",\n \"support_email\": \"support@example.com\",\n \"public_url_slug\": \"my-app\",\n \"deployable_on_vps\": true,\n \"deployable_on_bm\": true,\n \"deployable_on_gpu_compute\": false,\n \"deployable_on_gpu_workstation\": false,\n \"min_cpu_core\": 1,\n \"min_mem_mb\": 1024,\n \"category_ids\": [11, 16],\n \"readme\": \"# My App\\n\\nDescription here.\"\n }'"
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/create-app-request"
},
"examples": {
"create-app": {
"value": {
"name": "My App",
"name_id_format": "my-app",
"description": "Description of my app",
"os": "Linux",
"repo_url": "https://github.com/example/app",
"support_url": "https://example.com/support",
"support_email": "support@example.com",
"public_url_slug": "my-app",
"deployable_on_vps": true,
"deployable_on_bm": true,
"deployable_on_gpu_compute": false,
"deployable_on_gpu_workstation": false,
"min_cpu_core": 1,
"min_mem_mb": 1024,
"category_ids": [
11,
16
],
"readme": "# My App\n\nDescription here."
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/create-app-response"
},
"examples": {
"create-app": {
"value": {
"app": {
"id": 42
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"409": {
"description": "Conflict"
},
"422": {
"description": "Unprocessable Entity"
},
"500": {
"description": "Internal Server Error"
}
},
"operationId": "create-marketplace-app",
"security": [
{
"API Key": []
}
]
}
},
"/marketplace/apps/{app-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "app-id",
"in": "path",
"required": true,
"description": "The [Marketplace App ID](#operation/list-marketplace-apps)."
}
],
"get": {
"summary": "Get Application",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"app": {
"type": "object",
"$ref": "#/components/schemas/marketplace-app"
}
}
},
"examples": {
"app": {
"value": {
"app": {
"id": 1001,
"name": "My Application",
"name_id_format": "my_application",
"description": "A short description of my application",
"os": "Windows",
"repo_url": "https://github.com/myapplication",
"categories": [
14,
15
],
"support_email": "support@myapplication.com",
"support_url": "https://www.myapplicatiom.com/support",
"website_url": "https://www.myapplicatiom.com",
"x_handle": "myapplication",
"slack_url": "https://www.myapplication.com/slack",
"stackoverflow_url": "https://stackoverflow.com/questions/tagged/my_application",
"discord_invite_url": "https://discord.gg/my_application",
"public": true,
"public_url_slug": "my_application",
"deployable_on_vps": true,
"deployable_on_bm": false,
"deployable_on_gpu_compute": false,
"deployable_on_gpu_workstation": false,
"min_cpu_core": 1,
"min_mem_mb": 1000,
"icon_light": "https://www.myapplicatiom.com/icon-light.png",
"icon_dark": "https://www.myapplicatiom.com/icon-dark.png",
"readme": "**README markdown for My Application**",
"instructions": "**Usage instructions markdown for My Application**"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-marketplace-app",
"description": "Get details for a specific Marketplace App.",
"security": [
{
"API Key": []
}
]
},
"patch": {
"summary": "Update Marketplace App",
"tags": [
"marketplace"
],
"description": "Update a marketplace app for the authenticated vendor account. At least one field must be provided.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\": \"My Updated App\",\n \"description\": \"Updated description of my app\"\n }'"
}
],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/update-app-request"
},
"examples": {
"update-app": {
"value": {
"name": "My Updated App",
"name_id_format": "my-updated-app",
"description": "Updated description of my app",
"os": "Linux",
"repo_url": "https://github.com/example/app",
"readme": "# My Updated App\n\nUpdated description here."
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"app": {
"type": "object",
"$ref": "#/components/schemas/marketplace-app"
}
}
},
"examples": {
"update-app": {
"value": {
"app": {
"id": 1001,
"name": "My Updated App",
"name_id_format": "my-updated-app",
"description": "Updated description of my app",
"os": "Ubuntu 22.04",
"repo_url": "https://github.com/example/app",
"public": true,
"categories": [
5
],
"deployable_on_bm": true,
"deployable_on_gpu_compute": false,
"deployable_on_gpu_workstation": false,
"deployable_on_vps": true,
"public_url_slug": "my-updated-app",
"min_cpu_core": 1,
"min_mem_mb": 1024,
"support_url": "https://example.com/support",
"support_email": "support@example.com",
"slack_url": "",
"stackoverflow_url": "",
"discord_invite_url": "",
"x_handle": "",
"website_url": "https://example.com",
"icon_light": "https://example.com/icon-light.png",
"icon_dark": "https://example.com/icon-dark.png",
"readme": "# My Updated App\n\nUpdated description here.",
"instructions": "## Getting Started\n\n1. Deploy the app..."
}
}
}
}
}
}
},
"400": {
"description": "Bad Request. Returned when no updatable fields are provided."
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
},
"423": {
"description": "Locked. Returned when attempting to update `public_url_slug` while the app is under public review."
},
"500": {
"description": "Internal Server Error"
}
},
"operationId": "update-marketplace-app",
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Marketplace App",
"tags": [
"marketplace"
],
"operationId": "delete-marketplace-app",
"description": "Delete a Marketplace App.",
"security": [
{
"API Key": []
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/marketplace/apps/{app-id}/visibility": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "app-id",
"in": "path",
"required": true,
"description": "The [Marketplace App ID](#operation/list-marketplace-apps)."
}
],
"patch": {
"summary": "Update Marketplace App Visibility",
"tags": [
"marketplace"
],
"description": "Update the visibility of a marketplace app. Setting `public` to `true` submits the app for public review — the app will not be publicly visible until an administrator approves it. The app must have at least one published image, icons, description, readme, instructions, and a support email or URL to be submitted for review. While pending review, this value cannot be changed.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/visibility\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"public\": true\n }'"
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/update-app-visibility-request"
},
"examples": {
"update-app-visibility": {
"value": {
"public": true
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"app": {
"type": "object",
"$ref": "#/components/schemas/marketplace-app"
}
}
},
"examples": {
"update-app-visibility": {
"value": {
"app": {
"id": 1001,
"name": "My Application",
"name_id_format": "my_application",
"description": "A short description of my application",
"os": "Ubuntu 22.04",
"repo_url": "https://github.com/myapplication",
"categories": [
14,
15
],
"support_email": "support@myapplication.com",
"support_url": "https://www.myapplication.com/support",
"website_url": "https://www.myapplication.com",
"x_handle": "myapplication",
"slack_url": "https://www.myapplication.com/slack",
"stackoverflow_url": "https://stackoverflow.com/questions/tagged/my_application",
"discord_invite_url": "https://discord.gg/my_application",
"public": false,
"public_url_slug": "my_application",
"deployable_on_vps": true,
"deployable_on_bm": false,
"deployable_on_gpu_compute": false,
"deployable_on_gpu_workstation": false,
"min_cpu_core": 1,
"min_mem_mb": 1000,
"icon_light": "https://www.myapplication.com/icon-light.png",
"icon_dark": "https://www.myapplication.com/icon-dark.png",
"readme": "**README markdown for My Application**",
"instructions": "**Usage instructions markdown for My Application**"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"409": {
"description": "Conflict. Returned when setting `public` to `true` on an app that is already public."
},
"422": {
"description": "Unprocessable Entity"
},
"500": {
"description": "Internal Server Error"
}
},
"operationId": "update-marketplace-app-visibility",
"security": [
{
"API Key": []
}
]
}
},
"/marketplace/apps/{app-id}/icons": {
"put": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "app-id",
"in": "path",
"required": true,
"description": "The application's App ID."
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"b64_image": {
"type": "string",
"description": "A base64 string representation of an image for upload.\n * Minimum length and width is 250px.\n * The width must be between 56% and 180% of the height. Please try and keep images as close to a 1:1 aspect ratio as possible.\n * The image must be 6MB or less.\n * Acceptable image types:\n * `jpeg`\n * `png`\n * `gif`\n * `webp`\n * `bmp`"
},
"theme": {
"type": "string",
"description": "The icon theme:\n * `light_mode` (default)\n * `dark_mode`"
}
},
"required": [
"b64_image"
]
},
"examples": {
"example": {
"value": {
"b64_image": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII"
}
}
}
}
}
},
"summary": "Create Marketplace App Icon",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/icons\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"b64_image\": \"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII\"\n }'"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"image_url": {
"type": "string",
"description": "The URL of the uploaded image."
}
}
},
"examples": {
"message": {
"value": {
"image_url": "http://www.vultr.com/marketplace-assets/vendor-app-3456789012.png"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Content"
}
},
"operationId": "put-marketplace-app-icon",
"description": "Add or replace an Icon for a Marketplace App.",
"security": [
{
"API Key": []
}
]
}
},
"/marketplace/apps/readme/images": {
"post": {
"summary": "Create a Marketplace App README image",
"tags": [
"marketplace"
],
"operationId": "create-marketplace-app-readme-image",
"description": "Create an image for use within a Marketplace App README.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"image_b64": {
"type": "string",
"description": "A base64 encoded image."
}
},
"required": [
"image_b64"
]
},
"examples": {
"example": {
"value": {
"image_b64": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII"
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"image_url": {
"type": "string",
"description": "The URL of the uploaded image. For use in a Marketplace App's README."
}
}
},
"examples": {
"example": {
"value": {
"image_url": "https://www.vultr.com/marketplace-assets/VENDORNAME-readme_image-81a55c1d-d803-40b4-9a67-d50eaae88395-1781913270.png"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"422": {
"description": "Unprocessable Content"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/readme/images\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"image_b64\" : \"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII\"\n }'"
}
]
}
},
"/marketplace/apps/{app-id}/manage-variables": {
"get": {
"summary": "List Marketplace App Variables",
"tags": [
"marketplace"
],
"operationId": "list-marketplace-app-manage-variable",
"description": "List all Marketplace App variables for a Marketplace App.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "int"
},
"name": "app-id",
"in": "path",
"required": true,
"description": "The marketplace application ID."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"app_variables": {
"type": "array",
"items": {
"$ref": "#/components/schemas/marketplace_app_manage_variable"
}
}
}
},
"examples": {
"response": {
"value": {
"app_variables": [
{
"id": 121,
"app_id": 468,
"name": "server_name",
"label": "Server Name",
"type": "user_supplied",
"password_length": null,
"input_type": "text_field",
"input_required": true
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/manage-variables\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"post": {
"summary": "Create Marketplace App Variable",
"tags": [
"marketplace"
],
"operationId": "create-marketplace-app-manage-variable",
"description": "Add a new variable to a Marketplace App.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "int"
},
"name": "app-id",
"in": "path",
"required": true,
"description": "The marketplace application ID."
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The variable name. Must be lowercase without spaces."
},
"label": {
"type": "string",
"description": "A short description of the variable."
},
"type": {
"type": "string",
"description": "The type of variable:\n* `password`\n* `user_supplied`"
},
"password_length": {
"type": "int",
"description": "The length of the password. Must be between 8 and 50.
Required if `type` is `password`."
},
"input_type": {
"type": "string",
"description": "The type of user input:\n* `text_field`\n* `textarea`\n\nRequired if `type` is `user_supplied`"
},
"input_required": {
"type": "bool",
"description": "Is user input required.
Required if `type` is `user_supplied`"
}
},
"required": [
"name",
"label",
"type"
]
},
"examples": {
"example": {
"value": {
"name": "server_name",
"label": "Server Name",
"type": "user_supplied",
"input_type": "text_field",
"input_required": true
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"app_variable": {
"type": "object",
"$ref": "#/components/schemas/marketplace_app_manage_variable"
}
}
},
"examples": {
"example": {
"value": {
"app_variable": {
"id": 121,
"app_id": 468,
"name": "server_name",
"label": "Server Name",
"type": "user_supplied",
"password_length": null,
"input_type": "text_field",
"input_required": true
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/manage-variables\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"name\" : \"server_name\",\n \"label\" : \"Server Name\",\n \"type\" : \"user_supplied\",\n \"input_type\" : \"text_field\",\n \"input_required\" : true\n }'"
}
]
}
},
"/marketplace/apps/{app-id}/manage-variables/{variable-id}": {
"patch": {
"summary": "Update Marketplace App variable.",
"tags": [
"marketplace"
],
"operationId": "update-marketplace-app-manage-variable",
"description": "Update an existing Marketplace App Variable.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "int"
},
"name": "app-id",
"in": "path",
"required": true,
"description": "The marketplace application ID."
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "A short description of the variable."
}
},
"required": [
"label"
]
},
"examples": {
"example": {
"value": {
"label": "Public Server Name"
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"app_variable": {
"type": "object",
"$ref": "#/components/schemas/marketplace_app_manage_variable"
}
}
},
"examples": {
"example": {
"value": {
"app_variable": {
"id": 121,
"app_id": 468,
"name": "server_name",
"label": "Public Server Name",
"type": "user_supplied",
"password_length": null,
"input_type": "text_field",
"input_required": true
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/manage-variables/{variable-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"label\" : \"Public Server Name\"\n }'"
}
]
},
"delete": {
"summary": "Delete Marketplace App Variable",
"tags": [
"marketplace"
],
"operationId": "delete-marketplace-app-manage-variable",
"description": "Delete a Marketplace App variable.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "int"
},
"name": "app-id",
"in": "path",
"required": true,
"description": "The marketplace application ID."
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/manage-variables/{variable-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/marketplace/apps/{app-id}/images": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "app-id",
"in": "path",
"required": true,
"description": "The application's App ID."
}
],
"get": {
"summary": "List Marketplace App Gallery Images",
"tags": [
"marketplace"
],
"operationId": "list-marketplace-app-gallery-images",
"description": "List all gallery images for a Marketplace App.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "int"
},
"name": "app-id",
"in": "path",
"required": true,
"description": "The marketplace application ID."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"marketplace_app_images": {
"type": "array",
"items": {
"$ref": "#/components/schemas/marketplace_app_gallery_image"
}
}
}
},
"examples": {
"response": {
"value": {
"marketplace_app_images": [
{
"id": 121,
"main_image": false,
"url": "http:\\/\\/www.vultr.com\\/marketplace-assets\\/vendor-gallery_image-1781896871.png"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Content"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/images\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"post": {
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"b64_image": {
"type": "string",
"description": "A base64 string representation of an image for upload.\n * The width must be between 133% and 187% of the height. Please try and keep images as close to an 8:5 aspect ratio as possible.\n * The image must be 6MB or less.\n * Acceptable image types:\n * `jpeg`\n * `png`\n * `gif`\n * `webp`\n * `bmp`"
}
},
"required": [
"b64_image"
]
}
}
}
},
"summary": "Add Image to Marketplace App",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/images\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -d '{\n \"b64_image\": \"iVBORw0KGgoAAAANSUhEUgAAAAEAAAABAQMAAAAl21bKAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAAApJREFUCNdjYAAAAAIAAeIhvDMAAAAASUVORK5CYII\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The image id associated with the uploaded image."
},
"app_id": {
"type": "string",
"description": "The marketplace vendor app id."
},
"filename": {
"type": "string",
"description": "The image filename associated with the uploaded image."
},
"url": {
"type": "string",
"description": "The stored image url associated with the uploaded image."
}
}
},
"examples": {
"message": {
"value": {
"id": 150,
"app_id": "1234",
"filename": "testvendor-gallery_image-12345ac-6789-01c2-3c4c-56a789bf012a-3456789012.png",
"url": "http://www.vultr.com/marketplace-assets-dev/testvendor-gallery_image-12345ac-6789-01c2-3c4c-56a789bf012a-3456789012.png"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "add-marketplace-image",
"description": "Upload an image to a marketplace app.",
"security": [
{
"API Key": []
}
]
}
},
"/marketplace/apps/{app-id}/images/{image-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "app-id",
"in": "path",
"required": true,
"description": "The application's App ID."
},
{
"schema": {
"type": "string"
},
"name": "image-id",
"in": "path",
"required": true,
"description": "An Image ID associated with a marketplace app."
}
],
"patch": {
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"set_as_main": {
"type": "bool",
"description": "A true/false flag that sets the image as the main app image."
}
},
"required": [
"set_as_main"
]
}
}
}
},
"summary": "Update Marketplace App Gallery Image",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/images/{image-id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -d '{\n \"set_as_main\": true\n }'"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The image id associated with the uploaded image."
},
"app_id": {
"type": "string",
"description": "The marketplace vendor app id."
},
"set_as_main": {
"type": "bool",
"description": "A bool flag that sets the image as the main app image."
}
}
},
"examples": {
"message": {
"value": {
"id": 150,
"app_id": "1234",
"set_as_main": true
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-marketplace-image",
"description": "Update an image attached to a marketplace app.",
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Marketplace App Gallery Image",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/images/{image-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-marketplace-image",
"description": "Delete an image attached to a marketplace app.",
"security": [
{
"API Key": []
}
]
}
},
"/marketplace/apps/{app-id}/builds": {
"parameters": [
{
"schema": {
"type": "integer"
},
"name": "app-id",
"in": "path",
"required": true,
"description": "The application's App ID."
}
],
"get": {
"summary": "List Marketplace App Builds",
"tags": [
"marketplace"
],
"operationId": "list-marketplace-app-builds",
"description": "List all builds for a Marketplace App.",
"security": [
{
"API Key": []
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"marketplace_app_builds": {
"type": "array",
"items": {
"$ref": "#/components/schemas/marketplace_app_build"
}
}
}
},
"examples": {
"response": {
"value": {
"marketplace_app_builds": [
{
"id": 10000,
"version": "v1.0.0",
"live": true,
"date_created": "2026-01-06T06:25:32+00:00",
"use_vendor_data": false,
"installation_script": "",
"OSID": 0,
"snapshot_id": "f7c39051-2e58-4031-a218-894629beae4a",
"snapshot_description": "Marketplace snapshot v1.0.0"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Content"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/builds\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"post": {
"summary": "Create Marketplace App Build Image",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"label": "Curl Req. 1",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/builds\" \\\n-X POST \\\n-H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n \"use_vendor_data\": true,\n \"installation_script\": \"touch /test.txt\\nexit 0\",\n \"OSID\": 123\n}'"
},
{
"lang": "Curl",
"label": "Curl Req. 2",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/builds\" \\\n-X POST \\\n-H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n \"use_vendor_data\": false,\n \"snapshot_id\": \"1a2b3456-7c89-0123-0000-000000000000\"\n}'"
}
],
"operationId": "create-marketplace-app-build",
"description": "Create a new marketplace app build image. When `use_vendor_data` is true, provide `installation_script` and `OSID`. When `use_vendor_data` is false, provide `snapshot_id`.",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"use_vendor_data"
],
"properties": {
"use_vendor_data": {
"type": "boolean",
"description": "If true, use `installation_script` and `OSID` to build the image. If false, use `snapshot_id` to build from an existing snapshot."
},
"installation_script": {
"type": "string",
"description": "The installation script to execute during image build. Required when `use_vendor_data` is true."
},
"OSID": {
"type": "integer",
"description": "The operating system ID for the build image. Required when `use_vendor_data` is true."
},
"snapshot_id": {
"type": "string",
"description": "The [Snapshot id](#operation/list-snapshots) to build the image from. Required when `use_vendor_data` is false."
}
}
},
"examples": {
"vendor-data-example": {
"summary": "Build from vendor data (script + OS)",
"value": {
"use_vendor_data": true,
"installation_script": "touch /test.txt\nexit 0",
"OSID": 123
}
},
"snapshot-example": {
"summary": "Build from existing snapshot",
"value": {
"use_vendor_data": false,
"snapshot_id": "1a2b3456-7c89-0123-0000-000000000000"
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "A static confirmation string returned when the request succeeds"
},
"marketplace_image_id": {
"type": "integer",
"description": "The id of the marketplace build image"
}
}
},
"examples": {
"success-example": {
"summary": "Successful build creation",
"value": {
"message": "Success",
"marketplace_image_id": 12345
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"500": {
"description": "Internal Error"
}
}
}
},
"/marketplace/apps/{app-id}/builds/{build-id}": {
"parameters": [
{
"schema": {
"type": "integer"
},
"name": "app-id",
"in": "path",
"required": true,
"description": "The application's App ID."
},
{
"schema": {
"type": "integer"
},
"name": "build-id",
"in": "path",
"required": true,
"description": "The application's Build Image ID."
}
],
"patch": {
"summary": "Update Marketplace App Build Image",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/builds/{build-id}\" \\\n-X PATCH \\\n-H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n-H \"Content-Type: application/json\" \\\n-d '{\n \"installation_script\": \"touch /test.txt\\nexit 0\",\n \"OSID\": 123\n}'"
}
],
"operationId": "update-marketplace-app-build",
"description": "Update a marketplace app build image.",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"installation_script": {
"type": "string",
"description": "The installation script to execute during image build."
},
"OSID": {
"type": "integer",
"description": "The operating system ID for the build image."
},
"version": {
"type": "string",
"description": "The build version."
}
}
},
"examples": {
"vendor-data-example": {
"summary": "Update Build Image",
"value": {
"installation_script": "touch /test.txt\nexit 0",
"OSID": 123
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"marketplace_app_build": {
"$ref": "#/components/schemas/marketplace_app_build"
}
}
},
"examples": {
"response": {
"value": {
"marketplace_app_build": {
"id": 10000,
"version": "v1.0.0",
"live": true,
"date_created": "2026-01-06T06:25:32+00:00",
"use_vendor_data": true,
"installation_script": "touch /test.txt\nexit 0",
"OSID": 123,
"snapshot_id": "",
"snapshot_description": ""
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"500": {
"description": "Internal Error"
}
}
},
"delete": {
"summary": "Delete Marketplace App Build Image",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/builds/{build-id}\" \\\n-X DELETE \\\n-H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"operationId": "delete-marketplace-app-build",
"description": "Delete a marketplace app build image.",
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"500": {
"description": "Internal Error"
}
}
}
},
"/marketplace/apps/{app-id}/builds/{build-id}/publish": {
"parameters": [
{
"schema": {
"type": "integer"
},
"name": "app-id",
"in": "path",
"required": true,
"description": "The application's App ID."
},
{
"schema": {
"type": "integer"
},
"name": "build-id",
"in": "path",
"required": true,
"description": "The application's Build Image ID."
}
],
"post": {
"summary": "Publish Marketplace App Build Image",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/builds/{build-id}/publish\" \\\n-X POST \\\n-H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"operationId": "publish-marketplace-app-build",
"description": "Publish a marketplace app build image.",
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"500": {
"description": "Internal Error"
}
}
}
},
"/marketplace/apps/{app-id}/builds/{build-id}/unpublish": {
"parameters": [
{
"schema": {
"type": "integer"
},
"name": "app-id",
"in": "path",
"required": true,
"description": "The application's App ID."
},
{
"schema": {
"type": "integer"
},
"name": "build-id",
"in": "path",
"required": true,
"description": "The application's Build Image ID."
}
],
"post": {
"summary": "Unpublish Marketplace App Build Image",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{app-id}/builds/{build-id}/unpublish\" \\\n-X POST \\\n-H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"operationId": "unpublish-marketplace-app-build",
"description": "Unpublish a marketplace app build image.",
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"500": {
"description": "Internal Error"
}
}
}
},
"/marketplace/apps/categories": {
"get": {
"summary": "List Marketplace App Categories",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/categories\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"app_categories": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The Marketplace App category ID."
},
"name": {
"type": "string",
"description": "The name of the Marketplace App category."
}
}
}
}
}
},
"examples": {
"example": {
"value": {
"app_categories": [
{
"id": 1,
"name": "Web Server"
},
{
"id": 2,
"name": "Database"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"operationId": "list-marketplace-apps-categories",
"description": "List all Marketplace App Categories.",
"security": [
{
"API Key": []
}
]
}
},
"/marketplace/apps/os": {
"get": {
"summary": "List Marketplace Operating Systems",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/os\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"os": {
"type": "array",
"items": {
"$ref": "#/components/schemas/os"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"os": [
{
"id": 127,
"name": "CentOS 6 x64",
"arch": "x64",
"family": "centos"
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"422": {
"description": "Unprocessable Content"
},
"500": {
"description": "Internal Error"
}
},
"operationId": "list-marketplace-apps-os",
"description": "List all supported Marketplace operating systems.",
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500.\n"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"security": []
}
},
"/marketplace/vendor": {
"get": {
"summary": "Get marketplace vendor settings.",
"tags": [
"marketplace"
],
"operationId": "get-marketplace-vendor",
"description": "Get the marketplace vendor settings for this account.",
"security": [
{
"API Key": []
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"vendor_name": {
"type": "string",
"description": "The name of the vendor."
},
"x_handle": {
"type": "string",
"description": "The username of the vendor's X account."
},
"website_url": {
"type": "string",
"description": "The url of the vendor's website."
},
"git_url": {
"type": "string",
"description": "The url of the vendor's github account."
},
"slack_url": {
"type": "string",
"description": "The url of the vendor's slack instance."
}
}
},
"examples": {
"response": {
"value": {
"vendor": {
"vendor_name": "testVendor",
"x_handle": "mycompany",
"website_url": "https://example.com",
"git_url": "https://github.com/example",
"slack_url": "https://example.slack.com"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"422": {
"description": "Unprocessable Content"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/vendor\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"post": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vendor_name",
"in": "path",
"required": true,
"description": "The name of the vendor."
},
{
"schema": {
"type": "string"
},
"name": "x_handle",
"in": "path",
"required": false,
"description": "The username of the vendor's X account."
},
{
"schema": {
"type": "string"
},
"name": "website_url",
"in": "path",
"required": false,
"description": "The url of the vendor's website."
},
{
"schema": {
"type": "string"
},
"name": "git_url",
"in": "path",
"required": false,
"description": "The url of the vendor's github account."
},
{
"schema": {
"type": "string"
},
"name": "slack_url",
"in": "path",
"required": false,
"description": "The url of the vendor's slack instance."
}
],
"summary": "Create Marketplace Vendor User",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/vendor\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"vendor_name\": \"testVendor\",\n \"x_handle\": \"mycompany\",\n \"website_url\": \"https://example.com\",\n \"git_url\": \"https://github.com/example\",\n \"slack_url\": \"https://example.slack.com\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"marketplace": {
"type": "array",
"items": {
"$ref": "#/components/schemas/marketplace-vendor"
}
}
}
},
"examples": {
"vendor": {
"value": {
"message": "Vendor settings created."
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"operationId": "add-marketplace-vendor-settings",
"description": "Create a marketplace vendor user for the current vendor account. Requires marketplace access, which can be found here - https://www.vultr.com/marketplace/become-a-verified-vendor/",
"security": [
{
"API Key": []
}
]
},
"patch": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "vendor_name",
"in": "path",
"required": false,
"description": "The name of the vendor."
},
{
"schema": {
"type": "string"
},
"name": "x_handle",
"in": "path",
"required": false,
"description": "The username of the vendor's X account."
},
{
"schema": {
"type": "string"
},
"name": "website_url",
"in": "path",
"required": false,
"description": "The url of the vendor's website."
},
{
"schema": {
"type": "string"
},
"name": "git_url",
"in": "path",
"required": false,
"description": "The url of the vendor's github account."
},
{
"schema": {
"type": "string"
},
"name": "slack_url",
"in": "path",
"required": false,
"description": "The url of the vendor's slack instance."
}
],
"summary": "Update Marketplace Vendor User",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/vendor\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"vendor_name\": \"testVendor\",\n \"x_handle\": \"mycompany\",\n \"website_url\": \"https://example.com\",\n \"git_url\": \"https://github.com/example\",\n \"slack_url\": \"https://example.slack.com\"\n }'"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"marketplace": {
"type": "array",
"items": {
"$ref": "#/components/schemas/marketplace-vendor-update"
}
}
}
},
"examples": {
"vendor": {
"value": {
"message": "Vendor settings updated."
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"operationId": "update-marketplace-vendor-settings",
"description": "Update marketplace vendor user settings for the current vendor account.",
"security": [
{
"API Key": []
}
]
}
},
"/marketplace/apps/{image-id}/variables": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "image-id",
"in": "path",
"required": true,
"description": "The application's [Image ID](#operation/list-applications)."
}
],
"get": {
"summary": "List Marketplace App Variables",
"tags": [
"marketplace"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/marketplace/apps/{image-id}/variables\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"variables": {
"type": "array",
"items": {
"$ref": "#/components/schemas/app-variable"
}
}
}
},
"examples": {
"variables": {
"value": {
"variables": [
{
"name": "some_required_field",
"description": "This is an example required variable field for this marketplace app.",
"required": true
},
{
"name": "some_optional_field",
"description": "This is an example optional variable field for this marketplace app.",
"required": false
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-marketplace-app-variables",
"description": "List all user-supplied variables for a Marketplace App.
**Deprecated**: Use [List Application Variables](#operation/list-app-variables) instead.",
"security": [
{
"API Key": []
}
],
"deprecated": true
}
},
"/registries": {
"get": {
"summary": "List Container Registries",
"tags": [
"Container Registry"
],
"description": "List All Container Registry Subscriptions for this account",
"operationId": "list-registries",
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 10 and Max is 500.\n"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"security": [
{
"API Key": []
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"registries": {
"type": "array",
"items": {
"$ref": "#/components/schemas/registry"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registries\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/registry": {
"post": {
"summary": "Create Container Registry",
"tags": [
"Container Registry"
],
"description": "Create a new Container Registry Subscription",
"operationId": "create-registry",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"$ref": "#/components/schemas/registry/properties/name"
},
"public": {
"$ref": "#/components/schemas/registry/properties/public"
},
"region": {
"type": "string",
"description": "The name of the region you'd like to deploy this Registry in. Can get list of regions from /registry/region/list endpoint i.e. sjc"
},
"plan": {
"type": "string",
"description": "The key of the plan you'd like to select which dictates how much storage you're allocated and the monthly cost. Can get list of plans from /plan/list endpoint i.e. start_up"
}
},
"required": [
"name",
"public",
"region",
"plan"
]
},
"examples": {
"example": {
"value": {
"name": "charizard",
"public": false,
"region": "sjc",
"plan": "business"
}
}
}
}
}
},
"responses": {
"201": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/registry"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registries\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"sjc\",\n \"name\" : \"charizard\",\n \"plan\" : \"business\",\n \"public\" : false\n }'"
}
]
}
},
"/registry/{registry-id}": {
"get": {
"summary": "Read Container Registry",
"tags": [
"Container Registry"
],
"description": "Get a single Container Registry Subscription",
"operationId": "read-registry",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/registry"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"put": {
"summary": "Update Container Registry",
"tags": [
"Container Registry"
],
"description": "Update a Container Registry Subscription",
"operationId": "update-registry",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"public": {
"$ref": "#/components/schemas/registry/properties/public"
},
"plan": {
"type": "string",
"description": "The key of the plan you'd like to upgrade to which dictates how much storage you're allocated and the monthly cost. Can get list of plans from /plan/list endpoint i.e. business"
}
}
},
"examples": {
"example": {
"value": {
"public": true,
"plan": "business"
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/registry"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"sjc\",\n \"name\" : \"charizard\",\n \"plan\" : \"business\",\n \"public\" : false\n }'"
}
]
},
"delete": {
"summary": "Delete Container Registry",
"tags": [
"Container Registry"
],
"description": "Deletes a Container Registry Subscription",
"operationId": "delete-registry",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
}
],
"responses": {
"204": {
"description": "No Content - Successfully Deleted"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/registry/{registry-id}/replications": {
"get": {
"summary": "List Replication Policies",
"tags": [
"Container Registry"
],
"description": "List All Replication Policies in a Container Registry Subscription",
"operationId": "list-replications",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 10 and Max is 100.\n"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"replications": {
"type": "array",
"items": {
"$ref": "#/components/schemas/replication"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/replications\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/registry/{registry-id}/replication": {
"post": {
"summary": "Create Replication Policy",
"tags": [
"Container Registry"
],
"description": "Create a new Replication Policy for a Container Registry Subscription",
"operationId": "create-replication",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"region": {
"type": "string",
"description": "The name of the region you'd like to replicate this Container Registry in. Get a list of regions from /registry/region/list endpoint, i.e. sjc"
}
},
"required": [
"region"
]
},
"examples": {
"example": {
"value": {
"region": "sjc"
}
}
}
}
}
},
"responses": {
"201": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/replication"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/replication\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"sjc\"\n }'"
}
]
}
},
"/registry/{registry-id}/replication/{region}": {
"get": {
"summary": "Read Replication Policy",
"tags": [
"Container Registry"
],
"description": "Get a single Replication Policy in a Container Registry Subscription",
"operationId": "read-replication",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/vcr_region"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/replication"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/replication/{region}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"delete": {
"summary": "Delete Replication Policy",
"tags": [
"Container Registry"
],
"description": "Deletes a Replication Policy from a Container Registry Subscription",
"operationId": "delete-replication",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/vcr_region"
}
],
"responses": {
"204": {
"description": "No Content - Successfully Deleted"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/replication/{region}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/registry/{registry-id}/retention/schedule": {
"put": {
"summary": "Update Retention Policy Schedule",
"tags": [
"Container Registry"
],
"description": "Update when a Retention Policy is scheduled to run in a Container Registry Subscription",
"operationId": "update-retention-schedule",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"cron": {
"type": "string",
"description": "The schedule in which the Retention Policy is triggered\n\nPossible values:\n\n* 'hourly'\n* 'daily'\n* 'weekly'\n* 'monthly'"
}
},
"required": [
"cron"
]
},
"examples": {
"request": {
"value": {
"cron": "monthly"
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schedule": {
"type": "string",
"description": "The schedule in which the Retention Policy is triggered\n\nPossible values:\n\n* 'hourly'\n* 'daily'\n* 'weekly'\n* 'monthly'"
},
"next_scheduled_time": {
"type": "string",
"description": "The next scheduled time the Retention Policy will be triggered"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/retention/schedule\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"cron\" : \"monthly\"\n }'"
}
]
}
},
"/registry/{registry-id}/retention/executions": {
"post": {
"summary": "Trigger Retention Policy Execution",
"tags": [
"Container Registry"
],
"description": "Manually initiate the execution of a Retention Policy in a Container Registry Subscription",
"operationId": "execute-retention-policy",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"dry_run": {
"type": "boolean",
"description": "If true, simulates the retention policy execution without deleting any artifacts"
}
},
"required": [
"dry_run"
]
},
"examples": {
"request": {
"value": {
"dry_run": true
}
}
}
}
}
},
"responses": {
"201": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"dry_run": {
"type": "boolean",
"description": "If true, simulates the retention policy execution without deleting any artifacts"
},
"end_time": {
"type": "string",
"description": "The end time of the Retention Policy execution"
},
"start_time": {
"type": "string",
"description": "The start time of the Retention Policy execution"
},
"trigger": {
"type": "string",
"description": "Trigger type of the Retention Policy execution\n\nFor example:\n\n* Manual\n* Schedule"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/retention/executions\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"dry_run\": true\n }'"
}
]
}
},
"/registry/{registry-id}/retention/rules": {
"get": {
"summary": "List Retention Rules",
"tags": [
"Container Registry"
],
"description": "List all Retention Rules for a Container Registry Subscription",
"operationId": "list-retention-rules",
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"retention_rules": {
"type": "array",
"items": {
"$ref": "#/components/schemas/retention-rule"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/retention/rules\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"post": {
"summary": "Create Retention Rule",
"tags": [
"Container Registry"
],
"description": "Create a new Retention Rule for a Container Regsitry Subscription",
"operationId": "create-retention-rule",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"rule_type": {
"type": "string",
"description": "The type of retention rule logic to apply.\n\nPossible values:\n\n* 'artifacts pushed'\n* 'artifacts pulled'\n* 'days pushed'\n* 'days pulled'\n* 'always retain'"
},
"count": {
"type": "integer",
"description": "The numeric parameter for the rule, for example, if `rule_type` is \"artifacts pushed\", this defines how many artifacts to retain"
},
"repository_action": {
"type": "string",
"description": "Specifies whether to match or exclude repositories.\n- 'matches': include repositories matching the pattern\n- 'excludes': exclude repositories matching the pattern",
"enum": [
"matches",
"excludes"
]
},
"repository_match": {
"type": "string",
"description": "The glob-style pattern to match repository names, supports wildcards like `*` and `**`. \\\nThis should only include the repository name and not the registry name."
},
"tag_action": {
"type": "string",
"description": "Specifies whether to match or exclude tags.\n- 'matches': include tags matching the pattern\n- 'excludes': exclude tags matching the pattern",
"enum": [
"matches",
"excludes"
]
},
"tag_match": {
"type": "string",
"description": "Glob-style pattern to match tag names.\nCommon patterns include:\n - `**`: match all\n - `release-*`: match tags starting with 'release-'"
},
"untagged": {
"type": "boolean",
"description": "Whether to include untagged artifacts when applying the rule"
}
},
"required": [
"rule_type",
"repository_action",
"repository_match",
"tag_action",
"tag_match",
"untagged"
]
},
"examples": {
"request": {
"value": {
"rule_type": "artifacts pulled",
"count": 10,
"repository_action": "matches",
"repository_match": "myapp/*",
"tag_action": "excludes",
"tag_match": "v.1.3.*",
"untagged": true
}
}
}
}
}
},
"responses": {
"201": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/retention-rule"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/retention/rules\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"rule_type\": \"artifacts pulled\",\n \"count\": 10,\n \"repository_action\": \"matches\",\n \"repository_match\": \"myapp/*\",\n \"tag_action\": \"excludes\",\n \"tag_match\": \"v.1.3.*\",\n \"untagged\": true\n }'"
}
]
}
},
"/registry/{registry-id}/retention/rules/{retention-rule-id}": {
"get": {
"summary": "Read Retention Rule",
"tags": [
"Container Registry"
],
"description": "Get a single Retention Rule in a Container Registry Subscription",
"operationId": "read-retention-rule",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/retention-rule-id"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/retention-rule"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/retention/rules/{retention-rule-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"put": {
"summary": "Update Retention Rule",
"tags": [
"Container Registry"
],
"description": "Update a Retention Rule in a Container Registry Subscription",
"operationId": "update-retention-rule",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/retention-rule-id"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"disabled": {
"$ref": "#/components/schemas/retention-rule/properties/disabled"
}
},
"required": [
"disabled"
]
},
"examples": {
"request": {
"value": {
"disabled": true
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/retention-rule"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/retention/rules/{retention-rule-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"disabled\": true\n }'"
}
]
},
"delete": {
"summary": "Delete Retention Rule",
"tags": [
"Container Registry"
],
"description": "Deletes a Retention Rule from a Container Registry Subscription",
"operationId": "delete-retention-rule",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/retention-rule-id"
}
],
"responses": {
"204": {
"description": "No Content - Successfully Deleted"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/retention/rules/{retention-rule-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/registry/{registry-id}/repositories": {
"get": {
"summary": "List Repositories",
"tags": [
"Container Registry"
],
"description": "List All Repositories in a Container Registry Subscription",
"operationId": "list-registry-repositories",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 10 and Max is 100.\n"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"repositories": {
"type": "array",
"items": {
"$ref": "#/components/schemas/registry-repository"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/repositories\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/registry/{registry-id}/repository/{repository-image}": {
"get": {
"summary": "Read Repository",
"tags": [
"Container Registry"
],
"description": "Get a single Repository in a Container Registry Subscription",
"operationId": "read-registry-repository",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/repository-image"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/registry-repository"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/repository/{repository-image}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"put": {
"summary": "Update Repository",
"tags": [
"Container Registry"
],
"description": "Update a Repository in a Container Registry Subscription",
"operationId": "update-repository",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/repository-image"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"description": {
"$ref": "#/components/schemas/registry-repository/properties/description"
}
}
},
"examples": {
"example": {
"value": {
"description": "This is my super cool hello-world project"
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/registry-repository"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/repository/{repository-image}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\" : \"his is my super cool hello-world project\"\n }'"
}
]
},
"delete": {
"summary": "Delete Repository",
"tags": [
"Container Registry"
],
"description": "Deletes a Repository from a Container Registry Subscription",
"operationId": "delete-repository",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/repository-image"
}
],
"responses": {
"204": {
"description": "No Content - Successfully Deleted"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/repository/{repository-image}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/registry/{registry-id}/docker-credentials?expiry_seconds=0&read_write=false": {
"options": {
"summary": "Create Docker Credentials",
"tags": [
"Container Registry"
],
"description": "Create a fresh set of Docker Credentials for this Container Registry Subscription",
"operationId": "create-registry-docker-credentials",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/docker-credentials-expiry-seconds"
},
{
"$ref": "#/components/parameters/docker-credentials-read-write"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/registry-docker-credentials"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/docker-credentials\" \\\n -X OPTIONS \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/registry/{registry-id}/docker-credentials/kubernetes?expiry_seconds=0&read_write=false&base64_encode=false": {
"options": {
"summary": "Create Docker Credentials for Kubernetes",
"tags": [
"Container Registry"
],
"description": "Create a fresh set of Docker Credentials for this Container Registry Subscription and return them in a Kubernetes friendly YAML format",
"operationId": "create-registry-kubernetes-docker-credentials",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/docker-credentials-expiry-seconds"
},
{
"$ref": "#/components/parameters/docker-credentials-read-write"
},
{
"$ref": "#/components/parameters/kubernetes-docker-credentials-base64-encode"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/yaml": {
"schema": {
"$ref": "#/components/schemas/registry-kubernetes-docker-credentials"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/docker-credentials/kubernetes\" \\\n -X OPTIONS \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/registry/{registry-id}/user/password": {
"put": {
"summary": "Update Container Registry Password",
"tags": [
"Container Registry"
],
"description": "Update the Container Registy Password for this Container Registry Subscription",
"operationId": "update-container-registry-password",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"old_password": {
"type": "string",
"format": "password",
"description": "The API Key provided on Container Registry Subscription creation if the password has not been updated yet"
},
"new_password": {
"type": "string",
"format": "password",
"description": "The new user provided password"
}
}
},
"examples": {
"example": {
"value": {
"old_password": "12345abc456ABC123ABcd6789efgH1234abc",
"new_password": "sup3rh4rdt0cr4ck"
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "string",
"description": "A success message"
}
}
},
"examples": {
"example": {
"value": {
"success": "Password update successfully"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/user/password\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/registry/{registry-id}/robots": {
"get": {
"summary": "List Robots",
"tags": [
"Container Registry"
],
"description": "List All Robots in a Conainer Registry Subscription",
"operationId": "list-registry-robots",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 10 and Max is 100.\n"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"robots": {
"type": "array",
"items": {
"$ref": "#/components/schemas/registry-robot"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/robots\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/registry/{registry-id}/robot/{robot-name}": {
"get": {
"summary": "Read Robot",
"tags": [
"Container Registry"
],
"description": "Get a single Robot in a Container Registry Subscription",
"operationID": "read-registry-robot",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/robot-name"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/registry-robot"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/robot/{robot-name}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"put": {
"summary": "Update Robot",
"tags": [
"Container Registry"
],
"description": "Update the description, disable, duration, and add or remove access, in a Container Registry Subscription Robot",
"operationId": "update-robot",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/robot-name"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"description": {
"$ref": "#/components/schemas/registry-robot/properties/description"
},
"disable": {
"$ref": "#/components/schemas/registry-robot/properties/disable"
},
"duration": {
"$ref": "#/components/schemas/registry-robot/properties/duration"
},
"access": {
"$ref": "#/components/schemas/registry-robot/properties/permissions/properties/access"
}
}
},
"examples": {
"example": {
"value": {
"description": "Robot user auto generated by Vultr - enter only what you want to update in the request body",
"disable": true,
"duration": -1,
"access": [
{
"action": "pull",
"resource": "repository",
"effect": "allow"
},
{
"action": "delete",
"resource": "artifact",
"effect": "deny"
}
]
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/registry-robot"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/robot/{robot-name}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n -H \"Content-Type: application/json\" \\\n --data '{\n \"disable\": true\n }'"
}
]
},
"delete": {
"summary": "Delete Robot",
"tags": [
"Container Registry"
],
"description": "Deletes a Robot from a Container Registry Subscription",
"operationId": "delete-robot",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/robot-name"
}
],
"responses": {
"204": {
"description": "No Content - Successfully Deleted"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/robot/{robot-name}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/registry/{registry-id}/repository/{repository-image}/artifacts": {
"get": {
"summary": "List Artifacts",
"tags": [
"Container Registry"
],
"description": "List All Artifacts in a Container Registry Repository",
"operationId": "list-registry-repository-artifacts",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/repository-image"
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 10 and Max is 100.\n"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"artifacts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/registry-repository-artifact"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/repository/{repository-image}/artifacts\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/registry/{registry-id}/repository/{repository-image}/artifact/{artifact-digest}": {
"get": {
"summary": "Read Artifact",
"tags": [
"Container Registry"
],
"description": "Get a single Artifact in a Container Registry Repository",
"operationID": "read-registry-repository-artifact",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/repository-image"
},
{
"$ref": "#/components/parameters/artifact-digest"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/registry-repository-artifact"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/repository/{repository-image}/artifact/{artifact-digest}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
},
"delete": {
"summary": "Delete Artifact",
"tags": [
"Container Registry"
],
"description": "Deletes an Artifact from a Container Registry Repository",
"operationID": "delete-registry-repository-artifact",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"$ref": "#/components/parameters/registry-id"
},
{
"$ref": "#/components/parameters/repository-image"
},
{
"$ref": "#/components/parameters/artifact-digest"
}
],
"responses": {
"204": {
"description": "No Content - Successfully Deleted"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/{registry-id}/repository/{repository-image}/artifact/{artifact-digest}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/registry/region/list": {
"get": {
"summary": "List Registry Regions",
"tags": [
"Container Registry"
],
"description": "List All Regions where a Container Registry can be deployed",
"operationId": "list-registry-regions",
"security": [
{
"API Key": []
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"regions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/registry-region"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/region/list\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/registry/plan/list": {
"get": {
"summary": "List Registry Plans",
"tags": [
"Container Registry"
],
"description": "List All Plans to help choose which one is the best fit for your Container Registry",
"operationId": "list-registry-plans",
"security": [
{
"API Key": []
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"plans": {
"type": "object",
"properties": {
"start_up": {
"$ref": "#/components/schemas/registry-plan"
},
"business": {
"$ref": "#/components/schemas/registry-plan"
},
"premium": {
"$ref": "#/components/schemas/registry-plan"
},
"enterprise": {
"$ref": "#/components/schemas/registry-plan"
}
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"422": {
"description": "Bad Request"
}
},
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/registry/plan/list\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
]
}
},
"/tickets": {
"get": {
"summary": "List Tickets",
"description": "List all customer tickets on the account.",
"tags": [
"tickets"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/tickets\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"tickets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ticket"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"tickets": {
"value": {
"tickets": [
{
"subject": "Ticket subject",
"date_created": "2024-06-05T10:13:31+00:00",
"date_last_entry": "2024-06-05T10:13:31+00:00",
"last_reply_name": "John Doe",
"status": "open",
"entryStatus": "open",
"linked_subscriptions": [
{
"description": "65536.00 MB Regular Cloud Compute",
"status": "active",
"type": "vps",
"uuid": "8481b17d-12f0-4c62-92c3-4ee8c2752761"
}
],
"severity": "S1",
"severity_custom": ""
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-tickets",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "subject",
"description": "Filter by ticket subject. Performs an exact match search."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "sub_uuid",
"description": "Filter by associated subscription's UUID."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "sub_status",
"description": "Filter by associated subscription's status.\n\n| Value | Description |\n| - | ----------- |\n| pending | Pending subscription |\n| active | Active subscription |\n| suspended | Suspended subscription |\n| closed | Closed subscription |"
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create Ticket",
"description": "Create a new ticket.",
"tags": [
"tickets"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/tickets\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"subject\" : \"Ticket subject\",\n \"description\" : \"Example description\",\n \"sub-uuid\" : \"8481b17d-12f0-4c62-92c3-4ee8c2752761\"\n }'"
}
],
"responses": {
"201": {
"description": "Created ticket",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ticket": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ticket"
}
}
}
},
"examples": {
"ticket": {
"value": {
"ticket": [
{
"subject": "Ticket subject",
"date_created": "2024-06-05T10:13:31+00:00",
"date_last_entry": "2024-06-05T10:13:31+00:00",
"last_reply_name": "John Doe",
"status": "open",
"entryStatus": "open",
"linked_subscriptions": [
{
"description": "65536.00 MB Regular Cloud Compute",
"status": "active",
"type": "vps",
"uuid": "8481b17d-12f0-4c62-92c3-4ee8c2752761"
}
],
"severity": "",
"severity_custom": ""
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "create-ticket",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"subject": {
"type": "string",
"description": "Text describing the subject for this ticket."
},
"description": {
"type": "string",
"description": "Detailed text describing the reason for this ticket - will be created as first entry in ticket."
},
"sub-uuid": {
"type": "string",
"description": "UUID of the subscription that should be related to this ticket."
},
"category": {
"type": "string",
"description": "Which category the ticket is for. If specified, must be one of these values - General Support, Account Cancellation, Billing Questions, Marketplace, API v2."
},
"severity": {
"type": "string",
"description": "Ticket severity level."
},
"severity_custom": {
"type": "string",
"description": "Custom ticket severity level if account supports it."
},
"attachments": {
"type": "array",
"description": "Optional file attachments to include with the initial ticket entry. Up to 10 files per request. Total decoded size of all attachments combined must not exceed 7 MiB. Each file must be pdf, png, or jpeg.",
"maxItems": 10,
"items": {
"type": "object",
"properties": {
"filename": {
"type": "string",
"maxLength": 255,
"description": "The name of the file."
},
"file": {
"type": "string",
"description": "Base64-encoded file contents. Combined decoded size of all attachments must not exceed 7 MiB. Allowed content types are application/pdf, image/png, and image/jpeg."
}
},
"required": [
"filename",
"file"
]
}
}
},
"required": [
"subject",
"description"
]
},
"examples": {
"request": {
"value": {
"subject": "Ticket subject",
"description": "Example description",
"sub-uuid": "8481b17d-12f0-4c62-92c3-4ee8c2752761"
}
}
}
}
}
}
}
},
"/tickets/smtp": {
"post": {
"summary": "Request SMTP Port Unblock",
"description": "Submit a request to unblock SMTP port 25 on your account.",
"tags": [
"tickets"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/tickets/smtp\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"nature\" : \"Describe the nature of the emails you intend to send\",\n \"volume\" : \"The volume of email that you plan to deliver on a daily/monthly basis\",\n \"type\" : \"Please confirm if the emails you will be sending include marketing promotions, newsletters or coupons\",\n \"signature\" : \"John Doe\"\n }'"
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"reference": {
"type": "string"
}
}
},
"examples": {
"response": {
"value": {
"reference": "ABC-12345"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "request-smtp-port-unblock",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"nature": {
"type": "string",
"description": "Describe the nature of the emails you intend to send."
},
"volume": {
"type": "string",
"description": "The volume of email that you plan to deliver on a daily/monthly basis."
},
"type": {
"type": "string",
"description": "Please confirm if the emails you will be sending include marketing promotions, newsletters or coupons."
},
"signature": {
"type": "string",
"description": "Your electronic signature confirming the information provided is accurate."
}
},
"required": [
"nature",
"volume",
"type",
"signature"
]
},
"examples": {
"request": {
"value": {
"nature": "Transactional emails for our SaaS application",
"volume": "Approximately 10,000 emails per day",
"type": "No, we do not send marketing promotions, newsletters or coupons",
"signature": "John Doe"
}
}
}
}
}
}
}
},
"/tickets/severity-options": {
"get": {
"summary": "Get Ticket Severity Options",
"description": "Get the list of available ticket severity levels and account-level custom severity options.",
"tags": [
"tickets"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/tickets/severity-options\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"severity": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"label": {
"type": "string"
},
"description": {
"type": "string"
}
}
}
},
"severity_custom": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"label": {
"type": "string"
}
}
}
}
}
},
"examples": {
"response": {
"value": {
"severity": [
{
"value": "S1",
"label": "Critical Service Disruption",
"description": "Single customer critical impact, environment not accessible, service cannot be consumed, total work stoppage, no work around exists."
}
],
"severity_custom": [
{
"value": "1",
"label": "Critical Business Impact"
}
]
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"operationId": "get-tickets-severity-options",
"security": [
{
"API Key": []
}
]
}
},
"/tickets/{reference}": {
"get": {
"summary": "Get Ticket",
"description": "Get information about a ticket.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/tickets/{reference}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "reference",
"in": "path",
"required": true,
"description": "The [reference](#operation/list-tickets)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ticket": {
"$ref": "#/components/schemas/ticket"
}
}
},
"examples": {
"response": {
"value": {
"ticket": [
{
"subject": "Ticket subject",
"date_created": "2024-06-05T10:13:31+00:00",
"date_last_entry": "2024-06-05T10:13:31+00:00",
"last_reply_name": "John Doe",
"entryStatus": "open",
"severity": "",
"severity_custom": "",
"linked_subscriptions": [
{
"description": "65536.00 MB Regular Cloud Compute",
"status": "active",
"type": "vps",
"uuid": "8481b17d-12f0-4c62-92c3-4ee8c2752761"
}
]
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-ticket",
"security": [
{
"API Key": []
}
],
"tags": [
"tickets"
]
}
},
"/tickets/{reference}/close": {
"post": {
"summary": "Close Ticket",
"description": "Close an open ticket.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/tickets/{reference}/close\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "reference",
"in": "path",
"required": true,
"description": "The [reference](#operation/list-tickets)."
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "close-ticket",
"security": [
{
"API Key": []
}
],
"tags": [
"tickets"
]
}
},
"/tickets/{reference}/resolve": {
"post": {
"summary": "Resolve Ticket",
"description": "Mark an open ticket as resolved. Resolved tickets may be automatically closed later.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/tickets/{reference}/resolve\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "reference",
"in": "path",
"required": true,
"description": "The [reference](#operation/list-tickets)."
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "resolve-ticket",
"security": [
{
"API Key": []
}
],
"tags": [
"tickets"
]
}
},
"/tickets/tax": {
"post": {
"summary": "Create Tax Exemption Request",
"description": "Create a tax exemption request ticket. The ticket will be assigned to the billing department for review.",
"tags": [
"tickets"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl -X POST \"https://api.vultr.com/v2/tickets/tax\" \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"tax_id\": \"123456789\",\n \"signature\": \"John Doe\",\n \"attachments\": [\n {\n \"filename\": \"tax-exempt.pdf\",\n \"data\": \"base64encodedstring\"\n }\n ]\n }'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"tax_id": {
"type": "string",
"description": "The tax ID number for the tax exemption request."
},
"signature": {
"type": "string",
"description": "The name of the person signing the tax exemption request."
},
"attachments": {
"type": "array",
"description": "Optional attachments to include with the request. Total decoded size of all attachments combined must not exceed 7 MiB.",
"items": {
"type": "object",
"properties": {
"filename": {
"type": "string",
"description": "Name of the attachment file."
},
"data": {
"type": "string",
"description": "Base64 encoded file data. Combined decoded size of all attachments must not exceed 7 MiB."
}
},
"required": [
"filename",
"data"
]
}
}
},
"required": [
"tax_id",
"signature"
]
},
"examples": {
"request": {
"value": {
"tax_id": "123456789",
"signature": "John Doe",
"attachments": [
{
"filename": "tax-exempt.pdf",
"data": "base64encodedstring"
}
]
}
}
}
}
}
},
"responses": {
"201": {
"description": "Tax exemption request ticket created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"reference": {
"type": "string",
"description": "The reference number of the created ticket."
}
}
},
"examples": {
"response": {
"value": {
"reference": "576485"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"422": {
"description": "Unprocessable Entity"
}
},
"operationId": "create-tax-exemption-request",
"security": [
{
"API Key": []
}
]
}
},
"/tickets/{reference}/replies": {
"get": {
"summary": "List Ticket Replies",
"description": "List all replies for a given ticket. If attachments exist, their metadata is included, but not the contents.",
"tags": [
"tickets"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/tickets/{reference}/replies\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "reference",
"in": "path",
"required": true,
"description": "The [reference](#operation/list-tickets)."
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"replies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/reply"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"tickets": {
"value": {
"replies": [
{
"index": 0,
"age": "6d",
"attachments": [
{
"context_type": "text/plain",
"filename": "uploaded_file.txt",
"index": 0
}
],
"date": "2024-06-05T10:13:31+00:00",
"entryStatus": "open",
"description": "Reply message",
"from_email": "user@example.com",
"from_name": "Example User",
"from_type": "user",
"review_comment": null,
"review_date": null,
"review_rating": 10,
"reviewable": 0
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-ticket-replies",
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Ticket Reply",
"description": "Create a new reply to an existing ticket.",
"tags": [
"tickets"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/tickets/{reference}/replies\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"description\" : \"Reply message\",\n \"attachments\" : [\n {\n \"file\" : \"Base64 encoded string\",\n \"filename\" : \"upload_file.txt\"\n }\n ]\n }'"
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"name": "reference",
"in": "path",
"required": true,
"description": "The [reference](#operation/list-tickets)."
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "Reply message"
},
"attachments": {
"type": "array",
"description": "Optional file attachments to include with the initial ticket entry. Up to 10 files per request. Total decoded size of all attachments combined must not exceed 7 MiB.",
"maxItems": 10,
"items": {
"type": "object",
"properties": {
"filename": {
"type": "string",
"maxLength": 255,
"description": "The name of the file."
},
"file": {
"type": "string",
"description": "Base64-encoded file contents. Combined decoded size of all attachments must not exceed 7 MiB."
}
}
}
}
},
"required": [
"description"
]
},
"examples": {
"request": {
"value": {
"description": "Reply message",
"attachments": [
{
"file": "Base64 encoded string",
"filename": "upload_file.txt"
}
]
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created response"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Validation Error"
}
},
"operationId": "create-reply",
"security": [
{
"API Key": []
}
]
}
},
"/tickets/{reference}/replies/{ticket-reply-index}/review": {
"post": {
"summary": "Rate Ticket Reply",
"description": "Rate a ticket reply from Vultr.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/tickets/{reference}/replies/{ticket-reply-index}/review:\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n -H \"Content-Type: application/json\" \\\n --data '{\n \"comment\" : \"good reply\",\n \"rating\" : \"1\"\n }'"
}
],
"parameters": [
{
"name": "reference",
"in": "path",
"required": true,
"description": "The [reference](#operation/list-tickets).",
"schema": {
"type": "string"
}
},
{
"name": "ticket-reply-index",
"in": "path",
"required": true,
"description": "The [index](#operation/list-ticket-replies).",
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"comment": {
"type": "string",
"description": "Rating message"
},
"rating": {
"type": "number",
"description": "1 for positive, -1 for negative, 0 for neutral"
}
},
"required": [
"comment",
"rating"
]
},
"examples": {
"request": {
"value": {
"comment": "Reply message",
"rating": 1
}
}
}
}
}
},
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "review-ticket-reply",
"security": [
{
"API Key": []
}
],
"tags": [
"tickets"
]
}
},
"/tickets/{reference}/replies/{ticket-reply-index}/attachments/{ticket-attachment-index}": {
"get": {
"summary": "Get Ticket Reply Attachment",
"description": "Get a ticket reply attachment.",
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/tickets/{reference}/replies/{ticket-reply-index}/attachments/{ticket-attachment-index}:\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"name": "reference",
"in": "path",
"required": true,
"description": "The [reference](#operation/list-tickets).",
"schema": {
"type": "string"
}
},
{
"name": "ticket-reply-index",
"in": "path",
"required": true,
"description": "The [index](#operation/list-ticket-replies).",
"schema": {
"type": "string"
}
},
{
"name": "ticket-attachment-index",
"in": "path",
"required": true,
"description": "The [attachments index](#operation/list-ticket-replies).",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"attachment": {
"type": "object",
"properties": {
"context_type": {
"type": "string",
"description": "Type of the file."
},
"file": {
"type": "string",
"description": "Base64 encoded string of file contents."
},
"filename": {
"type": "string",
"description": "Uploaded file name."
},
"filesize": {
"type": "number",
"description": "Uploaded file size in bytes."
}
}
}
}
},
"examples": {
"response": {
"value": {
"attachment": [
{
"context_type": "File type",
"file": "Base64 encoded string of file contents",
"filename": "uploaded_file.txt",
"filesize": 16
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-ticket-reply-attachment",
"security": [
{
"API Key": []
}
],
"tags": [
"tickets"
]
}
},
"/vfs/regions": {
"get": {
"summary": "List VFS Regions",
"description": "Retrieve a list of all regions where VFS can be deployed",
"operationId": "listRegions",
"tags": [
"VFS"
],
"responses": {
"200": {
"description": "List of available regions retrieved successfully",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"regions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/vfs_region"
}
}
}
}
}
}
},
"403": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
}
}
},
"/vfs": {
"get": {
"summary": "List VFSs",
"description": "Retrieve a list of all VFS subscriptions for the account",
"operationId": "listVFS",
"tags": [
"VFS"
],
"responses": {
"200": {
"description": "List of VFS subscriptions retrieved successfully",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"vfs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/vfs"
}
}
}
}
}
}
},
"403": {
"description": "Unauthorized"
},
"422": {
"description": "Bad Request"
}
}
},
"post": {
"summary": "Create VFS",
"description": "Create a new VFS subscription with the specified configuration",
"operationId": "createVFS",
"tags": [
"VFS"
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"region": {
"type": "string",
"description": "Region identifier where to create the VFS",
"example": "ewr"
},
"label": {
"type": "string",
"description": "User-defined label for the VFS subscription",
"example": "my-production-storage"
},
"storage_size": {
"type": "object",
"properties": {
"gb": {
"type": "integer",
"description": "Size in gigabytes for the VFS",
"example": 100
}
},
"required": [
"gb"
]
},
"disk_type": {
"type": "string",
"enum": [
"nvme"
],
"description": "Type of storage disk (defaults to nvme if not specified)",
"example": "nvme"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional tags to apply to the VFS subscription",
"example": [
"prod",
"web"
]
}
},
"required": [
"region",
"label",
"storage_size"
]
}
}
}
},
"responses": {
"201": {
"description": "VFS subscription created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/vfs"
}
}
}
},
"403": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
}
}
},
"/vfs/{vfs_id}": {
"get": {
"summary": "Get VFS",
"description": "Retrieve a specific VFS subscription by ID",
"operationId": "getVFS",
"tags": [
"VFS"
],
"parameters": [
{
"name": "vfs_id",
"in": "path",
"description": "ID of the VFS subscription to retrieve",
"required": true,
"schema": {
"type": "string"
},
"example": "vfs-123abc"
}
],
"responses": {
"200": {
"description": "VFS subscription retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/vfs"
}
}
}
},
"403": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
}
},
"put": {
"summary": "Update VFS",
"description": "Update a VFS subscription's label or storage size",
"operationId": "updateVFS",
"tags": [
"VFS"
],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "New label for the VFS subscription",
"example": "updated-production-storage"
},
"storage_size": {
"type": "object",
"description": "New storage size (can only increase, not decrease)",
"properties": {
"gb": {
"type": "integer",
"description": "Size in gigabytes for the VFS",
"example": 200
}
},
"required": [
"gb"
]
}
},
"minProperties": 1
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/vfs"
}
}
}
},
"403": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
}
},
"delete": {
"summary": "Delete VFS",
"description": "Delete a specific VFS subscription by ID",
"operationId": "deleteVFS",
"tags": [
"VFS"
],
"parameters": [
{
"name": "vfs_id",
"in": "path",
"description": "ID of the VFS subscription to retrieve",
"required": true,
"schema": {
"type": "string"
},
"example": "vfs-123abc"
}
],
"responses": {
"204": {
"description": "No Content - Successfully Deleted"
},
"403": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"409": {
"description": "Subscription Already Closed"
},
"422": {
"description": "Bad Request"
}
}
}
},
"/vfs/{vfs_id}/attachments": {
"parameters": [
{
"name": "vfs_id",
"in": "path",
"description": "ID of the VFS subscription",
"required": true,
"schema": {
"type": "string"
},
"example": "vfs-123abc"
}
],
"get": {
"summary": "List VFS Attachments",
"description": "Retrieve a list of all attachments for a specific VFS subscription",
"operationId": "listVFSAttachments",
"tags": [
"VFS"
],
"responses": {
"200": {
"description": "List of VFS attachments retrieved successfully",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"attachments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/vfs_attachment"
}
}
}
}
}
}
},
"403": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
}
}
},
"/vfs/{vfs_id}/attachments/{vps_id}": {
"parameters": [
{
"name": "vfs_id",
"in": "path",
"description": "ID of the VFS subscription",
"required": true,
"schema": {
"type": "string"
},
"example": "123e4567-e89b-12d3-a456-123ab4567c89"
},
{
"name": "vps_id",
"in": "path",
"description": "ID of the VPS subscription to attach",
"required": true,
"schema": {
"type": "string"
},
"example": "123e4567-e89b-12d3-a456-123ab4567c89"
}
],
"put": {
"summary": "Attach VPS Instance to VFS",
"description": "Attach a VPS instance to a VFS subscription",
"operationId": "createVFSAttachment",
"tags": [
"VFS"
],
"responses": {
"201": {
"description": "VFS attachment created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/vfs_attachment"
}
}
}
},
"403": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"409": {
"description": "Target Subscription Already Attached to This VFS Subscription"
},
"422": {
"description": "Bad Request"
}
}
},
"get": {
"summary": "Get VFS Attachment",
"description": "Retrieve details about a specific VFS-VPS attachment",
"operationId": "getVFSAttachment",
"tags": [
"VFS"
],
"responses": {
"200": {
"description": "VFS attachment retrieved successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/vfs_attachment"
}
}
}
},
"403": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
}
},
"delete": {
"summary": "Delete VFS Attachment",
"description": "Detach a VPS instance from a VFS subscription",
"operationId": "deleteVFSAttachment",
"tags": [
"VFS"
],
"responses": {
"204": {
"description": "No Content - Successfully Deleted"
},
"403": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Bad Request"
}
}
}
},
"/policies": {
"get": {
"summary": "List Policies",
"operationId": "list-iam-policies",
"description": "Get a list of all Policies in your account.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/policies\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"policies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-policy"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Policy",
"operationId": "create-iam-policy",
"description": "Create a new IAM Policy.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/policies\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"name\": \"my-policy\", \"description\": \"My policy\", \"policy_document\": {}}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The policy name."
},
"description": {
"type": "string",
"description": "A description of the policy."
},
"policy_document": {
"type": "object",
"description": "The policy document defining permissions."
},
"version": {
"type": "string",
"description": "The policy version. Default is 2012-10-17."
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"policy": {
"$ref": "#/components/schemas/iam-policy"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/policies/{id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Policy ID."
}
],
"get": {
"summary": "Get Policy",
"operationId": "get-iam-policy",
"description": "Get information about a Policy.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/policies/{id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"policy": {
"$ref": "#/components/schemas/iam-policy"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Policy",
"operationId": "update-iam-policy",
"description": "Update a Policy.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/policies/{id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"name\": \"updated-policy\", \"description\": \"Updated description\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The policy name."
},
"description": {
"type": "string",
"description": "A description of the policy."
},
"policy_document": {
"type": "object",
"description": "The policy document defining permissions."
}
}
}
}
}
},
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"policy": {
"$ref": "#/components/schemas/iam-policy"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Policy",
"operationId": "delete-iam-policy",
"description": "Delete a Policy.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/policies/{id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/policies/{id}/restore": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Policy ID."
}
],
"patch": {
"summary": "Restore Policy",
"operationId": "restore-iam-policy",
"description": "Restore a soft-deleted Policy.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/policies/{id}/restore\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"policy": {
"$ref": "#/components/schemas/iam-policy"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/policies/{policy_id}/groups": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "policy_id",
"required": true,
"description": "The Policy ID."
}
],
"get": {
"summary": "List Policy Groups",
"operationId": "list-iam-policy-groups",
"description": "List the Groups attached to a Policy.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/policies/{policy_id}/groups\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"policy_group_relationships": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-policy-group-relationship"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/policies/{policy_id}/groups/{group_id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "policy_id",
"required": true,
"description": "The Policy ID."
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "group_id",
"required": true,
"description": "The Group ID."
}
],
"post": {
"summary": "Attach Group to Policy",
"operationId": "attach-iam-group-to-policy",
"description": "Attach a Group to a Policy.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/policies/{policy_id}/groups/{group_id}\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"policy_group_relationship": {
"$ref": "#/components/schemas/iam-policy-group-relationship"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Detach Group from Policy",
"operationId": "detach-iam-group-from-policy",
"description": "Detach a Group from a Policy.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/policies/{policy_id}/groups/{group_id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/policies/{policy_id}/users": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "policy_id",
"required": true,
"description": "The Policy ID."
}
],
"get": {
"summary": "List Policy Users",
"operationId": "list-iam-policy-users",
"description": "List the Users attached to a Policy.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/policies/{policy_id}/users\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"policy_user_relationships": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-policy-user-relationship"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/policies/{policy_id}/users/{user_id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "policy_id",
"required": true,
"description": "The Policy ID."
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "user_id",
"required": true,
"description": "The User ID."
}
],
"post": {
"summary": "Attach User to Policy",
"operationId": "attach-iam-user-to-policy",
"description": "Attach a User to a Policy.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/policies/{policy_id}/users/{user_id}\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"policy_user_relationship": {
"$ref": "#/components/schemas/iam-policy-user-relationship"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Detach User from Policy",
"operationId": "detach-iam-user-from-policy",
"description": "Detach a User from a Policy.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/policies/{policy_id}/users/{user_id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/roles": {
"get": {
"summary": "List Roles",
"operationId": "list-iam-roles",
"description": "Get a list of all Roles in your account.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"roles": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-role"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Role",
"operationId": "create-iam-role",
"description": "Create a new IAM Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"name\": \"my-role\", \"description\": \"My role\", \"role_type\": \"assumable\", \"max_session_duration\": 3600}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The role name."
},
"description": {
"type": "string",
"description": "A description of the role."
},
"role_type": {
"type": "string",
"description": "The role type. Default is `assumable`."
},
"max_session_duration": {
"type": "integer",
"description": "Maximum session duration in seconds. Default is 3600."
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role": {
"$ref": "#/components/schemas/iam-role"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/roles/{id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Role ID."
}
],
"get": {
"summary": "Get Role",
"operationId": "get-iam-role",
"description": "Get information about a Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles/{id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role": {
"$ref": "#/components/schemas/iam-role"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Role",
"operationId": "update-iam-role",
"description": "Update a Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles/{id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"name\": \"updated-role\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The role name."
},
"description": {
"type": "string",
"description": "A description of the role."
},
"role_type": {
"type": "string",
"description": "The role type."
},
"max_session_duration": {
"type": "integer",
"description": "Maximum session duration in seconds."
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role": {
"$ref": "#/components/schemas/iam-role"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Role",
"operationId": "delete-iam-role",
"description": "Delete a Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles/{id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/roles/{id}/restore": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Role ID."
}
],
"patch": {
"summary": "Restore Role",
"operationId": "restore-iam-role",
"description": "Restore a soft-deleted Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles/{id}/restore\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role": {
"$ref": "#/components/schemas/iam-role"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/roles/{role_id}/groups": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "role_id",
"required": true,
"description": "The Role ID."
}
],
"get": {
"summary": "List Role Groups",
"operationId": "list-iam-role-groups",
"description": "List the Groups assigned to a Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles/{role_id}/groups\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_group_relationships": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-role-group-relationship"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/roles/{role_id}/groups/{group_id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "role_id",
"required": true,
"description": "The Role ID."
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "group_id",
"required": true,
"description": "The Group ID."
}
],
"post": {
"summary": "Assign Group to Role",
"operationId": "assign-iam-group-to-role",
"description": "Assign a Group to a Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles/{role_id}/groups/{group_id}\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_group_relationship": {
"$ref": "#/components/schemas/iam-role-group-relationship"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Remove Group from Role",
"operationId": "remove-iam-group-from-role",
"description": "Remove a Group from a Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles/{role_id}/groups/{group_id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/roles/{role_id}/users": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "role_id",
"required": true,
"description": "The Role ID."
}
],
"get": {
"summary": "List Role Users",
"operationId": "list-iam-role-users",
"description": "List the Users assigned to a Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles/{role_id}/users\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_user_relationships": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-role-user-relationship"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/roles/{role_id}/users/{user_id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "role_id",
"required": true,
"description": "The Role ID."
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "user_id",
"required": true,
"description": "The User ID."
}
],
"post": {
"summary": "Assign User to Role",
"operationId": "assign-iam-user-to-role",
"description": "Assign a User to a Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles/{role_id}/users/{user_id}\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_user_relationship": {
"$ref": "#/components/schemas/iam-role-user-relationship"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Remove User from Role",
"operationId": "remove-iam-user-from-role",
"description": "Remove a User from a Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles/{role_id}/users/{user_id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/roles/{role_id}/policies": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "role_id",
"required": true,
"description": "The Role ID."
}
],
"get": {
"summary": "List Role Policies",
"operationId": "list-iam-role-policies",
"description": "List the Policies assigned to a Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles/{role_id}/policies\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_policy_relationships": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-role-policy-relationship"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Assign Policy to Role (Deprecated)",
"operationId": "assign-iam-policy-to-role-deprecated",
"description": "Assign a Policy to a Role by policy_id in the request body. Deprecated; use `POST /v2/roles/{role_id}/policies/{policy_id}` instead.",
"deprecated": true,
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles/{role_id}/policies\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"policy_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"policy_id": {
"type": "string",
"description": "The Policy ID to assign to the role."
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_policy_relationship": {
"$ref": "#/components/schemas/iam-role-policy-relationship"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/roles/{role_id}/policies/{policy_id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "role_id",
"required": true,
"description": "The Role ID."
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "policy_id",
"required": true,
"description": "The Policy ID."
}
],
"post": {
"summary": "Assign Policy to Role",
"operationId": "assign-iam-policy-to-role",
"description": "Assign a Policy to a Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles/{role_id}/policies/{policy_id}\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_policy_relationship": {
"$ref": "#/components/schemas/iam-role-policy-relationship"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Remove Policy from Role",
"operationId": "remove-iam-policy-from-role",
"description": "Remove a Policy from a Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/roles/{role_id}/policies/{policy_id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/groups": {
"get": {
"summary": "List Groups",
"operationId": "list-iam-groups",
"description": "Get a list of all Groups in your account.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/groups\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"groups": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-group"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Group",
"operationId": "create-iam-group",
"description": "Create a new IAM Group.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/groups\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"display_name\": \"my-group\", \"description\": \"My group\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"display_name": {
"type": "string",
"description": "The group display name."
},
"description": {
"type": "string",
"description": "A description of the group."
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"group": {
"$ref": "#/components/schemas/iam-group"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/groups/{id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Group ID."
}
],
"get": {
"summary": "Get Group",
"operationId": "get-iam-group",
"description": "Get information about a Group.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/groups/{id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"group": {
"$ref": "#/components/schemas/iam-group"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"parameters": [
{
"schema": {
"type": "boolean"
},
"in": "query",
"name": "show_last_activity",
"description": "Set to `true` to include the `last_activity` field in the response."
}
],
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Group",
"operationId": "update-iam-group",
"description": "Update a Group.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/groups/{id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"display_name\": \"updated-group\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"display_name": {
"type": "string",
"description": "The group display name."
},
"description": {
"type": "string",
"description": "A description of the group."
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"group": {
"$ref": "#/components/schemas/iam-group"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Group",
"operationId": "delete-iam-group",
"description": "Delete a Group.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/groups/{id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/groups/{group_id}/members": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "group_id",
"required": true,
"description": "The Group ID."
}
],
"get": {
"summary": "List Group Members",
"operationId": "list-iam-group-members",
"description": "List all Members in a Group.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/groups/{group_id}/members\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"members": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-group-member"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Add Group Member",
"operationId": "add-iam-group-member",
"description": "Add a User to a Group.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/groups/{group_id}/members\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"display_name\": \"user@example.com\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"display_name": {
"type": "string",
"description": "The User ID or display name to add to the group."
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"group_member": {
"$ref": "#/components/schemas/iam-group-member"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/groups/{group_id}/members/{id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "group_id",
"required": true,
"description": "The Group ID."
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Group Member ID."
}
],
"get": {
"summary": "Get Group Member",
"operationId": "get-iam-group-member",
"description": "Get information about a Group Member.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/groups/{group_id}/members/{id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"group_member": {
"$ref": "#/components/schemas/iam-group-member"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Remove Group Member",
"operationId": "remove-iam-group-member",
"description": "Remove a Member from a Group.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/groups/{group_id}/members/{id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Restore Group Member",
"operationId": "restore-iam-group-member",
"description": "Restore a soft-deleted Group Member.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/groups/{group_id}/members/{id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"group_member": {
"$ref": "#/components/schemas/iam-group-member"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/groups/{id}/roles": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Group ID."
}
],
"get": {
"summary": "List Group Roles",
"operationId": "list-iam-group-roles",
"description": "List the Roles assigned to a Group.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/groups/{id}/roles\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_group_relationships": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-role-group-relationship"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/groups/{id}/policies": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Group ID."
}
],
"get": {
"summary": "List Group Policies",
"operationId": "list-iam-group-policies",
"description": "List the Policies assigned to a Group.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/groups/{id}/policies\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"policy_group_relationships": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-policy-group-relationship"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/role-trusts": {
"get": {
"summary": "List Role Trusts",
"operationId": "list-iam-role-trusts",
"description": "Get a list of all Role Trusts in your account.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/role-trusts\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_trusts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-role-trust"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Role Trust",
"operationId": "create-iam-role-trust",
"description": "Create a new Role Trust.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/role-trusts\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"role_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\", \"trust_type\": \"TemporaryAssumption\", \"trusted_user_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b61\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_id": {
"type": "string",
"description": "The Role ID this trust applies to."
},
"trust_type": {
"type": "string",
"description": "The trust type: TemporaryAssumption, FederatedAssumption, or IAMAssumption."
},
"trusted_user_id": {
"type": "string",
"description": "The trusted User ID (for TemporaryAssumption or IAMAssumption)."
},
"trusted_group_id": {
"type": "string",
"description": "The trusted Group ID."
},
"trusted_oidc_issuer_id": {
"type": "string",
"description": "The trusted OIDC Issuer ID (for FederatedAssumption)."
},
"conditions": {
"type": "object",
"description": "Conditions that must be met for the trust to apply."
},
"valid_until": {
"type": "string",
"description": "Expiration date of the trust (ISO 8601)."
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_trust": {
"$ref": "#/components/schemas/iam-role-trust"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/role-trusts/{id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Role Trust ID."
}
],
"get": {
"summary": "Get Role Trust",
"operationId": "get-iam-role-trust",
"description": "Get information about a Role Trust.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/role-trusts/{id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_trust": {
"$ref": "#/components/schemas/iam-role-trust"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Role Trust",
"operationId": "update-iam-role-trust",
"description": "Update a Role Trust.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/role-trusts/{id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"trust_type\": \"TemporaryAssumption\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"trust_type": {
"type": "string",
"description": "The trust type: TemporaryAssumption, FederatedAssumption, or IAMAssumption."
},
"trusted_user_id": {
"type": "string",
"description": "The trusted User ID."
},
"trusted_group_id": {
"type": "string",
"description": "The trusted Group ID."
},
"trusted_oidc_issuer_id": {
"type": "string",
"description": "The trusted OIDC Issuer ID."
},
"conditions": {
"type": "object",
"description": "Conditions that must be met for the trust to apply."
},
"valid_until": {
"type": "string",
"description": "Expiration date of the trust (ISO 8601)."
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_trust": {
"$ref": "#/components/schemas/iam-role-trust"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete Role Trust",
"operationId": "delete-iam-role-trust",
"description": "Delete a Role Trust.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/role-trusts/{id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/role-trusts/{id}/restore": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Role Trust ID."
}
],
"patch": {
"summary": "Restore Role Trust",
"operationId": "restore-iam-role-trust",
"description": "Restore a soft-deleted Role Trust.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/role-trusts/{id}/restore\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_trust": {
"$ref": "#/components/schemas/iam-role-trust"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/role-trusts/by-role/{role_id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "role_id",
"required": true,
"description": "The Role ID."
}
],
"get": {
"summary": "List Role Trusts by Role",
"operationId": "list-iam-role-trusts-by-role",
"description": "List all Role Trusts for a specific Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/role-trusts/by-role/{role_id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_trusts": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-role-trust"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/role-trusts/assumable/{user_id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "user_id",
"required": true,
"description": "The User ID."
}
],
"get": {
"summary": "List Assumable Roles for User",
"operationId": "list-iam-assumable-roles",
"description": "List all Roles that a User can assume.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/role-trusts/assumable/{user_id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"roles": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-role"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/assumed-roles/compatibility/aws/sts": {
"post": {
"summary": "AWS STS AssumeRole Compatibility",
"operationId": "iam-aws-sts-assume-role",
"description": "AWS STS-compatible AssumeRole endpoint. Accepts `application/x-www-form-urlencoded` and returns XML.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/assumed-roles/compatibility/aws/sts\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/x-www-form-urlencoded\" \\\n --data \"Action=AssumeRole&RoleArn=arn:vultr:iam::orgid:role/role-id&RoleSessionName=my-session\""
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"type": "object",
"properties": {
"Action": {
"type": "string",
"description": "The STS action. Must be `AssumeRole`."
},
"RoleArn": {
"type": "string",
"description": "The role ARN in format `arn:vultr:iam::orgid:role/role-id`."
},
"RoleSessionName": {
"type": "string",
"description": "A name for the assumed-role session."
},
"DurationSeconds": {
"type": "integer",
"description": "Session duration in seconds."
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/xml": {
"schema": {
"type": "object"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/assumed-roles/assume": {
"post": {
"summary": "Assume Role",
"operationId": "iam-assume-role",
"description": "Create an assumed-role session by assuming an IAM Role.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/assumed-roles/assume\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"role_id\": \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\", \"session_name\": \"my-session\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"role_id": {
"type": "string",
"description": "The Role ID to assume."
},
"session_name": {
"type": "string",
"description": "A name for the session."
},
"duration": {
"type": "integer",
"description": "Session duration in seconds. Default is 3600."
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"assumed_role_session": {
"$ref": "#/components/schemas/iam-assumed-role-session"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/assumed-roles/users/{user_id}/sessions": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "user_id",
"required": true,
"description": "The User ID."
}
],
"get": {
"summary": "List Assumed Role Sessions",
"operationId": "list-iam-assumed-role-sessions",
"description": "List all assumed-role sessions for a User.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/assumed-roles/users/{user_id}/sessions\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"assumed_role_sessions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-assumed-role-session"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/assumed-roles/{session_token}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "session_token",
"required": true,
"description": "The session token."
}
],
"delete": {
"summary": "Delete Assumed Role Session",
"operationId": "delete-iam-assumed-role-session",
"description": "Delete an assumed-role session.",
"tags": [
"iam"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/assumed-roles/{session_token}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/invitation": {
"get": {
"summary": "List Invitations",
"operationId": "list-invitations",
"description": "List all pending invitations for your organization.",
"tags": [
"organizations"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/invitation\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"invitations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-invitation"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Invitation",
"operationId": "create-invitation",
"description": "Invite a user to your organization.",
"tags": [
"organizations"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/invitation\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"email_invited\": \"newuser@example.com\", \"permissions\": {}}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"email_invited": {
"type": "string",
"description": "The email address to invite."
},
"permissions": {
"type": "object",
"description": "Permissions to grant the invited user."
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"invitation": {
"$ref": "#/components/schemas/iam-invitation"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/invitation/{id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Invitation ID."
}
],
"get": {
"summary": "Get Invitation",
"operationId": "get-invitation",
"description": "Get information about an Invitation.",
"tags": [
"organizations"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/invitation/{id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"invitation": {
"$ref": "#/components/schemas/iam-invitation"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/invitation/{id}/resend": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Invitation ID."
}
],
"post": {
"summary": "Resend Invitation",
"operationId": "resend-invitation",
"description": "Resend an invitation email.",
"tags": [
"organizations"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/invitation/{id}/resend\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"invitation": {
"$ref": "#/components/schemas/iam-invitation"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/users/me/groups": {
"get": {
"summary": "List My Groups",
"operationId": "list-iam-current-user-groups",
"description": "List the Groups the current user belongs to.",
"tags": [
"users"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/me/groups\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"groups": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-group"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/users/me/roles": {
"get": {
"summary": "List My Roles",
"operationId": "list-iam-current-user-roles",
"description": "List the Roles assigned to the current user.",
"tags": [
"users"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/me/roles\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"roles": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-role-user-relationship"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/users/me/policies": {
"get": {
"summary": "List My Policies",
"operationId": "list-iam-current-user-policies",
"description": "List the Policies assigned to the current user.",
"tags": [
"users"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/me/policies\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"policies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-policy-user-relationship"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/users/{user_id}/groups": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "user_id",
"required": true,
"description": "The User ID."
}
],
"get": {
"summary": "List User Groups",
"operationId": "list-iam-user-groups",
"description": "List the Groups the specified user belongs to.",
"tags": [
"users"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/{user_id}/groups\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"groups": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-group"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/users/{user_id}/roles": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "user_id",
"required": true,
"description": "The User ID."
}
],
"get": {
"summary": "List User Roles",
"operationId": "list-iam-user-roles",
"description": "List the Roles assigned to the specified user.",
"tags": [
"users"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/{user_id}/roles\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"roles": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-role-user-relationship"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/users/{user_id}/policies": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "user_id",
"required": true,
"description": "The User ID."
}
],
"get": {
"summary": "List User Policies",
"operationId": "list-iam-user-policies",
"description": "List the Policies assigned to the specified user.",
"tags": [
"users"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/users/{user_id}/policies\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"policies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-policy-user-relationship"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/organizations": {
"get": {
"summary": "List Organizations",
"operationId": "list-organizations",
"description": "Get a list of all Organizations in your account.",
"tags": [
"organizations"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/organizations\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"organizations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-organization"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/organizations/{id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Organization ID."
}
],
"get": {
"summary": "Get Organization",
"operationId": "get-organization",
"description": "Get information about an Organization.",
"tags": [
"organizations"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/organizations/{id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"organization": {
"$ref": "#/components/schemas/iam-organization"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Organization",
"operationId": "update-organization",
"description": "Update information for an Organization.",
"tags": [
"organizations"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/organizations/{id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"name\": \"updated-org-name\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The organization name."
},
"type": {
"type": "string",
"description": "The organization type."
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"organization": {
"$ref": "#/components/schemas/iam-organization"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/organizations/{id}/user/{user_id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Organization ID."
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "user_id",
"required": true,
"description": "The User ID."
}
],
"delete": {
"summary": "Remove User from Organization",
"operationId": "remove-organization-user",
"description": "Remove a user from the Organization.",
"tags": [
"organizations"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/organizations/{id}/user/{user_id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/organizations/{id}/user/{user_id}/suspend": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Organization ID."
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "user_id",
"required": true,
"description": "The User ID."
}
],
"put": {
"summary": "Suspend Organization User",
"operationId": "suspend-organization-user",
"description": "Suspend a user in the Organization.",
"tags": [
"organizations"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/organizations/{id}/user/{user_id}/suspend\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/organizations/{id}/user/{user_id}/unsuspend": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Organization ID."
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "user_id",
"required": true,
"description": "The User ID."
}
],
"put": {
"summary": "Unsuspend Organization User",
"operationId": "unsuspend-organization-user",
"description": "Unsuspend a user in the Organization.",
"tags": [
"organizations"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/organizations/{id}/user/{user_id}/unsuspend\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/organizations/{id}/suspended-users": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Organization ID."
}
],
"get": {
"summary": "List Suspended Organization Users",
"operationId": "list-organization-suspended-users",
"description": "List all suspended users in the Organization.",
"tags": [
"organizations"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/organizations/{id}/suspended-users\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"users": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-group-member"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/organizations/{id}/scim": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Organization ID."
}
],
"get": {
"summary": "Get Organization SCIM Config",
"operationId": "get-organization-scim",
"description": "Get the SCIM configuration for an Organization.",
"tags": [
"organizations"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/organizations/{id}/scim\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"scim": {
"$ref": "#/components/schemas/iam-organization-scim"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/organizations/{id}/scim/enable": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Organization ID."
}
],
"post": {
"summary": "Enable SCIM",
"operationId": "enable-organization-scim",
"description": "Enable SCIM provisioning for an Organization.",
"tags": [
"organizations"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/organizations/{id}/scim/enable\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"scim": {
"$ref": "#/components/schemas/iam-organization-scim"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/organizations/{id}/scim/disable": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Organization ID."
}
],
"post": {
"summary": "Disable SCIM",
"operationId": "disable-organization-scim",
"description": "Disable SCIM provisioning for an Organization.",
"tags": [
"organizations"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/organizations/{id}/scim/disable\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"scim": {
"$ref": "#/components/schemas/iam-organization-scim"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/organizations/{id}/scim/token": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The Organization ID."
}
],
"post": {
"summary": "Rotate SCIM Token",
"operationId": "rotate-organization-scim-token",
"description": "Rotate the SCIM authentication token for an Organization.",
"tags": [
"organizations"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/organizations/{id}/scim/token\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"scim": {
"$ref": "#/components/schemas/iam-organization-scim"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oauth/clients": {
"get": {
"summary": "List OAuth Apps",
"operationId": "list-oauth-clients",
"description": "Get a list of all OAuth Apps in your organization.",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/clients\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
},
{
"schema": {
"type": "string",
"enum": [
"Draft",
"PendingReview",
"Active",
"Rejected"
]
},
"in": "query",
"name": "status",
"description": "Filter the list by review status."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"oauth_clients": {
"type": "array",
"items": {
"$ref": "#/components/schemas/oauth-client"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create OAuth App",
"operationId": "create-oauth-client",
"description": "Register a new OAuth App for your organization. The app is created in `Draft` status. Attach at least one scope and submit it for review before users outside your draft-user allowlist can authorize it.\n\nThe linked [OIDC Provider](#tag/oidc) must be created first via `POST /v2/oidc/provider` — its keypair signs the tokens issued to your app. The `oidc_provider_id` link is immutable after creation.\n\nThe response includes the plaintext client `secret` exactly once. Store it securely — it cannot be retrieved again (while the app is in `Draft` or `Rejected` status you can generate a new one with [Regenerate OAuth App Secret](#operation/regenerate-oauth-client-secret)).\n\nThis endpoint requires the root user of the organization.\n",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/clients\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"name\": \"My Integration\", \"callback_urls\": [\"https://example.com/oauth/callback\"], \"oidc_provider_id\": \"oidc-provider-id-here\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"name",
"callback_urls",
"oidc_provider_id"
],
"properties": {
"name": {
"type": "string",
"description": "The app name shown to users on the consent screen. Maximum 255 characters. Must be unique within your organization."
},
"callback_urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Registered OAuth callback URLs. Each must begin with `https://` (`http://` is allowed only for localhost while the app is in Draft). The `redirect_uri` used at authorization time must exactly match one of these."
},
"oidc_provider_id": {
"type": "string",
"description": "The [OIDC Provider](#tag/oidc) ID that signs tokens for this app. Immutable after creation."
},
"logo": {
"type": "string",
"description": "Base64-encoded logo image shown on the consent screen. Maximum 6 MB. Accepted formats include PNG, JPEG, SVG, GIF, and WebP."
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/oauth-client"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"409": {
"description": "Conflict (an OAuth App with this name already exists in your organization)"
},
"422": {
"description": "Unprocessable Entity"
},
"429": {
"description": "Too Many Requests (OAuth App limit reached for your organization)"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oauth/clients/{client_id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "client_id",
"required": true,
"description": "The OAuth App ID."
}
],
"get": {
"summary": "Get OAuth App",
"operationId": "get-oauth-client",
"description": "Get information about an OAuth App in your organization.",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/clients/{client_id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/oauth-client"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"patch": {
"summary": "Update OAuth App",
"operationId": "update-oauth-client",
"description": "Update an OAuth App. Only apps in `Draft` or `Rejected` status can be edited — once submitted or active, fields are locked.\n\nOmitted fields are left unchanged. The `oidc_provider_id` link is immutable after creation.\n\nThis endpoint requires the root user of the organization.\n",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/clients/{client_id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"name\": \"My Renamed Integration\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The app name shown to users on the consent screen. Maximum 255 characters. Must be unique within your organization."
},
"callback_urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Registered OAuth callback URLs. Replaces the existing list. Each must begin with `https://` (`http://` is allowed only for localhost while the app is in Draft)."
},
"logo": {
"type": "string",
"description": "Base64-encoded logo image shown on the consent screen. Maximum 6 MB. Accepted formats include PNG, JPEG, SVG, GIF, and WebP."
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/oauth-client"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"409": {
"description": "Conflict (app is not in an editable status, or the name is already in use)"
},
"422": {
"description": "Unprocessable Entity"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete OAuth App",
"operationId": "delete-oauth-client",
"description": "Delete an OAuth App. Only apps in `Draft` or `Rejected` status can be deleted. To remove an `Active` app, contact support.\n\nThis endpoint requires the root user of the organization.\n",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/clients/{client_id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"409": {
"description": "Conflict (app is not in a deletable status)"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oauth/clients/{client_id}/submit": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "client_id",
"required": true,
"description": "The OAuth App ID."
}
],
"post": {
"summary": "Submit OAuth App for Review",
"operationId": "submit-oauth-client",
"description": "Submit a `Draft` or `Rejected` OAuth App for review by Vultr. On success the app moves to `PendingReview` status; once approved it becomes `Active` and any Vultr user can authorize it.\n\nBefore submission the app must have at least one `https://` callback URL and at least one attached scope, and your account must be funded.\n\nThis endpoint requires the root user of the organization.\n",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/clients/{client_id}/submit\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/oauth-client"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"409": {
"description": "Conflict (only Draft or Rejected apps can be submitted)"
},
"422": {
"description": "Unprocessable Entity"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oauth/clients/{client_id}/secret": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "client_id",
"required": true,
"description": "The OAuth App ID."
}
],
"post": {
"summary": "Regenerate OAuth App Secret",
"operationId": "regenerate-oauth-client-secret",
"description": "Generate a new client secret for an OAuth App, replacing the previous one. Only apps in `Draft` or `Rejected` status can have their secret regenerated — once the app is submitted or active the secret is locked.\n\nThe response includes the new plaintext `secret` exactly once. Store it securely — it cannot be retrieved again.\n\nThis endpoint requires the root user of the organization.\n",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/clients/{client_id}/secret\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/oauth-client"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"409": {
"description": "Conflict (only Draft or Rejected apps can have their secret regenerated)"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oauth/clients/{client_id}/scopes": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "client_id",
"required": true,
"description": "The OAuth App ID."
}
],
"get": {
"summary": "List OAuth App Scopes",
"operationId": "list-oauth-client-scopes",
"description": "Get the scopes (IAM policies) attached to an OAuth App.",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/clients/{client_id}/scopes\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"client_id": {
"type": "string"
},
"attachments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/oauth-scope-attachment"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Attach OAuth App Scope",
"operationId": "attach-oauth-client-scope",
"description": "Attach an [IAM policy](#tag/iam) to an OAuth App as a scope. The policy defines what authorized users grant the app permission to do on their behalf. A user can only authorize an app whose scopes stay within their own permissions.\n\nThis endpoint requires the root user of the organization.\n",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/clients/{client_id}/scopes\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"policy_id\": \"iam-policy-id-here\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"policy_id"
],
"properties": {
"policy_id": {
"type": "string",
"description": "The [IAM policy](#tag/iam) ID to attach as a scope."
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/oauth-client"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oauth/clients/{client_id}/scopes/{policy_id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "client_id",
"required": true,
"description": "The OAuth App ID."
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "policy_id",
"required": true,
"description": "The attached IAM policy ID."
}
],
"delete": {
"summary": "Detach OAuth App Scope",
"operationId": "detach-oauth-client-scope",
"description": "Detach a scope (IAM policy) from an OAuth App.\n\nThis endpoint requires the root user of the organization.\n",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/clients/{client_id}/scopes/{policy_id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oauth/scopes": {
"get": {
"summary": "List All OAuth Scopes",
"operationId": "list-oauth-scopes",
"description": "Get every OAuth scope attachment across all OAuth Apps in your organization, as a flat list of `{policy, client}` pairs.",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/scopes\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"attachments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/oauth-scope-attachment"
}
},
"meta": {
"type": "object",
"properties": {
"total": {
"type": "integer"
}
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oauth/clients/{client_id}/authorizations": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "client_id",
"required": true,
"description": "The OAuth App ID."
}
],
"get": {
"summary": "List OAuth App Authorizations",
"operationId": "list-oauth-client-authorizations",
"description": "Get the list of Vultr users who have authorized this OAuth App. This is the app-owner view — for the list of apps the calling user has authorized, see [List Authorized Apps](#operation/list-oauth-user-authorizations).",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/clients/{client_id}/authorizations\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"client_id": {
"type": "string"
},
"authorizations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/oauth-consenting-user"
}
},
"meta": {
"type": "object",
"properties": {
"total": {
"type": "integer"
}
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Revoke All OAuth App Authorizations",
"operationId": "revoke-all-oauth-client-authorizations",
"description": "Revoke every live user authorization for this OAuth App. All outstanding grants (and their refresh tokens) are invalidated.\n\nThis endpoint requires the root user of the organization.\n",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/clients/{client_id}/authorizations\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oauth/clients/{client_id}/draft_users": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "client_id",
"required": true,
"description": "The OAuth App ID."
}
],
"post": {
"summary": "Add OAuth App Draft User",
"operationId": "add-oauth-client-draft-user",
"description": "Add a Vultr user to the draft-user allowlist of an OAuth App. While an app is not yet `Active`, only allowlisted users (and the app creator) can complete the authorization flow — this lets you test the integration before review. The user must already have a Vultr account.\n\nThis endpoint requires the root user of the organization.\n",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/clients/{client_id}/draft_users\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"email\": \"tester@example.com\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"email"
],
"properties": {
"email": {
"type": "string",
"description": "Email address of the Vultr user to allowlist."
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/oauth-client"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found (no Vultr user exists for that email address)"
},
"422": {
"description": "Unprocessable Entity"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oauth/clients/{client_id}/draft_users/{user_id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "client_id",
"required": true,
"description": "The OAuth App ID."
},
{
"schema": {
"type": "string"
},
"in": "path",
"name": "user_id",
"required": true,
"description": "The allowlisted user's ID (as returned in the app's `draft_users`)."
}
],
"delete": {
"summary": "Remove OAuth App Draft User",
"operationId": "remove-oauth-client-draft-user",
"description": "Remove a user from the draft-user allowlist of an OAuth App.\n\nThis endpoint requires the root user of the organization.\n",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/clients/{client_id}/draft_users/{user_id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oauth/authorize": {
"post": {
"summary": "Authorize OAuth App",
"operationId": "oauth-authorize",
"description": "Grant an OAuth App authorization to act on your behalf, and receive a one-time authorization code (OAuth 2.0 authorization code flow). This endpoint is called as the signed-in consenting user — the same flow the consent screen in the customer portal uses.\n\nThe `redirect_uri` must exactly match one of the app's registered callback URLs. PKCE (`code_challenge` / `code_challenge_method`) is supported and recommended for public clients.\n\nThe returned `code` is single-use and expires after 10 minutes. The app exchanges it for a bearer token at the returned `token_endpoint` — see [Create OIDC Provider Token](#operation/create-oidc-provider-token).\n\nYou can only authorize an app whose scopes stay within your own permissions. If the app's scopes changed since a previous authorization, the request returns `409` and must be retried with `reconsent` set to `true` to accept the new scopes.\n",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/authorize\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"client_id\": \"oauth-app-id-here\", \"redirect_uri\": \"https://example.com/oauth/callback\", \"response_type\": \"code\", \"state\": \"random-state-value\", \"approve\": true}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"client_id",
"redirect_uri",
"approve"
],
"properties": {
"client_id": {
"type": "string",
"description": "The OAuth App ID."
},
"redirect_uri": {
"type": "string",
"description": "Callback URL to return the code to. Must exactly match one of the app's registered callback URLs."
},
"response_type": {
"type": "string",
"description": "Must be `code` (authorization code flow). Default is `code`."
},
"scope": {
"type": "string",
"description": "Requested scope string, echoed into the issued token."
},
"state": {
"type": "string",
"description": "Opaque value echoed back in the `redirect_to` URL to protect against CSRF."
},
"code_challenge": {
"type": "string",
"description": "PKCE code challenge."
},
"code_challenge_method": {
"type": "string",
"enum": [
"plain",
"S256"
],
"description": "PKCE code challenge method. Default is `plain` when a `code_challenge` is sent."
},
"approve": {
"type": "boolean",
"description": "Must be `true` to grant the authorization. `false` denies the request."
},
"reconsent": {
"type": "boolean",
"description": "Set to `true` to accept an app's changed scopes when re-authorizing (after a `409` response)."
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"redirect_to": {
"type": "string",
"description": "The registered callback URL with `code`, `oidc_provider_id`, and `state` query parameters appended."
},
"code": {
"type": "string",
"description": "One-time authorization code. Expires after 10 minutes."
},
"oidc_provider_id": {
"type": "string",
"description": "The app's OIDC Provider ID."
},
"token_endpoint": {
"type": "string",
"description": "Path to exchange the code for a bearer token (`/v2/oidc/provider/{provider_id}/token`)."
}
}
}
}
}
},
"400": {
"description": "Bad Request (authorization denied, unsupported `response_type`, or `redirect_uri` does not match a registered callback URL)"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden (app is not Active and you are not on its draft-user allowlist)"
},
"404": {
"description": "Not Found"
},
"409": {
"description": "Conflict (the app's scopes changed since your previous authorization — retry with `reconsent` set to `true`)"
},
"422": {
"description": "Unprocessable Entity"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oauth/authorizations": {
"get": {
"summary": "List Authorized Apps",
"operationId": "list-oauth-user-authorizations",
"description": "Get the list of OAuth Apps the calling user has authorized. This is the consenting-user view — for the list of users who authorized an app you own, see [List OAuth App Authorizations](#operation/list-oauth-client-authorizations).",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/authorizations\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"authorizations": {
"type": "array",
"items": {
"$ref": "#/components/schemas/oauth-user-authorization"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oauth/authorizations/{id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The authorization ID (as returned by [List Authorized Apps](#operation/list-oauth-user-authorizations))."
}
],
"delete": {
"summary": "Revoke Authorized App",
"operationId": "revoke-oauth-user-authorization",
"description": "Revoke an OAuth App authorization you previously granted. The app's access (including outstanding refresh tokens) is invalidated.",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/authorizations/{id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"409": {
"description": "Conflict (authorization is already revoked)"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oauth/client/account/authorization": {
"post": {
"summary": "Create OAuth Client Account Authorization (Legacy)",
"operationId": "create-oauth-client-account-authorization",
"deprecated": true,
"description": "Legacy endpoint that mints an authorization code for an Active OAuth client against the calling account. Preserved for existing integrations — new integrations should use [Authorize OAuth App](#operation/oauth-authorize) instead.\n",
"tags": [
"oauth"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oauth/client/account/authorization\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"client_id\": \"oauth-app-id-here\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"client_id"
],
"properties": {
"client_id": {
"type": "string",
"description": "The OAuth App ID."
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"client_id": {
"type": "string"
},
"account_id": {
"type": "integer"
},
"auth_code": {
"type": "string"
},
"consumed": {
"type": "integer"
},
"updated_at": {
"type": "string"
},
"added_at": {
"type": "string"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oidc/provider": {
"get": {
"summary": "List OIDC Providers",
"operationId": "list-oidc-providers",
"description": "Get a list of all OIDC Providers in your account.",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/provider\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"providers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/oidc-provider"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create OIDC Provider",
"operationId": "create-oidc-provider",
"description": "Create a new OIDC Provider.",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/provider\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"name\": \"my-provider\", \"issuer_id\": \"issuer-id-here\", \"private_key_b64\": \"base64-encoded-key\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The provider name."
},
"issuer_id": {
"type": "string",
"description": "The OIDC Issuer ID to associate with this provider."
},
"private_key_b64": {
"type": "string",
"description": "Base64-encoded private key for the provider."
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"provider": {
"$ref": "#/components/schemas/oidc-provider"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oidc/provider/{provider_id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "provider_id",
"required": true,
"description": "The OIDC Provider ID."
}
],
"get": {
"summary": "Get OIDC Provider",
"operationId": "get-oidc-provider",
"description": "Get information about an OIDC Provider.",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/provider/{provider_id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"provider": {
"$ref": "#/components/schemas/oidc-provider"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete OIDC Provider",
"operationId": "delete-oidc-provider",
"description": "Delete an OIDC Provider.",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/provider/{provider_id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oidc/provider/{provider_id}/token": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "provider_id",
"required": true,
"description": "The OIDC Provider ID."
}
],
"post": {
"summary": "Create OIDC Provider Token",
"operationId": "create-oidc-provider-token",
"description": "Token endpoint for the provider. Exchange an authorization code from [Authorize OAuth App](#operation/oauth-authorize) for a bearer token (`grant_type` of `authorization_code`), or rotate a refresh token for a new one (`grant_type` of `refresh_token`).\n\nClient credentials may be sent in the request body (`client_id` / `client_secret`) or as an HTTP Basic `Authorization` header. This endpoint itself requires no bearer token.\n\nAccess tokens are valid for 1 hour. Refresh tokens are single-use: each refresh grant returns a new `refresh_token`, and reusing an old one revokes the whole token family.\n",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/provider/{provider_id}/token\" \\\n -X POST \\\n -H \"Content-Type: application/json\" \\\n --data '{\"grant_type\": \"authorization_code\", \"code\": \"auth-code-here\", \"redirect_uri\": \"https://example.com/oauth/callback\", \"client_id\": \"oauth-app-id-here\", \"client_secret\": \"oauth-app-secret-here\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"grant_type"
],
"properties": {
"grant_type": {
"type": "string",
"enum": [
"authorization_code",
"refresh_token"
],
"description": "The OAuth 2.0 grant type."
},
"code": {
"type": "string",
"description": "The authorization code (required for `authorization_code` grants). Single-use, expires 10 minutes after issue."
},
"redirect_uri": {
"type": "string",
"description": "The redirect URI used in the authorization request."
},
"code_verifier": {
"type": "string",
"description": "PKCE code verifier, when the authorization request included a `code_challenge`."
},
"refresh_token": {
"type": "string",
"description": "The refresh token (required for `refresh_token` grants)."
},
"client_id": {
"type": "string",
"description": "The OAuth App ID. May instead be sent via HTTP Basic auth."
},
"client_secret": {
"type": "string",
"description": "The OAuth App secret. May instead be sent via HTTP Basic auth."
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"access_token": {
"type": "string"
},
"id_token": {
"type": "string"
},
"token_type": {
"type": "string",
"example": "Bearer"
},
"expires_in": {
"type": "integer",
"example": 3600
},
"scope": {
"type": "string"
},
"refresh_token": {
"type": "string",
"description": "Rotating refresh token. Present when the authorization has a consent record to anchor revocation."
}
}
}
}
}
},
"400": {
"description": "Bad Request (unsupported grant type, or code already used/expired)"
},
"401": {
"description": "Unauthorized"
},
"404": {
"description": "Not Found"
},
"422": {
"description": "Unprocessable Entity"
}
}
}
},
"/oidc/provider/{provider_id}/.well-known/openid-configuration": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "provider_id",
"required": true,
"description": "The OIDC Provider ID."
}
],
"get": {
"summary": "Get OIDC Provider Discovery",
"operationId": "get-oidc-provider-discovery",
"description": "Get the OpenID Connect discovery document for an OIDC Provider.",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/provider/{provider_id}/.well-known/openid-configuration\" \\\n -X GET"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"description": "OpenID Connect discovery document."
}
}
}
},
"404": {
"description": "Not Found"
}
}
}
},
"/oidc/issuer": {
"get": {
"summary": "List OIDC Issuers",
"operationId": "list-oidc-issuers",
"description": "Get a list of all OIDC Issuers in your account.",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/issuer\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"schema": {
"type": "number"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"issuers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/oidc-issuer"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create OIDC Issuer",
"operationId": "create-oidc-issuer",
"description": "Create a new OIDC Issuer.",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/issuer\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"source\": \"external\", \"uri\": \"https://issuer.example.com\", \"source_id\": \"source-id\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"source": {
"type": "string",
"description": "The issuer source type."
},
"label": {
"type": "string",
"description": "A human-readable label for the issuer."
},
"uri": {
"type": "string",
"description": "The JWKS URI for the issuer."
},
"source_id": {
"type": "string",
"description": "The source identifier for the issuer."
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"issuer": {
"$ref": "#/components/schemas/oidc-issuer"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oidc/issuer/{issuer_id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "issuer_id",
"required": true,
"description": "The OIDC Issuer ID."
}
],
"get": {
"summary": "Get OIDC Issuer",
"operationId": "get-oidc-issuer",
"description": "Get information about an OIDC Issuer.",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/issuer/{issuer_id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"issuer": {
"$ref": "#/components/schemas/oidc-issuer"
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"patch": {
"summary": "Update OIDC Issuer",
"operationId": "update-oidc-issuer",
"description": "Update an OIDC Issuer.",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/issuer/{issuer_id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"uri\": \"https://issuer.example.com/updated\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "A human-readable label for the issuer."
},
"uri": {
"type": "string",
"description": "The JWKS URI for the issuer."
}
}
}
}
}
},
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"issuer": {
"$ref": "#/components/schemas/oidc-issuer"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete OIDC Issuer",
"operationId": "delete-oidc-issuer",
"description": "Delete an OIDC Issuer.",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/issuer/{issuer_id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oidc/issuer/{issuer_id}/jwks": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "issuer_id",
"required": true,
"description": "The OIDC Issuer ID."
}
],
"get": {
"summary": "Get OIDC Issuer JWKS",
"operationId": "get-oidc-issuer-jwks",
"description": "Get the JSON Web Key Set (JWKS) for an OIDC Issuer.",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/issuer/{issuer_id}/jwks\" \\\n -X GET"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"keys": {
"type": "array",
"items": {
"type": "object"
}
}
}
}
}
}
},
"404": {
"description": "Not Found"
}
}
}
},
"/oidc/authorize": {
"get": {
"summary": "OIDC Authorization Endpoint",
"operationId": "oidc-authorize",
"description": "Initiate an OIDC authorization flow.",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/authorize?response_type=code&client_id=client-id&redirect_uri=https%3A%2F%2Fexample.com%2Fcallback&scope=openid\" \\\n -X GET"
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "response_type",
"description": "The response type (e.g., \"code\")."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "client_id",
"description": "The client ID."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "redirect_uri",
"description": "The redirect URI after authorization."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "scope",
"description": "The requested scopes (e.g., \"openid\")."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "state",
"description": "An opaque value for security."
}
],
"responses": {
"302": {
"description": "Found (redirect to authorization page)"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
}
}
}
},
"/oidc/token": {
"get": {
"summary": "Get OIDC Token Info",
"operationId": "get-oidc-token",
"description": "Get information about the current OIDC token.",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/token\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/oidc/jwks": {
"get": {
"summary": "Get OIDC JWKS",
"operationId": "get-oidc-jwks",
"description": "Get the JSON Web Key Set (JWKS) for OIDC token verification.",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/jwks\" \\\n -X GET"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"keys": {
"type": "array",
"items": {
"type": "object"
}
}
}
}
}
}
}
}
}
},
"/oidc/userinfo": {
"get": {
"summary": "Get OIDC User Info",
"operationId": "get-oidc-userinfo",
"description": "Get information about the authenticated user from OIDC.",
"tags": [
"oidc"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/oidc/userinfo\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"401": {
"description": "Unauthorized"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/scim/v2/Users": {
"get": {
"summary": "List SCIM Users",
"operationId": "scim-list-users",
"description": "List Users in your Organization via the SCIM 2.0 protocol. Authenticate using the SCIM token obtained from the Organization SCIM configuration.",
"tags": [
"scim"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/scim/v2/Users\" \\\n -X GET \\\n -H \"Authorization: Bearer ${SCIM_TOKEN}\""
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "startIndex",
"description": "The 1-based index of the first result in the current set of list results."
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "count",
"description": "Specifies the desired maximum number of query results per page."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "filter",
"description": "Filter expression to select specific resources (e.g., `userName eq \"user@example.com\"`)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schemas": {
"type": "array",
"items": {
"type": "string"
}
},
"totalResults": {
"type": "integer"
},
"startIndex": {
"type": "integer"
},
"itemsPerPage": {
"type": "integer"
},
"Resources": {
"type": "array",
"items": {
"$ref": "#/components/schemas/scim-user"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create SCIM User",
"operationId": "scim-create-user",
"description": "Create a new User in your Organization via the SCIM 2.0 protocol. Authenticate using the SCIM token obtained from the Organization SCIM configuration.",
"tags": [
"scim"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/scim/v2/Users\" \\\n -X POST \\\n -H \"Authorization: Bearer ${SCIM_TOKEN}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"schemas\": [\"urn:ietf:params:scim:schemas:core:2.0:User\"], \"userName\": \"user@example.com\", \"name\": {\"givenName\": \"First\", \"familyName\": \"Last\"}, \"active\": true}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schemas": {
"type": "array",
"items": {
"type": "string"
},
"description": "SCIM schemas (must include `urn:ietf:params:scim:schemas:core:2.0:User`)."
},
"userName": {
"type": "string",
"description": "The user's email address."
},
"name": {
"type": "object",
"properties": {
"givenName": {
"type": "string"
},
"familyName": {
"type": "string"
}
}
},
"displayName": {
"type": "string"
},
"active": {
"type": "boolean"
},
"phoneNumbers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"type": {
"type": "string"
}
}
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/scim-user"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"409": {
"description": "Conflict"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/scim/v2/Users/{id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The SCIM User ID."
}
],
"get": {
"summary": "Get SCIM User",
"operationId": "scim-get-user",
"description": "Get a User by ID via the SCIM 2.0 protocol. Authenticate using the SCIM token obtained from the Organization SCIM configuration.",
"tags": [
"scim"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/scim/v2/Users/{id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${SCIM_TOKEN}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/scim-user"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"patch": {
"summary": "Patch SCIM User",
"operationId": "scim-patch-user",
"description": "Partially update a User via the SCIM 2.0 protocol. Authenticate using the SCIM token obtained from the Organization SCIM configuration.",
"tags": [
"scim"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/scim/v2/Users/{id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${SCIM_TOKEN}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"schemas\": [\"urn:ietf:params:scim:api:messages:2.0:PatchOp\"], \"Operations\": [{\"op\": \"replace\", \"path\": \"active\", \"value\": false}]}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schemas": {
"type": "array",
"items": {
"type": "string"
},
"description": "SCIM schemas (must include `urn:ietf:params:scim:api:messages:2.0:PatchOp`)."
},
"Operations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"add",
"remove",
"replace"
]
},
"path": {
"type": "string"
},
"value": {
"description": "The value for the operation."
}
}
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/scim-user"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete SCIM User",
"operationId": "scim-delete-user",
"description": "Delete a User via the SCIM 2.0 protocol. Authenticate using the SCIM token obtained from the Organization SCIM configuration.",
"tags": [
"scim"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/scim/v2/Users/{id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${SCIM_TOKEN}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/scim/v2/Groups": {
"get": {
"summary": "List SCIM Groups",
"operationId": "scim-list-groups",
"description": "List Groups in your Organization via the SCIM 2.0 protocol. Authenticate using the SCIM token obtained from the Organization SCIM configuration.",
"tags": [
"scim"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/scim/v2/Groups\" \\\n -X GET \\\n -H \"Authorization: Bearer ${SCIM_TOKEN}\""
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "startIndex",
"description": "The 1-based index of the first result in the current set of list results."
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "count",
"description": "Specifies the desired maximum number of query results per page."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "filter",
"description": "Filter expression to select specific resources (e.g., `displayName eq \"my-group\"`)."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schemas": {
"type": "array",
"items": {
"type": "string"
}
},
"totalResults": {
"type": "integer"
},
"startIndex": {
"type": "integer"
},
"itemsPerPage": {
"type": "integer"
},
"Resources": {
"type": "array",
"items": {
"$ref": "#/components/schemas/scim-group"
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
}
},
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create SCIM Group",
"operationId": "scim-create-group",
"description": "Create a new Group in your Organization via the SCIM 2.0 protocol. Authenticate using the SCIM token obtained from the Organization SCIM configuration.",
"tags": [
"scim"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/scim/v2/Groups\" \\\n -X POST \\\n -H \"Authorization: Bearer ${SCIM_TOKEN}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"schemas\": [\"urn:ietf:params:scim:schemas:core:2.0:Group\"], \"displayName\": \"my-group\"}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schemas": {
"type": "array",
"items": {
"type": "string"
},
"description": "SCIM schemas (must include `urn:ietf:params:scim:schemas:core:2.0:Group`)."
},
"displayName": {
"type": "string",
"description": "The group display name."
},
"externalId": {
"type": "string",
"description": "An external identifier for the group."
},
"members": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "The SCIM User ID."
}
}
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/scim-group"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"409": {
"description": "Conflict"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/scim/v2/Groups/{id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"in": "path",
"name": "id",
"required": true,
"description": "The SCIM Group ID."
}
],
"get": {
"summary": "Get SCIM Group",
"operationId": "scim-get-group",
"description": "Get a Group by ID via the SCIM 2.0 protocol. Authenticate using the SCIM token obtained from the Organization SCIM configuration.",
"tags": [
"scim"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/scim/v2/Groups/{id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${SCIM_TOKEN}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/scim-group"
}
}
}
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update SCIM Group",
"operationId": "scim-update-group",
"description": "Replace a Group via the SCIM 2.0 protocol. Authenticate using the SCIM token obtained from the Organization SCIM configuration.",
"tags": [
"scim"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/scim/v2/Groups/{id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${SCIM_TOKEN}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"schemas\": [\"urn:ietf:params:scim:schemas:core:2.0:Group\"], \"displayName\": \"updated-group\", \"members\": []}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schemas": {
"type": "array",
"items": {
"type": "string"
},
"description": "SCIM schemas (must include `urn:ietf:params:scim:schemas:core:2.0:Group`)."
},
"displayName": {
"type": "string",
"description": "The group display name."
},
"externalId": {
"type": "string",
"description": "An external identifier for the group."
},
"members": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "The SCIM User ID."
}
}
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/scim-group"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"patch": {
"summary": "Patch SCIM Group",
"operationId": "scim-patch-group",
"description": "Partially update a Group via the SCIM 2.0 protocol. Authenticate using the SCIM token obtained from the Organization SCIM configuration.",
"tags": [
"scim"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/scim/v2/Groups/{id}\" \\\n -X PATCH \\\n -H \"Authorization: Bearer ${SCIM_TOKEN}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\"schemas\": [\"urn:ietf:params:scim:api:messages:2.0:PatchOp\"], \"Operations\": [{\"op\": \"add\", \"path\": \"members\", \"value\": [{\"value\": \"user-id\"}]}]}'"
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"schemas": {
"type": "array",
"items": {
"type": "string"
},
"description": "SCIM schemas (must include `urn:ietf:params:scim:api:messages:2.0:PatchOp`)."
},
"Operations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"op": {
"type": "string",
"enum": [
"add",
"remove",
"replace"
]
},
"path": {
"type": "string"
},
"value": {
"description": "The value for the operation."
}
}
}
}
}
}
}
}
},
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/scim-group"
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
},
"delete": {
"summary": "Delete SCIM Group",
"operationId": "scim-delete-group",
"description": "Delete a Group via the SCIM 2.0 protocol. Authenticate using the SCIM token obtained from the Organization SCIM configuration.",
"tags": [
"scim"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/scim/v2/Groups/{id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${SCIM_TOKEN}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"security": [
{
"API Key": []
}
]
}
},
"/clusters": {
"get": {
"summary": "List Clusters",
"tags": [
"clusters"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/clusters\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"clusters": {
"type": "array",
"items": {
"$ref": "#/components/schemas/cluster"
}
},
"meta": {
"$ref": "#/components/schemas/meta"
}
}
},
"examples": {
"response": {
"value": {
"clusters": [
{
"id": "7a1b2c3d-4e5f-6789-abcd-ef0123456789",
"region": "ewr",
"label": "My GPU Cluster",
"plan": "vbm-256c-3072gb-8-mi325x-aac-gpu",
"min_pool_count": 1,
"desired_pool_count": 2,
"hostname": "my-cluster",
"status": "active",
"state": "running",
"date_created": "2026-01-15T10:30:00+00:00",
"cluster_type": "fabric",
"auto_provision": false,
"type": "cluster",
"instance_template_id": "98765432-10ab-cdef-1234-567890abcdef",
"head_node_instance_template_id": "98765432-10ab-cdef-1234-567890abcdef",
"instances": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"label": "cluster-node-1",
"date_created": "2026-01-15T10:32:00+00:00",
"status": "active"
}
],
"vpc_networks": [
{
"id": "4f0f12e5-1f84-404f-aa84-85f431ea5ec2",
"description": "default-vpc"
}
]
}
],
"meta": {
"total": 1,
"links": {
"next": "",
"prev": ""
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-clusters",
"description": "List all clusters in your account.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "per_page",
"description": "Number of items requested per page. Default is 100 and Max is 500."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "cursor",
"description": "Cursor for paging. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination)."
}
]
},
"post": {
"summary": "Create Cluster",
"tags": [
"clusters"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/clusters\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"plan\" : \"vbm-256c-3072gb-8-mi325x-aac-gpu\",\n \"label\" : \"My GPU Cluster\",\n \"min_pool_count\" : 1,\n \"desired_pool_count\" : 2,\n \"hostname\" : \"my-cluster\",\n \"os_id\" : 1743\n }'"
}
],
"responses": {
"200": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"cluster": {
"$ref": "#/components/schemas/cluster"
}
}
},
"examples": {
"response": {
"value": {
"cluster": {
"id": "7a1b2c3d-4e5f-6789-abcd-ef0123456789",
"region": "ewr",
"label": "My GPU Cluster",
"plan": "vbm-256c-3072gb-8-mi325x-aac-gpu",
"min_pool_count": 1,
"desired_pool_count": 2,
"hostname": "my-cluster",
"status": "pending",
"state": "provisioning",
"date_created": "2026-01-15T10:30:00+00:00",
"cluster_type": "fabric",
"auto_provision": false,
"type": "cluster",
"instance_template_id": "98765432-10ab-cdef-1234-567890abcdef"
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-cluster",
"description": "Create a new cluster in a `region`. Provide exactly one of `plan` or `instance_template`.\n\nWhen creating with `plan`, configure the compute nodes' image and access (OS/app/image, ISO, snapshot, SSH keys, label) via the `compute_node_template` object. The head node is configured independently via `head_node_template`. The deprecated top-level `os_id`/`app_id`/`image_id` still work and are shared by both nodes, but the per-node objects override them.\n\nVFS attachments are configured via the nested `vfs` object — set its `ids` array to attach existing VFS subscriptions and/or its `create` field to provision a new one. Both may be combined in a single request. These are properties **inside** the `vfs` object (for example `\"vfs\": { \"ids\": [\"\"], \"create\": { \"label\": \"my-vfs\", \"storage_size\": { \"gb\": 100 } } }`), not top-level `vfs.ids` / `vfs.create` keys. Every instance in the cluster (compute and head node alike) sees every attached VFS.\n\nWhen `use_head_node` is `true`, provide a `head_node_plan` (to create a new head-node template inline, optionally with a `head_node_template` object) **or** a `head_node_template` string id (an existing template). `head_node_plan` requires an image source from the top-level fields or the `head_node_template` object.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the cluster will be deployed."
},
"plan": {
"type": "string",
"description": "The [Plan id](#operation/list-plans) for cluster instances. Provide `plan` **OR** `instance_template` (mutually exclusive)."
},
"instance_template": {
"type": "string",
"description": "The [Instance Template id](#operation/list-instance-templates) for an existing template to use for the compute nodes. Provide `instance_template` **OR** `plan` (mutually exclusive), and **OR** `compute_node_template` (mutually exclusive)."
},
"compute_node_template": {
"description": "Create a new compute-node instance template inline (used with `plan`). Exposes the full instance-template field set (iso, snapshot, ssh keys, label, etc.). Mutually exclusive with `instance_template`; overrides the deprecated top-level `os_id`/`app_id`/`image_id`.",
"$ref": "#/components/schemas/cluster-node-template"
},
"label": {
"type": "string",
"description": "A user-supplied label for this cluster."
},
"min_pool_count": {
"type": "integer",
"description": "Minimum number of instances in the cluster's pool."
},
"desired_pool_count": {
"type": "integer",
"description": "Desired number of instances in the cluster's pool."
},
"hostname": {
"type": "string",
"description": "Hostname to apply to cluster instances."
},
"notify_activate": {
"type": "boolean",
"description": "Notify by email when the cluster is activated."
},
"os_id": {
"type": "integer",
"deprecated": true,
"description": "**Deprecated.** Use `compute_node_template.os_id` (and/or `head_node_template.os_id`) instead. The [Operating System id](#operation/list-os) to install on cluster instances (shared by compute and head node)."
},
"app_id": {
"type": "integer",
"deprecated": true,
"description": "**Deprecated.** Use `compute_node_template.marketplace_app_id` (and/or `head_node_template.marketplace_app_id`) instead. The [Application id](#operation/list-applications) to install on cluster instances (shared by compute and head node)."
},
"image_id": {
"type": "integer",
"deprecated": true,
"description": "**Deprecated.** Use `compute_node_template.marketplace_image_id` (and/or `head_node_template.marketplace_image_id`) instead. The [Application image_id](#operation/list-applications) to install on cluster instances (shared by compute and head node)."
},
"gpu_fabric": {
"type": "boolean",
"description": "If `true`, the cluster is created as a GPU fabric cluster."
},
"vfs": {
"description": "VFS attachments for the cluster, supplied as a nested object with `ids` (existing VFS subscription ids to attach) and/or `create` (provision a new VFS). Example: `{\"ids\": [\"\"], \"create\": {\"label\": \"my-vfs\", \"storage_size\": {\"gb\": 100}}}`. Every instance in the cluster (compute and head node alike) sees every attached VFS.",
"$ref": "#/components/schemas/cluster-vfs-input"
},
"vfs_ids": {
"type": "array",
"deprecated": true,
"description": "**Deprecated.** Set the `ids` array inside the nested `vfs` object instead (not a top-level `vfs.ids` key). Array of existing [VFS subscription ids](#operation/list-vfs) to attach to the cluster. All VFS subscriptions must be in the same region as the cluster.",
"items": {
"type": "string"
}
},
"use_vfs": {
"type": "boolean",
"deprecated": true,
"description": "**Deprecated.** Set the `create` field inside the nested `vfs` object instead (not a top-level `vfs.create` key). Enable VFS for the cluster. When `true`, `vfs_label` and `vfs_storage_size` are required."
},
"vfs_label": {
"type": "string",
"deprecated": true,
"description": "**Deprecated.** Set `label` inside the nested `vfs` object's `create` field instead."
},
"vfs_storage_size": {
"deprecated": true,
"description": "**Deprecated.** Set `storage_size` inside the nested `vfs` object's `create` field instead.",
"$ref": "#/components/schemas/vfs-storage-size"
},
"use_head_node": {
"type": "boolean",
"description": "Enable a head node for the cluster. When `true`, provide exactly one of `head_node_plan` or `head_node_template`."
},
"head_node_plan": {
"type": "string",
"description": "Plan for the head node, used to create a new head-node instance template inline. Requires an image source — one of `os_id`/`app_id`/`image_id` (deprecated, top-level) or `head_node_template.{os_id,marketplace_app_id,marketplace_image_id,snapshot_id,iso_id}`. Mutually exclusive with `head_node_template` **when `head_node_template` is an existing template id (string)**."
},
"head_node_template": {
"description": "Head-node instance template. Either form is accepted:\n- **string** — an existing [Instance Template id](#operation/list-instance-templates) to use as-is (mutually exclusive with `head_node_plan`).\n- **object** — create a new head-node template inline (paired with `head_node_plan`); exposes the full instance-template field set and overrides the deprecated top-level `os_id`/`app_id`/`image_id`.",
"oneOf": [
{
"type": "string"
},
{
"$ref": "#/components/schemas/cluster-node-template"
}
]
},
"vpc_ids": {
"type": "array",
"description": "Array of [VPC ids](#operation/list-vpcs) to attach to the cluster.",
"items": {
"type": "string"
}
}
},
"required": [
"region"
]
},
"examples": {
"request": {
"value": {
"region": "ewr",
"plan": "vbm-256c-3072gb-8-mi325x-aac-gpu",
"label": "My GPU Cluster",
"min_pool_count": 1,
"desired_pool_count": 2,
"hostname": "my-cluster",
"compute_node_template": {
"os_id": 1743,
"ssh_key_ids": [
"11111111-1111-1111-1111-111111111111"
],
"label": "my-cluster-compute",
"user_data": ""
},
"use_head_node": true,
"head_node_plan": "vc2-2c-4gb",
"head_node_template": {
"os_id": 1743,
"ssh_key_ids": [
"11111111-1111-1111-1111-111111111111"
],
"label": "my-cluster-head",
"user_data": ""
},
"vfs": {
"ids": [
"22222222-2222-2222-2222-222222222222"
],
"create": {
"label": "my-cluster-vfs",
"storage_size": {
"gb": 100
}
}
}
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/clusters/availability": {
"get": {
"summary": "Get Cluster Availability",
"tags": [
"clusters"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/clusters/availability\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"region\" : \"ewr\",\n \"type\" : \"gpu-fabric\"\n }'"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"availability": {
"type": "object",
"description": "Map of cluster type (`vps`, `bare-metal`, `gpu-fabric`) to an array of available configurations for that type.",
"additionalProperties": {
"type": "array",
"items": {
"$ref": "#/components/schemas/cluster-availability-item"
}
}
}
}
},
"examples": {
"response": {
"value": {
"availability": {
"gpu-fabric": [
{
"id": "vbm-256c-3072gb-8-mi325x-gpu",
"description": "2x AMD EPYC 9575F, 8x AMD Instinct MI325X, 3072 GB RAM",
"automation_type": "ROCE",
"available": true,
"gpu_fabric": true,
"key_type": "VLANID",
"cpu_count": 256,
"ram": 3145728,
"disk": 3840,
"disk_count": 8,
"bandwidth": 15360,
"gpu_brand": "AMD",
"gpu_type": "AMD_MI325X",
"gpu_count": 8,
"gpu_vram_gb": 2048,
"monthly_cost": 21450.24,
"hourly_cost": 31.92
}
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-cluster-availability",
"description": "Returns available cluster types for a region. The request body is required on this GET endpoint.\n\n**Note:** This endpoint accepts a JSON body on a `GET` request. Some HTTP clients and proxies may strip the body from `GET` requests.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) to check cluster availability in."
},
"type": {
"type": "string",
"description": "Optional filter for cluster type.\n\n* vps\n* bare-metal\n* gpu-fabric",
"enum": [
"vps",
"bare-metal",
"gpu-fabric"
]
}
},
"required": [
"region"
]
},
"examples": {
"request": {
"value": {
"region": "ewr",
"type": "gpu-fabric"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/clusters/availability/{plan-id}": {
"get": {
"summary": "Get Cluster Availability by Plan",
"tags": [
"clusters"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/clusters/availability/{plan-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"locations": {
"type": "array",
"description": "Region ids where this plan is available to deploy as a cluster for the account.",
"items": {
"type": "string"
}
},
"fabric_locations": {
"type": "array",
"description": "Subset of `locations` that also has GPU switch fabric available for this plan.",
"items": {
"type": "string"
}
}
}
},
"examples": {
"response": {
"value": {
"locations": [
"ewr",
"lax"
],
"fabric_locations": [
"ewr",
"lax"
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-cluster-availability-by-plan",
"description": "Returns the account-aware regions where a single [Plan id](#operation/list-plans) can be deployed as a cluster (`locations`), and the subset of those regions that also have GPU switch fabric for the plan (`fabric_locations`).",
"security": [
{
"API Key": []
}
]
},
"parameters": [
{
"schema": {
"type": "string"
},
"name": "plan-id",
"in": "path",
"required": true,
"description": "The [Plan id](#operation/list-plans) to check cluster availability for."
}
]
},
"/clusters/{cluster-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "cluster-id",
"in": "path",
"required": true,
"description": "The [Cluster ID](#operation/list-clusters)."
}
],
"get": {
"summary": "Get Cluster",
"tags": [
"clusters"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/clusters/{cluster-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"cluster": {
"$ref": "#/components/schemas/cluster"
}
}
},
"examples": {
"response": {
"value": {
"cluster": {
"id": "7a1b2c3d-4e5f-6789-abcd-ef0123456789",
"region": "ewr",
"label": "My GPU Cluster",
"plan": "vbm-256c-3072gb-8-mi325x-aac-gpu",
"min_pool_count": 1,
"desired_pool_count": 2,
"hostname": "my-cluster",
"status": "active",
"state": "running",
"date_created": "2026-01-15T10:30:00+00:00",
"cluster_type": "fabric",
"auto_provision": false,
"type": "fabric",
"head_node_instance_template_id": "98765432-10ab-cdef-1234-567890abcdef",
"instance_template": {
"id": "98765432-10ab-cdef-1234-567890abcdef",
"plan": "vbm-256c-3072gb-8-mi325x-aac-gpu",
"label": "cluster-template",
"os": "Ubuntu 22.04 x64"
},
"instances": [
{
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"label": "cluster-node-1",
"date_created": "2026-01-15T10:32:00+00:00",
"status": "active",
"ip_address": "192.0.2.10",
"hostname": "my-cluster-1",
"block_storage": [
{
"id": "1e3d0b8a-9c2f-4a7b-8d5e-6f0a1b2c3d4e",
"label": "node-data-vol",
"status": "active",
"size_gb": 100,
"bootable": false
}
]
},
{
"id": "dc787b57-77fe-5ecc-c940-554f3f7d1c71",
"label": "cluster-head-1",
"date_created": "2026-01-15T10:32:00+00:00",
"status": "active",
"ip_address": "192.0.2.11",
"hostname": "my-cluster-2",
"is_head_node": true,
"block_storage": []
}
],
"vpc_networks": [
{
"id": "4f0f12e5-1f84-404f-aa84-85f431ea5ec2",
"description": "default-vpc"
}
]
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-cluster",
"description": "Get information about a cluster.",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Cluster",
"tags": [
"clusters"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/clusters/{cluster-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"Renamed Cluster\",\n \"desired_pool_count\" : 4\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"cluster": {
"$ref": "#/components/schemas/cluster"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-cluster",
"description": "Update properties of a cluster. All parameters are optional.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "A user-supplied label for this cluster."
},
"min_pool_count": {
"type": "integer",
"description": "Minimum number of instances in the cluster's pool."
},
"hostname": {
"type": "string",
"description": "Hostname for cluster instances."
},
"desired_pool_count": {
"type": "integer",
"description": "Desired number of instances in the cluster's pool."
},
"auto_provision": {
"type": "boolean",
"description": "Whether the cluster automatically provisions its compute pool.\n\nCannot be enabled on `fabric` clusters — such requests are rejected with a 406 response. Omit the key to leave the current value unchanged."
},
"vpc_ids": {
"type": "array",
"description": "Array of [VPC ids](#operation/list-vpcs) to attach to the cluster.",
"items": {
"type": "string"
}
},
"vfs": {
"description": "VFS attachments for the cluster. Sync-style PATCH semantics — sending this key replaces all VFS attachments with the union of `ids` and any new VFS produced by `create`. Omit the key to leave VFS attachments unchanged.",
"$ref": "#/components/schemas/cluster-vfs-input"
}
}
},
"examples": {
"request": {
"value": {
"label": "Renamed Cluster",
"desired_pool_count": 4
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"post": {
"summary": "Mass Update Cluster Instances",
"tags": [
"clusters"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/clusters/{cluster-id}\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"action\" : \"add\",\n \"instances\" : [\n \"cb676a46-66fd-4dfb-b839-443f2e6c0b60\",\n \"dc787b57-77fe-5ecc-c940-554f3f7d1c71\"\n ]\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"cluster": {
"type": "string",
"description": "Status message describing the result of the operation."
}
}
},
"examples": {
"response": {
"value": {
"cluster": "Instances added to cluster."
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "mass-update-cluster-instances",
"description": "Attach or Detach multiple instances on a cluster in a single request.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "The action to perform.\n\n* attach\n* detach",
"enum": [
"attach",
"detach"
]
},
"instances": {
"type": "array",
"description": "Array of [Instance ids](#operation/list-instances) to attach or detach.",
"items": {
"type": "string"
}
}
},
"required": [
"action",
"instances"
]
},
"examples": {
"request": {
"value": {
"action": "add",
"instances": [
"cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"dc787b57-77fe-5ecc-c940-554f3f7d1c71"
]
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete Cluster",
"tags": [
"clusters"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/clusters/{cluster-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-cluster",
"description": "Delete a cluster.",
"parameters": [
{
"schema": {
"type": "boolean",
"default": false
},
"in": "query",
"name": "force",
"description": "Set to `true` to detach and destroy every instance in the cluster, then delete the cluster. Default `false`.\nInstance destruction is asynchronous: a 204 means every instance is detached and queued for destruction, not that it is gone.\n"
}
],
"security": [
{
"API Key": []
}
]
}
},
"/clusters/{cluster-id}/metrics": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "cluster-id",
"in": "path",
"required": true,
"description": "The [Cluster ID](#operation/list-clusters)."
}
],
"get": {
"summary": "Get Cluster Metrics",
"tags": [
"clusters"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/clusters/{cluster-id}/metrics?period=-1days\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"metrics": {
"type": "object",
"properties": {
"instances": {
"type": "object",
"description": "Map of instance IDs to their metrics.",
"additionalProperties": {
"$ref": "#/components/schemas/cluster-instance-metrics"
}
}
}
}
}
},
"examples": {
"response": {
"value": {
"metrics": {
"instances": {
"cb676a46-66fd-4dfb-b839-443f2e6c0b60": {
"gpu": {
"temperature": {
"gpu": [
{
"unit": "celsius",
"target": "0",
"datapoints": [
[
42.5,
1705318800
],
[
43.1,
1705319100
]
],
"tags": {
"name": "0"
}
}
]
},
"utilization": {
"gpu": [
{
"unit": "percent",
"target": "0",
"datapoints": [
[
78.2,
1705318800
],
[
85.5,
1705319100
]
],
"tags": {
"name": "0"
}
}
],
"memory": {
"total": [
{
"unit": "megabytes",
"target": "0",
"datapoints": [
[
81920,
1705318800
]
],
"tags": {
"name": "0"
}
}
],
"used": [
{
"unit": "megabytes",
"target": "0",
"datapoints": [
[
65536,
1705318800
]
],
"tags": {
"name": "0"
}
}
],
"free": [
{
"unit": "megabytes",
"target": "0",
"datapoints": [
[
16384,
1705318800
]
],
"tags": {
"name": "0"
}
}
]
}
},
"power": {
"used": [
{
"unit": "watts",
"target": "0",
"datapoints": [
[
320.5,
1705318800
]
],
"tags": {
"name": "0"
}
}
],
"max": [
{
"unit": "watts",
"target": "0",
"datapoints": [
[
400,
1705318800
]
],
"tags": {
"name": "0"
}
}
]
}
},
"fabric": {
"raw_throughput": {
"tx": [
{
"unit": "bytes",
"target": "0",
"datapoints": [
[
125829120,
1705318800
]
],
"tags": {
"name": "0"
}
}
],
"rx": [
{
"unit": "bytes",
"target": "0",
"datapoints": [
[
130023424,
1705318800
]
],
"tags": {
"name": "0"
}
}
]
},
"retries": {
"tx": [
{
"unit": "count",
"target": "0",
"datapoints": [
[
3,
1705318800
]
],
"tags": {
"name": "0"
}
}
],
"rx": [
{
"unit": "count",
"target": "0",
"datapoints": [
[
1,
1705318800
]
],
"tags": {
"name": "0"
}
}
]
},
"optical_power_strength": {
"tx": [
{
"unit": "milliwatts",
"target": "0",
"datapoints": [
[
1.02,
1705318800
]
],
"tags": {
"name": "0"
}
}
],
"rx": [
{
"unit": "milliwatts",
"target": "0",
"datapoints": [
[
0.98,
1705318800
]
],
"tags": {
"name": "0"
}
}
]
}
}
}
}
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-cluster-metrics",
"description": "Retrieve GPU and fabric metrics for all instances in a cluster.",
"security": [
{
"API Key": []
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "period",
"description": "Time period for metrics. Defaults to `-1days`.",
"example": "-1days"
}
]
}
},
"/clusters/{cluster-id}/{action}/{instance-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "cluster-id",
"in": "path",
"required": true,
"description": "The [Cluster ID](#operation/list-clusters)."
},
{
"schema": {
"type": "string",
"enum": [
"attach",
"detach",
"attach_head_node"
]
},
"name": "action",
"in": "path",
"required": true,
"description": "The action to perform.\n\n* attach\n* detach\n* attach_head_node"
},
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance ID](#operation/list-instances)."
}
],
"post": {
"summary": "Update Cluster Instance",
"tags": [
"clusters"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/clusters/{cluster-id}/attach/{instance-id}\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
},
{
"lang": "Curl",
"label": "Attach Head Node",
"source": "curl \"https://api.vultr.com/v2/clusters/{cluster-id}/attach_head_node/{instance-id}\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"cluster": {
"type": "string",
"description": "Status message describing the result of the operation."
}
}
},
"examples": {
"response": {
"value": {
"cluster": "Instance added to cluster."
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-cluster-instance",
"description": "Attach or Detach a single instance on a cluster.\n\nThe `attach_head_node` action attaches an existing instance as the cluster's head node.",
"security": [
{
"API Key": []
}
]
}
},
"/instances/templates": {
"get": {
"summary": "List Instance Templates",
"tags": [
"instance-templates"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/templates\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"parameters": [
{
"name": "include_all",
"in": "query",
"required": false,
"schema": {
"type": "boolean"
},
"description": "When `true`, include ephemeral (cluster-owned) instance templates, which are hidden from this list by default."
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance_templates": {
"type": "array",
"items": {
"$ref": "#/components/schemas/instance-template-list-item"
}
}
}
},
"examples": {
"response": {
"value": {
"instance_templates": [
{
"id": "98765432-10ab-cdef-1234-567890abcdef",
"plan": "vc2-6c-16gb",
"label": "my-template",
"os": "Ubuntu 22.04 x64",
"marketplace_app": "",
"marketplace_image": "",
"snapshot": "",
"iso": "",
"ssh_keys": [
{
"id": "3a7d56e1-8c2a-4721-84dc-77fa4e6e4f91",
"name": "my-ssh-key"
}
],
"startup_script": "",
"disk_config": ""
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "list-instance-templates",
"description": "List all instance templates in your account.",
"security": [
{
"API Key": []
}
]
},
"post": {
"summary": "Create Instance Template",
"tags": [
"instance-templates"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/templates\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"plan\" : \"vc2-6c-16gb\",\n \"label\" : \"my-template\",\n \"os_id\" : 1743\n }'"
}
],
"responses": {
"200": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance_template": {
"$ref": "#/components/schemas/instance-template"
}
}
},
"examples": {
"response": {
"value": {
"instance_template": {
"id": "98765432-10ab-cdef-1234-567890abcdef",
"plan": "vc2-6c-16gb",
"label": "my-template",
"os": "Ubuntu 22.04 x64",
"marketplace_app": "",
"marketplace_image": "",
"snapshot": "",
"iso": "",
"ssh_keys": [],
"startup_script": "",
"disk_config": ""
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-instance-template",
"description": "Create a new instance template.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "The [Plan id](#operation/list-plans) for instances created from this template."
},
"label": {
"type": "string",
"description": "A user-supplied label for this template."
},
"iso_id": {
"type": "string",
"description": "The [ISO id](#operation/list-isos) to deploy from."
},
"marketplace_app_id": {
"type": "integer",
"description": "The [Marketplace Application id](#operation/list-applications)."
},
"marketplace_image_id": {
"type": "integer",
"description": "The [Marketplace image_id](#operation/list-applications)."
},
"os_id": {
"type": "integer",
"description": "The [Operating System id](#operation/list-os) to deploy."
},
"snapshot_id": {
"type": "string",
"description": "The [Snapshot id](#operation/list-snapshots) to deploy from."
},
"ssh_key_ids": {
"type": "array",
"description": "Array of [SSH Key ids](#operation/list-ssh-keys) to install. The alias `sshkey_ids` is also accepted; `ssh_key_ids` takes precedence if both are sent.",
"items": {
"type": "string"
}
},
"sshkey_ids": {
"type": "array",
"description": "Alias of `ssh_key_ids` (alternate spelling). Accepted for convenience; `ssh_key_ids` takes precedence if both are sent.",
"items": {
"type": "string"
}
},
"template": {
"type": "object",
"description": "Additional template configuration as a JSON object.",
"additionalProperties": true
},
"user_data": {
"type": "string",
"description": "base64 encoded string containing user_data that should be executed by cloud init. A value that is not valid base64 is rejected."
}
},
"required": [
"plan"
]
},
"examples": {
"request": {
"value": {
"plan": "vc2-6c-16gb",
"label": "my-template",
"os_id": 1743
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
}
},
"/instances/templates/from-instance/{instance-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instance-id",
"in": "path",
"required": true,
"description": "The [Instance id](#operation/list-instances) to create the template from."
}
],
"post": {
"summary": "Create Instance Template From Instance",
"tags": [
"instance-templates"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/templates/from-instance/{instance-id}\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "Created",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance_template": {
"$ref": "#/components/schemas/instance-template"
}
}
},
"examples": {
"response": {
"value": {
"instance_template": {
"id": "98765432-10ab-cdef-1234-567890abcdef",
"plan": "vc2-6c-16gb",
"label": "Template: my-instance",
"os": "Snapshot",
"marketplace_app": "",
"marketplace_image": "",
"snapshot": "a1b2c3d4",
"iso": "",
"ssh_keys": [],
"startup_script": "",
"disk_config": ""
}
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "create-instance-template-from-instance",
"description": "Create a new instance template from an existing instance. The template inherits the instance's plan, OS, and configuration (snapshot, marketplace app, ISO, SSH keys, startup script, user data, disk config).",
"security": [
{
"API Key": []
}
]
}
},
"/instances/templates/{instancetemplate-id}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instancetemplate-id",
"in": "path",
"required": true,
"description": "The [Instance Template ID](#operation/list-instance-templates)."
}
],
"get": {
"summary": "Get Instance Template",
"tags": [
"instance-templates"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/templates/{instancetemplate-id}\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance_template": {
"$ref": "#/components/schemas/instance-template"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "get-instance-template",
"description": "Get information about an instance template.",
"security": [
{
"API Key": []
}
]
},
"put": {
"summary": "Update Instance Template",
"tags": [
"instance-templates"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/templates/{instancetemplate-id}\" \\\n -X PUT \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\" \\\n -H \"Content-Type: application/json\" \\\n --data '{\n \"label\" : \"renamed-template\"\n }'"
}
],
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance_template": {
"$ref": "#/components/schemas/instance-template"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "update-instance-template",
"description": "Update an instance template. At least one parameter must be provided.",
"security": [
{
"API Key": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"plan": {
"type": "string",
"description": "The [Plan id](#operation/list-plans) for instances created from this template."
},
"label": {
"type": "string",
"description": "A user-supplied label for this template."
},
"iso_id": {
"type": "string",
"description": "The [ISO id](#operation/list-isos) to deploy from."
},
"marketplace_app_id": {
"type": "integer",
"description": "The [Marketplace Application id](#operation/list-applications)."
},
"marketplace_image_id": {
"type": "integer",
"description": "The [Marketplace image_id](#operation/list-applications)."
},
"os_id": {
"type": "integer",
"description": "The [Operating System id](#operation/list-os) to deploy."
},
"snapshot_id": {
"type": "string",
"description": "The [Snapshot id](#operation/list-snapshots) to deploy from."
},
"ssh_key_ids": {
"type": "array",
"description": "Array of [SSH Key ids](#operation/list-ssh-keys) to install. The alias `sshkey_ids` is also accepted; `ssh_key_ids` takes precedence if both are sent.",
"items": {
"type": "string"
}
},
"sshkey_ids": {
"type": "array",
"description": "Alias of `ssh_key_ids` (alternate spelling). Accepted for convenience; `ssh_key_ids` takes precedence if both are sent.",
"items": {
"type": "string"
}
},
"template": {
"type": "object",
"description": "Additional template configuration as a JSON object.",
"additionalProperties": true
},
"user_data": {
"type": "string",
"description": "base64 encoded string containing user_data that should be executed by cloud init. A value that is not valid base64 is rejected."
}
}
},
"examples": {
"request": {
"value": {
"label": "renamed-template"
}
}
}
}
},
"description": "Include a JSON object in the request body with a content type of **application/json**."
}
},
"delete": {
"summary": "Delete Instance Template",
"tags": [
"instance-templates"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/templates/{instancetemplate-id}\" \\\n -X DELETE \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"204": {
"description": "No Content"
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "delete-instance-template",
"description": "Delete an instance template.",
"security": [
{
"API Key": []
}
]
}
},
"/instances/templates/{instancetemplate-id}/promote": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "instancetemplate-id",
"in": "path",
"required": true,
"description": "The [Instance Template ID](#operation/list-instance-templates)."
}
],
"post": {
"summary": "Promote Instance Template",
"tags": [
"instance-templates"
],
"x-codeSamples": [
{
"lang": "Curl",
"source": "curl \"https://api.vultr.com/v2/instances/templates/{instancetemplate-id}/promote\" \\\n -X POST \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\""
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"instance_template": {
"$ref": "#/components/schemas/instance-template"
}
}
}
}
}
},
"400": {
"description": "Bad Request"
},
"401": {
"description": "Unauthorized"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Not Found"
}
},
"operationId": "promote-instance-template",
"description": "Promote an ephemeral (cluster-owned) instance template to a permanent one. Ephemeral\ntemplates are auto-created to back a cluster, are hidden from List Instance Templates by\ndefault, and are deleted when their cluster is destroyed. Promoting keeps the template\nafter the cluster is gone. This is one-way — a permanent template cannot be made ephemeral.",
"security": [
{
"API Key": []
}
]
}
}
},
"components": {
"parameters": {
"retention-rule-id": {
"name": "retention-rule-id",
"in": "path",
"required": true,
"description": "The [Retention Rule ID](#components/schemas/retention-rule/properties/id). Which can be found by [List Retention Rules](#operation/list-retention-rules).",
"schema": {
"type": "integer"
}
},
"registry-id": {
"name": "registry-id",
"in": "path",
"required": true,
"description": "The [Registry ID](#components/schemas/registry/properties/id). Which can be found by [List Registries](#operation/list-registries).",
"schema": {
"type": "string"
}
},
"vcr_region": {
"name": "VCR Region",
"required": true,
"description": "The [VCR Region](#components/schemas/replication/properties/region). Which can be found by [List Region](#operation/list-registry-regions)."
},
"repository-image": {
"name": "repository-image",
"in": "path",
"required": true,
"description": "The [Repository Image](#components/schemas/registry-repository/properties/image). Which can be found by [List Repositories](#operation/list-registry-repositories).",
"schema": {
"type": "string"
}
},
"artifact-digest": {
"name": "artifact-digest",
"in": "path",
"required": true,
"description": "The [Artifact Digest](#components/schemas/registry-repository-artifact/properties/digest). Which can be found by [List Artifacts](#operation/list-registry-repository-artifacts)."
},
"harbor-user-id": {
"name": "harbor-user-id",
"in": "path",
"required": true,
"description": "The [Harbor User ID](#components/schemas/registry-user/properties/id). Which can be found by [Get Current User](#operation/get-current-harbor-user)."
},
"robot-name": {
"name": "robot-name",
"in": "path",
"required": true,
"description": "The [Robot Name](#components/schemas/registry-robot/properties/name). Which can be found by [List Robots](#operation/list-registry-robots)."
},
"docker-credentials-expiry-seconds": {
"name": "expiry_seconds",
"in": "query",
"description": "The seconds until these credentials expire. When set to 0, credentials do not expire. The default value is 0",
"default": 0,
"schema": {
"type": "integer"
}
},
"docker-credentials-read-write": {
"name": "read_write",
"in": "query",
"description": "Whether these credentials will have only PULL access or PUSH access as well. If true these credentials can PUSH to repos in this registry. If false, these credentials can only PULL. Default is false.",
"default": false,
"schema": {
"type": "boolean"
}
},
"kubernetes-docker-credentials-base64-encode": {
"name": "base64_encode",
"in": "query",
"description": "Whether this YAML will be returned in a base64 encoded string for ease of downloading. If true, the response will be a base64 encoded string. Default is false.",
"default": false,
"schema": {
"type": "boolean"
}
}
},
"schemas": {
"software-license": {
"title": "software-license",
"type": "object",
"x-tags": [
"instances",
"baremetal"
],
"description": "Software license information attached to an Instance or Bare Metal instance.",
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the software license."
},
"license": {
"type": "string",
"description": "The name of the software license."
},
"price": {
"type": "number",
"format": "float",
"description": "The monthly price of the software license in USD."
},
"tier_current": {
"type": "string",
"description": "The current usage tier for the license (e.g. \"1 Account\") if applicable. Otherwise blank."
},
"tier_maximum": {
"type": "string",
"description": "The maximum usage tier for the license this billing period (e.g. \"100 Accounts\") if applicable. Otherwise blank."
},
"instance_id": {
"type": "string",
"description": "The [Compute Instance id](#operation/list-instances) or [Bare Metal Instance id](#operation/list-baremetals) this software license is attached to."
}
}
},
"iam-policy": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"policy_document": {
"type": "object"
},
"version": {
"type": "string"
},
"date_created": {
"type": "string",
"format": "date-time"
},
"is_system_policy": {
"type": "boolean"
}
}
},
"iam-role": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"role_type": {
"type": "string",
"enum": [
"user",
"service"
]
},
"max_session_duration": {
"type": "integer"
},
"date_created": {
"type": "string",
"format": "date-time"
},
"policies": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-role-policy-relationship"
}
}
}
},
"iam-group": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"display_name": {
"type": "string"
},
"description": {
"type": "string"
},
"status": {
"type": "string",
"enum": [
"active",
"deleted"
]
},
"date_created": {
"type": "string",
"format": "date-time"
},
"date_updated": {
"type": "string",
"format": "date-time"
},
"last_activity": {
"type": "string",
"description": "The date and time of the most recent activity across the group's members in ISO 8601 format, or an empty string if no members or no activity in the past year. Only returned when `show_last_activity=true` is passed."
},
"members": {
"type": "array",
"items": {
"$ref": "#/components/schemas/iam-group-member"
}
}
}
},
"iam-group-member": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"display_name": {
"type": "string"
},
"email": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"active": {
"type": "boolean"
},
"service_user": {
"type": "boolean"
},
"date_created": {
"type": "string",
"format": "date-time"
},
"date_updated": {
"type": "string",
"format": "date-time"
}
}
},
"iam-role-trust": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"role_name": {
"type": "string"
},
"role_id": {
"type": "string"
},
"trust_type": {
"type": "string",
"enum": [
"user",
"group",
"oidc"
]
},
"trusted_oidc_issuer_id": {
"type": "string"
},
"trusted_user_id": {
"type": "string"
},
"trusted_group_id": {
"type": "string"
},
"user_display": {
"type": "string"
},
"group_display": {
"type": "string"
},
"conditions": {
"type": "object"
},
"valid_until": {
"type": "string",
"format": "date-time"
},
"date_created": {
"type": "string",
"format": "date-time"
}
}
},
"iam-role-group-relationship": {
"type": "object",
"properties": {
"group_id": {
"type": "string"
},
"group_name": {
"type": "string"
},
"role_id": {
"type": "string"
},
"role_name": {
"type": "string"
},
"role_description": {
"type": "string"
},
"role_type": {
"type": "string"
},
"date_assigned": {
"type": "string",
"format": "date-time"
},
"assigned_by": {
"type": "string"
}
}
},
"iam-role-user-relationship": {
"type": "object",
"properties": {
"user_id": {
"type": "string"
},
"role_id": {
"type": "string"
},
"role_name": {
"type": "string"
},
"role_description": {
"type": "string"
},
"role_type": {
"type": "string"
},
"date_assigned": {
"type": "string",
"format": "date-time"
},
"assigned_by": {
"type": "string"
}
}
},
"iam-role-policy-relationship": {
"type": "object",
"properties": {
"policy_id": {
"type": "string"
},
"policy_name": {
"type": "string"
},
"role_id": {
"type": "string"
},
"role_name": {
"type": "string"
},
"role_description": {
"type": "string"
},
"role_type": {
"type": "string"
},
"date_assigned": {
"type": "string",
"format": "date-time"
},
"assigned_by": {
"type": "string"
}
}
},
"iam-policy-group-relationship": {
"type": "object",
"properties": {
"group_id": {
"type": "string"
},
"group_name": {
"type": "string"
},
"policy_id": {
"type": "string"
},
"policy_name": {
"type": "string"
},
"policy_description": {
"type": "string"
},
"date_assigned": {
"type": "string",
"format": "date-time"
},
"assigned_by": {
"type": "string"
}
}
},
"iam-policy-user-relationship": {
"type": "object",
"properties": {
"user_id": {
"type": "string"
},
"policy_id": {
"type": "string"
},
"policy_name": {
"type": "string"
},
"policy_description": {
"type": "string"
},
"date_assigned": {
"type": "string",
"format": "date-time"
},
"assigned_by": {
"type": "string"
}
}
},
"iam-assumed-role-session": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"session_token": {
"type": "string"
},
"user_id": {
"type": "string"
},
"oidc_issuer_id": {
"type": "string"
},
"role_id": {
"type": "string"
},
"session_name": {
"type": "string"
},
"auth_method": {
"type": "string"
},
"expires_at": {
"type": "string",
"format": "date-time"
},
"assumed_at": {
"type": "string",
"format": "date-time"
},
"remaining_duration": {
"type": "integer"
},
"conditions_met": {
"type": "boolean"
},
"source_ip": {
"type": "string"
},
"s3_credentials": {
"type": "object"
}
}
},
"iam-invitation": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"inviter_name": {
"type": "string"
},
"inviter_email": {
"type": "string"
},
"email_invited": {
"type": "string"
},
"email_registered": {
"type": "string"
},
"permissions": {
"type": "string"
},
"org_id": {
"type": "string"
},
"org_name": {
"type": "string"
},
"status": {
"type": "string"
},
"date_created": {
"type": "string",
"format": "date-time"
},
"date_responded": {
"type": "string",
"format": "date-time"
},
"expiration_date": {
"type": "string",
"format": "date-time"
},
"invite_status": {
"type": "string"
}
}
},
"iam-organization": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"date_created": {
"type": "string",
"format": "date-time"
}
}
},
"iam-organization-scim": {
"type": "object",
"properties": {
"scim_enabled": {
"type": "boolean"
},
"auth_method": {
"type": "string"
},
"date_added": {
"type": "string",
"format": "date-time"
},
"date_updated": {
"type": "string",
"format": "date-time"
},
"scim_token": {
"type": "string",
"description": "Only returned when rotating the SCIM token."
}
}
},
"oidc-provider": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"issuer_id": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"oidc-issuer": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"source": {
"type": "string"
},
"label": {
"type": "string",
"description": "A human-readable label for the issuer."
},
"uri": {
"type": "string"
},
"kid": {
"type": "string"
},
"kty": {
"type": "string"
},
"n": {
"type": "string"
},
"e": {
"type": "string"
},
"alg": {
"type": "string"
},
"use": {
"type": "string"
},
"jwks_fetched_at": {
"type": "string",
"format": "date-time"
},
"jwks_expires_at": {
"type": "string",
"format": "date-time"
}
}
},
"oauth-client": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The OAuth App ID."
},
"name": {
"type": "string",
"description": "The app name shown to users on the consent screen."
},
"logo_url": {
"type": "string",
"description": "Vultr-hosted URL of the app's logo. Empty if no logo was uploaded."
},
"oidc_provider_id": {
"type": "string",
"description": "The linked [OIDC Provider](#tag/oidc) ID. Immutable after creation."
},
"org_name": {
"type": "string",
"description": "Display name of the organization that owns the app."
},
"review_status": {
"type": "string",
"enum": [
"Draft",
"PendingReview",
"Active",
"Rejected"
],
"description": "The app's review status. Only `Active` apps can be authorized by any Vultr user."
},
"callback_urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Registered OAuth callback URLs."
},
"draft_users": {
"type": "array",
"description": "Users allowlisted to authorize the app while it is not yet Active.",
"items": {
"type": "object",
"properties": {
"user_id": {
"type": "string"
},
"email": {
"type": "string"
},
"added_at": {
"type": "string"
}
}
}
},
"authorized_user_count": {
"type": "integer",
"description": "Number of users with a live authorization for this app."
},
"rejection_reason": {
"type": "string",
"description": "Reason category if the app was rejected during review."
},
"rejection_comment": {
"type": "string",
"description": "Reviewer comment if the app was rejected during review."
},
"date_submitted": {
"type": "string",
"description": "When the app was last submitted for review."
},
"date_reviewed": {
"type": "string",
"description": "When the app was last reviewed."
},
"updated_at": {
"type": "string"
},
"added_at": {
"type": "string"
},
"secret": {
"type": "string",
"description": "Plaintext client secret. Only present in the Create and Regenerate Secret responses — it is shown exactly once and cannot be retrieved again."
}
}
},
"oauth-scope-attachment": {
"type": "object",
"description": "One OAuth scope attachment — the IAM policy attached as a scope and the OAuth App it is attached to.",
"properties": {
"policy": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The [IAM policy](#tag/iam) ID."
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"used_as_oauth_scope": {
"type": "boolean"
},
"oauth_scope_client_count": {
"type": "integer",
"description": "Number of OAuth Apps in the organization this policy is attached to."
},
"policy_document": {
"type": "object"
}
}
},
"client": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The OAuth App ID."
},
"name": {
"type": "string"
},
"review_status": {
"type": "string"
},
"rejection_reason": {
"type": "string"
},
"rejection_comment": {
"type": "string"
},
"logo_url": {
"type": "string"
},
"callback_urls": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
},
"oauth-consenting-user": {
"type": "object",
"description": "One user who has authorized an OAuth App (app-owner view).",
"properties": {
"id": {
"type": "integer",
"description": "The authorization ID."
},
"user_id": {
"type": "string",
"description": "The consenting user's ID."
},
"email": {
"type": "string",
"description": "The consenting user's email address."
},
"date_authorized": {
"type": "string"
},
"is_revoked": {
"type": "boolean"
},
"date_revoked": {
"type": "string"
},
"scope_count": {
"type": "integer",
"description": "Number of scopes the user consented to."
}
}
},
"oauth-user-authorization": {
"type": "object",
"description": "One OAuth App the calling user has authorized (consenting-user view).",
"properties": {
"id": {
"type": "integer",
"description": "The authorization ID. Pass this to [Revoke Authorized App](#operation/revoke-oauth-user-authorization)."
},
"client_id": {
"type": "string",
"description": "The OAuth App ID."
},
"client_name": {
"type": "string"
},
"client_logo_url": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"type": "string"
},
"description": "IDs of the policy snapshots the user consented to."
},
"date_authorized": {
"type": "string"
},
"is_revoked": {
"type": "boolean"
}
}
},
"scim-user": {
"type": "object",
"description": "A SCIM 2.0 User resource.",
"properties": {
"id": {
"type": "string"
},
"schemas": {
"type": "array",
"items": {
"type": "string"
}
},
"userName": {
"type": "string",
"description": "The user's email address."
},
"name": {
"type": "object",
"properties": {
"givenName": {
"type": "string"
},
"familyName": {
"type": "string"
}
}
},
"displayName": {
"type": "string"
},
"active": {
"type": "boolean"
},
"phoneNumbers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string"
},
"type": {
"type": "string"
}
}
}
},
"meta": {
"type": "object",
"properties": {
"resourceType": {
"type": "string"
},
"created": {
"type": "string",
"format": "date-time"
},
"lastModified": {
"type": "string",
"format": "date-time"
}
}
},
"date_created": {
"type": "string",
"format": "date-time"
},
"date_updated": {
"type": "string",
"format": "date-time"
}
}
},
"scim-group": {
"type": "object",
"description": "A SCIM 2.0 Group resource.",
"properties": {
"id": {
"type": "string"
},
"schemas": {
"type": "array",
"items": {
"type": "string"
}
},
"displayName": {
"type": "string"
},
"externalId": {
"type": "string"
},
"members": {
"type": "array",
"items": {
"type": "object",
"properties": {
"value": {
"type": "string",
"description": "The SCIM User ID."
},
"display": {
"type": "string"
},
"$ref": {
"type": "string"
}
}
}
},
"meta": {
"type": "object",
"properties": {
"resourceType": {
"type": "string"
},
"created": {
"type": "string",
"format": "date-time"
},
"lastModified": {
"type": "string",
"format": "date-time"
},
"location": {
"type": "string"
}
}
}
}
},
"vfs_region": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the region",
"example": "ewr"
},
"country": {
"type": "string",
"description": "Country where the region is located",
"example": "US"
},
"continent": {
"type": "string",
"description": "Continent where the region is located",
"example": "North America"
},
"description": {
"type": "string",
"description": "Human-readable description of the region",
"example": "New Jersey"
},
"price_per_gb": {
"type": "object",
"description": "Price per GB for different storage types",
"properties": {
"nvme": {
"type": "number",
"format": "float",
"description": "Price per GB for NVMe storage",
"example": 0.1
},
"hdd": {
"type": "number",
"format": "float",
"description": "Price per GB for HDD storage",
"example": 0.025
}
}
},
"min_size_gb": {
"type": "object",
"description": "Minimum size in GB for different storage types",
"properties": {
"nvme": {
"type": "integer",
"description": "Minimum size in GB for NVMe storage",
"example": 10
},
"hdd": {
"type": "integer",
"description": "Minimum size in GB for HDD storage",
"example": 40
}
}
}
}
},
"vfs_storage_size": {
"type": "object",
"properties": {
"bytes": {
"type": "integer",
"format": "int64",
"description": "Size in bytes",
"example": 10737418240
},
"gb": {
"type": "integer",
"description": "Size in gigabytes",
"example": 10
}
}
},
"vfs_billing": {
"type": "object",
"properties": {
"charges": {
"type": "number",
"format": "float",
"description": "Current billing charges",
"example": 10.5
},
"monthly": {
"type": "number",
"format": "float",
"description": "Monthly billing amount",
"example": 30
}
}
},
"vfs": {
"type": "object",
"description": "Vultr File System subscription entity",
"properties": {
"id": {
"type": "string",
"description": "Unique identifier for the VFS subscription",
"example": "123e4567-e89b-12d3-a456-123ab4567c89"
},
"region": {
"type": "string",
"description": "Region identifier where the VFS is located",
"example": "ewr"
},
"date_created": {
"type": "string",
"format": "date-time",
"description": "Creation timestamp of the VFS subscription",
"example": "2024-01-01T12:00:00Z"
},
"status": {
"type": "string",
"description": "Current status of the VFS subscription",
"example": "active"
},
"label": {
"type": "string",
"description": "User-defined label for the VFS subscription",
"example": "my-storage"
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "List of tags associated with the VFS subscription",
"example": [
"prod",
"web"
]
},
"disk_type": {
"type": "string",
"enum": [
"nvme"
],
"description": "Type of storage disk",
"example": "nvme"
},
"storage_size": {
"$ref": "#/components/schemas/vfs_storage_size"
},
"storage_used": {
"$ref": "#/components/schemas/vfs_storage_size"
},
"billing": {
"$ref": "#/components/schemas/vfs_billing"
}
}
},
"vfs_attachment": {
"type": "object",
"description": "Represents an attachment between a VFS and a target resource",
"properties": {
"state": {
"type": "string",
"description": "Current state of the attachment",
"example": "ATTACHED"
},
"vfs_id": {
"type": "string",
"description": "ID of the VFS subscription",
"example": "123e4567-e89b-12d3-a456-123ab4567c89"
},
"target_id": {
"type": "string",
"description": "ID of the target resource",
"example": "inst-456def"
},
"target_label": {
"type": "string",
"description": "Label of the target resource",
"example": "my-target-instance"
},
"mount_tag": {
"type": "integer",
"description": "Mount tag of the VFS subscription",
"example": 12345
}
}
},
"pullzone": {
"title": "pull_zone",
"type": "object",
"x-examples": {
"example": {
"id": "d0d92597-b94f-49dd-86b7-4d895d324d49,",
"date_created": "2024-01-25 09:41:05,",
"status": "active,",
"label": "my-pullzone,",
"origin_scheme": "https,",
"origin_domain": "constant.com,",
"cdn_url": "https://cdn-wdghak5h67sm.vultrcdn.com,",
"vanity_domain": "my.domain.com",
"cache_size": "50000000,",
"requests": "null,",
"in_bytes": "null,",
"out_bytes": "null,",
"packets_per_sec": "50,",
"last_purge": "2024-01-25 11:39:04,",
"cors": "false,",
"gzip": "true,",
"block_ai": "false,",
"block_bad_bots": "true,",
"regions": [
"..."
]
}
},
"description": "CDN Pull Zone information.",
"x-tags": [
"CDNs"
],
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the CDN Pull Zone."
},
"date_created": {
"type": "string",
"description": "The date this CDN Pull Zone was created."
},
"status": {
"type": "string",
"description": "The current status.\n\n* active\n* pending"
},
"label": {
"type": "string",
"description": "The user-supplied label."
},
"origin_scheme": {
"type": "string",
"description": "The URI scheme of the origin domain.",
"enum": [
"http",
"https"
]
},
"origin_domain": {
"type": "string",
"description": "The domain name from which the content stored in the CDN will be pulled."
},
"cdn_url": {
"type": "string",
"description": "The Vultr CDN endpoint to access your cached files."
},
"vanity_domain": {
"type": "string",
"description": "A custom domain provided by the user which can be used to access the cached files."
},
"cache_size": {
"type": "number",
"description": "How much data may be cached on each CDN node."
},
"requests": {
"type": "number",
"description": "The amount of requests to limit to the CDN."
},
"in_bytes": {
"type": "number",
"description": "The amount of inbound bytes allowed to the CDN."
},
"out_bytes": {
"type": "number",
"description": "The amount of outbound bytes allowed from the CDN."
},
"packets_per_sec": {
"type": "number",
"description": "Per CDN rate limiting per requests/sec."
},
"last_purge": {
"type": "string",
"description": "The last date and time that the cached content on server proxies was cleared"
},
"cors": {
"type": "boolean",
"description": "Cross-origin resource sharing."
},
"gzip": {
"type": "boolean",
"description": "Optional feature to compress files, reduce the amount of data that's transferred."
},
"block_ai": {
"type": "boolean",
"description": "Optional feature to block AI bots."
},
"block_bad_bots": {
"type": "boolean",
"description": "Optional feature to block potentially malicious bots."
},
"regions": {
"type": "array",
"description": "A list of [Region ids](#operation/list-regions) for locations to be used for content delivery."
}
}
},
"pushzone": {
"title": "push_zone",
"type": "object",
"x-examples": {
"example": {
"id": "d0d92597-b94f-49dd-86b7-4d895d324d49,",
"date_created": "2024-01-25 09:41:05,",
"status": "active,",
"label": "my-pushzone,",
"cdn_url": "https://cdn-wdghak5h67sm.vultrcdn.com,",
"vanity_domain": "my.domain.com",
"cache_size": "50000000,",
"requests": "null,",
"in_bytes": "null,",
"out_bytes": "null,",
"packets_per_sec": "50,",
"cors": "false,",
"gzip": "true,",
"block_ai": "false,",
"block_bad_bots": "true,",
"regions": [
"..."
]
}
},
"description": "CDN Push Zone information.",
"x-tags": [
"CDNs"
],
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the CDN Push Zone."
},
"date_created": {
"type": "string",
"description": "The date this CDN Push Zone was created."
},
"status": {
"type": "string",
"description": "The current status.\n\n* active\n* pending"
},
"label": {
"type": "string",
"description": "The user-supplied label."
},
"cdn_url": {
"type": "string",
"description": "The Vultr CDN endpoint to access your cached files."
},
"vanity_domain": {
"type": "string",
"description": "A custom domain provided by the user which can be used to access the cached files."
},
"cache_size": {
"type": "number",
"description": "How much data may be cached on each CDN node."
},
"requests": {
"type": "number",
"description": "The amount of requests to limit to the CDN."
},
"in_bytes": {
"type": "number",
"description": "The amount of inbound bytes allowed to the CDN."
},
"out_bytes": {
"type": "number",
"description": "The amount of outbound bytes allowed from the CDN."
},
"packets_per_sec": {
"type": "number",
"description": "Per CDN rate limiting per requests/sec."
},
"cors": {
"type": "boolean",
"description": "Cross-origin resource sharing."
},
"gzip": {
"type": "boolean",
"description": "Optional feature to compress files, reduce the amount of data that's transferred."
},
"block_ai": {
"type": "boolean",
"description": "Optional feature to block AI bots."
},
"block_bad_bots": {
"type": "boolean",
"description": "Optional feature to block potentially malicious bots."
},
"regions": {
"type": "array",
"description": "A list of [Region ids](#operation/list-regions) for locations to be used for content delivery."
}
}
},
"pushzonefile": {
"title": "file",
"type": "object",
"x-examples": {
"example": {
"name": "my-image.jpg,",
"mime": "image/jpeg,",
"size": "patch.jpg,",
"content": "/9j/2wBDAAQDAwQDAwQEA...,",
"last_modified": "2024-04-18T13:07:15+00:00,"
}
},
"description": "CDN Push Zone file information.",
"x-tags": [
"CDNs"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the file."
},
"mime": {
"type": "string",
"description": "The mime type of the file."
},
"size": {
"type": "string",
"description": "The size of the file."
},
"content": {
"type": "string",
"description": "Base64 encoded string of the file's binary content."
},
"last_modified": {
"type": "string",
"description": "The date the file was last modified."
}
}
},
"pushzonefilemeta": {
"title": "file",
"type": "object",
"x-examples": {
"example": {
"name": "my-image.jpg,",
"size": "patch.jpg,",
"last_modified": "2024-04-18T13:07:15+00:00,"
}
},
"description": "CDN Push Zone file meta information.",
"x-tags": [
"CDNs"
],
"properties": {
"name": {
"type": "string",
"description": "The name of the file."
},
"size": {
"type": "string",
"description": "the size of the file."
},
"last_modified": {
"type": "string",
"description": "The date the file was last modified."
}
}
},
"uploadendpoint": {
"title": "upload_endpoint",
"type": "object",
"x-examples": {
"example": {
"URL": "https://cdn.s3-ewr-000.vultr.dev/v-cdn-agent-assets,",
"inputs": {
"acl": "public-read,",
"key": "cdn-ady5dwsa6mdh.vultrcdn.com/my-file.jpg,",
"X-Amz-Credential": "kNCaYoUJZ6szuajKsgN/20240418/us-east-1/s3/aws4_request,",
"X-Amz-Algorithm": "AWS4-HMAC-SHA256,",
"Policy": "eyJleHBpcmF0aW9uIjoiMjAyNC0wNC0xOFQxMzowNzo0MloiLCJjb25kaXRpb25zIjpbeyJhY2wiOiJwdWJsaWMtcmVhZCJ9LHsiYnVja2V0Ijoidi1jZG4tYWdlbnQtYXNzZXRzIn0seyJrZXkiOiJjZG4tYWR5NWR3c2E2bWRoLnZ1bHRyY2RuLmNvbVwvcGF0Y2guanBnIn0sWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsODU3NzczLDg1Nzc3M10seyJYLUFtei1EYXRlIjoiMjAyNDA0MThUMTMwMjQyWiJ9LHsiWC1BbXotQ3JlZGVudGlhbCI6InlrTkNhWW9VSlo2c3p1YWpLc2dOXC8yMDI0MDQxOFwvdXMtZWFzdC0xXC9zM1wvYXdzNF9yZXF1ZXN0In0seyJYLUFtei1BbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In1dfQ==,",
"X-Amz-Signature": "8cc2328bf9bd9531ccae5f8b156e7f578f3ee4414bb60f5eac97bbb62a0f2536,"
}
}
},
"description": "CDN Push Zone file meta information.",
"x-tags": [
"CDNs"
],
"properties": {
"URL": {
"type": "string",
"description": "The URL used to upload the file."
},
"inputs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/nodepool-instances"
}
}
}
},
"uploadendpoint-inputs": {
"title": "inputs",
"type": "object",
"x-examples": {
"example": {
"acl": "public-read,",
"key": "cdn-ady5dwsa6mdh.vultrcdn.com/my-file.jpg,",
"X-Amz-Credential": "kNCaYoUJZ6szuajKsgN/20240418/us-east-1/s3/aws4_request,",
"X-Amz-Algorithm": "AWS4-HMAC-SHA256,",
"Policy": "eyJleHBpcmF0aW9uIjoiMjAyNC0wNC0xOFQxMzowNzo0MloiLCJjb25kaXRpb25zIjpbeyJhY2wiOiJwdWJsaWMtcmVhZCJ9LHsiYnVja2V0Ijoidi1jZG4tYWdlbnQtYXNzZXRzIn0seyJrZXkiOiJjZG4tYWR5NWR3c2E2bWRoLnZ1bHRyY2RuLmNvbVwvcGF0Y2guanBnIn0sWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsODU3NzczLDg1Nzc3M10seyJYLUFtei1EYXRlIjoiMjAyNDA0MThUMTMwMjQyWiJ9LHsiWC1BbXotQ3JlZGVudGlhbCI6InlrTkNhWW9VSlo2c3p1YWpLc2dOXC8yMDI0MDQxOFwvdXMtZWFzdC0xXC9zM1wvYXdzNF9yZXF1ZXN0In0seyJYLUFtei1BbGdvcml0aG0iOiJBV1M0LUhNQUMtU0hBMjU2In1dfQ==,",
"X-Amz-Signature": "8cc2328bf9bd9531ccae5f8b156e7f578f3ee4414bb60f5eac97bbb62a0f2536,"
}
},
"description": "CDN Push Zone file meta information.",
"x-tags": [
"CDNs"
],
"properties": {
"acl": {
"type": "string",
"description": "The access control list rule assigned to requst. Include this in the upload request from data"
},
"key": {
"type": "string",
"description": "The key used to upload the file. Include this in the upload request from data."
},
"X-Amz-Credential": {
"type": "string",
"description": "The credentials linked to the presigned request. Include this in the upload request from data"
},
"X-Amz-Algorithm": {
"type": "string",
"description": "The algorithm that was used to create the request signature. Include this in the upload request from data"
},
"Policy": {
"type": "string",
"description": "The encrypted policy linked to the presigned request. Include this in the upload request from data"
},
"X-Amz-Signature": {
"type": "string",
"description": "The signature of the presigned request. Include this in the upload request from data"
}
}
},
"billing": {
"description": "Invoice",
"type": "object",
"x-examples": {
"example": {
"id": 123456,
"date": "2020-10-10T01:56:20+00:00",
"type": "invoice",
"description": "Invoice #123456",
"amount": 100.25,
"balance": 100.25
}
},
"x-tags": [
"billing"
],
"properties": {
"id": {
"type": "number",
"description": "ID of the billing history item"
},
"date": {
"type": "string",
"description": "Date billing history item was generated"
},
"type": {
"type": "string",
"description": "Type of billing history item"
},
"description": {
"type": "string",
"description": "Description of billing history item"
},
"amount": {
"type": "number",
"description": "Amount for the billing history item in dollars"
},
"balance": {
"type": "number",
"description": "The accounts balance in dollars"
}
},
"title": "billing"
},
"invoice": {
"title": "invoice",
"type": "object",
"x-examples": {
"example-1": {
"id": 123456,
"date": "2021-11-02T00:48:13+00:00",
"description": "Invoice #132456",
"amount": 0.25,
"balance": -197.88
}
},
"properties": {
"id": {
"type": "integer",
"description": "ID of the invoice"
},
"date": {
"type": "string",
"description": "Date invoice was generated"
},
"description": {
"type": "string",
"description": "description of item"
},
"amount": {
"type": "number",
"description": "Amount due in dollars"
},
"balance": {
"type": "number",
"description": "Account balance amount in dollars"
}
}
},
"vke-app": {
"title": "vke-app",
"type": "object",
"x-tags": [
"kubernetes"
],
"description": "VKE application available for deployment.",
"x-examples": {
"example vke application": {
"id": "8cf93f5f-875e-4aea-8a84-ec2dd592b5ae",
"name": "Bitnami NGINX",
"description": "Bitnami NGINX",
"url": "https://example.com/nginx",
"icon_url": "http://local.www.vultr.com/marketplace-assets-dev/default-icon.png",
"version": "18.1.5",
"date_created": "2024-05-07T12:07:58+00:00",
"date_updated": "2026-07-16T13:21:16+00:00"
}
},
"properties": {
"id": {
"type": "string",
"description": "UUID of the catalog VKE application."
},
"name": {
"type": "string",
"description": "Name of the catalog VKE application."
},
"description": {
"type": "string",
"description": "Description of the catalog VKE application."
},
"url": {
"type": "string",
"description": "Homepage URL for the VKE application."
},
"icon_url": {
"type": "string",
"description": "URL for the VKE application icon. Uses the marketplace default icon when no custom icon is configured."
},
"version": {
"type": "string",
"description": "Current Helm chart version defined for the catalog VKE application."
},
"date_created": {
"type": "string",
"description": "Date and time the catalog VKE application was created."
},
"date_updated": {
"type": "string",
"description": "Date and time the catalog VKE application was last updated."
}
}
},
"app-deployment": {
"title": "app-deployment",
"type": "object",
"x-tags": [
"kubernetes"
],
"description": "VKE application deployment on a Kubernetes cluster.",
"x-examples": {
"example application deployment": {
"id": "9a8ca6e2-e77f-4b07-8fd7-aefc6c41cecc",
"app_id": "8cf93f5f-875e-4aea-8a84-ec2dd592b5ae",
"app_name": "Bitnami NGINX",
"version": "18.1.5",
"status": "active",
"timeout": "60m",
"config": "toolkit: \n enabled: false\ndriver:\n enabled: false\noperator: \n defaultRuntime: containerd\nplatform:\n openshift: false\nnfd: \n enabled: true\nmigManager: \n enabled: true",
"date_created": "2026-08-20T15:30:00+00:00",
"date_updated": "2026-09-01T12:00:00+00:00"
}
},
"properties": {
"id": {
"type": "string",
"description": "UUID of this application deployment on the VKE cluster."
},
"app_id": {
"type": "string",
"description": "UUID of the catalog VKE application linked to this deployment."
},
"app_name": {
"type": "string",
"description": "Name of the catalog VKE application linked to this deployment."
},
"version": {
"type": "string",
"description": "Helm chart version tracked for this application deployment."
},
"status": {
"type": "string",
"description": "Current lifecycle status of the application deployment.\n\n* pending_install\n* deploying_install\n* active\n* pending_upgrade\n* deploying_upgrade\n* pending_uninstall\n* deploying_uninstall\n* inactive"
},
"timeout": {
"type": "string",
"description": "Timeout configured for operations on this application deployment."
},
"config": {
"type": "string",
"description": "Helm values used by this application deployment. Custom config is stored here when provided; otherwise the catalog application defaults are used."
},
"date_created": {
"type": "string",
"description": "Date and time the application deployment was created."
},
"date_updated": {
"type": "string",
"description": "Date and time the application deployment was last updated."
}
}
},
"vke-cluster": {
"title": "vke-cluster",
"type": "object",
"x-examples": {
"example vke cluster": {
"id": "455dcd32-e621-48ee-a10e-0cb5f754e13e",
"firewall_group_id": "",
"label": "vke",
"date_created": "2021-07-07T22:57:01+00:00",
"cluster_subnet": "10.244.0.0/16",
"service_subnet": "10.96.0.0/12",
"ip": "0.0.0.0",
"endpoint": "455dcd32-e621-48ee-a10e-0cb5f754e13e.vultr-k8s.com",
"version": "v1.20.0+1",
"region": "lax",
"status": "pending",
"ha_controlplanes": false,
"oidc": {
"issuer_url": "https://example.com",
"client_id": "my-client-id",
"username_claim": "email",
"groups_claim": "groups"
},
"node_pools": [
{
"id": "11e4443a-f92a-46d6-94c8-61c1a1a7514e",
"date_created": "2021-07-07T22:57:01+00:00",
"label": "my-label",
"tag": "my-tag",
"plan": "vc2-1c-2gb",
"status": "pending",
"node_quantity": 2,
"nodes": [
{
"id": "43eda5c8-67f7-4c63-88bc-2f568b48b2b0",
"label": "my-label-6ac60e6313dd1",
"date_created": "2021-07-07T22:57:01+00:00",
"status": "pending"
},
{
"id": "15a7893d-d584-45d5-a74c-d9f46866aa3c",
"label": "my-label-6ac60e6313ddc",
"date_created": "2021-07-07T22:57:01+00:00",
"status": "pending"
}
]
}
]
}
},
"x-tags": [
"kubernetes"
],
"description": "VKE Cluster",
"properties": {
"id": {
"type": "string",
"description": "ID for the VKE cluster"
},
"firewall_group_id": {
"type": "string",
"description": "The [Firewall Group id](#operation/list-firewall-groups) linked to this cluster."
},
"label": {
"type": "string",
"description": "Label for your cluster"
},
"date_created": {
"type": "string",
"description": "Date of creation"
},
"cluster_subnet": {
"type": "string",
"description": "IP range that your pods will run on in this cluster"
},
"service_subnet": {
"type": "string",
"description": "IP range that services will run on this cluster"
},
"ip": {
"type": "string",
"description": "IP for your Kubernetes Clusters Control Plane"
},
"endpoint": {
"type": "string",
"description": "Domain for your Kubernetes Clusters Control Plane"
},
"version": {
"type": "string",
"description": "Version of Kubernetes this cluster is running on"
},
"region": {
"type": "string",
"description": "Region this Kubernetes Cluster is running in"
},
"status": {
"type": "string",
"description": "Status for VKE cluster"
},
"ha_controlplanes": {
"type": "boolean",
"description": "Whether a highly available control planes configuration has been deployed\n* true\n* false (default)"
},
"oidc": {
"type": "object",
"description": "The OpenID Connect (OIDC) configuration for this VKE cluster",
"properties": {
"issuer_url": {
"type": "string",
"description": "The URL of the OIDC provider that issues authentication tokens."
},
"client_id": {
"type": "string",
"description": "The unique identifier assigned to your application by the OIDC provider."
},
"username_claim": {
"type": "string",
"description": "The claim in the OIDC token that identifies the end user's username."
},
"groups_claim": {
"type": "string",
"description": "The claim in the OIDC token that contains the user's group memberships."
}
}
},
"node_pools": {
"type": "array",
"description": "NodePools in this cluster",
"items": {
"$ref": "#/components/schemas/nodepools"
}
},
"vpcs": {
"type": "array",
"description": "List of VPC Networks to which the instance is attached.",
"items": {
"$ref": "#/components/schemas/attached-vpcs"
}
}
}
},
"nodepool-instances": {
"title": "nodepool-instances",
"type": "object",
"description": "Instance that belongs to a nodepool",
"x-examples": {
"example nodepool": {
"id": "43eda5c8-67f7-4c63-88bc-2f568b48b2b0",
"label": "my-label-48770259-6ac60e6313dd1",
"date_created": "2021-07-07T22:57:01+00:00",
"status": "pending"
}
},
"properties": {
"id": {
"type": "string",
"description": "ID of the nodepool instance"
},
"label": {
"type": "string",
"description": "Label of the nodepool instance"
},
"date_created": {
"type": "string",
"description": "Date of creation"
},
"status": {
"type": "string",
"description": "Status for node"
},
"private_ip": {
"type": "string",
"description": "Private IP address assigned to the node on the VKE cluster's VPC"
}
}
},
"nodepools": {
"title": "nodepools",
"type": "object",
"x-examples": {
"example nodepool": {
"id": "11e4443a-f92a-46d6-94c8-61c1a1a7514e",
"date_created": "2021-07-07T22:57:01+00:00",
"label": "my-label",
"tag": "my-tag",
"plan": "vc2-1c-2gb",
"status": "pending",
"node_quantity": 2,
"min_nodes": 2,
"max_nodes": 5,
"auto_scaler": true,
"labels": null,
"allow_forced_replacement": true,
"taints": [],
"nodes": [
{
"id": "43eda5c8-67f7-4c63-88bc-2f568b48b2b0",
"label": "my-label-48770259-6ac60e6313dd1",
"date_created": "2021-07-07T22:57:01+00:00",
"status": "pending"
},
{
"id": "15a7893d-d584-45d5-a74c-d9f46866aa3c",
"label": "my-label-48770259-6ac60e6313ddc",
"date_created": "2021-07-07T22:57:01+00:00",
"status": "pending"
}
]
}
},
"description": "NodePool",
"x-tags": [
"kubernetes"
],
"properties": {
"id": {
"type": "string",
"description": "The [NodePool ID](#operation/get-nodepools)."
},
"date_created": {
"type": "string",
"description": "Date of creation"
},
"label": {
"type": "string",
"description": "Label for nodepool"
},
"tag": {
"type": "string",
"description": "Tag for node pool"
},
"plan": {
"type": "string",
"description": "Plan used for nodepool"
},
"status": {
"type": "string",
"description": "Status for nodepool"
},
"node_quantity": {
"type": "integer",
"description": "Number of nodes in nodepool"
},
"nodes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/nodepool-instances"
}
},
"date_updated": {
"type": "string",
"description": "Date the nodepool was updated."
},
"auto_scaler": {
"type": "boolean",
"description": "Displays if the auto scaler is enabled or disabled for your cluster."
},
"vpc_only": {
"type": "boolean",
"description": "Whether or not the VPS instances in this node pool have only private VPC connectivity. If true, nodes can only access the internet via the NAT Gateway attached to the VPC."
},
"allow_forced_replacement": {
"type": "boolean",
"description": "Determines whether to replace a node if draining timed out during an upgrade."
},
"min_nodes": {
"type": "integer",
"description": "Auto scaler field that displays the minimum nodes you want for your cluster."
},
"max_nodes": {
"description": "Auto scaler field that displays the maximum nodes you want for your cluster."
},
"labels": {
"type": "object",
"nullable": true,
"description": "Map of key/value pairs defining labels to automatically apply to all nodes in this nodepool."
},
"taints": {
"type": "array",
"items": {
"$ref": "#/components/schemas/nodepool-taint-req"
},
"description": "Array of objects containing key, value, and effect."
},
"user_data": {
"type": "string",
"description": "The user-supplied, base64 encoded user data for all nodes in nodepool (only applied on nodes created after user data is set)."
}
}
},
"attached-vpcs": {
"title": "attached-vpcs",
"type": "object",
"description": "Information about a specific VPC Network to which the instance is attached.",
"properties": {
"id": {
"type": "string",
"description": "The ID of the VPC Network."
},
"version": {
"type": "integer",
"description": "The version of VPC (1 or 2).",
"deprecated": true
},
"subnet": {
"type": "string",
"description": "The IP subnet used for the instance on the VPC Network."
}
}
},
"network": {
"title": "network",
"type": "object",
"x-examples": {
"example": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"region": "ewr",
"description": "Example Private Network",
"v4_subnet": "10.99.0.0",
"v4_subnet_mask": 24
}
},
"description": "Network information.",
"x-tags": [
"Private Networks"
],
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Private Network."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the network is located."
},
"date_created": {
"type": "string",
"description": "Date the network was created."
},
"description": {
"type": "string",
"description": "A description of the private network."
},
"v4_subnet": {
"type": "string",
"description": "The IPv4 network address. For example: 10.99.0.0"
},
"v4_subnet_mask": {
"type": "integer",
"description": "The number of bits for the netmask in CIDR notation. Example: 24"
}
},
"required": [
"id"
],
"deprecated": true
},
"vpc": {
"title": "vpc",
"type": "object",
"x-examples": {
"example": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"region": "ewr",
"description": "Example VPC",
"v4_subnet": "10.99.0.0",
"v4_subnet_mask": 24
}
},
"description": "VPC information.",
"x-tags": [
"VPCs"
],
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the VPC."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the VPC is located."
},
"date_created": {
"type": "string",
"description": "Date the VPC was created."
},
"description": {
"type": "string",
"description": "A description of the VPC."
},
"v4_subnet": {
"type": "string",
"description": "The IPv4 VPC address. For example: 10.99.0.0"
},
"v4_subnet_mask": {
"type": "integer",
"description": "The number of bits for the netmask in CIDR notation. Example: 24"
},
"internet": {
"$ref": "#/components/schemas/vpc-internet"
}
},
"required": [
"id"
]
},
"vpc-internet": {
"title": "vpc-internet",
"type": "object",
"description": "Information on the connectivity to the public internet",
"properties": {
"connectivity": {
"type": "boolean",
"description": "If this VPC has connectivity to the public internet or not."
},
"types": {
"type": "array",
"description": "The mechanism providing connectivity to the public internet."
}
}
},
"vpc-attachment-ip": {
"title": "vpc-attachment-ip",
"type": "object",
"description": "The IP of this VPC Attachment",
"properties": {
"v4": {
"type": "string",
"description": "The ipv4 of this VPC Attachment."
}
}
},
"vpc-attachment-linked-subscription": {
"title": "vpc-attachment-linked-subscription",
"type": "object",
"nullable": true,
"description": "The linked subscription of this VPC Attachment if it's part of a managed service",
"properties": {
"type": {
"type": "string",
"description": "The type of subscription this VPC Attachment belongs to"
},
"id": {
"type": "string",
"description": "The ID of the subscription this VPC Attachment belongs to"
}
}
},
"vpc-attachment": {
"title": "vpc-attachment",
"type": "object",
"x-examples": {
"example": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"type": "vps",
"mac_address": "5a:00:04:71:d9:fc",
"date_added": "2025-03-25 09:32:08"
}
},
"description": "VPC Attachment Information.",
"x-tags": [
"VPCs"
],
"properties": {
"id": {
"type": "string",
"description": "The ID of the VPS or BareMetal Subscription attached to this VPC."
},
"type": {
"type": "string",
"description": "The type of subscription attached, either vps or baremetal."
},
"mac_address": {
"type": "string",
"description": "The Mac Address of the attached interface."
},
"date_added": {
"type": "string",
"description": "The date this VPC was attached to this subscription."
},
"ip": {
"$ref": "#/components/schemas/vpc-attachment-ip"
},
"linked_subscription": {
"$ref": "#/components/schemas/vpc-attachment-linked-subscription"
}
}
},
"nat-gateway": {
"title": "nat-gateway",
"type": "object",
"x-tags": [
"VPCs"
],
"description": "NAT Gateway information.",
"x-examples": {},
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the NAT Gateway."
},
"vpc_id": {
"type": "string",
"description": "The unique ID for the VPC Network."
},
"date_created": {
"type": "string",
"description": "The date this NAT Gateway was created."
},
"status": {
"type": "string",
"description": "The current status.\n\n* pending\n* active"
},
"label": {
"type": "string",
"description": "The user-supplied label for this NAT Gateway."
},
"tag": {
"type": "string",
"description": "The user-supplied tag for this NAT Gateway."
},
"public_ips": {
"type": "array",
"description": "The public IPv4 addresses of this NAT Gateway.",
"items": {
"type": "string"
}
},
"public_ips_v6": {
"type": "array",
"description": "The public IPv6 addresses of this NAT Gateway.",
"items": {
"type": "string"
}
},
"private_ips": {
"type": "array",
"description": "The private IP addresses of this NAT Gateway.",
"items": {
"type": "string"
}
},
"billing": {
"$ref": "#/components/schemas/nat-gateway-billing"
}
}
},
"nat-gateway-billing": {
"title": "nat-gateway-billing",
"type": "object",
"x-tags": [
"VPCs"
],
"description": "NAT Gateway billing information.",
"x-examples": {},
"properties": {
"charges": {
"type": "number",
"description": "The current charges for this NAT Gateway."
},
"monthly": {
"type": "number",
"description": "The monthly price for this NAT Gateway."
}
}
},
"nat-gateway-firewall-rule": {
"title": "nat-gateway-firewall-rule",
"type": "object",
"x-tags": [
"VPCs"
],
"description": "NAT Gateway Firewall Rule information.",
"x-examples": {},
"properties": {
"id": {
"type": "string",
"description": "The ID of the Nat Gateway Firewall Rule"
},
"action": {
"type": "string",
"description": "The action associated with this firewall rule. Always `accept` since deny is default."
},
"protocol": {
"type": "string",
"description": "The protocol for this firewall rule\n\n* `tcp`\n* `udp`"
},
"port": {
"type": "string",
"description": "The port or port range for this firewall rule."
},
"subnet": {
"type": "string",
"description": "The IP address representing a subnet for this firewall rule."
},
"subnet_size": {
"type": "integer",
"description": "The number of bits for the netmask in CIDR notation. Example: `24`"
},
"notes": {
"type": "string",
"description": "The user-supplied notes for this firewall rule."
}
}
},
"nat-gateway-port-forwarding-rule": {
"title": "nat-gateway-port-forwarding-rule",
"type": "object",
"x-tags": [
"VPCs"
],
"description": "NAT Gateway Port Forwarding Rule information.",
"x-examples": {},
"properties": {
"id": {
"type": "string",
"description": "The ID of the Nat Gateway Port Forwarding Rule"
},
"name": {
"type": "string",
"description": "The name of this port forwarding rule."
},
"protocol": {
"type": "string",
"description": "The protocol for this port forwarding rule\n\n* `tcp`\n* `udp`\n* `both`"
},
"external_port": {
"type": "integer",
"description": "The external port associated with this port forwarding rule."
},
"internal_ip": {
"type": "string",
"description": "The internal IP address associated with this port forwarding rule."
},
"internal_port": {
"type": "integer",
"description": "The internal port associated with this port forwarding rule."
},
"enabled": {
"type": "boolean",
"description": "Whether this port forwarding rule is enabled."
},
"description": {
"type": "string",
"description": "The user-supplied description for this port forwarding rule."
},
"created_at": {
"type": "string",
"description": "The date this port forwarding rule was added."
},
"updated_at": {
"type": "string",
"description": "The date at which this port forwarding rule was last updated."
}
}
},
"instance-vpc": {
"title": "instance-vpc",
"type": "object",
"x-examples": {
"example": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"mac_address": "00:00:5e:00:53:5e",
"ip_address": "10.99.0.0"
}
},
"description": "VPC information.",
"x-tags": [
"VPC"
],
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the VPC."
},
"mac_address": {
"type": "string",
"description": "The MAC address to use for this instance on the attached VPC network."
},
"ip_address": {
"type": "string",
"description": "The IP address to use for this instance on the attached VPC network."
}
}
},
"user": {
"title": "user",
"type": "object",
"x-tags": [
"users"
],
"description": "User information.",
"x-examples": {
"user": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"email": "user@example.com",
"api_enabled": true,
"acls": [
"manage_users",
"subscriptions_view",
"subscriptions",
"provisioning",
"billing",
"support",
"abuse",
"dns",
"upgrade",
"objstore",
"loadbalancer"
],
"last_activity": "2024-10-15T12:34:56+00:00"
}
},
"properties": {
"user": {
"type": "object",
"description": "An array of Users.",
"properties": {
"id": {
"type": "string",
"description": "The User's id."
},
"name": {
"type": "string",
"description": "The User's full name."
},
"first_name": {
"type": "string",
"description": "The User's first name."
},
"last_name": {
"type": "string",
"description": "The User's last name."
},
"api_enabled": {
"type": "boolean",
"description": "Permit API access for this User.\n\n* true\n* false"
},
"email": {
"type": "string",
"description": "The User's email address."
},
"password": {
"type": "string",
"description": "The User's password."
},
"acls": {
"type": "array",
"description": "An array of permission granted.\n\n* abuse\n* activity_logs\n* alerts\n* billing\n* dns\n* firewall\n* loadbalancer\n* manage\\_users\n* objstore\n* provisioning\n* subscriptions\n* subscriptions\\_view\n* support\n* upgrade",
"items": {
"type": "string"
}
},
"invited_by": {
"type": "string",
"description": "The email address of the user who invited this user to their organization."
},
"invited_on": {
"type": "string",
"description": "The date and time when this user was invited to their organization."
},
"invite_accepted": {
"type": "boolean",
"description": "Whether the user accepted their invitation to join the organization."
},
"service_user": {
"type": "boolean",
"description": "Indicates if this is a service user (API-only access, no portal login).\n\n* true\n* false"
},
"status": {
"type": "enum",
"description": "Indicates the current status of the user's account subscription.\n* pending\n* active\n* suspended\n* closed"
},
"last_activity": {
"type": "string",
"description": "The date and time of the user's most recent activity in ISO 8601 format, or an empty string if no activity in the past year."
},
"api_key": {
"type": "string",
"description": "The API key for this user. Only returned when creating service users."
}
}
}
}
},
"ip-whitelist-entry": {
"title": "ip-whitelist-entry",
"type": "object",
"x-tags": [
"users"
],
"description": "IP whitelist entry information.",
"properties": {
"subnet": {
"type": "string",
"description": "The IP address or subnet."
},
"subnet_size": {
"type": "integer",
"description": "The subnet size."
},
"date_added": {
"type": "string",
"description": "Date the entry was added."
},
"ip_type": {
"type": "string",
"description": "The IP type (v4 or v6).",
"enum": [
"v4",
"v6"
]
}
}
},
"startup": {
"title": "startup",
"type": "object",
"x-tags": [
"startup"
],
"description": "Startup Script information.",
"x-examples": {
"startup": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"date_modified": "2020-10-10T01:59:20+00:00",
"name": "Example Startup Script",
"type": "pxe",
"script": "QmFzZTY0IEV4YW1wbGUgRGF0YQ=="
}
},
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Startup Script."
},
"date_created": {
"type": "string",
"description": "The date the Startup Script was created."
},
"date_modified": {
"type": "string",
"description": "The date the Startup Script was last modified."
},
"name": {
"type": "string",
"description": "The user-supplied name of the Startup Script."
},
"script": {
"type": "string",
"description": "The base-64 encoded Startup Script."
},
"type": {
"type": "string",
"description": "The Startup Script type.\n\n* boot\n* pxe"
}
}
},
"ssh": {
"title": "ssh",
"type": "object",
"x-examples": {
"ssh-key": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"name": "Example SSH Key",
"ssh_key": "ssh-rsa AA... user@example.com"
}
},
"description": "SSH Key information.",
"x-tags": [
"ssh"
],
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the SSH Key."
},
"date_created": {
"type": "string",
"description": "The date this SSH Key was created."
},
"name": {
"type": "string",
"description": "The user-supplied name for this SSH Key."
},
"ssh_key": {
"type": "string",
"description": "The SSH Key."
}
}
},
"snapshot": {
"title": "snapshot",
"type": "object",
"x-examples": {
"snapshot": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"date_expires": "0000-00-00T00:00:00+00:00",
"description": "Example Snapshot",
"size": 42949672960,
"status": "complete",
"os_id": 215,
"app_id": 0,
"pending_charges": 0.33
}
},
"description": "Snapshot information.",
"x-tags": [
"snapshot"
],
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Snapshot."
},
"date_created": {
"type": "string",
"description": "The date this snapshot was created."
},
"date_expires": {
"type": "string",
"description": "The date this snapshot expires."
},
"description": {
"type": "string",
"description": "The user-supplied description of the Snapshot."
},
"size": {
"type": "integer",
"description": "The snapshot size in bytes."
},
"status": {
"type": "string",
"description": "The Snapshot status.\n\n* pending\n* complete\n* deleted"
},
"os_id": {
"type": "integer",
"description": "The [Operating System id](#operation/list-os) for this Snapshot."
},
"app_id": {
"type": "integer",
"description": "The [Application id](#operation/list-applications) for this snapshot."
},
"pending_charges": {
"type": "number",
"description": "Unbilled charges for this month.",
"format": "float"
}
}
},
"subaccount": {
"title": "subaccount",
"type": "object",
"x-examples": {
"subaccount": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"email": "subaccount@vultr.com",
"subaccount_name": "Acme Widgets LLC",
"subaccount_id": 472924,
"activated": false,
"balance": 0,
"pending_charges": 0
}
},
"description": "Sub-account information.",
"x-tags": [
"subaccount"
],
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the sub-account."
},
"email": {
"type": "string",
"description": "The email address of this sub-account."
},
"subaccount_name": {
"type": "string",
"description": "Your name for this sub-account."
},
"subaccount_id": {
"type": "string",
"description": "Your ID for this sub-account."
},
"activated": {
"type": "boolean",
"description": "Has this sub-account been activated or not."
},
"balance": {
"type": "number",
"description": "The current balance of the sub-account.",
"format": "float"
},
"pending_charges": {
"type": "number",
"description": "Charges due for this sub-account at the end of the billing period.",
"format": "float"
}
}
},
"reserved-ip": {
"title": "reserved-ip",
"type": "object",
"x-examples": {
"reserved ip": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"region": "ewr",
"ip_type": "v6",
"subnet": "2001:db8:9999::",
"subnet_size": 64,
"label": "Example Reserved IPv6",
"instance_id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60"
}
},
"description": "Reserved IP information.",
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Reserved IP."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the Reserved IP is located."
},
"ip_type": {
"type": "string",
"description": "The type of IP address.\n\n* v4\n* v6"
},
"subnet": {
"type": "string",
"description": "The IP subnet."
},
"subnet_size": {
"type": "integer",
"description": "The IP network size in bits."
},
"label": {
"type": "string",
"description": "The user-supplied label."
},
"instance_id": {
"type": "string",
"description": "The [Instance id](#operation/list-instances) attached to this Reserved IP."
}
}
},
"os": {
"title": "os",
"type": "object",
"x-tags": [
"os"
],
"x-examples": {
"os": {
"id": 127,
"name": "CentOS 6 x64",
"arch": "x64",
"family": "centos"
}
},
"description": "Operating System information.",
"properties": {
"id": {
"type": "integer",
"description": "The Operating System id."
},
"name": {
"type": "string",
"description": "The Operating System description."
},
"arch": {
"type": "string",
"description": "The Operating System architecture."
},
"family": {
"type": "string",
"description": "The Operating System family. "
}
}
},
"application": {
"title": "application",
"type": "object",
"x-examples": {
"application": [
{
"id": 1,
"name": "LEMP",
"short_name": "lemp",
"deploy_name": "LEMP on CentOS 6 x64",
"type": "one-click",
"vendor": "vultr",
"image_id": ""
},
{
"id": 10008,
"name": "OpenLiteSpeed WordPress",
"short_name": "",
"deploy_name": "",
"type": "marketplace",
"vendor": "LiteSpeed_Technologies",
"image_id": "openlitespeed-wordpress"
}
]
},
"description": "Application information.",
"x-tags": [
"application"
],
"properties": {
"id": {
"type": "integer",
"description": "A unique ID for the application."
},
"name": {
"type": "string",
"description": "The application name."
},
"short_name": {
"type": "string",
"description": "The short application name."
},
"deploy_name": {
"type": "string",
"description": "A long description of the application."
},
"type": {
"type": "string",
"description": "The type of application.\n\n* one-click - use app_id to deploy one-click applications.\n* marketplace - use image_id to deploy marketplace applications."
},
"vendor": {
"type": "string",
"description": "The application vendor name."
},
"image_id": {
"type": "string",
"description": "A unique ID for marketplace applications."
}
}
},
"account": {
"title": "account",
"type": "object",
"x-tags": [
"account"
],
"description": "Account information.",
"x-examples": {
"account": {
"account": {
"name": "Example User",
"email": "user@example.com",
"acls": [
"manage_users",
"subscriptions_view",
"subscriptions",
"billing",
"support",
"provisioning",
"dns",
"abuse",
"upgrade",
"firewall",
"alerts",
"objstore",
"loadbalancer"
],
"balance": -100.55,
"pending_charges": 60.25,
"last_payment_date": "2020-10-10T01:56:20+00:00",
"last_payment_amount": -1.25
}
}
},
"properties": {
"name": {
"type": "string",
"description": "Your user name."
},
"email": {
"type": "string",
"description": "Your email address."
},
"acls": {
"type": "array",
"description": "An array of permission granted.\n* manage\\_users\n* subscriptions_view\n* subscriptions\n* billing\n* support\n* provisioning\n* dns\n* abuse\n* upgrade\n* firewall\n* alerts\n* objstore\n* loadbalancer",
"items": {
"type": "string"
}
},
"balance": {
"type": "number",
"description": "Your current account balance."
},
"pending_charges": {
"type": "number",
"description": "Unbilled charges for this month."
},
"last_payment_date": {
"description": "Date of your last payment.",
"type": "string"
},
"last_payment_amount": {
"type": "number",
"description": "The amount of your last payment."
}
}
},
"account-bgp": {
"title": "account BGP",
"type": "object",
"x-tags": [
"account"
],
"description": "Account BGP information.",
"x-examples": {
"account-bgp": {
"account-bgp": {
"asn": 20473,
"password": "12345",
"enabled": true
}
}
},
"properties": {
"asn": {
"type": "number",
"description": "User BGP Autonomous System Number, 0 if disabled."
},
"password": {
"type": "string",
"description": "Password used to form a BGP neighborship."
},
"enabled": {
"type": "boolean",
"description": "Is BGP enabled on the user account."
}
}
},
"account-bandwidth": {
"title": "bandwidth",
"type": "object",
"x-tags": [
"account"
],
"description": "Account Bandwidth information.",
"x-examples": {
"account-bandwidth": {
"account-bandwidth": {
"previousMonth": {
"timestamp_start": "1701388800",
"timestamp_end": "1704067200",
"gb_in": 0,
"gb_out": 0,
"total_instance_hours": 8736,
"total_instance_count": 13,
"instance_bandwidth_credits": 3099648,
"free_bandwidth_credits": 2048,
"purchased_bandwidth_credits": 0,
"overage": 0,
"overage_unit_cost": 0.01,
"overage_cost": 0
},
"current_month_to_date": {
"timestamp_start": "1704067200",
"timestamp_end": "1706212679",
"gb_in": 0,
"gb_out": 0,
"total_instance_hours": 7748,
"total_instance_count": 13,
"instance_bandwidth_credits": 2749086,
"free_bandwidth_credits": 2048,
"purchased_bandwidth_credits": 0,
"overage": 0,
"overage_unit_cost": 0.01,
"overage_cost": 0
},
"current_month_projected": {
"timestamp_start": "1704067200",
"timestamp_end": "1706745600",
"gb_in": 0,
"gb_out": 0,
"total_instance_hours": 8736,
"total_instance_count": 13,
"instance_bandwidth_credits": 3099648,
"free_bandwidth_credits": 2048,
"purchased_bandwidth_credits": 0,
"overage": 0,
"overage_unit_cost": 0.01,
"overage_cost": 0
}
}
}
},
"properties": {
"previous_month": {
"type": "object",
"description": "Previous month bandwidth",
"properties": {
"timestamp_start": {
"type": "string",
"description": "Timestamp start date"
},
"timestamp_end": {
"type": "string",
"description": "Timestamp end date"
},
"gb_in": {
"type": "number",
"description": "Gigabytes In"
},
"gb_out": {
"type": "number",
"description": "Gigabytes Out"
},
"total_instance_hours": {
"type": "number",
"description": "Total Hours in Instances"
},
"total_instance_count": {
"type": "number",
"description": "Amount of Instances"
},
"instance_bandwidth_credits": {
"type": "number",
"description": "Credits for instance bandwidth"
},
"free_bandwidth_credits": {
"type": "number",
"description": "Free bandwidth credit"
},
"purchased_bandwidth_credits": {
"type": "number",
"description": "Bandwidth credit purchased"
},
"overage": {
"type": "number",
"description": "Amount in overages"
},
"overage_unit_cost": {
"type": "number",
"description": "Unit cost of overage"
},
"overage_cost": {
"type": "number",
"description": "Total amount due of overages"
}
}
},
"current_month_to_date": {
"type": "object",
"description": "Current month to date of bandwidth data",
"properties": {
"timestamp_start": {
"type": "string",
"description": "Timestamp start date"
},
"timestamp_end": {
"type": "string",
"description": "Timestamp end date"
},
"gb_in": {
"type": "number",
"description": "Gigabytes In"
},
"gb_out": {
"type": "number",
"description": "Gigabytes Out"
},
"total_instance_hours": {
"type": "number",
"description": "Total Hours in Instances"
},
"total_instance_count": {
"type": "number",
"description": "Amount of Instances"
},
"instance_bandwidth_credits": {
"type": "number",
"description": "Credits for instance bandwidth"
},
"free_bandwidth_credits": {
"type": "number",
"description": "Free bandwidth credit"
},
"purchased_bandwidth_credits": {
"type": "number",
"description": "Bandwidth credit purchased"
},
"overage": {
"type": "number",
"description": "Amount in overages"
},
"overage_unit_cost": {
"type": "number",
"description": "Unit cost of overage"
},
"overage_cost": {
"type": "number",
"description": "Total amount due of overages"
}
}
},
"current_month_projected": {
"type": "object",
"description": "Current month projected bandwidth data.",
"properties": {
"timestamp_start": {
"type": "string",
"description": "Timestamp start date"
},
"timestamp_end": {
"type": "string",
"description": "Timestamp end date"
},
"gb_in": {
"type": "number",
"description": "Gigabytes In"
},
"gb_out": {
"type": "number",
"description": "Gigabytes Out"
},
"total_instance_hours": {
"type": "number",
"description": "Total Hours in Instances"
},
"total_instance_count": {
"type": "number",
"description": "Amount of Instances"
},
"instance_bandwidth_credits": {
"type": "number",
"description": "Credits for instance bandwidth"
},
"free_bandwidth_credits": {
"type": "number",
"description": "Free bandwidth credit"
},
"purchased_bandwidth_credits": {
"type": "number",
"description": "Bandwidth credit purchased"
},
"overage": {
"type": "number",
"description": "Amount in overages"
},
"overage_unit_cost": {
"type": "number",
"description": "Unit cost of overage"
},
"overage_cost": {
"type": "number",
"description": "Total amount due of overages"
}
}
}
}
},
"custom-subscription": {
"title": "custom_subscription",
"type": "object",
"x-tags": [
"account"
],
"description": "Custom Subscription",
"properties": {
"id": {
"type": "string",
"description": "Unique id of the custom subscription"
},
"label": {
"type": "string",
"description": "The label used for the subscription"
},
"description": {
"type": "string",
"description": "Description of custom subscription"
},
"type": {
"type": "string",
"description": "Custom subscription type"
},
"region": {
"type": "string",
"description": "Region the subscription is located in"
},
"status": {
"type": "string",
"description": "Current status of subscription"
},
"date_created": {
"type": "string",
"description": "Date subscription was created"
},
"cost": {
"type": "number",
"description": "Custom subscription cost"
},
"pending_charges": {
"type": "number",
"description": "Pending charges on the subscription"
}
}
},
"backup": {
"title": "backup",
"type": "object",
"x-examples": {
"backup": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"description": "Example Automatic Backup",
"size": 10000000,
"status": "complete"
}
},
"description": "Backup information.",
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the backup."
},
"date_created": {
"type": "string",
"description": "The date the backup was created."
},
"description": {
"type": "string",
"description": "The user-supplied description of this backup."
},
"size": {
"type": "integer",
"description": "The size of the backup in Bytes."
},
"status": {
"type": "string",
"description": "The Backup status.\n\n* complete\n* pending"
},
"os_id": {
"type": "integer",
"description": "The [Operating System id](#operation/list-os) for this Backup."
},
"app_id": {
"type": "integer",
"description": "The [Application id](#operation/list-applications) for this Backup."
}
},
"x-tags": [
"backup"
]
},
"bgp_prefix": {
"title": "BGP Prefix",
"type": "object",
"x-examples": {
"bgp_prefix": {
"prefix": "192.0.2.0/24",
"date_added": "2020-01-01T13:10:10+00:00",
"rpki_status": "VALID"
}
},
"description": "BGP Prefix information.",
"properties": {
"prefix": {
"type": "string",
"description": "The BGP prefix."
},
"date_added": {
"type": "string",
"description": "The date the BGP prefix was created."
},
"rpki_status": {
"type": "string",
"description": "RPKI validation status."
}
},
"x-tags": [
"bgp_prefix"
]
},
"blockstorage": {
"title": "blockstorage",
"type": "object",
"x-tags": [
"block"
],
"description": "Block Storage information.",
"x-examples": {
"block structure": {
"block": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"cost": 5,
"pending_charges": 0.02,
"status": "active",
"size_gb": 50,
"region": "ewr",
"attached_to_instance": "742c9913-d088-4d67-bc61-5a10e922fbd1",
"attached_to_instance_ip": "",
"attached_to_instance_label": "",
"attached_to_instance_as_bd": false,
"label": "Example Block Storage",
"mount_id": "ewr-example112233",
"block_type": "high_perf",
"os_id": 0,
"snapshot_id": "f2ab2d00-0c71-4910-bbff-95d4557e31cc",
"bootable": false
}
}
},
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Block Storage."
},
"date_created": {
"type": "string",
"description": "The date this Block Storage was created."
},
"cost": {
"type": "integer",
"description": "The monthly cost of this Block Storage."
},
"pending_charges": {
"type": "number",
"description": "Charges due for this subscription at the end of the billing period.",
"format": "float"
},
"status": {
"type": "string",
"description": "The current status of this Block Storage.\n* `active`"
},
"size_gb": {
"type": "integer",
"description": "Size of the Block Storage in GB."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the Block Storage is located."
},
"attached_to_instance": {
"type": "string",
"description": "The [Instance id](#operation/list-instances) with this Block Storage attached."
},
"attached_to_instance_ip": {
"type": "string",
"description": "The attached instance IP."
},
"attached_to_instance_label": {
"type": "string",
"description": "The attached instance label."
},
"attached_to_instance_as_bd": {
"type": "boolean",
"description": "Indicates whether the block storage is configured as the boot device for the attached instance."
},
"label": {
"type": "string",
"description": "The user-supplied label."
},
"mount_id": {
"type": "string",
"description": "An ID associated with the instance, when mounted the ID can be found in /dev/disk/by-id prefixed with virtio."
},
"block_type": {
"type": "string",
"description": "The subscription tier of the block storage volume.\n* `high_perf` from 10GB to 10,000GB\n* `storage_opt` from 40GB to 40,000GB"
},
"os_id": {
"type": "integer",
"description": "Operating system ID, if applicable."
},
"snapshot_id": {
"type": "string",
"description": "The snapshot_id from which this block device was cloned."
},
"bootable": {
"type": "boolean",
"description": "Whether or not this block device can be used as a bootable volume."
}
}
},
"blockstorage_snapshot": {
"title": "blockstorage_snapshot",
"type": "object",
"x-tags": [
"block"
],
"description": "Block Storage Snapshot information.",
"x-examples": {
"snapshot structure": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"block_id": "ay2c5b1a-66fd-4dfb-b839-443f2e6c0b60",
"description": "Example block storage snapshot",
"state": "COMPLETE",
"added_at": "2020-10-10 01:56:20",
"updated_at": "2020-10-10 01:56:35",
"size": 10737418240,
"next_invoice_date": "2010-11-10",
"next_invoice_price": "5"
}
},
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Block Storage Snapshot."
},
"block_id": {
"type": "string",
"description": "The ID of its source Block Storage subscription."
},
"description": {
"type": "string",
"description": "Descriptive label for the snapshot."
},
"state": {
"type": "string",
"description": "The current state of the Block Storage Snapshot.\n* `COMPLETE`\n* `PENDING`\n* `FAILED`"
},
"added_at": {
"type": "string",
"description": "The date this Block Storage Snapshot was created."
},
"updated_at": {
"type": "string",
"description": "The date this Block Storage Snapshot was updated."
},
"size": {
"type": "integer",
"description": "Size of the Block Storage Snapshot in Bytes."
},
"next_invoice_date": {
"type": "string",
"description": "The date of the next billing invoice."
},
"next_invoice_price": {
"type": "string",
"description": "The cost of the next billing invoice."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the Block Storage is located."
},
"block_type": {
"type": "string",
"description": "The subscription tier of the block storage volume.\n* `high_perf` from 10GB to 10,000GB\n* `storage_opt` from 40GB to 40,000GB"
}
}
},
"firewall-group": {
"title": "firewall-group",
"type": "object",
"x-tags": [
"firewall"
],
"x-examples": {
"group": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"description": "Example Firewall Group",
"date_created": "2020-10-10T01:56:20+00:00",
"date_modified": "2020-10-10T01:59:20+00:00",
"instance_count": 2,
"rule_count": 2,
"max_rule_count": 50
}
},
"description": "Firewall Group information.",
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Firewall Group."
},
"description": {
"type": "string",
"description": "User-supplied description of this Firewall Group."
},
"date_created": {
"type": "string",
"description": "Date the Firewall Group was originally created."
},
"date_modified": {
"type": "string",
"description": "Date of the last modification to this Firewall Group."
},
"instance_count": {
"type": "integer",
"description": "The number of instances linked to this Firewall Group."
},
"rule_count": {
"type": "integer",
"description": "The number of rules in this Firewall Group."
},
"max_rule_count": {
"type": "integer",
"description": "The maximum number of rules allowed for this Firewall Group."
}
}
},
"firewall-rule": {
"title": "firewall-rule",
"type": "object",
"x-tags": [
"firewall"
],
"description": "Firewall rule information.",
"x-examples": {
"firewall rule": {
"id": 1,
"type": "v4",
"ip_type": "v4",
"action": "accept",
"protocol": "tcp",
"port": "80",
"subnet": "192.0.2.123",
"subnet_size": 24,
"source": "",
"notes": "Example Firewall Rule"
}
},
"properties": {
"id": {
"type": "integer",
"description": "A unique ID for the Firewall Rule."
},
"type": {
"type": "string",
"description": "This field is deprecated. Use `ip_type` instead.\n\nThe type of IP rule.\n\n* v4\n* v6",
"deprecated": true
},
"ip_type": {
"type": "string",
"description": "The type of IP rule.\n\n* v4\n* v6"
},
"action": {
"type": "string",
"description": "Action to take when this rule is met.\n\n* accept"
},
"protocol": {
"type": "string",
"description": "The protocol for this rule.\n\n* ICMP\n* TCP\n* UDP\n* GRE\n"
},
"port": {
"type": "string",
"description": "Port or port range for this rule."
},
"subnet": {
"type": "string",
"description": "IP address representing a subnet. The IP address format must match with the \"ip_type\" parameter value."
},
"subnet_size": {
"type": "integer",
"description": "The number of bits for the netmask in CIDR notation. Example: 24"
},
"source": {
"type": "string",
"description": "If the source string is given a value of \"cloudflare\" subnet and subnet_size will both be ignored.\nPossible values:\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | \"\" | Use the value from `subnet` and `subnet_size`. |\n| | cloudflare | Allow all of Cloudflare's IP space through the firewall |"
},
"notes": {
"type": "string",
"description": "User-supplied notes for this rule."
}
}
},
"iso": {
"title": "iso",
"type": "object",
"x-tags": [
"iso"
],
"description": "ISO information.",
"x-examples": {
"iso": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"filename": "my-iso.iso",
"size": 9342976,
"md5sum": "ec0669895a250f803e1709d0402fc411",
"sha512sum": "1741f890bce04613f60b4f2b16fb8070c31640c53d4dbb4271b22610150928743eda1207f031b0b5bdd240ef1a6ed21fd5e6a2d192b9c87eff60b6d9698b8260",
"status": "complete"
}
},
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the ISO."
},
"date_created": {
"type": "string",
"description": "Date the ISO was created."
},
"description": {
"type": "string",
"description": "The user-supplied description of the ISO"
},
"filename": {
"type": "string",
"description": "The ISO filename."
},
"size": {
"type": "integer",
"description": "The ISO size in KB."
},
"md5sum": {
"type": "string",
"description": "The calculated md5sum of the ISO."
},
"sha512sum": {
"type": "string",
"description": "The calculated sha512sum of the ISO."
},
"status": {
"type": "string",
"description": "The current status of the ISO.\n\n* complete\n* pending"
}
}
},
"iso-public": {
"title": "iso-public",
"type": "object",
"x-tags": [
"iso"
],
"description": "Public ISO information.",
"x-examples": {
"public iso": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b604",
"name": "CentOS 7",
"description": "7 x86_64 Minimal",
"md5sum": "7f4df50f42ee1b52b193e79855a3aa19"
}
},
"properties": {
"id": {
"description": "A unique ID for the Vultr Public ISO.",
"type": "string"
},
"name": {
"type": "string",
"description": "The short name of the Public ISO."
},
"description": {
"type": "string",
"description": "The long description of the Public ISO."
},
"md5sum": {
"type": "string"
}
}
},
"storage-gateway": {
"title": "storage-gateway",
"type": "object",
"tags": [
"storage-gateways"
],
"description": "Storage Gateway information",
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Storage Gateway."
},
"date_created": {
"type": "string",
"description": "Date the Storage Gateway was created."
},
"status": {
"type": "string",
"description": "The status of this Storage Gateway.\n* active\n* pending"
},
"type": {
"type": "string",
"description": "The type of Storage Gateway."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) for this Storage Gateway."
},
"label": {
"type": "string",
"description": "The user-supplied label for this Storage Gateway."
},
"pending_charges": {
"type": "number",
"description": "The current charges for this subscription.",
"format": "float"
},
"tags": {
"type": "array",
"description": "Tags to apply to the instance.",
"items": {
"type": "string"
}
},
"health": {
"type": "string",
"description": "Quick reference variable to ensure your gateway is running."
}
}
},
"storage-gateway-network": {
"type": "object",
"tags": [
"storage-gateways"
],
"properties": {
"primary": {
"type": "object",
"properties": {
"vpc": {
"type": "object",
"properties": {
"vpc_uuid": {
"type": "string",
"description": "VPC to use with this Storage Gateway"
}
}
}
}
}
}
},
"storage-gateway-network-config": {
"type": "object",
"tags": [
"storage-gateways"
],
"properties": {
"public_ips": {
"type": "array",
"items": {
"type": "string"
}
},
"vpc_ip_address": {
"type": "string",
"description": "VPC IP address assigned to the Storage Gateway."
},
"vpc_uuid": {
"type": "string",
"description": "Assigned VPC's uuid"
},
"vpc_description": {
"type": "string",
"description": "Assigned VPC's description."
}
}
},
"storage-gateway-export": {
"type": "object",
"tags": [
"storage-gateways"
],
"properties": {
"label": {
"type": "string",
"description": "A meaningful name for this export."
},
"pseudo_root_path": {
"type": "string",
"description": "Pseudo root path."
},
"vfs_uuid": {
"type": "string",
"description": "Associated VFS uuid."
},
"allowed_ips": {
"type": "array",
"description": "List of IP addresses or IP address subnets with CIDR notation that should\nhave access to this Storage Gateway. For details on CIDR notation see\n[https://www.vultr.com/resources/subnet-calculator/](https://www.vultr.com/resources/subnet-calculator/).",
"items": {
"type": "string"
}
}
}
},
"storage-gateway-export-config": {
"type": "object",
"tags": [
"storage-gateways"
],
"properties": {
"id": {
"type": "string",
"description": "ID of the export."
},
"name": {
"type": "string",
"description": "A meaningful name for this export."
},
"pseudo_root_path": {
"type": "string",
"description": "Pseudo root path."
},
"vfs_uuid": {
"type": "string",
"description": "Associated VFS uuid."
},
"allowed_ips": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"object-storage-bucket-lifecycle-policy": {
"title": "object-storage-bucket-lifecycle-policy",
"type": "object",
"x-tags": [
"s3"
],
"description": "Object Storage Lifecycle Policy.",
"properties": {
"ID": {
"type": "string",
"description": "A unique ID for the lifecycle policy."
},
"Status": {
"type": "string",
"description": "One of 'Enabled' or 'Disabled'"
},
"Filter": {
"type": "object",
"description": "Policy application object filter",
"properties": {
"Prefix": {
"type": "string"
}
}
},
"Transitions": {
"type": "object",
"description": "Timer before object transition",
"properties": {
"Days": {
"type": "integer"
},
"StorageClass": {
"type": "string",
"description": "For official Vultr Archival support, use 'VULTR_ARCHIVE'"
}
}
}
}
},
"object-storages": {
"title": "object-storage",
"type": "object",
"x-tags": [
"s3"
],
"x-examples": {
"object storage": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"cluster_id": 2,
"region": "ewr",
"label": "Example Object Storage",
"status": "active",
"s3_hostname": "ewr1.vultrobjects.com",
"s3_access_key": "00example11223344",
"s3_secret_key": "00example1122334455667788990011",
"tier": {
"OBJSTORETIERID": 5,
"bw_gb_price": 0.01,
"disk_gb_price": 0.05,
"archive_disk_gb_price": 0.006,
"is_default": "no",
"price": 50,
"ratelimit_ops_bytes": 1048576000,
"ratelimit_ops_secs": 4000,
"sales_desc": "Low-latency storage for datacenter workloads.",
"sales_name": "Performance",
"slug": "tier_004k_1000m"
}
}
},
"description": "Object Storage information.",
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Object Storage."
},
"date_created": {
"type": "string",
"description": "Date the Object Store was created."
},
"cluster_id": {
"type": "integer",
"description": "The [Cluster id](#operation/list-object-storage-clusters)."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) for this Object Storage."
},
"label": {
"type": "string",
"description": "The user-supplied label for this Object Storage."
},
"status": {
"type": "string",
"description": "The status of this Object Storage.\n\n* active\n* pending"
},
"s3_hostname": {
"type": "string",
"description": "The [Cluster hostname](#operation/list-object-storage-clusters) for this Object Storage."
},
"s3_access_key": {
"type": "string",
"description": "The Object Storage access key."
},
"s3_secret_key": {
"type": "string",
"description": "The Object Storage secret key."
},
"pending_charges": {
"type": "number",
"description": "Charges due for this subscription at the end of the billing period."
},
"tier": {
"type": "object",
"description": "An object containing additional tier info for this object storage.",
"properties": {
"OBJSTORETIERID": {
"type": "integer",
"description": "Object Storage Tier ID."
},
"bw_gb_price": {
"type": "number",
"format": "float",
"description": "Price per additional gigabyte of bandwidth."
},
"disk_gb_price": {
"type": "number",
"format": "float",
"description": "Price per additional gigabyte of capacity."
},
"archive_disk_gb_price": {
"type": "number",
"format": "float",
"description": "Price per additional gigabyte of archived capacity."
},
"is_default": {
"type": "string",
"description": "Is this tier the default?"
},
"price": {
"type": "number",
"format": "float",
"description": "Monthly price for this tier."
},
"ratelimit_ops_bytes": {
"type": "integer",
"description": "Rate limit on the number of bytes per second."
},
"ratelimit_ops_secs": {
"type": "integer",
"description": "Rate limit on the number of operations per second."
},
"sales_desc": {
"type": "string",
"description": "Sales description."
},
"sales_name": {
"type": "string",
"description": "Sales name."
},
"slug": {
"type": "string",
"description": "Slug, unique name."
}
}
}
}
},
"object-storage": {
"title": "object-storage",
"type": "object",
"x-tags": [
"s3"
],
"x-examples": {
"object storage": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"cluster_id": 2,
"region": "ewr",
"label": "Example Object Storage",
"status": "active",
"s3_hostname": "ewr1.vultrobjects.com",
"s3_access_key": "00example11223344",
"s3_secret_key": "00example1122334455667788990011"
}
},
"description": "Object Storage information.",
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Object Storage."
},
"date_created": {
"type": "string",
"description": "Date the Object Store was created."
},
"cluster_id": {
"type": "integer",
"description": "The [Cluster id](#operation/list-object-storage-clusters)."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) for this Object Storage."
},
"label": {
"type": "string",
"description": "The user-supplied label for this Object Storage."
},
"status": {
"type": "string",
"description": "The status of this Object Storage.\n\n* active\n* pending"
},
"s3_hostname": {
"type": "string",
"description": "The [Cluster hostname](#operation/list-object-storage-clusters) for this Object Storage."
},
"s3_access_key": {
"type": "string",
"description": "The Object Storage access key."
},
"s3_secret_key": {
"type": "string",
"description": "The Object Storage secret key."
},
"pending_charges": {
"type": "number",
"description": "Charges due for this subscription at the end of the billing period."
}
}
},
"clusters": {
"title": "clusters",
"type": "object",
"x-tags": [
"s3"
],
"description": "Object Storage Cluster information.",
"x-examples": {
"object storage cluster": {
"id": 1,
"region": "ewr",
"hostname": "ewr1.vultrobjects.com",
"deploy": "yes"
}
},
"properties": {
"id": {
"type": "integer",
"description": "A unique ID for the Object Storage cluster."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the cluster is located."
},
"hostname": {
"type": "string",
"description": "The cluster host name."
},
"deploy": {
"type": "string",
"description": "The Cluster is eligible for Object Storage deployment.\n\n* yes\n* no"
}
}
},
"tiers": {
"title": "tiers",
"type": "object",
"description": "Object Storage Tier information.",
"properties": {
"id": {
"type": "integer",
"description": "Object Storage Tier ID."
},
"bw_gb_price": {
"type": "number",
"format": "float",
"description": "Price per additional gigabyte of bandwidth."
},
"disk_gb_price": {
"type": "number",
"format": "float",
"description": "Price per additional gigabyte of capacity."
},
"archive_disk_gb_price": {
"type": "number",
"format": "float",
"description": "Price per additional gigabyte of archived capacity."
},
"is_default": {
"type": "string",
"description": "Is this tier the default?"
},
"price": {
"type": "number",
"format": "float",
"description": "Monthly price for this tier."
},
"ratelimit_ops_bytes": {
"type": "integer",
"description": "Rate limit on the number of bytes per second."
},
"ratelimit_ops_secs": {
"type": "integer",
"description": "Rate limit on the number of operations per second."
},
"sales_desc": {
"type": "string",
"description": "Sales description."
},
"sales_name": {
"type": "string",
"description": "Sales name."
},
"slug": {
"type": "string",
"description": "Slug, unique name."
},
"locations": {
"type": "array",
"description": "Clusters where the tier is available.",
"items": {
"type": "object",
"properties": {
"hostname": {
"type": "string",
"description": "Cluster hostname."
},
"id": {
"type": "integer",
"description": "Cluster ID."
},
"name": {
"type": "string",
"description": "Cluster name."
},
"region": {
"type": "string",
"description": "Cluster region."
}
}
}
}
}
},
"cluster-tiers": {
"title": "tiers",
"type": "object",
"description": "Object Storage Tier information.",
"properties": {
"id": {
"type": "integer",
"description": "Object Storage Tier ID."
},
"bw_gb_price": {
"type": "number",
"format": "float",
"description": "Price per additional gigabyte of bandwidth."
},
"disk_gb_price": {
"type": "number",
"format": "float",
"description": "Price per additional gigabyte of capacity."
},
"archive_disk_gb_price": {
"type": "number",
"format": "float",
"description": "Price per additional gigabyte of archived capacity."
},
"is_default": {
"type": "string",
"description": "Is this tier the default?"
},
"price": {
"type": "number",
"format": "float",
"description": "Monthly price for this tier."
},
"ratelimit_ops_bytes": {
"type": "integer",
"description": "Rate limit on the number of bytes per second."
},
"ratelimit_ops_secs": {
"type": "integer",
"description": "Rate limit on the number of operations per second."
},
"sales_desc": {
"type": "string",
"description": "Sales description."
},
"sales_name": {
"type": "string",
"description": "Sales name."
},
"slug": {
"type": "string",
"description": "Slug, unique name."
}
}
},
"domain": {
"title": "domain",
"type": "object",
"description": "DNS Domain information.",
"x-tags": [
"dns"
],
"x-examples": {
"list of domains": {
"domain": "example.com",
"date_created": "2020-10-10T01:56:20+00:00"
}
},
"properties": {
"domain": {
"type": "string",
"description": "Your registered domain name."
},
"date_created": {
"type": "string",
"description": "Date the DNS Domain was created."
},
"dns_sec": {
"type": "string",
"description": "The domain's DNSSEC status\n\n* enabled\n* disabled"
}
}
},
"dns-soa": {
"title": "dns-soa",
"type": "object",
"x-tags": [
"dns"
],
"description": "SOA Record information.",
"x-examples": {
"dns_soa": {
"dns_soa": {
"nsprimary": "ns1.vultr.com",
"email": "admin@example.com"
}
}
},
"properties": {
"nsprimary": {
"type": "string",
"description": "Primary nameserver for this domain."
},
"email": {
"type": "string",
"description": "Domain contact email address."
}
}
},
"dns-record": {
"title": "dns-record",
"type": "object",
"x-tags": [
"dns"
],
"description": "DNS Record information.",
"x-examples": {
"dns-record": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"type": "A",
"name": "foo.example.com",
"data": "192.0.2.123",
"priority": 0,
"ttl": 300
}
},
"properties": {
"id": {
"description": "A unique ID for the DNS Record.",
"type": "string"
},
"type": {
"type": "string",
"description": "The DNS record type.\n\n* A\n* AAAA\n* CNAME\n* NS\n* MX\n* SRV\n* TXT\n* CAA\n* SSHFP"
},
"name": {
"type": "string",
"description": "The hostname for this DNS record."
},
"data": {
"type": "string",
"description": "The DNS data for this record type."
},
"priority": {
"type": "integer",
"description": "DNS priority. Does not apply to all record types."
},
"ttl": {
"type": "integer",
"description": "Time to Live in seconds."
}
}
},
"loadbalancer": {
"title": "loadbalancer",
"type": "object",
"x-tags": [
"load-balancer"
],
"description": "Load Balancer information.",
"x-examples": {
"load balancer": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"date_created": "2020-10-10T01:56:20+00:00",
"region": "ewr",
"label": "Example Load Balancer",
"status": "active",
"ipv4": "192.0.2.123",
"ipv6": "2001:0db8:6374:dc29:ffff:ffff:ffff:ffff",
"generic_info": {
"balancing_algorithm": "roundrobin",
"ssl_redirect": false,
"sticky_sessions": {
"cookie_name": "example-cookie"
},
"proxy_protocol": false,
"timeout": 600,
"private_network": "9fed374c-0afc-42bf-926c-abcf840b5406",
"vpc": "9fed374c-0afc-42bf-926c-abcf840b5406"
},
"health_check": {
"protocol": "http",
"port": 80,
"path": "/health",
"check_interval": 10,
"response_timeout": 5,
"unhealthy_threshold": 3,
"healthy_threshold": 3
},
"has_ssl": true,
"nodes": 1,
"forwarding_rules": [
{
"id": "73d85156c2c3129d",
"frontend_protocol": "http",
"frontend_port": 80,
"backend_protocol": "http",
"backend_port": 80
}
],
"firewall_rules": [
{
"id": "abcd123b93016eafb",
"port": 80,
"source": "198.51.100.0/24",
"ip_type": "v4"
}
],
"instances": [
"d277caaa-0fab-48cc-9c35-eab056b9b141"
]
}
},
"properties": {
"id": {
"description": "A unique ID for the Load Balancer.",
"type": "string"
},
"date_created": {
"type": "string",
"description": "Date this Load Balancer was created."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the Load Balancer is located."
},
"label": {
"type": "string",
"description": "The user-supplied label for this load-balancer."
},
"status": {
"type": "string",
"description": "The current status.\n\n* pending\n* active\n* suspended"
},
"ipv4": {
"type": "string",
"description": "The IPv4 address of this Load Balancer."
},
"ipv6": {
"type": "string",
"description": "The IPv6 address of this Load Balancer."
},
"generic_info": {
"type": "object",
"description": "An object containing additional options.",
"properties": {
"balancing_algorithm": {
"type": "string",
"description": "The balancing algorithm.\n\n* roundrobin (default)\n* leastconn"
},
"ssl_redirect": {
"type": "boolean",
"description": "If `true`, this will redirect all HTTP traffic to HTTPS. You must have an HTTPS rule and SSL certificate installed on the load balancer to enable this option. Removing the last HTTPS forwarding rule or the certificate turns it back off.\n\n* true\n* false"
},
"sticky_sessions": {
"type": "object",
"description": "The sticky session settings. Empty `cookie_name` means sticky sessions are off.",
"properties": {
"cookie_name": {
"type": "string",
"description": "The cookie name to make sticky. See [Load Balancer documentation](https://docs.vultr.com/vultr-load-balancers/#Load_Balancer_Configuration)."
}
}
},
"proxy_protocol": {
"type": "boolean",
"description": "\"If `true`, you must configure backend nodes to accept Proxy protocol. \\n\\n* true\\n* false (Default)\""
},
"timeout": {
"type": "integer",
"description": "The maximum time allowed for the connection to remain inactive before timing out in seconds. This defaults to 600."
},
"private_network": {
"type": "string",
"description": "Use `vpc` instead. Always the same value as `vpc`.",
"deprecated": true
},
"vpc": {
"type": "string",
"description": "ID of the VPC you wish to use. If a VPC ID is omitted it will default to the public network."
}
}
},
"health_check": {
"type": "object",
"description": "The health check object configuration. See [Load Balancer documentation](https://docs.vultr.com/vultr-load-balancers/#Load_Balancer_Configuration).",
"properties": {
"protocol": {
"type": "string",
"description": "The protocol to use for health checks.\n\n* https\n* http\n* tcp"
},
"port": {
"type": "integer",
"description": "The port to use for health checks."
},
"path": {
"type": "string",
"description": "HTTP Path to check. Only applies if protocol is `http` or `https`."
},
"check_interval": {
"type": "integer",
"description": "Interval between health checks."
},
"response_timeout": {
"type": "integer",
"description": "Timeout before health check fails."
},
"unhealthy_threshold": {
"type": "integer",
"description": "Number of times a check must fail before becoming unhealthy."
},
"healthy_threshold": {
"type": "integer",
"description": "Number of times a check must succeed before returning to healthy status."
}
}
},
"has_ssl": {
"type": "boolean",
"description": "Indicates if this Load Balancer has an SSL certificate installed."
},
"http2": {
"type": "boolean",
"description": "Indicates if this Load Balancer has HTTP2 enabled."
},
"http3": {
"type": "boolean",
"description": "Indicates if this Load Balancer has HTTP3 enabled."
},
"nodes": {
"type": "integer",
"description": "The number of nodes to add to the load balancer (1-99), must be an odd number. This defaults to 1."
},
"forwarding_rules": {
"type": "array",
"description": "An array of forwarding rule objects.",
"items": {
"type": "object",
"description": "A forwarding rule object.",
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the forwarding rule."
},
"frontend_protocol": {
"type": "string",
"description": "The protocol on the Load Balancer to forward to the backend.\n\n* http\n* https\n* tcp\n* udp"
},
"frontend_port": {
"type": "integer",
"description": "The port number on the Load Balancer to forward to the backend."
},
"backend_protocol": {
"type": "string",
"description": "The protocol destination on the backend server.\n\n* http\n* https\n* tcp\n* udp"
},
"backend_port": {
"type": "integer",
"description": "The port number destination on the backend server. "
}
}
}
},
"instances": {
"type": "array",
"description": "Array of [Instance ids](#operation/list-instances) attached to this Load Balancer.",
"items": {
"type": "string"
}
},
"firewall_rules": {
"type": "array",
"description": "An array of firewall rule objects.",
"items": {
"type": "object",
"description": "",
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the firewall rule."
},
"port": {
"type": "integer",
"description": "Port for this rule."
},
"source": {
"type": "string",
"description": "If the source string is given a value of \"cloudflare\" then cloudflare IPs will be supplied. Otherwise enter a IP address with subnet size that you wish to permit through the firewall.\n\n Possible values:\n\n | | Value | Description |\n | - | ------ | ------------- |\n | | \"192.168.1.1/16\" | Ip address with a subnet size. |\n | | cloudflare | Allow all of Cloudflare's IP space through the firewall |"
},
"ip_type": {
"type": "string",
"description": "The type of IP rule.\n\n* v4\n* v6\n"
}
}
}
},
"node_ips": {
"type": "object",
"description": "Public IP addresses of the load balancer nodes.",
"properties": {
"v4": {
"type": "array",
"description": "IPV4 addresses of the load balancer nodes.",
"items": {
"type": "string"
}
},
"v6": {
"type": "array",
"description": "IPV6 addresses of the load balancer nodes.",
"items": {
"type": "string"
}
},
"private": {
"type": "array",
"description": "Internal IP addresses assigned to the nodes within the VPC when a load balancer is configured in the VPC.",
"items": {
"type": "string"
}
}
}
},
"auto_ssl": {
"type": "object",
"description": "The Auto SSL configuration.",
"properties": {
"domain_zone": {
"type": "string",
"description": "The domain zone. (example.com)"
},
"domain": {
"type": "string",
"description": "Full domain including domain zone and subdomain. (subdomain.example.com)"
}
}
},
"global_parent_id": {
"type": "string",
"description": "If this load balancer is a child of a global load balancer, this field will display the ID of the parent load balancer."
},
"global_regions": {
"type": "array",
"description": "Array of regions that child Load Balancers are deployed to, including the VPC attached in each region.",
"items": {
"type": "object",
"properties": {
"region_id": {
"type": "string",
"description": "The [Region id](#operation/list-regions) the child Load Balancer is deployed to."
},
"vpc_id": {
"type": "string",
"description": "The [VPC id](#operation/list-vpcs) attached to the child Load Balancer in this region. Empty when no VPC is attached."
}
}
}
},
"global_children_ids": {
"type": "array",
"description": "If this load balancer is the parent of a global load balancer, this filed will display an array of children load balancer ids",
"items": {
"type": "string"
}
},
"global_cname": {
"type": "string",
"description": "The Canonical Name (CNAME) record value"
},
"ssl_cert_b64": {
"type": "string",
"description": "Base64 encoded ssl certificate, private key, and chain"
},
"pending_charges": {
"type": "number",
"description": "Pending charges for the current billing period"
},
"is_vke": {
"type": "boolean",
"description": "`true` if this Load Balancer is managed by a [Kubernetes cluster](#tag/kubernetes). Make changes through the cluster. Updating it, removing its SSL or Auto SSL, and adding or deleting forwarding or firewall rules return `422`."
},
"cname": {
"type": "string",
"description": "The Canonical Name (CNAME) record value"
}
}
},
"log": {
"title": "log",
"type": "object",
"x-tags": [
"log"
],
"description": "Log line information",
"required": [
"resource_id",
"resource_type",
"log_level",
"message",
"timestamp",
"metadata"
],
"properties": {
"resource_id": {
"type": "string",
"minLength": 1,
"description": "The UUID for the resource that was interacted with. Only set if the logged interaction relates to a specific resource with a UUID."
},
"resource_type": {
"type": "string",
"minLength": 1,
"description": "The type of resource that was interacted with."
},
"log_level": {
"type": "string",
"minLength": 1,
"description": "The type of the configuration option.\n* `info`\n* `debug`\n* `warning`\n* `error`\n* `critical`"
},
"message": {
"type": "string",
"minLength": 1,
"description": "A message relating to the event that is being logged."
},
"timestamp": {
"type": "string",
"minLength": 1,
"description": "the UTC timestamp of the time at which the log was generated."
},
"metadata": {
"type": "object",
"minLength": 1,
"description": "a set of data that is specific to the logged event. the properties of this object can varry depending on the source of the log.",
"required": [
"user_id",
"ip_address"
],
"properties": {
"user_id": {
"type": "string",
"minLength": 1,
"description": "The UUID for the user who triggered the event that is being logged."
},
"ip_address": {
"type": "string",
"minLength": 1,
"description": "The IP address from which the request that generated the log originated."
},
"username": {
"type": "string",
"minLength": 1,
"description": "The email address of a user who is logging in.
*This field is only included in the metadata for logs relating to users logging in.*"
},
"http_status_code": {
"type": "integer",
"minLength": 1,
"description": "The status code returned for and API request.
*This field is only included in the metadata for logs relating to API requests.*"
},
"method": {
"type": "string",
"minLength": 1,
"description": "The HTTP request method of the API request being logged.
*This field is only included in the metadata for logs relating to API requests.*\n* `GET`\n* `POST`\n* `PUT`\n* `PATCH`\n* `DELETE`"
},
"request_path": {
"type": "string",
"minLength": 1,
"description": "The URI path of the API request being logged.
*This field is only included in the metadata for logs relating to API requests.*"
},
"request_body": {
"type": "string",
"description": "The request body provided for the API request being logged.
*This field is only included in the metadata for logs relating to API requests.*"
},
"query_parameters": {
"type": "string",
"description": "The query string provided for the API request being logged.
*This field is only included in the metadata for logs relating to API requests.*"
}
}
}
}
},
"log-meta": {
"title": "log-meta",
"type": "object",
"x-tags": [
"log-meta"
],
"required": [
"next_page_url",
"continue_time",
"returned_count",
"unreturned_count",
"total_count"
],
"properties": {
"next_page_url": {
"type": "string",
"description": "In the event that there are more logs found for a specified time period than can be returned, this field will contain a URL that can be used to request the next block of logs for the time period.\n\nThe new request is inclusive of the timestamp for the last logs from the previous request. This is done to avoid skipping over any logs that may have the same timestamp as the last log in the previous request, but which may not have been included in that response.\n **Be aware that because of this there will be boundary duplicates between this new request and the previous one.**\n"
},
"continue_time": {
"type": "string",
"description": "In the event that there are more logs found for a specified time period that can be returned, this field will be set with a UTC timestamp of where the logs were left off.\n"
},
"returned_count": {
"type": "integer",
"minLength": 1,
"description": "The number of log records that were returned. There is a maximum limit of 5,000 logs returned by any request."
},
"unreturned_count": {
"type": "integer",
"minLength": 1,
"description": "The number of log records from the specified time period that were not returned due to the maximum return limit of 5,000 logs."
},
"total_count": {
"type": "integer",
"minLength": 1,
"description": "The total number of records that were found for the specified time period."
}
}
},
"AuditLog": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The unique id for the audit logs subscription.",
"example": "e106f15e-ab58-4648-9106-19104b85ff65"
},
"date_created": {
"type": "string",
"format": "date-time",
"description": "The date and time that the subscription was created.",
"example": "2025-10-24T20:10:16+00:00"
},
"cluster_id": {
"type": "integer",
"description": "The id of the cluster used for object storage.",
"example": 2
},
"region": {
"type": "string",
"description": "Code for the region where the cluster is hosted.",
"example": "EWR"
},
"location": {
"type": "string",
"description": "A description of the location wher ethe cluster is hosted.",
"example": "New Jersey"
},
"label": {
"type": "string",
"description": "The label used to identify the subscritpion.",
"example": "my_audit_logs"
},
"sub_status": {
"type": "string",
"description": "The status of the audit logs subscription.",
"example": "active"
},
"storage_status": {
"type": "string",
"description": "The status of the object storage that will be used to store the logs. There may be a delay of about a minute between creating the subscription and the object storage being activated.",
"example": "active"
},
"s3_hostname": {
"type": "string",
"description": "The hostname used to connect to object storage.",
"example": "ewr-staging.vultrlabs.com"
},
"s3_access_key": {
"type": "string",
"description": "The read only access key used to connect to object storage. This value will only be set after storage_status is active.",
"example": "0V3QRR3ZODMIPU2LNM49"
},
"s3_secret_key": {
"type": "string",
"description": "The read only secret Key used to connect to object storage. This value will only be set after storage_status is active.",
"example": "Zq5sV3DVgd7rUpb3yZqMPSE3L3fBW87AqDPz6jpC"
},
"bucket_name": {
"type": "string",
"description": "The name of the bucket on object storage, in which the logs will be stored.",
"example": "c2af82b2-0db0-4862-ae0d-3eee783df5ff-auditlog"
},
"prefix": {
"type": "string",
"description": "The vaue that will be used for the prifix part of the object key of each log file that is stored.",
"example": "7952126"
},
"expiration_days": {
"type": "number",
"description": "The number of days to retain logs before they expire.",
"example": 400
},
"retention_gb": {
"type": "number",
"description": "The average daily retention for the current pay cycle in gb(1024^3).",
"example": 0
},
"ingestion_gb": {
"type": "number",
"description": "The total ingestion for the current pay cycle in gb(1024^3).",
"example": 0
},
"retention_gb_price": {
"type": "number",
"description": "The price per gigabite of disk space used for the billing period.",
"example": 0
},
"ingestion_gb_price": {
"type": "number",
"description": "The price per gigabite of files uploaded during the billig period.",
"example": 0
},
"next_invoice_date": {
"type": "string",
"description": "The end of the current billing period.",
"example": "2025-11-01"
},
"charges": {
"type": "number",
"description": "The expected charges for the current billing period.",
"example": 0
},
"storage_used_bytes": {
"type": "number",
"description": "The current storage usage in bytes.",
"example": 0
}
}
},
"AuditLogCluster": {
"type": "object",
"properties": {
"id": {
"type": "int",
"description": "The unique id for the audit logs culster.",
"example": 2
},
"region": {
"type": "string",
"description": "The region id where the cluster is located.",
"example": "ewr"
},
"hostname": {
"type": "string",
"description": "The hostname used to connect to object storage on the cluster.",
"example": "ewr1.vultrobjects.com"
},
"name": {
"type": "string",
"description": "Location of the cluster.",
"example": "New Jersey"
},
"deploy": {
"type": "string",
"description": "The Cluster is eligible for Object Storage deployment..",
"example": "yes"
}
}
},
"region": {
"title": "region",
"type": "object",
"x-tags": [
"region"
],
"description": "Region information.",
"x-examples": {
"example": {
"id": "ewr",
"city": "New Jersey",
"country": "US",
"continent": "North America",
"options": [
"ddos_protection",
"load_balancers",
"object_storage",
"kubernetes",
"block_storage"
],
"connectivity": [
"public_ip",
"nat_gateway"
]
}
},
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Region."
},
"country": {
"type": "string",
"description": "The [two-letter country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) for this Region."
},
"options": {
"type": "array",
"description": "An array of product features available in this Region.",
"items": {
"type": "string"
}
},
"continent": {
"type": "string",
"description": "The name of the continent for this Region."
},
"city": {
"type": "string",
"description": "The name of the city for this Region."
},
"connectivity": {
"type": "array",
"description": "An array of connectivity options available in this Region.",
"items": {
"type": "string"
}
}
}
},
"plans": {
"title": "plans",
"type": "object",
"x-tags": [
"plans"
],
"description": "Plans for VPS instances.",
"x-examples": {
"plans": {
"id": "vhf-8c-32gb",
"vcpu_count": 8,
"ram": 32768,
"disk": 512,
"disk_count": 1,
"bandwidth": 6144,
"invoice_type": "monthly",
"monthly_cost": 192,
"hourly_cost": 0.26,
"monthly_cost_preemptible": 192,
"hourly_cost_preemptible": 0.26,
"type": "vhf",
"locations": [
"sea"
],
"location_cost": {
"sea": {
"monthly_cost": 192,
"hourly_cost": 0.26,
"monthly_cost_preemptible": 192,
"hourly_cost_preemptible": 0.26
}
},
"gpu_brand": "none"
}
},
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Plan."
},
"name": {
"type": "string",
"description": "The Plan name."
},
"vcpu_count": {
"type": "integer",
"description": "The number of vCPUs in this Plan."
},
"ram": {
"type": "integer",
"description": "The amount of RAM in MB."
},
"disk": {
"type": "integer",
"description": "The disk size in GB."
},
"bandwidth": {
"type": "integer",
"description": "The monthly bandwidth quota in GB."
},
"invoice_type": {
"description": "The type of cost for the Plan.\n\n* hourly\n* monthly"
},
"monthly_cost": {
"type": "number",
"description": "The monthly cost in US Dollars."
},
"hourly_cost": {
"type": "number",
"description": "The hourly cost in US Dollars (hourly plans only)."
},
"monthly_cost_preemptible": {
"type": "number",
"description": "The monthly cost in US Dollars for preemptible configurations."
},
"hourly_cost_preemptible": {
"type": "number",
"description": "The hourly cost in US Dollars (hourly plans only) for preemptible configurations."
},
"type": {
"type": "string",
"description": "The plan type.\n\n| | Type | Description |\n| - | ------ | ------------- |\n| | vc2 | Cloud Compute |\n| | vhf | High Frequency Compute |\n| | vdc | Dedicated Cloud |"
},
"locations": {
"type": "array",
"description": "An array of Regions where this plan is valid for use.",
"items": {
"type": "string"
}
},
"disk_count": {
"type": "integer",
"description": "The number of disks that this plan offers."
},
"location_cost": {
"type": "object",
"description": "An object containing location-specific pricing. Keys are region codes and values are objects with cost details.",
"additionalProperties": {
"type": "object",
"properties": {
"monthly_cost": {
"type": "number",
"description": "The monthly cost in US Dollars for this location."
},
"hourly_cost": {
"type": "number",
"description": "The hourly cost in US Dollars for this location."
},
"monthly_cost_preemptible": {
"type": "number",
"description": "The monthly cost in US Dollars for preemptible configurations in this location."
},
"hourly_cost_preemptible": {
"type": "number",
"description": "The hourly cost in US Dollars for preemptible configurations in this location."
}
}
}
},
"gpu_brand": {
"type": "string",
"description": "GPU brand."
}
}
},
"plans-metal": {
"title": "plans-metal",
"type": "object",
"x-tags": [
"plans"
],
"description": "Plans for Bare Metal instances.",
"x-examples": {
"baremetal": {
"id": "vbm-4c-32gb",
"cpu_count": 4,
"cpu_threads": 8,
"cpu_model": "E3-1270v6",
"ram": 32768,
"disk": 240,
"disk_count": 2,
"bandwidth": 5120,
"invoice_type": "monthly",
"monthly_cost": 300,
"hourly_cost": 0.41,
"monthly_cost_preemptible": 300,
"hourly_cost_preemptible": 0.41,
"type": "SSD",
"locations": [
"ewr"
]
}
},
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Bare Metal Plan."
},
"cpu_count": {
"type": "integer",
"description": "The number of CPUs in this Plan."
},
"cpu_model": {
"type": "string",
"description": "The CPU model type for this instance."
},
"cpu_threads": {
"type": "integer",
"description": "The numner of supported threads for this instance."
},
"ram": {
"type": "integer",
"description": "The amount of RAM in MB."
},
"disk": {
"type": "string",
"description": "The disk size in GB."
},
"bandwidth": {
"type": "integer",
"description": "The monthly bandwidth quota in GB."
},
"invoice_type": {
"description": "The type of cost for the Plan.\n\n* hourly\n* monthly"
},
"monthly_cost": {
"type": "number",
"description": "The monthly cost in US Dollars."
},
"hourly_cost": {
"type": "number",
"description": "The hourly cost in US Dollars (hourly plans only)."
},
"monthly_cost_preemptible": {
"type": "number",
"description": "The monthly cost in US Dollars for preemptible configurations."
},
"hourly_cost_preemptible": {
"type": "number",
"description": "The hourly cost in US Dollars (hourly plans only) for preemptible configurations."
},
"locations": {
"type": "array",
"description": "An array of Regions where this plan is valid for use.",
"items": {
"type": "string"
}
},
"type": {
"type": "string",
"description": "The plan type.\n\n* SSD"
},
"disk_count": {
"type": "integer",
"description": "The number of disks that this plan offers."
},
"gpu_brand": {
"type": "string",
"description": "GPU brand."
}
}
},
"baremetal": {
"title": "baremetal",
"type": "object",
"x-tags": [
"baremetal"
],
"description": "Bare Metal information.",
"x-examples": {
"bare metal": {
"id": "cb676a46-66fd-4dfb-b839-443f2e6c0b60",
"os": "CentOS 8 x64",
"ram": "32768 MB",
"disk": "2x 240GB SSD",
"main_ip": "192.0.2.123",
"cpu_count": 4,
"region": "ewr",
"default_password": "example-password",
"date_created": "2020-10-10T01:56:20+00:00",
"status": "active",
"power_status": "running",
"netmask_v4": "255.255.254.0",
"gateway_v4": "192.0.2.123",
"plan": "vbm-4c-32gb",
"v6_network": "2001:0db8:1000::",
"v6_main_ip": "2001:0db8:1000::100",
"v6_network_size": 64,
"label": "Example Bare Metal",
"mac_address": 2199756823533,
"os_id": 215,
"app_id": 0,
"image_id": "",
"snapshot_id": "",
"tags": [
"a tag",
"another"
]
}
},
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Bare Metal instance."
},
"os": {
"type": "string",
"description": "The [Operating System name](#operation/list-os)."
},
"ram": {
"type": "string",
"description": "Text description of the instances' RAM."
},
"disk": {
"type": "string",
"description": "Text description of the instances' disk configuration."
},
"main_ip": {
"type": "string",
"description": "The main IPv4 address."
},
"cpu_count": {
"type": "integer",
"description": "Number of CPUs."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the instance is located."
},
"default_password": {
"type": "string",
"description": "The default password assigned at deployment. Only available for ten minutes after deployment."
},
"date_created": {
"type": "string",
"description": "The date this instance was created."
},
"status": {
"type": "string",
"description": "The current status.\n\n* active\n* pending\n* suspended"
},
"power_status": {
"type": "string",
"description": "The power-on status.\n\n* running\n* stopped"
},
"netmask_v4": {
"type": "string",
"description": "The IPv4 netmask in dot-decimal notation."
},
"gateway_v4": {
"type": "string",
"description": "The IPv4 gateway address."
},
"plan": {
"type": "string",
"description": "The [Bare Metal Plan id](#operation/list-metal-plans) used by this instance."
},
"label": {
"type": "string",
"description": "The user-supplied label for this instance."
},
"tag": {
"type": "string",
"description": "Use `tags` instead. The user-supplied tag for this instance.",
"deprecated": true
},
"os_id": {
"type": "integer",
"description": "The [Operating System id](#operation/list-os)."
},
"app_id": {
"type": "integer",
"description": "The [Application id](#operation/list-applications)."
},
"image_id": {
"type": "string",
"description": "The [Application image_id](#operation/list-applications)."
},
"snapshot_id": {
"type": "string",
"description": "The [Snapshot id](#operation/list-snapshots)."
},
"v6_network": {
"type": "string",
"description": "The IPv6 subnet."
},
"v6_main_ip": {
"type": "string",
"description": "The main IPv6 network address."
},
"v6_network_size": {
"type": "integer",
"description": "The IPv6 network size in bits."
},
"mac_address": {
"type": "integer",
"description": "The MAC address for a Bare Metal server."
},
"tags": {
"type": "array",
"description": "Tags to apply to the instance.",
"items": {
"type": "string"
}
},
"user_scheme": {
"type": "string",
"description": "The user scheme.\n\n* root\n* limited"
},
"hostname": {
"type": "string",
"description": "The hostname for this Bare Metal instance."
},
"vserial": {
"type": "string",
"description": "The vSerial SSH destination (user@host) for accessing the bare metal server's serial console remotely. Use with `ssh -i {private-key} {vserial}`."
}
}
},
"baremetal-get": {
"title": "baremetal",
"type": "object",
"x-tags": [
"baremetal"
],
"description": "Bare Metal information.",
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Bare Metal instance."
},
"os": {
"type": "string",
"description": "The [Operating System name](#operation/list-os)."
},
"ram": {
"type": "string",
"description": "Text description of the instances' RAM."
},
"disk": {
"type": "string",
"description": "Text description of the instances' disk configuration."
},
"main_ip": {
"type": "string",
"description": "The main IPv4 address."
},
"cpu_count": {
"type": "integer",
"description": "Number of CPUs."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the instance is located."
},
"default_password": {
"type": "string",
"description": "The default password assigned at deployment. Only available for ten minutes after deployment."
},
"date_created": {
"type": "string",
"description": "The date this instance was created."
},
"status": {
"type": "string",
"description": "The current status.\n\n* active\n* pending\n* suspended"
},
"power_status": {
"type": "string",
"description": "The power-on status.\n\n* running\n* stopped"
},
"netmask_v4": {
"type": "string",
"description": "The IPv4 netmask in dot-decimal notation."
},
"gateway_v4": {
"type": "string",
"description": "The IPv4 gateway address."
},
"plan": {
"type": "string",
"description": "The [Bare Metal Plan id](#operation/list-metal-plans) used by this instance."
},
"label": {
"type": "string",
"description": "The user-supplied label for this instance."
},
"internal_ip": {
"type": "string",
"description": "The internal IP used by this instance, if set. Only relevant when a VPC is attached."
},
"vpcs": {
"type": "array",
"description": "List of VPC Networks to which the instance is attached.",
"items": {
"$ref": "#/components/schemas/attached-vpcs"
}
},
"tag": {
"type": "string",
"description": "Use `tags` instead. The user-supplied tag for this instance.",
"deprecated": true
},
"os_id": {
"type": "integer",
"description": "The [Operating System id](#operation/list-os)."
},
"app_id": {
"type": "integer",
"description": "The [Application id](#operation/list-applications)."
},
"image_id": {
"type": "string",
"description": "The [Application image_id](#operation/list-applications)."
},
"snapshot_id": {
"type": "string",
"description": "The [Snapshot id](#operation/list-snapshots)."
},
"v6_network": {
"type": "string",
"description": "The IPv6 subnet."
},
"v6_main_ip": {
"type": "string",
"description": "The main IPv6 network address."
},
"v6_network_size": {
"type": "integer",
"description": "The IPv6 network size in bits."
},
"mac_address": {
"type": "integer",
"description": "The MAC address for a Bare Metal server."
},
"tags": {
"type": "array",
"description": "Tags to apply to the instance.",
"items": {
"type": "string"
}
},
"user_scheme": {
"type": "string",
"description": "The user scheme.\n\n* root\n* limited"
},
"hostname": {
"type": "string",
"description": "The hostname for this Bare Metal instance."
},
"vserial": {
"type": "string",
"description": "The vSerial SSH destination (user@host) for accessing the bare metal server's serial console remotely. Use with `ssh -i {private-key} {vserial}`."
}
}
},
"baremetal-ipv4": {
"title": "baremetal-ipv4",
"type": "object",
"x-tags": [
"baremetal"
],
"description": "Bare Metal IPv4 information.",
"x-examples": {
"ipv4 example": {
"ip": "192.0.2.123",
"netmask": "255.255.254.0",
"gateway": "192.0.2.123",
"type": "main_ip",
"reverse": "192.0.2.123.vultr.com",
"mac_address": "00:00:5e:00:53:5e"
}
},
"properties": {
"ip": {
"type": "string",
"description": "The IPv4 address."
},
"netmask": {
"type": "string",
"description": "The IPv4 netmask in dot-decimal notation."
},
"gateway": {
"type": "string",
"description": "The gateway IP address."
},
"type": {
"type": "string",
"description": "The type of IP address.\n\n* main_ip"
},
"reverse": {
"type": "string",
"description": "The reverse DNS information for this IP address."
},
"mac_address": {
"type": "string",
"description": "The MAC address associated with this IP address."
}
}
},
"baremetal-ipv6": {
"title": "baremetal-ipv6",
"type": "object",
"x-tags": [
"baremetal"
],
"description": "Bare Metal IPv6 information.",
"properties": {
"ip": {
"type": "string",
"description": "A unique ID for the IPv6 address."
},
"network": {
"type": "string",
"description": "The IPv6 subnet."
},
"network_size": {
"type": "integer",
"description": "The IPv6 network size in bits."
},
"type": {
"type": "string",
"description": "The type of IP address.\n\n* main_ip"
}
}
},
"bandwidth": {
"title": "bandwidth",
"type": "object",
"description": "Bandwidth information.",
"x-examples": {},
"x-tags": [
"bandwidth"
],
"properties": {
"incoming_bytes": {
"type": "integer",
"description": "Total bytes received by this instance on the date (UTC) denoted by the object key."
},
"outgoing_bytes": {
"description": "Total bytes sent by this instance on the date (UTC) denoted by the object key.",
"type": "integer"
}
}
},
"instance": {
"title": "instance",
"type": "object",
"x-tags": [
"instances"
],
"description": "Instance information.",
"x-examples": {},
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the VPS Instance."
},
"os": {
"type": "string",
"description": "The [Operating System name](#operation/list-os)."
},
"ram": {
"type": "integer",
"description": "The amount of RAM in MB."
},
"disk": {
"type": "integer",
"description": "The size of the disk in GB."
},
"main_ip": {
"type": "string",
"description": "The main IPv4 address."
},
"vcpu_count": {
"type": "integer",
"description": "Number of vCPUs."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the Instance is located."
},
"default_password": {
"type": "string",
"description": "The default password assigned at deployment. Only available for ten minutes after deployment."
},
"date_created": {
"type": "string",
"description": "The date this instance was created."
},
"status": {
"type": "string",
"description": "The current status.\n\n* active\n* pending\n* suspended\n* resizing"
},
"power_status": {
"type": "string",
"description": "The power-on status.\n\n* running\n* stopped"
},
"server_status": {
"type": "string",
"description": "The server health status.\n\n* none\n* locked\n* installingbooting\n* ok"
},
"allowed_bandwidth": {
"type": "integer",
"description": "Monthly bandwidth quota in GB."
},
"netmask_v4": {
"type": "string",
"description": "The IPv4 netmask in dot-decimal notation."
},
"gateway_v4": {
"type": "string",
"description": "The gateway IP address."
},
"v6_network": {
"type": "string",
"description": "The IPv6 subnet."
},
"v6_main_ip": {
"type": "string",
"description": "The main IPv6 network address."
},
"v6_network_size": {
"type": "integer",
"description": "The IPv6 network size in bits."
},
"hostname": {
"type": "string",
"description": "The hostname for this instance."
},
"label": {
"type": "string",
"description": "The user-supplied label for this instance."
},
"tag": {
"type": "string",
"description": "Use `tags` instead. The user-supplied tag for this instance.",
"deprecated": true
},
"internal_ip": {
"type": "string",
"description": "The internal IP used by this instance, if set. Only relevant when a VPC is attached."
},
"vpc_only": {
"type": "boolean",
"description": "The flag used when this VM will not receive a public IP and get its internet access through a NAT Gateway on the VPC."
},
"kvm": {
"type": "string",
"description": "HTTPS link to the Vultr noVNC Web Console."
},
"os_id": {
"type": "integer",
"description": "The [Operating System id](#operation/list-os) used by this instance."
},
"app_id": {
"type": "integer",
"description": "The [Application id](#operation/list-applications) used by this instance."
},
"image_id": {
"type": "string",
"description": "The [Application image_id](#operation/list-applications) used by this instance."
},
"snapshot_id": {
"type": "string",
"description": "The [Snapshot id](#operation/list-snapshots) used by this instance."
},
"firewall_group_id": {
"type": "string",
"description": "The [Firewall Group id](#operation/list-firewall-groups) linked to this Instance."
},
"features": {
"type": "array",
"description": "\"auto_backups\", \"ipv6\", \"ddos_protection\"",
"items": {
"type": "string"
}
},
"plan": {
"type": "string",
"description": "A unique ID for the Plan."
},
"tags": {
"type": "array",
"description": "Tags to apply to the instance.",
"items": {
"type": "string"
}
},
"user_scheme": {
"type": "string",
"description": "The user scheme.\n\n* root\n* limited"
},
"vke_cluster_id": {
"type": "string",
"description": "The [VKE Cluster id](#operation/get-kubernetes-clusters) this instance belongs to. Empty string if the instance is not part of a VKE cluster."
}
}
},
"instance-get": {
"title": "instance",
"type": "object",
"x-tags": [
"instances"
],
"description": "Instance information.",
"x-examples": {},
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the VPS Instance."
},
"os": {
"type": "string",
"description": "The [Operating System name](#operation/list-os)."
},
"ram": {
"type": "integer",
"description": "The amount of RAM in MB."
},
"disk": {
"type": "integer",
"description": "The size of the disk in GB."
},
"main_ip": {
"type": "string",
"description": "The main IPv4 address."
},
"vcpu_count": {
"type": "integer",
"description": "Number of vCPUs."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the Instance is located."
},
"default_password": {
"type": "string",
"description": "The default password assigned at deployment. Only available for ten minutes after deployment."
},
"date_created": {
"type": "string",
"description": "The date this instance was created."
},
"status": {
"type": "string",
"description": "The current status.\n\n* active\n* pending\n* suspended\n* resizing"
},
"power_status": {
"type": "string",
"description": "The power-on status.\n\n* running\n* stopped"
},
"server_status": {
"type": "string",
"description": "The server health status.\n\n* none\n* locked\n* installingbooting\n* ok"
},
"allowed_bandwidth": {
"type": "integer",
"description": "Monthly bandwidth quota in GB."
},
"netmask_v4": {
"type": "string",
"description": "The IPv4 netmask in dot-decimal notation."
},
"gateway_v4": {
"type": "string",
"description": "The gateway IP address."
},
"v6_network": {
"type": "string",
"description": "The IPv6 subnet."
},
"v6_main_ip": {
"type": "string",
"description": "The main IPv6 network address."
},
"v6_network_size": {
"type": "integer",
"description": "The IPv6 network size in bits."
},
"hostname": {
"type": "string",
"description": "The hostname for this instance."
},
"label": {
"type": "string",
"description": "The user-supplied label for this instance."
},
"tag": {
"type": "string",
"description": "Use `tags` instead. The user-supplied tag for this instance.",
"deprecated": true
},
"internal_ip": {
"type": "string",
"description": "The internal IP used by this instance, if set. Only relevant when a VPC is attached."
},
"vpc_only": {
"type": "boolean",
"description": "The flag used when this VM will not receive a public IP and get its internet access through a NAT Gateway on the VPC."
},
"vpcs": {
"type": "array",
"description": "List of VPC Networks to which the instance is attached.",
"items": {
"$ref": "#/components/schemas/attached-vpcs"
}
},
"enable_memorybacking": {
"type": "string",
"description": "The memory backing used for the instance. Shared memory backing is required to attach Vultr File System (VFS) shares.",
"enum": [
"none",
"shared"
]
},
"kvm": {
"type": "string",
"description": "HTTPS link to the Vultr noVNC Web Console."
},
"os_id": {
"type": "integer",
"description": "The [Operating System id](#operation/list-os) used by this instance."
},
"app_id": {
"type": "integer",
"description": "The [Application id](#operation/list-applications) used by this instance."
},
"image_id": {
"type": "string",
"description": "The [Application image_id](#operation/list-applications) used by this instance."
},
"snapshot_id": {
"type": "string",
"description": "The [Snapshot id](#operation/list-snapshots) used by this instance."
},
"firewall_group_id": {
"type": "string",
"description": "The [Firewall Group id](#operation/list-firewall-groups) linked to this Instance."
},
"features": {
"type": "array",
"description": "\"auto_backups\", \"ipv6\", \"ddos_protection\"",
"items": {
"type": "string"
}
},
"plan": {
"type": "string",
"description": "A unique ID for the Plan."
},
"tags": {
"type": "array",
"description": "Tags to apply to the instance.",
"items": {
"type": "string"
}
},
"user_scheme": {
"type": "string",
"description": "The user scheme.\n\n* root\n* limited"
},
"vke_cluster_id": {
"type": "string",
"description": "The [VKE Cluster id](#operation/get-kubernetes-clusters) this instance belongs to. Empty string if the instance is not part of a VKE cluster."
}
}
},
"dbaas-meta": {
"title": "meta",
"type": "object",
"x-examples": {
"meta response": {
"meta": {
"total": 31
}
}
},
"description": "The meta information object.",
"properties": {
"total": {
"type": "integer",
"description": "Total objects available in the list."
}
}
},
"database": {
"title": "database",
"type": "object",
"x-tags": [
"databases"
],
"description": "Managed Database information.",
"x-examples": {},
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Managed Database."
},
"parent_id": {
"type": "string",
"description": "The unique ID for the parent Managed Database (read-only replica nodes only)."
},
"date_created": {
"type": "string",
"description": "The date this database was created."
},
"plan": {
"type": "string",
"description": "The name of the Managed Database plan."
},
"plan_disk": {
"type": "integer",
"description": "The size of the disk in GB (excluded for Valkey engine types)."
},
"plan_ram": {
"type": "integer",
"description": "The amount of RAM in MB."
},
"plan_vcpus": {
"type": "integer",
"description": "Number of vCPUs."
},
"plan_replicas": {
"type": "integer",
"description": "Number of replica nodes (excluded for Kafka engine types)."
},
"plan_brokers": {
"type": "integer",
"description": "Number of brokers (Kafka engine types only)."
},
"plan_price": {
"type": "number",
"description": "The monthly cost of the Managed Database plan.",
"format": "float"
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the Managed Database is located."
},
"database_engine": {
"type": "string",
"description": "The database engine type (MySQL, PostgreSQL, Valkey, Kafka)."
},
"database_engine_version": {
"type": "string",
"description": "The version number of the database engine in use."
},
"vpc_id": {
"type": "string",
"description": "The ID of the [VPC Network](#operation/get-vpc) attached to the Managed Database."
},
"status": {
"type": "string",
"description": "The current status.\n\n* Rebuilding\n* Rebalancing\n* Running"
},
"label": {
"type": "string",
"description": "The user-supplied label for this managed database."
},
"tag": {
"type": "string",
"description": "The user-supplied tag for this managed database."
},
"dbname": {
"type": "string",
"description": "The default database name."
},
"host": {
"type": "string",
"description": "The public hostname for database connections, or private hostname if this managed database is attached to a VPC network."
},
"public_host": {
"type": "string",
"description": "The public hostname for database connections. Only visible when the managed database is attached to a VPC network."
},
"user": {
"type": "string",
"description": "The default user configured on creation."
},
"password": {
"type": "string",
"description": "The default user's secure password generated on creation."
},
"access_key": {
"type": "string",
"description": "The private key to authenticate the default user (Kafka engine types only)."
},
"access_cert": {
"type": "string",
"description": "The certificate to authenticate the default user (Kafka engine types only)."
},
"port": {
"type": "string",
"description": "The assigned port for connecting to the Managed Database."
},
"sasl_port": {
"type": "string",
"description": "The port for connecting to the Managed Database via SASL (Kafka engine types only)."
},
"enable_kafka_rest": {
"type": "boolean",
"description": "Configuration value for Kafka REST support on the Managed Database (Kafka engine types only on business plans or higher)."
},
"kafka_rest_uri": {
"type": "boolean",
"description": "The URI to access the RESTful interface of your Kafka cluster if Kafka REST is enabled. For more information on how to interact with your cluster's RESTful interface, please refer to the [Confluent REST Proxy API v2 documentation](https://docs.confluent.io/platform/current/kafka-rest/api.html#rest-proxy-v2)."
},
"enable_schema_registry": {
"type": "boolean",
"description": "Configuration value for Schema Registry support on the Managed Database (Kafka engine types only on business plans or higher)."
},
"schema_registry_uri": {
"type": "boolean",
"description": "The URI to access the Schema Registry service of your Kafka cluster if Schema Registry is enabled. For more information on how to interact with your cluster's Schema Registry, please refer to the [Confluent Schema Registry API Reference](https://docs.confluent.io/platform/current/schema-registry/develop/api.html)."
},
"enable_kafka_connect": {
"type": "boolean",
"description": "Configuration value for Kafka Connect support on the Managed Database (Kafka engine types only on business plans or higher)."
},
"kafka_private_access": {
"type": "boolean",
"description": "Configuration value for Kafka Private Access support on the Managed Database (Kafka engine types only on business plans or higher)."
},
"maintenance_dow": {
"type": "string",
"description": "The chosen date of week for routine maintenance updates."
},
"maintenance_time": {
"type": "string",
"description": "The chosen hour for routine maintenance updates."
},
"backup_hour": {
"type": "string",
"description": "The chosen hour for daily backups to take place. Excluded for Kafka engine types."
},
"backup_minute": {
"type": "string",
"description": "The chosen minute of the backup hour for daily backups to take place. Excluded for Kafka engine types."
},
"latest_backup": {
"type": "string",
"description": "The date for the latest backup stored on the Managed Database."
},
"pending_charges": {
"type": "number",
"description": "Charges due for this subscription at the end of the billing period."
},
"trusted_ips": {
"type": "array",
"description": "A list of trusted IP addresses for connecting to this Managed Database (in CIDR notation).",
"items": {
"type": "string"
}
},
"ca_certificate": {
"type": "string",
"description": "The CA certificate for Managed Databases on this account."
},
"mysql_binlog_retention_period": {
"type": "integer",
"description": "The minimum amount of time in seconds to keep binlog entries before deletion (MySQL engine types only)."
},
"mysql_sql_modes": {
"type": "array",
"description": "A list names of enabled SQL Modes (MySQL engine types only).",
"items": {
"type": "string"
}
},
"mysql_require_primary_key": {
"type": "boolean",
"description": "Configuration value for requiring table primary keys (MySQL engine types only)."
},
"mysql_slow_query_log": {
"type": "boolean",
"description": "Configuration value for slow query logging on the Managed Database (MySQL engine types only)."
},
"mysql_long_query_time": {
"type": "integer",
"description": "The number of seconds to denote a slow query when logging is enabled (MySQL engine types only)."
},
"pg_available_extensions": {
"type": "array",
"description": "A list of objects containing names and versions (when applicable) of available extensions for PostgreSQL engine types only.",
"items": {
"type": "object"
}
},
"redis_eviction_policy": {
"type": "string",
"description": "The current configured data eviction policy for Redis engine types only.",
"deprecated": true
},
"eviction_policy": {
"type": "string",
"description": "The current configured data eviction policy for Valkey engine types only."
},
"cluster_time_zone": {
"type": "string",
"description": "The configured time zone of the Managed Database in TZ database format."
},
"read_replicas": {
"type": "array",
"description": "A list of database objects containing details for all attached read-only replica nodes.",
"items": {
"type": "object"
}
}
}
},
"dbaas-services": {
"title": "services",
"type": "object",
"x-tags": [
"database-services"
],
"description": null,
"x-examples": {},
"properties": {
"kafka": {
"type": "array",
"description": "List of available versions of Kafka databases."
},
"mysql": {
"type": "array",
"description": "List of available versions of MySQL databases."
},
"pg": {
"type": "array",
"description": "List of available versions of PostgreSQL databases."
},
"valkey": {
"type": "array",
"description": "List of available versions of Valkey databases."
}
}
},
"dbaas-plan": {
"title": "plan",
"type": "object",
"x-tags": [
"database-plans"
],
"description": "Managed Database plan information.",
"x-examples": {},
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the plan."
},
"number_of_nodes": {
"type": "integer",
"description": "The total number of nodes for this plan."
},
"type": {
"type": "string",
"description": "The type of plan this is."
},
"vcpu_count": {
"type": "integer",
"description": "Number of vCPUs."
},
"ram": {
"type": "integer",
"description": "The amount of RAM in MB."
},
"disk": {
"type": "integer",
"description": "The size of the disk in GB (excluded for Valkey engine types)."
},
"monthly_cost": {
"type": "integer",
"description": "The monthly cost of this Managed Database plan."
},
"supported_engines": {
"type": "object",
"description": "A list of key/value pairs with database engine types and boolean values."
},
"max_connections": {
"type": "object",
"description": "A list of key/value pairs with database engine types (excluding Valkey and Kafka) and integers of max connection values."
},
"locations": {
"type": "array",
"description": "A list of available regions in which this plan is currently available.",
"items": {
"type": "string"
}
}
}
},
"database-usage": {
"title": "usage",
"type": "object",
"x-tags": [
"database-usage"
],
"description": "Managed Database usage information.",
"x-examples": {},
"properties": {
"disk": {
"type": "object",
"description": "Metrics for the disk storage of the Managed Database.",
"properties": {
"current_gb": {
"type": "string",
"description": "The current amount of space used on the Managed Database (in GB)."
},
"max_gb": {
"type": "string",
"description": "The maximum available space on the Managed Database (in GB)."
},
"percentage": {
"type": "string",
"description": "The percentage of space used on the Managed Database relative to its capacity."
}
}
},
"memory": {
"type": "object",
"description": "Metrics for the memory of the Managed Database.",
"properties": {
"current_mb": {
"type": "string",
"description": "The current amount of memory used on the Managed Database (in MB)."
},
"max_mb": {
"type": "string",
"description": "The maximum available memory on the Managed Database (in MB)."
},
"percentage": {
"type": "string",
"description": "The average percent of memory utilization for the Managed Database over the last hour."
}
}
},
"cpu": {
"type": "object",
"description": "Metrics for the vCPU(s) of the Managed Database.",
"properties": {
"percentage": {
"type": "string",
"description": "The average percent of vCPU utilization for the Managed Database over the last hour."
}
}
}
}
},
"database-user": {
"title": "user",
"type": "object",
"x-tags": [
"database-users"
],
"description": "Managed Database user information.",
"x-examples": {},
"properties": {
"username": {
"type": "string",
"description": "The username for the database user."
},
"password": {
"type": "string",
"description": "The password for the database user."
},
"encryption": {
"type": "string",
"description": "The password encryption for the database user (MySQL engine types only).\n* `Default (MySQL 8+)`\n* `Legacy (MySQL 5.x)`"
},
"access_control": {
"type": "object",
"description": "Access control settings for the database user (Valkey engine types only).",
"properties": {
"redis_acl_categories": {
"type": "array",
"description": "List of configured rules for command categories.",
"items": {
"type": "string"
},
"deprecated": true
},
"redis_acl_channels": {
"type": "array",
"description": "List of configured publish/subscribe channel patterns.",
"items": {
"type": "string"
},
"deprecated": true
},
"redis_acl_commands": {
"type": "array",
"description": "List of configured rules for individual commands.",
"items": {
"type": "string"
},
"deprecated": true
},
"redis_acl_keys": {
"type": "array",
"description": "List of configured key access rules.",
"items": {
"type": "string"
},
"deprecated": true
},
"acl_categories": {
"type": "array",
"description": "List of configured rules for command categories.",
"items": {
"type": "string"
}
},
"acl_channels": {
"type": "array",
"description": "List of configured publish/subscribe channel patterns.",
"items": {
"type": "string"
}
},
"acl_commands": {
"type": "array",
"description": "List of configured rules for individual commands.",
"items": {
"type": "string"
}
},
"acl_keys": {
"type": "array",
"description": "List of configured key access rules.",
"items": {
"type": "string"
}
}
}
},
"permission": {
"type": "string",
"description": "The permission level for the database user (Kafka engine types only)."
},
"access_key": {
"type": "string",
"description": "The private key to authenticate the database user (Kafka engine types only)."
},
"access_cert": {
"type": "string",
"description": "The certificate to authenticate the database user (Kafka engine types only)."
}
}
},
"database-topic": {
"title": "topic",
"type": "object",
"x-tags": [
"database-topics"
],
"description": "Managed Database topic information.",
"x-examples": {},
"properties": {
"name": {
"type": "string",
"description": "The name of the database topic."
},
"partitions": {
"type": "integer",
"description": "The number of partitions for the database topic."
},
"replication": {
"type": "integer",
"description": "The replication factor for the database topic."
},
"retention_hours": {
"type": "integer",
"description": "The retention hours for the database topic."
},
"retention_bytes": {
"type": "integer",
"description": "The retention bytes for the database topic."
}
}
},
"database-quota": {
"title": "quota",
"type": "object",
"x-tags": [
"database-quotas"
],
"description": "Managed Database quota information.",
"x-examples": {},
"properties": {
"client_id": {
"type": "string",
"description": "The client ID for the database quota."
},
"user": {
"type": "string",
"description": "The [user](#operation/list-database-users) for the database quota."
},
"consumer_byte_rate": {
"type": "integer",
"description": "The consumer byte rate for the database quota."
},
"producer_byte_rate": {
"type": "integer",
"description": "The producer byte rate for the database quota."
},
"request_percentage": {
"type": "integer",
"description": "The CPU request percentage for the database quota."
}
}
},
"database-available-connector": {
"title": "available-connector",
"type": "object",
"x-tags": [
"database-available-connectors"
],
"description": "Managed Database available connector information.",
"x-examples": {},
"properties": {
"class": {
"type": "string",
"description": "The identifier class of the available connector."
},
"title": {
"type": "string",
"description": "The human readable title of the available connector."
},
"version": {
"type": "string",
"description": "The version of the available connector."
},
"type": {
"type": "string",
"description": "The type of the available connector (`sink` or `source`)."
},
"doc_url": {
"type": "string",
"description": "The documentation URL for the available connector."
}
}
},
"database-connector-configuration-schema": {
"title": "connector-configuration-schema",
"type": "object",
"x-tags": [
"database-connector-configuration-schema"
],
"description": "Managed Database connector configuration schema.",
"x-examples": {},
"properties": {
"name": {
"type": "string",
"description": "The name of the configuration option for this database connector."
},
"type": {
"type": "string",
"description": "The data type of the configuration option for this database connector.\n* `STRING`\n* `INT`\n* `SHORT`\n* `LONG`\n* `DOUBLE`\n* `BOOLEAN`\n* `LIST`\n* `CLASS`\n* `PASSWORD`"
},
"required": {
"type": "boolean",
"description": "Indicates if the configuration option is required for deploying this database connector."
},
"default_value": {
"type": "string",
"description": "The default value of the configuration option for this database connector."
},
"description": {
"type": "string",
"description": "The description of the configuration option for this database connector."
}
}
},
"database-connector": {
"title": "connector",
"type": "object",
"x-tags": [
"database-connectors"
],
"description": "Managed Database connector information.",
"x-examples": {},
"properties": {
"name": {
"type": "string",
"description": "The name of the database connector."
},
"class": {
"type": "string",
"description": "The class for the database connector."
},
"topics": {
"type": "string",
"description": "A comma-separated list of topics to use with the database connector."
},
"config": {
"type": "object",
"description": "A JSON object containing the configuration properties currently set for a database connector. See [Get Database Connector Configuration Schema](#operation/get-database-connector-configuration-schema) for a list of available/required options for a connector."
}
}
},
"database-connector-status": {
"title": "connector-status",
"type": "object",
"x-tags": [
"database-connectors"
],
"description": "Managed Database connector status information.",
"x-examples": {},
"properties": {
"state": {
"type": "string",
"description": "The current status of the database connector.\n* `FAILED`\n* `PAUSED`\n* `RUNNING`\n* `UNASSIGNED`"
},
"tasks": {
"type": "array",
"description": "List of currently running tasks for the database connector.",
"items": {
"$ref": "#/components/schemas/database-connector-status-task"
}
}
}
},
"database-connector-status-task": {
"title": "connector-status-task",
"type": "object",
"x-tags": [
"database-connectors"
],
"description": "Managed Database connector task status information.",
"x-examples": {},
"properties": {
"id": {
"type": "integer",
"description": "The ID of the database connector task."
},
"state": {
"type": "string",
"description": "The current status of the database connector task.\n* `FAILED`\n* `PAUSED`\n* `RUNNING`\n* `UNASSIGNED`"
},
"trace": {
"type": "string",
"description": "Error information for the database connector task."
}
}
},
"dbaas-alerts": {
"title": "alert",
"type": "object",
"x-tags": [
"database-alerts"
],
"description": "Managed Database alerts information.",
"x-examples": {},
"properties": {
"timestamp": {
"type": "string",
"description": "The date and time in which the alert was sent."
},
"message_type": {
"type": "string",
"description": "The category of alert that was sent.\n* `DB MASTER PROMOTION`\n* `MAINTENANCE SCHEDULED`\n* `MISSING MYSQL PRIMARY KEYS`\n* `RESOURCE USAGE DISK`\n* `RESOURCE USAGE OOM KILLED`\n* `RESOURCE USAGE PG REPLICATION SLOTS`"
},
"description": {
"type": "string",
"description": "A verbose description of the associated alert category."
},
"recommendation": {
"type": "string",
"description": "A description of the recommended action the customer should take. Only included for certain alert types."
},
"maintenance_scheduled": {
"type": "string",
"description": "The time in which mandatory maintenance has been scheduled with the associated alert. Only included for certain alert types."
},
"resource_type": {
"type": "string",
"description": "The affected resource related to the associated alert. Only included for certain alert types."
},
"table_count": {
"type": "integer",
"description": "The number of affected tables related to the associated alert. Only included for certain alert types."
}
}
},
"dbaas-migration": {
"title": "migration",
"type": "object",
"x-tags": [
"database-migration"
],
"description": "Managed Database migration information.",
"x-examples": {},
"properties": {
"status": {
"type": "string",
"description": "The current status of the attached migration.\n* `complete`\n* `error`\n* `pending`\n* `running`"
},
"method": {
"type": "string",
"description": "The type of migration performed (dump or replication). Only shows if status is `complete`."
},
"error": {
"type": "string",
"description": "The verbose error message output for migrations with an `error` status."
},
"credentials": {
"type": "object",
"description": "Associated list of connection details for the source database server.",
"properties": {
"host": {
"type": "string",
"description": "The host name of the source server."
},
"port": {
"type": "integer",
"description": "The connection port of the source server."
},
"username": {
"type": "string",
"description": "The username of the source server."
},
"password": {
"type": "string",
"description": "The password of the source server."
},
"database": {
"type": "string",
"description": "The database of the source server. Excluded for Valkey engine types."
},
"ignored_databases": {
"type": "string",
"description": "Comma-separated list of ignored databases on the source server. Excluded for Valkey engine types."
},
"ssl": {
"type": "boolean",
"description": "The true/false value for whether SSL is needed to connect to the source server."
}
}
}
}
},
"database-latest-backup": {
"title": "backup",
"type": "object",
"x-tags": [
"database-latest-backup"
],
"description": "Managed Database latest backup information.",
"x-examples": {},
"properties": {
"date": {
"type": "string",
"description": "The date of the most recently available backup."
},
"time": {
"type": "string",
"description": "The time of the most recently available backup."
}
}
},
"database-oldest-backup": {
"title": "backup",
"type": "object",
"x-tags": [
"database-oldest-backup"
],
"description": "Managed Database oldest backup information.",
"x-examples": {},
"properties": {
"date": {
"type": "string",
"description": "The date of the oldest available backup."
},
"time": {
"type": "string",
"description": "The time of the oldest available backup."
}
}
},
"database-connections": {
"title": "connection",
"type": "object",
"x-tags": [
"database-connections"
],
"description": "Managed Database connection information.",
"x-examples": {},
"properties": {
"used": {
"type": "integer",
"description": "The number of used database connections."
},
"available": {
"type": "integer",
"description": "The number of available database connections."
},
"max": {
"type": "integer",
"description": "The maximum number of database connections."
}
}
},
"connection-pool": {
"title": "connection_pool",
"type": "object",
"x-tags": [
"database-connection-pool"
],
"description": "Managed Database connection pool information.",
"x-examples": {},
"properties": {
"name": {
"type": "string",
"description": "The name of the connection pool."
},
"database": {
"type": "string",
"description": "The logical database associated with the connection pool."
},
"username": {
"type": "string",
"description": "The database user associated with the connection pool."
},
"mode": {
"type": "string",
"description": "The mode for the connection pool.\n* `session`\n* `transaction`\n* `statement`"
},
"size": {
"type": "integer",
"description": "The size of the connection pool."
}
}
},
"dbaas-available-options": {
"title": "available_option",
"type": "object",
"x-tags": [
"database-available-options"
],
"description": "Managed Database PostgreSQL advanced configuration options.",
"x-examples": {},
"properties": {
"name": {
"type": "string",
"description": "The name of the configuration option."
},
"type": {
"type": "string",
"description": "The type of the configuration option.\n* `int`\n* `float`\n* `bool`\n* `enum`"
},
"enumerals": {
"type": "array",
"description": "Valid enumerals for `enum` type configuration options only.",
"items": {
"type": "string"
}
},
"min_value": {
"type": "number",
"description": "The smallest value accepted for the configuration option."
},
"max_value": {
"type": "number",
"description": "The largest value accepted for the configuration option."
},
"alt_values": {
"type": "array",
"description": "Any alternate value accepted for the configuration option.",
"items": {
"type": "integer"
}
},
"units": {
"type": "string",
"description": "The units associated with the configuration option."
}
}
},
"database-db": {
"title": "db",
"type": "object",
"x-tags": [
"database-dbs"
],
"description": "Managed Database logical database information.",
"x-examples": {},
"properties": {
"name": {
"type": "string",
"description": "The name of the logical database."
}
}
},
"pg-advanced-options": {
"title": "pg-advanced-options",
"type": "object",
"x-tags": [
"database-pg-advanced-options"
],
"description": "Managed Database PostgreSQL Advanced Options",
"x-examples": {},
"properties": {
"autovacuum_analyze_scale_factor": {
"type": "number",
"description": "Accepted values: 0 - 1",
"format": "float"
},
"autovacuum_analyze_threshold": {
"type": "integer",
"description": "Accepted values: 0 - 2147483647"
},
"autovacuum_freeze_max_age": {
"type": "integer",
"description": "Accepted values: 200000000 - 1500000000"
},
"autovacuum_max_workers": {
"type": "integer",
"description": "Accepted values: 1 - 20"
},
"autovacuum_naptime": {
"type": "integer",
"description": "Accepted values: 1 - 86400"
},
"autovacuum_vacuum_cost_delay": {
"type": "integer",
"description": "Accepted values: -1 - 100"
},
"autovacuum_vacuum_cost_limit": {
"type": "integer",
"description": "Accepted values: -1 - 10000"
},
"autovacuum_vacuum_scale_factor": {
"type": "number",
"description": "Accepted values: 0 - 1",
"format": "float"
},
"autovacuum_vacuum_threshold": {
"type": "integer",
"description": "Accepted values: 0 - 2147483647"
},
"bgwriter_delay": {
"type": "integer",
"description": "Accepted values: 10 - 10000"
},
"bgwriter_flush_after": {
"type": "integer",
"description": "Accepted values: 0 - 2048"
},
"bgwriter_lru_maxpages": {
"type": "integer",
"description": "Accepted values: 0 - 1073741823"
},
"bgwriter_lru_multiplier": {
"type": "number",
"description": "Accepted values: 0 - 10",
"format": "float"
},
"deadlock_timeout": {
"type": "integer",
"description": "Accepted values: 500 - 1800000"
},
"default_toast_compression": {
"type": "string",
"enum": [
"lz4",
"pglz"
]
},
"idle_in_transaction_session_timeout": {
"type": "integer",
"description": "Accepted values: 0 - 604800000"
},
"jit": {
"type": "boolean"
},
"log_autovacuum_min_duration": {
"type": "integer",
"description": "Accepted values: -1 - 2147483647"
},
"log_error_verbosity": {
"type": "string",
"enum": [
"TERSE",
"DEFAULT",
"VERBOSE"
]
},
"log_line_prefix": {
"type": "string",
"enum": [
"'pid=%p,user=%u,db=%d,app=%a,client=%h '",
"'%t [%p]: [%l-1] user=%u,db=%d,app=%a,client=%h '",
"'%m [%p] %q[user=%u,db=%d,app=%a] '"
]
},
"log_min_duration_statement": {
"type": "integer",
"description": "Accepted values: -1 - 86400000"
},
"max_files_per_process": {
"type": "integer",
"description": "Accepted values: 1000 - 4096"
},
"max_locks_per_transaction": {
"type": "integer",
"description": "Accepted values: 64 - 6400"
},
"max_logical_replication_workers": {
"type": "integer",
"description": "Accepted values: 4 - 64"
},
"max_parallel_workers": {
"type": "integer",
"description": "Accepted values: 0 - 96"
},
"max_parallel_workers_per_gather": {
"type": "integer",
"description": "Accepted values: 0 - 96"
},
"max_pred_locks_per_transaction": {
"type": "integer",
"description": "Accepted values: 64 - 5120"
},
"max_prepared_transactions": {
"type": "integer",
"description": "Accepted values: 0 - 10000"
},
"max_replication_slots": {
"type": "integer",
"description": "Accepted values: 8 - 64"
},
"max_stack_depth": {
"type": "integer",
"description": "Accepted values: 2097152 - 6291456"
},
"max_standby_archive_delay": {
"type": "integer",
"description": "Accepted values: 1 - 43200000"
},
"max_standby_streaming_delay": {
"type": "integer",
"description": "Accepted values: 1 - 43200000"
},
"max_wal_senders": {
"type": "integer",
"description": "Accepted values: 20 - 64"
},
"max_worker_processes": {
"type": "integer",
"description": "Accepted values: 8 - 96"
},
"pg_partman_bgw.interval": {
"type": "integer",
"description": "Accepted values: 3600 - 604800"
},
"pg_partman_bgw.role": {
"type": "string",
"description": "Maximum length: 64 characters"
},
"pg_stat_statements.track": {
"type": "string",
"enum": [
"all",
"top",
"none"
]
},
"temp_file_limit": {
"type": "integer",
"description": "Accepted values: -1 - 2147483647"
},
"track_activity_query_size": {
"type": "integer",
"description": "Accepted values: 1024 - 10240"
},
"track_commit_timestamp": {
"type": "string",
"enum": [
"off",
"on"
]
},
"track_functions": {
"type": "string",
"enum": [
"all",
"pl",
"none"
]
},
"track_io_timing": {
"type": "string",
"enum": [
"off",
"on"
]
},
"wal_sender_timeout": {
"type": "integer",
"description": "Accepted values: 0, 5000 - 10800000"
},
"wal_writer_delay": {
"type": "integer",
"description": "Accepted values: 10 - 200"
}
}
},
"pgbouncer-advanced-options": {
"title": "pgbouncer-advanced-options",
"type": "object",
"x-tags": [
"database-pgbouncer-advanced-options"
],
"description": "Managed Database PostgreSQL PGBouncer Advanced Options",
"x-examples": {},
"properties": {
"autodb_idle_timeout": {
"type": "integer",
"description": "Accepted values: 0 - 86400"
},
"autodb_max_db_connections": {
"type": "integer",
"description": "Accepted values: 0 - 2147483647"
},
"autodb_pool_mode": {
"type": "string",
"description": "PGBouncer pool mode"
},
"autodb_pool_size": {
"type": "integer",
"description": "Accepted values: 0 - 10000"
},
"ignore_startup_parameters": {
"type": "array",
"description": "List of parameters to ignore when given in startup packet"
},
"max_prepared_statements": {
"type": "integer",
"description": "Accepted values: 0 - 3000"
},
"min_pool_size": {
"type": "integer",
"description": "Accepted values: 0 - 10000"
},
"server_connect_timeout": {
"type": "integer",
"description": "Accepted values: 1 - 86400"
},
"server_idle_timeout": {
"type": "integer",
"description": "Accepted values: 0 - 86400"
},
"server_lifetime": {
"type": "integer",
"description": "Accepted values: 60 - 86400"
},
"server_login_retry": {
"type": "integer",
"description": "Accepted values: 1 - 86400"
},
"server_reset_query_always": {
"type": "bool",
"description": "Run server_reset_query (DISCARD ALL) in all pooling modes"
}
}
},
"mysql-advanced-options": {
"title": "mysql-advanced-options",
"type": "object",
"x-tags": [
"database-mysql-advanced-options"
],
"description": "Managed Database MySQL Advanced Options",
"x-examples": {},
"properties": {
"connect_timeout": {
"type": "integer",
"description": "Accepted values: 2 - 3600"
},
"group_concat_max_len": {
"type": "integer",
"description": "Accepted values: 4 - 18446744073709552000"
},
"innodb_change_buffer_max_size": {
"type": "integer",
"description": "Accepted values: 0 - 50"
},
"innodb_flush_neighbors": {
"type": "integer",
"description": "Accepted values: 0 - 2 (0: dirty pages in the same extent are not flushed, 1: flush contiguous dirty pages in the same extent [default], 2: flush dirty pages in the same extent)"
},
"innodb_ft_min_token_size": {
"type": "integer",
"description": "Accepted values: 0 - 16"
},
"innodb_ft_server_stopword_table": {
"type": "string",
"description": "This option is used to specify your own InnoDB FULLTEXT index stopword list for all tables."
},
"innodb_lock_wait_timeout": {
"type": "integer",
"description": "Accepted values: 1 - 3600"
},
"innodb_log_buffer_size": {
"type": "integer",
"description": "Accepted values: 1048576 - 4294967295"
},
"innodb_online_alter_log_max_size": {
"type": "integer",
"description": "Accepted values: 65536 - 1099511627776"
},
"innodb_print_all_deadlocks": {
"type": "boolean"
},
"innodb_read_io_threads": {
"type": "integer",
"description": "Accepted values: 1 - 64"
},
"innodb_rollback_on_timeout": {
"type": "boolean"
},
"innodb_thread_concurrency": {
"type": "integer",
"description": "Accepted values: 0 - 1000"
},
"innodb_write_io_threads": {
"type": "integer",
"description": "Accepted values: 1 - 64"
},
"internal_tmp_mem_storage_engine": {
"type": "string",
"enum": [
"MEMORY",
"TempTable"
]
},
"net_buffer_length": {
"type": "integer",
"description": "Accepted values: 1024 - 1048576"
},
"net_read_timeout": {
"type": "integer",
"description": "Accepted values: 1 - 3600"
},
"net_write_timeout": {
"type": "integer",
"description": "Accepted values: 1 - 3600"
},
"wait_timeout": {
"type": "integer",
"description": "Accepted values: 1 - 2147483"
},
"max_allowed_packet": {
"type": "integer",
"description": "Accepted values: 102400 - 1073741824"
},
"max_heap_table_size": {
"type": "integer",
"description": "Accepted values: 1048576 - 1073741824"
},
"sort_buffer_size": {
"type": "integer",
"description": "Accepted values: 32768 - 1073741824"
},
"tmp_table_size": {
"type": "integer",
"description": "Accepted values: 1048576 - 1073741824"
}
}
},
"kafka-advanced-options": {
"title": "kafka-advanced-options",
"type": "object",
"x-tags": [
"database-kafka-advanced-options"
],
"description": "Managed Database Kafka Advanced Options",
"x-examples": {},
"properties": {
"compression_type": {
"type": "string",
"enum": [
"producer",
"gzip",
"snappy",
"lz4",
"zstd",
"uncompressed"
]
},
"group_initial_rebalance_delay_ms": {
"type": "integer",
"description": "Accepted values: 1 - 300000"
},
"group_min_session_timeout_ms": {
"type": "integer",
"description": "Accepted values: 1 - 60000"
},
"group_max_session_timeout_ms": {
"type": "integer",
"description": "Accepted values: 1 - 1800000"
},
"connections_max_idle_ms": {
"type": "integer",
"description": "Accepted values: 1000 - 3600000"
},
"max_incremental_fetch_session_cache_slots": {
"type": "integer",
"description": "Accepted values: 1000 - 10000"
},
"message_max_bytes": {
"type": "integer",
"description": "Accepted values: 1 - 100001200"
},
"offsets_retention_minutes": {
"type": "integer",
"description": "Accepted values: 1 - 2147483647"
},
"log_cleaner_delete_retention_ms": {
"type": "integer",
"description": "Accepted values: 1 - 315569260000"
},
"log_cleaner_min_cleanable_ratio": {
"type": "number",
"description": "Accepted values: 0.2 - 0.9",
"format": "float"
},
"log_cleaner_max_compaction_lag_ms": {
"type": "integer",
"description": "Accepted values: 30000 - 922337203685477600"
},
"log_cleaner_min_compaction_lag_ms": {
"type": "integer",
"description": "Accepted values: 1 - 922337203685477600"
},
"log_cleanup_policy": {
"type": "string",
"description": "The default cleanup policy for segments beyond the retention window.",
"default": "delete"
},
"log_flush_interval_messages": {
"type": "integer",
"description": "Accepted values: 1 - 922337203685477600"
},
"log_flush_interval_ms": {
"type": "integer",
"description": "Accepted values: 1 - 922337203685477600"
},
"log_index_interval_bytes": {
"type": "integer",
"description": "Accepted values: 1 - 104857600"
},
"log_index_size_max_bytes": {
"type": "integer",
"description": "Accepted values: 1048576 - 104857600"
},
"log_local_retention_ms": {
"type": "integer",
"description": "TIf set to -2, the value of `log_retention_ms` is used. Accepted values: =2 - 922337203685477600",
"default": -2
},
"log_local_retention_bytes": {
"type": "integer",
"description": "If set to -2, the value of `log_retention_bytes` is used. Accepted values: -2 - 922337203685477600",
"default": -2
},
"log_message_downconversion_enable": {
"type": "boolean"
},
"log_message_timestamp_type": {
"type": "string",
"description": "Define whether the timestamp in the message is message create time or log append time.",
"default": "CreateTime"
},
"log_message_timestamp_difference_max_ms": {
"type": "integer",
"description": "Accepted values: 1 - 922337203685477600"
},
"log_preallocate": {
"type": "boolean"
},
"log_retention_bytes": {
"type": "integer",
"description": "Accepted values: -1 - 922337203685477600"
},
"log_retention_hours": {
"type": "integer",
"description": "Accepted values: -1 - 2147483647"
},
"log_retention_ms": {
"type": "integer",
"description": "Accepted values: -1 - 922337203685477600"
},
"log_roll_jitter_ms": {
"type": "integer",
"description": "Accepted values: 1 - 922337203685477600"
},
"log_roll_ms": {
"type": "integer",
"description": "Accepted values: 1 - 922337203685477600"
},
"log_segment_bytes": {
"type": "integer",
"description": "Accepted values: 10485760 - 1073741824"
},
"log_segment_delete_delay_ms": {
"type": "integer",
"description": "Accepted values: 1 - 3600000"
},
"auto_create_topics_enable": {
"type": "boolean"
},
"min_insync_replicas": {
"type": "integer",
"description": "Accepted values: 1 - 7"
},
"num_partitions": {
"type": "integer",
"description": "Accepted values: 1 - 1000"
},
"default_replication_factor": {
"type": "integer",
"description": "Accepted values: 1 - 10"
},
"replica_fetch_max_bytes": {
"type": "integer",
"description": "Accepted values: 1048576 - 104857600"
},
"replica_fetch_response_max_bytes": {
"type": "integer",
"description": "Accepted values: 10485760 - 1048576000"
},
"max_connections_per_ip": {
"type": "integer",
"description": "Accepted values: 256 - 2147483647"
},
"producer_purgatory_purge_interval_requests": {
"type": "integer",
"description": "Accepted values: 10 - 10000"
},
"sasl_oauthbearer_expected_audience": {
"type": "string",
"description": "The (optional) comma-delimited setting for the broker to use to verify that the JWT was issued for one of the expected audiences."
},
"sasl_oauthbearer_expected_issuer": {
"type": "string",
"description": "Optional setting for the broker to use to verify that the JWT was created by the expected issuer."
},
"sasl_oauthbearer_jwks_endpoint_url": {
"type": "string",
"description": "OIDC JWKS endpoint URL. By setting this the SASL SSL OAuth2/OIDC authentication is enabled."
},
"sasl_oauthbearer_sub_claim_name": {
"type": "string",
"description": "Name of the scope from which to extract the subject claim from the JWT."
},
"socket_request_max_bytes": {
"type": "integer",
"description": "Accepted values: 10485760 - 209715200"
},
"transaction_state_log_segment_bytes": {
"type": "integer",
"description": "Accepted values: 1048576 - 2147483647"
},
"transaction_remove_expired_transaction_cleanup_interval_ms": {
"type": "integer",
"description": "Accepted values: 600000 - 3600000"
},
"transaction_partition_verification_enable": {
"type": "boolean"
}
}
},
"kafka-rest-advanced-options": {
"title": "kafka-rest-advanced-options",
"type": "object",
"x-tags": [
"database-kafka-rest-advanced-options"
],
"description": "Managed Database Kafka REST Advanced Options",
"x-examples": {},
"properties": {
"producer_acks": {
"type": "string",
"description": "The number of acknowledgments the producer requires the leader to have received before considering a request complete. If set to `all` or `-1`, the leader will wait for the full set of in-sync replicas to acknowledge the record."
},
"producer_compression_type": {
"type": "string",
"enum": [
"gzip",
"snappy",
"lz4",
"zstd",
"none"
]
},
"producer_linger_ms": {
"type": "integer",
"description": "Accepted values: 1 - 5000"
},
"producer_max_request_size": {
"type": "integer",
"description": "Accepted values: 1 - 2147483647"
},
"consumer_enable_auto_commit": {
"type": "boolean"
},
"consumer_request_max_bytes": {
"type": "integer",
"description": "Accepted values: 1 - 671088640"
},
"consumer_request_timeout_ms": {
"type": "integer",
"description": "Accepted values: 1000 - 30000"
},
"name_strategy": {
"type": "string",
"description": "Name strategy to use when selecting subject for storing schemas."
},
"name_strategy_validation": {
"type": "boolean"
},
"simpleconsumer_pool_size_max": {
"type": "integer",
"description": "Accepted values: 10 - 250"
}
}
},
"schema-registry-advanced-options": {
"title": "schema-registry-advanced-options",
"type": "object",
"x-tags": [
"database-schema-registry-advanced-options"
],
"description": "Managed Database Schema Registry Advanced Options",
"x-examples": {},
"properties": {
"leader_eligibility": {
"type": "boolean"
},
"schema_reader_strict_mode": {
"type": "boolean"
},
"retriable_errors_silenced": {
"type": "boolean"
}
}
},
"kafka-connect-advanced-options": {
"title": "kafka-connect-advanced-options",
"type": "object",
"x-tags": [
"database-kafka-connect-advanced-options"
],
"description": "Managed Database Kafka Connect Advanced Options",
"x-examples": {},
"properties": {
"connector_client_config_override_policy": {
"type": "string",
"description": "Defines what client configurations can be overridden by the connector. Default is None."
},
"consumer_auto_offset_reset": {
"type": "string",
"description": "What to do when there is no initial offset in Kafka or if the current offset does not exist any more on the server. Default is earliest."
},
"consumer_fetch_max_bytes": {
"type": "integer",
"description": "Accepted values: 1048576 - 104857600"
},
"consumer_isolation_level": {
"type": "string",
"description": "Transaction read isolation level. `read_uncommitted` is the default, but `read_committed` can be used if consume-exactly-once behavior is desired."
},
"consumer_max_partition_fetch_bytes": {
"type": "integer",
"description": "Accepted values: 1048576 - 104857600"
},
"consumer_max_poll_interval_ms": {
"type": "integer",
"description": "Accepted values: 1 - 2147483647"
},
"consumer_max_poll_records": {
"type": "integer",
"description": "Accepted values: 1 - 10000"
},
"offset_flush_interval_ms": {
"type": "integer",
"description": "Accepted values: 1 - 100000000"
},
"offset_flush_timeout_ms": {
"type": "integer",
"description": "Accepted values: 1 - 2147483647"
},
"producer_batch_size": {
"type": "integer",
"description": "Accepted values: 1 - 5242880"
},
"producer_buffer_memory": {
"type": "integer",
"description": "Accepted values: 5242880 - 134217728"
},
"producer_compression_type": {
"type": "string",
"enum": [
"gzip",
"snappy",
"lz4",
"zstd",
"none"
]
},
"producer_linger_ms": {
"type": "integer",
"description": "Accepted values: 1 - 5000"
},
"producer_max_request_size": {
"type": "integer",
"description": "Accepted values: 131072 - 67108864"
},
"scheduled_rebalance_max_delay_ms": {
"type": "integer",
"description": "Accepted values: 1 - 600000"
},
"session_timeout_ms": {
"type": "integer",
"description": "Accepted values: 1 - 2147483647"
}
}
},
"access-control": {
"title": "access-control",
"type": "object",
"x-tags": [
"access-control"
],
"description": "Managed Database Valkey User Access Control",
"x-examples": {},
"properties": {
"redis_acl_categories": {
"type": "array",
"description": "A list of rules for command categories.",
"items": {
"type": "string"
},
"deprecated": true
},
"redis_acl_channels": {
"type": "array",
"description": "A list of publish/subscribe channel patterns.",
"items": {
"type": "string"
},
"deprecated": true
},
"redis_acl_commands": {
"type": "array",
"description": "A list of rules for individual commands.",
"items": {
"type": "string"
},
"deprecated": true
},
"redis_acl_keys": {
"type": "array",
"description": "A list of key access rules.",
"items": {
"type": "string"
},
"deprecated": true
},
"acl_categories": {
"type": "array",
"description": "A list of rules for command categories.",
"items": {
"type": "string"
}
},
"acl_channels": {
"type": "array",
"description": "A list of publish/subscribe channel patterns.",
"items": {
"type": "string"
}
},
"acl_commands": {
"type": "array",
"description": "A list of rules for individual commands.",
"items": {
"type": "string"
}
},
"acl_keys": {
"type": "array",
"description": "A list of key access rules.",
"items": {
"type": "string"
}
}
}
},
"kafka-permissions": {
"title": "kafka-permissions",
"type": "object",
"x-tags": [
"kafka-permissions"
],
"description": "Managed Database Kafka User Permissions",
"x-examples": {},
"properties": {
"permission": {
"type": "string",
"description": "The permission level for the database user.\n* `admin`\n* `read`\n* `write`\n* `readwrite`"
}
}
},
"app-variable": {
"title": "app-variable",
"type": "object",
"x-tags": [
"marketplace-app-variables"
],
"description": "Marketplace app variable information.",
"x-examples": {},
"properties": {
"name": {
"type": "string",
"description": "The name of the marketplace app variable."
},
"description": {
"type": "string",
"description": "The detailed description for the marketplace app variable."
},
"required": {
"type": "boolean",
"description": "Indicates if this variable is required to deploy this marketplace application."
}
}
},
"marketplace-app": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The marketplace app ID."
},
"name": {
"type": "string",
"description": "The name of the marketplace app."
},
"name_id_format": {
"type": "string",
"description": "URL-friendly identifier for the app. 3-36 characters, all lowercase, alphanumeric plus hyphens/underscores, unique to the vendor account."
},
"description": {
"type": "string",
"description": "Description of the marketplace app."
},
"os": {
"type": "string",
"description": "The operating system and version."
},
"repo_url": {
"type": "string",
"description": "The repository URL."
},
"categories": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Marketplace category IDs to assign to the app."
},
"support_email": {
"type": "string",
"format": "email",
"description": "The support email address."
},
"support_url": {
"type": "string",
"description": "The support URL."
},
"website_url": {
"type": "string",
"description": "The website URL for the app."
},
"x_handle": {
"type": "string",
"description": "The X handle for the app."
},
"slack_url": {
"type": "string",
"description": "The Slack channel URL for the app."
},
"stackoverflow_url": {
"type": "string",
"description": "The StackOverflow URL for the app."
},
"discord_invite_url": {
"type": "string",
"description": "The Discord Invite URL for the app."
},
"public": {
"type": "boolean",
"description": "Whether the app is publicly visible."
},
"public_url_slug": {
"type": "string",
"description": "Public landing-page slug for the app."
},
"deployable_on_vps": {
"type": "boolean",
"description": "Whether the app can be deployed on VPS instances."
},
"deployable_on_bm": {
"type": "boolean",
"description": "Whether the app can be deployed on Bare Metal instances."
},
"deployable_on_gpu_compute": {
"type": "boolean",
"description": "Whether the app can be deployed on GPU Compute instances."
},
"deployable_on_gpu_workstation": {
"type": "boolean",
"description": "Whether the app can be deployed on GPU Workstation instances."
},
"min_cpu_core": {
"type": "integer",
"description": "Minimum CPU cores required to deploy the app."
},
"min_mem_mb": {
"type": "integer",
"description": "Minimum RAM required to deploy the app, in megabytes."
},
"icon_light": {
"type": "string",
"description": "URL for the light mode icon."
},
"icon_dark": {
"type": "string",
"description": "URL for the dark mode icon."
},
"readme": {
"type": "string",
"description": "The app README in Markdown format."
},
"instructions": {
"type": "string",
"description": "Getting started instructions in Markdown format."
}
}
},
"create-app-request": {
"title": "create-app-request",
"type": "object",
"required": [
"name",
"name_id_format",
"description"
],
"properties": {
"name": {
"type": "string",
"description": "Name of the marketplace app."
},
"name_id_format": {
"type": "string",
"description": "URL-friendly identifier for the app. Must be 3-36 characters, all lowercase, and only contain alphanumeric characters, hyphens (`-`), or underscores (`_`). Cannot begin or end with a hyphen or underscore. Must be unique to the vendor account.",
"pattern": "^[a-z0-9][a-z0-9-_]*[a-z0-9]$",
"minLength": 3,
"maxLength": 36
},
"description": {
"type": "string",
"description": "Description of the marketplace app."
},
"os": {
"type": "string",
"description": "Operating system for the app."
},
"repo_url": {
"type": "string",
"description": "Repository URL."
},
"support_url": {
"type": "string",
"description": "Support URL."
},
"support_email": {
"type": "string",
"format": "email",
"description": "Support email address."
},
"public_url_slug": {
"type": "string",
"description": "Public landing-page slug for the app."
},
"deployable_on_vps": {
"type": "boolean",
"description": "Whether the app can be deployed on VPS instances."
},
"deployable_on_bm": {
"type": "boolean",
"description": "Whether the app can be deployed on Bare Metal instances."
},
"deployable_on_gpu_compute": {
"type": "boolean",
"description": "Whether the app can be deployed on GPU Compute instances."
},
"deployable_on_gpu_workstation": {
"type": "boolean",
"description": "Whether the app can be deployed on GPU Workstation instances."
},
"min_cpu_core": {
"type": "integer",
"description": "Minimum CPU cores required to deploy the app."
},
"min_mem_mb": {
"type": "integer",
"description": "Minimum RAM required to deploy the app, in megabytes."
},
"category_ids": {
"type": "array",
"items": {
"type": "integer"
},
"description": "Marketplace category IDs to assign to the app."
},
"readme": {
"type": "string",
"description": "README content in Markdown format."
}
}
},
"create-app-response": {
"title": "create-app-response",
"type": "object",
"properties": {
"app": {
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The ID of the created marketplace app."
}
}
}
}
},
"marketplace_app_manage_variable": {
"title": "Marketplace app variable.",
"type": "object",
"properties": {
"id": {
"type": "int",
"description": "The variable ID."
},
"app_id": {
"type": "int",
"description": "The application ID."
},
"name": {
"type": "string",
"description": "The variable name."
},
"label": {
"type": "string",
"description": "A short description of the variable."
},
"type": {
"type": "string",
"description": "The type of variable:\n* `password`\n* `user_supplied`"
},
"password_length": {
"type": "int",
"description": "The length of the password.",
"nullable": true
},
"input_type": {
"type": "string",
"description": "The type of user input.\n* `text_field`\n* `textarea`",
"nullable": true
},
"input_required": {
"type": "bool",
"description": "Is user input required.",
"nullable": true
}
}
},
"update-app-request": {
"title": "update-app-request",
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Name of the marketplace app."
},
"name_id_format": {
"type": "string",
"description": "URL-friendly identifier for the app. If provided, must be 3-36 characters, all lowercase, and only contain alphanumeric characters, hyphens (`-`), or underscores (`_`). Cannot begin or end with a hyphen or underscore. Must be unique to the vendor account.",
"pattern": "^[a-z0-9][a-z0-9-_]*[a-z0-9]$",
"minLength": 3,
"maxLength": 36
},
"description": {
"type": "string",
"description": "Description of the marketplace app."
},
"os": {
"type": "string",
"description": "Operating system for the app."
},
"repo_url": {
"type": "string",
"description": "Repository URL."
},
"readme": {
"type": "string",
"description": "README content in Markdown format."
},
"categories": {
"type": "array",
"items": {
"type": "integer"
},
"maxItems": 7,
"description": "Array of category IDs to assign to the app. Maximum of 7 categories. Cannot be changed while the app is public."
},
"deployable_on_bm": {
"type": "boolean",
"description": "Whether the app can be deployed on bare metal."
},
"deployable_on_gpu_compute": {
"type": "boolean",
"description": "Whether the app can be deployed on GPU compute instances."
},
"deployable_on_gpu_workstation": {
"type": "boolean",
"description": "Whether the app can be deployed on GPU workstation instances."
},
"deployable_on_vps": {
"type": "boolean",
"description": "Whether the app can be deployed on VPS instances."
},
"public_url_slug": {
"type": "string",
"description": "Public landing-page slug for the app. Can only be updated while the app is private. Cannot be changed while the app is under public review."
},
"min_cpu_core": {
"type": "integer",
"minimum": 0,
"maximum": 255,
"description": "Minimum CPU cores required to deploy the app. Must be between 0 and 255."
},
"min_mem_mb": {
"type": "integer",
"minimum": 1000,
"maximum": 100000,
"description": "Minimum RAM required to deploy the app, in megabytes. Must be between 1,000 and 100,000."
},
"support_email": {
"type": "string",
"format": "email",
"description": "The support email address."
},
"support_url": {
"type": "string",
"description": "The support URL."
},
"website_url": {
"type": "string",
"description": "The website URL for the app."
},
"x_handle": {
"type": "string",
"description": "The X (Twitter) handle for the app."
},
"slack_url": {
"type": "string",
"description": "The Slack channel URL for the app."
},
"stackoverflow_url": {
"type": "string",
"description": "The StackOverflow URL for the app."
},
"discord_invite_url": {
"type": "string",
"description": "The Discord invite URL for the app."
},
"instructions": {
"type": "string",
"maxLength": 65535,
"description": "Getting started instructions in Markdown format."
}
}
},
"update-app-visibility-request": {
"title": "update-app-visibility-request",
"type": "object",
"required": [
"public"
],
"properties": {
"public": {
"type": "boolean",
"description": "Whether the app should be publicly visible."
}
}
},
"marketplace_app_gallery_image": {
"title": "Marketplace app gallery image.",
"type": "object",
"properties": {
"id": {
"type": "int",
"description": "The gallery image ID."
},
"main_image": {
"type": "boolean",
"description": "Is this the main gallery image."
},
"url": {
"type": "string",
"description": "The URL of the gallery image."
}
}
},
"marketplace_app_build": {
"title": "Marketplace app build.",
"type": "object",
"properties": {
"id": {
"type": "integer",
"description": "The Marketplace App Build ID."
},
"version": {
"type": "string",
"description": "The version for this build."
},
"live": {
"type": "boolean",
"description": "Is this set as the active build for the Marketplace App."
},
"date_created": {
"type": "string",
"description": "The date this build was created."
},
"use_vendor_data": {
"type": "boolean",
"description": "If true, `installation_script` and `OSID` are used to build the image. If false, `snapshot_id` is used as the build image."
},
"installation_script": {
"type": "string",
"description": "The installation script to execute during the image build."
},
"OSID": {
"type": "integer",
"description": "The operating system ID for the image build."
},
"snapshot_id": {
"type": "string",
"description": "The [Snapshot id](#operation/list-snapshots) used to build the image."
},
"snapshot_description": {
"type": "string",
"description": "A short description of the snapshot used to build the image."
}
}
},
"marketplace-vendor": {
"title": "marketplace-vendor",
"type": "object",
"x-tags": [
"marketplace-vendor-variables"
],
"description": "Marketplace Vendor settings variable information.",
"x-examples": {},
"properties": {
"message": {
"type": "string",
"description": "Message returned upon successful creation of vendor settings."
}
}
},
"marketplace-vendor-update": {
"title": "marketplace-vendor-update",
"type": "object",
"x-tags": [
"marketplace-vendor-variables"
],
"description": "Marketplace Vendor settings variable information.",
"x-examples": {},
"properties": {
"message": {
"type": "string",
"description": "Message returned upon successful update of vendor settings."
}
}
},
"inference-subscription": {
"title": "inference-subscription",
"type": "object",
"x-tags": [
"inference"
],
"description": "Serverless Inference information.",
"x-examples": {},
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Serverless Inference subscription."
},
"date_created": {
"type": "string",
"description": "The date this Serverless Inference subscription was created."
},
"label": {
"type": "string",
"description": "The user-supplied label for this Serverless Inference subscription."
},
"api_key": {
"type": "string",
"description": "The API key used to access the Vultr Inference API."
}
}
},
"inference-usage": {
"title": "inference-usage",
"type": "object",
"x-tags": [
"inference-usage"
],
"description": "Serverless Inference usage information.",
"x-examples": {},
"properties": {
"chat_by_model": {
"type": "object",
"description": "Metrics for chat usage of the Serverless Inference subscription.",
"properties": {
"current_month": {
"type": "array",
"description": "Per model chat usage information for the current month.",
"items": {
"$ref": "#/components/schemas/inference-model-usage"
}
},
"previous_month": {
"type": "array",
"description": "Per model chat usage information for the previous month.",
"items": {
"$ref": "#/components/schemas/inference-model-usage"
}
}
}
},
"audio": {
"type": "object",
"description": "Metrics for audio generation usage of the Serverless Inference subscription.",
"properties": {
"tts_characters": {
"type": "integer",
"description": "The total number of text-to-speech input characters used this period with the HD model."
},
"tts_sm_characters": {
"type": "integer",
"description": "The total number of text-to-speech input characters used this period with the basic model."
}
}
},
"image": {
"type": "object",
"description": "Metrics for image generation usage of the Serverless Inference subscription.",
"properties": {
"megapixels": {
"type": "number",
"format": "float",
"description": "The total number of megapixels generated during this period with a standard model."
},
"sm_megapixels": {
"type": "number",
"format": "float",
"description": "The total number of megapixels generated during this period with a small model."
}
}
},
"chat": {
"type": "object",
"description": "Legacy metrics for chat/vector store usage of the Serverless Inference subscription.",
"deprecated": true,
"properties": {
"completion_tokens": {
"type": "integer",
"description": "The total number of chat completion tokens used in this monthly period."
},
"cost": {
"type": "number",
"format": "float",
"description": "The cost of chat completion tokens used in this monthly period."
},
"input_tokens": {
"type": "integer",
"description": "The total number of input tokens used in this monthly period."
},
"input_cost": {
"type": "number",
"format": "float",
"description": "The cost of input tokens used in this monthly period."
},
"current_tokens": {
"type": "integer",
"description": "The total number of chat completion tokens used in this monthly period.",
"deprecated": true
},
"monthly_allotment": {
"type": "integer",
"description": "The monthly token allotment for this Serverless Inference subscription.",
"deprecated": true
},
"overage": {
"type": "number",
"format": "float",
"description": "The number of overage chat completion tokens in this monthly period.",
"deprecated": true
}
}
}
}
},
"inference-model-usage": {
"title": "inference-model-usage",
"type": "object",
"x-tags": [
"inference-model-usage"
],
"description": "Serverless Inference model usage information.",
"x-examples": {},
"properties": {
"model": {
"type": "string",
"description": "The inference model used during the usage period."
},
"tokens": {
"type": "integer",
"description": "The number of output tokens used with this model."
},
"input_tokens": {
"type": "integer",
"description": "The number of input tokens used with this model."
},
"output_price": {
"type": "integer",
"description": "The price per 1M output tokens generated with this model."
},
"input_price": {
"type": "integer",
"description": "The price per 1M input tokens generated with this model."
}
}
},
"private-networks": {
"title": "private-networks",
"type": "object",
"x-tags": [
"private-networks"
],
"description": "Private Network information.",
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Private Network."
},
"mac_address": {
"type": "string",
"description": "The assigned MAC address."
},
"ip_address": {
"type": "string",
"description": "The assigned IP address."
}
},
"x-examples": {
"example-1": {}
},
"deprecated": true
},
"backup-schedule": {
"title": "backup-schedule",
"type": "object",
"x-tags": [
"backup-schedule"
],
"description": "Backup schedule information.",
"properties": {
"enabled": {
"type": "boolean",
"description": "Indicates if backup is enabled:\n\n* true\n* false"
},
"type": {
"type": "string",
"description": "Type of backup schedule:\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | daily | Back up once per day at `hour`. |\n| | weekly | Back up once per week on `dow` at `hour`. |\n| | monthly | Back up each month at `dom` at `hour`. |\n| | daily\\_alt\\_even | Back up on even dates at `hour`. |\n| | daily\\_alt\\_odd | Back up on odd dates at `hour`. |"
},
"next_scheduled_time_utc": {
"type": "string",
"description": "Time of next backup run in UTC."
},
"hour": {
"type": "integer",
"description": "Scheduled hour of day in UTC."
},
"dow": {
"description": "Day of week to run.\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | 1 | Sunday |\n| | 2 | Monday |\n| | 3 | Tuesday |\n| | 4 | Wednesday |\n| | 5 | Thursday |\n| | 6 | Friday |\n| | 7 | Saturday |",
"type": "integer"
},
"dom": {
"description": "Day of month to run. Use values between 1 and 28.",
"type": "integer"
}
}
},
"forwarding-rule": {
"title": "forwarding-rule",
"type": "object",
"x-tags": [
"load-balancer"
],
"description": "Forwarding Rule information.",
"x-examples": {
"forwarding rules": {
"id": "73d85156c2c3129d",
"frontend_protocol": "http",
"frontend_port": 80,
"backend_protocol": "http",
"backend_port": 80
}
},
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the Forwarding Rule."
},
"frontend_protocol": {
"type": "string",
"description": "The protocol on the Load Balancer to forward to the backend.\n\n* http\n* https\n* tcp\n* udp"
},
"frontend_port": {
"type": "integer",
"description": "The port number on the Load Balancer to forward to the backend."
},
"backend_protocol": {
"type": "string",
"description": "The protocol destination on the backend server.\n\n* http\n* https\n* tcp\n* udp"
},
"backend_port": {
"type": "integer",
"description": "The port number destination on the backend server."
}
}
},
"meta": {
"title": "meta",
"type": "object",
"x-examples": {
"meta response": {
"meta": {
"total": 31,
"links": {
"next": "WxYzExampleNext",
"prev": ""
}
}
}
},
"description": "The meta information object. See [Meta and Pagination](#section/Introduction/Meta-and-Pagination) for more information.",
"properties": {
"total": {
"type": "integer",
"description": "Total objects available in the list. This value may be greater than the number of objects returned if `per_page` is set."
},
"links": {
"type": "object",
"description": "Cursor values for pagination.",
"properties": {
"next": {
"type": "string",
"description": "Cursor value for the next page."
},
"prev": {
"type": "string",
"description": "Cursor value for the previous page."
}
}
}
}
},
"loadbalancer-firewall-rule": {
"description": "Load Balancer firewall rule information.",
"type": "object",
"properties": {
"id": {
"type": "string",
"minLength": 1,
"description": "The unique ID for the firewall rule"
},
"port": {
"type": "integer",
"description": "Port for this rule.\n"
},
"source": {
"type": "string",
"minLength": 1,
"description": "If the source string is given a value of \"cloudflare\" then cloudflare IPs will be supplied. Otherwise enter a IP address with subnet size that you wish to permit through the firewall.\n\nPossible values:\n\n| | Value | Description |\n| - | ------ | ------------- |\n| | \"192.168.1.1/16\" | Ip address with a subnet size. |\n| | cloudflare | Allow all of Cloudflare's IP space through the firewall |"
},
"ip_type": {
"type": "string",
"minLength": 1,
"description": "The type of IP rule.\n\n* v4\n* v6\n"
}
},
"x-examples": {
"Example": {
"id": "9fea55b93016eafb",
"port": 80,
"source": "192.168.1.1/16",
"ip_type": "v4"
}
}
},
"registry": {
"title": "registry",
"type": "object",
"x-tags": [
"registry",
"registries"
],
"description": "Container Registry Entity",
"x-examples": {},
"properties": {
"id": {
"type": "string",
"description": "The UUID to reference this registry"
},
"name": {
"type": "string",
"description": "The globally unique name to reference this registry. Must be lowercase alphanumeric characters only."
},
"urn": {
"type": "string",
"description": "The base URN (the URL without the scheme [i.e. http:// or https://]) of this registry"
},
"storage": {
"type": "object",
"description": "The allowed and used storage for this registry subscription.",
"properties": {
"used": {
"$ref": "#/components/schemas/registry-storage"
},
"allowed": {
"$ref": "#/components/schemas/registry-storage"
}
}
},
"date_created": {
"type": "string",
"description": "The date this Registry Subscription was created"
},
"public": {
"type": "boolean",
"description": "If true, this is a publically accessible registry allowing anyone to pull from it. If false, this registry is completely private"
},
"root_user": {
"$ref": "#/components/schemas/registry-user"
},
"metadata": {
"type": "object",
"description": "The metadata containing subscription information such as the region where this registry lives and monthly price and pending charges",
"properties": {
"region": {
"$ref": "#/components/schemas/registry-region"
},
"subscription": {
"type": "object",
"description": "Subscription information",
"properties": {
"billing": {
"type": "object",
"description": "Billing information",
"properties": {
"monthly_price": {
"type": "number",
"description": "Monthly Price",
"format": "float"
},
"pending_charges": {
"type": "number",
"description": "The current charges for this subscription",
"format": "float"
}
}
},
"plan": {
"type": "string",
"description": "The plan used by this container registry. One of the plans returned by [List Registry Plans](#operation/list-registry-plans)."
}
}
}
}
}
}
},
"replication": {
"title": "replication",
"type": "object",
"x-tags": [
"replication",
"replications"
],
"description": "Container Registry Replication Policy",
"x-examples": {},
"properties": {
"region": {
"type": "string",
"description": "The name of the region you'd like to replicate this Container Registry in. Get a list of regions from /registry/region/list endpoint, i.e. sjc"
},
"namespace": {
"type": "string",
"description": "The Container Registry's name"
},
"urn": {
"type": "string",
"description": "The base URN (the URL without the scheme [i.e. http:// or https://]) of this registry"
}
}
},
"retention-rule": {
"title": "retention-rule",
"type": "object",
"x-tags": [
"retention-rule",
"retention-rules"
],
"description": "Container Registry Retention Policy Rule",
"x-examples": {},
"properties": {
"id": {
"type": "integer",
"description": "The Retention rule's ID"
},
"disabled": {
"type": "boolean",
"description": "Indicates whether the Retention rule is currently disabled"
},
"action": {
"type": "string",
"description": "Specifies the action to be taken on the selected artifacts"
},
"params": {
"type": "object",
"properties": {
"additional_prop": {
"type": "integer",
"description": "Parameters for the retention logic depending on the template used, and the integer value will be the number of artifacts or number of days"
}
}
},
"scope_selectors": {
"type": "object",
"description": "Defines the scope for the Retention rule, such as which repositories to include or exclude",
"properties": {
"repository": {
"type": "array",
"description": "A list of repository selector rules",
"items": {
"type": "object",
"properties": {
"decoration": {
"type": "string",
"description": "Determines whether to include or exclude matching repositories",
"enum": [
"repoMatches",
"repoExcludes"
]
},
"kind": {
"type": "string",
"description": "The type of patter matching to apply"
},
"pattern": {
"type": "string",
"description": "The glob pattern used to match repository names"
}
}
}
}
}
},
"tag_selectors": {
"type": "array",
"description": "A list of tag selector rules that determine which tags or untagged artifacts the retention rule should apply to",
"items": {
"type": "object",
"properties": {
"decoration": {
"type": "string",
"description": "Specifies whether this selector is an inclusive or exclusive rule",
"enum": [
"matches",
"excludes"
]
},
"extras": {
"type": "object",
"description": "Extra options for the tag selector, for example, whether to include untagged"
},
"kind": {
"type": "string",
"description": "The matching strategy for tag selection, typically 'doublestar' is used for glob matching"
},
"pattern": {
"type": "string",
"description": "The pattern used to match tags, can be glob syntax such as 'myapp', 'myapp*', '**', etc."
}
}
}
},
"template": {
"type": "string",
"description": "Specifies the rule logic template to use.\n\nPossible templates:\n\n* latestPushedK\n* latestPulledN\n* nDaysSinceLastPull\n* nDaysSinceLastPush\n* always"
}
}
},
"registry-storage": {
"title": "registry-storage",
"type": "object",
"x-tags": [
"registry-storage",
"registries-storage"
],
"description": "Container Registry Storage Information",
"x-examples": {},
"properties": {
"bytes": {
"type": "number",
"description": "Storage in Bytes",
"format": "float"
},
"mb": {
"type": "number",
"description": "Storage in Megabytes",
"format": "float"
},
"gb": {
"type": "number",
"description": "Storage in Gigabytes",
"format": "float"
},
"tb": {
"type": "number",
"description": "Storage in Terabytes",
"format": "float"
},
"updated_at": {
"type": "string",
"description": "The date at which the storage information was last updated"
}
}
},
"registry-repository": {
"title": "registry-repository",
"type": "object",
"x-tags": [
"registry-repository",
"registry-repositories"
],
"description": "Container Registry Repository Entity",
"x-examples": {},
"properties": {
"name": {
"type": "string",
"description": "The name of this repository (the name of the container image prepended with the registry name)"
},
"image": {
"type": "string",
"description": "The name of the conatiner image"
},
"description": {
"type": "string",
"description": "User defined description of this repository"
},
"added_at": {
"type": "string",
"description": "The date this Repo was added"
},
"updated_at": {
"type": "string",
"description": "The date this Repo was last updated"
},
"pull_count": {
"type": "integer",
"description": "The amount of pulls for this Repo"
},
"artifact_count": {
"type": "integer",
"description": "The amount of artifacts of this Repo"
}
}
},
"registry-user": {
"title": "registry-user",
"type": "object",
"x-tags": [
"registry-user"
],
"description": "Container Registry User Entity",
"x-examples": {},
"properties": {
"id": {
"type": "integer",
"description": "The Numeric ID of this user."
},
"username": {
"type": "string",
"description": "The globally unique name of this user."
},
"password": {
"type": "string",
"description": "The password this user will use to authenticate."
},
"root": {
"type": "boolean",
"description": "If true, this is a root user/registry owner meaning it cannot be deleted or renamed. If false, this is an additional user added to this registry that can be modified"
},
"added_at": {
"type": "string",
"description": "The date this User was added"
},
"updated_at": {
"type": "string",
"description": "The date this User was last updated"
}
}
},
"registry-user-current": {
"title": "registry-user",
"type": "object",
"x-tags": [
"registry-user"
],
"description": "Container Registry User Entity",
"x-examples": {},
"properties": {
"id": {
"type": "integer",
"description": "The Numeric ID of this user.",
"example": 22
},
"username": {
"type": "string",
"description": "The globally unique name of this user.",
"example": "123ab456-12ab-34cd-123a-1234abcd4567a"
},
"added_at": {
"type": "string",
"format": "date-time",
"description": "The date this User was added.",
"example": "2000-01-01T00:00:30.000Z"
},
"updated_at": {
"type": "string",
"format": "date-time",
"description": "The date this User was last updated.",
"example": "2000-01-01T00:00:30.000Z"
}
}
},
"registry-region": {
"title": "registry-region",
"type": "object",
"x-tags": [
"registry-region"
],
"description": "Container Registry Region Entity",
"x-examples": {},
"properties": {
"id": {
"type": "integer",
"description": "The Numeric ID of this region."
},
"name": {
"type": "string",
"description": "The unique name of this region, this is what you will use to specify a region when creating your subscription"
},
"urn": {
"type": "string",
"description": "The base URN (the URL without the scheme [i.e. http:// or https://]) of this region"
},
"base_url": {
"type": "string",
"description": "The base URL of this region"
},
"public": {
"type": "boolean",
"description": "If true, this is a publically accessible region allowing any customer to create new subscriptions on this region. If false, this region is not generally available yet"
},
"added_at": {
"type": "string",
"description": "The date this Region was added"
},
"updated_at": {
"type": "string",
"description": "The date this Region was last updated"
},
"data_center": {
"type": "object",
"description": "Information on the datacenter this region resides in"
}
}
},
"registry-plan": {
"title": "registry-plan",
"type": "object",
"x-tags": [
"registry-plan"
],
"description": "Container Registry Plan Entity. The KEY of this entity is the Plan ID you will use to create/upgrade your Container Registry",
"x-examples": {},
"properties": {
"vanity_name": {
"type": "string",
"description": "The Nice Name of the plan"
},
"max_storage_mb": {
"type": "integer",
"description": "The total allocated storage this plan allows"
},
"monthly_price": {
"type": "integer",
"description": "The monthly price for this plan"
}
}
},
"registry-docker-credentials": {
"title": "registry-docker-credentials",
"type": "object",
"x-tags": [
"registry-docker-credentials"
],
"description": "Container Registry Docker Credentials Entity",
"x-examples": {},
"properties": {
"auths": {
"type": "object",
"description": "Contains a single object with the key being the URN of the region",
"properties": {
"{registry-region-name}.vultrcr.com": {
"type": "object",
"description": "This object represents the auth for this region",
"properties": {
"auth": {
"type": "string",
"description": "The base64 encoded credentials of the Robot Account {registry-user-username}:{registry-user-password}"
}
}
}
}
}
}
},
"registry-kubernetes-docker-credentials": {
"title": "registry-kubernetes-docker-credentials",
"type": "object",
"x-tags": [
"registry-kubernetes-docker-credentials"
],
"description": "Container Registry Kubernetes Docker Credentials Entity",
"x-examples": {},
"properties": {
"apiVersion": {
"type": "string",
"description": "Specifies that this is api v1"
},
"kind": {
"type": "string",
"description": "Specifies that this is a Kubernetes Secret"
},
"metadata": {
"type": "object",
"description": "",
"properties": {
"name": {
"type": "string",
"description": "Specifies that these are Vultr Container Registry Credentials"
}
}
},
"data": {
"type": "object",
"description": "",
"properties": {
".dockerconfigjson": {
"type": "string",
"description": "Contains the base64 encoded Docker Credentials Config JSON"
}
}
},
"type": {
"type": "string",
"description": "Specifies that this type is a kubernetes.io/dockerconfigjson"
}
}
},
"registry-repository-artifact": {
"title": "registry-repository-artifact",
"type": "object",
"x-tags": [
"registry-repository-artifact",
"registry-repository-artifacts"
],
"description": "Container Registry Repository Artifact Entity",
"x-examples": {},
"properties": {
"artifact_type": {
"type": "string",
"description": "The specific type or format of the artifact"
},
"digest": {
"type": "string",
"description": "Cryptographic hash (SHA256) artifact reference"
},
"manifest_media_type": {
"type": "string",
"description": "The artifact's manifest"
},
"media_type": {
"type": "string",
"description": "The media type (MIME type) of the artifact that specifies the format of the artifact itself"
},
"pull_time": {
"type": "string",
"description": "Timestamp when the artifact was pulled"
},
"push_time": {
"type": "string",
"description": "Timestamp when the artifact was pushed"
},
"repository_name": {
"type": "string",
"description": "The repository the artifact is attached to"
},
"size": {
"type": "integer",
"description": "Size of the artifact it bytes"
},
"type": {
"type": "string",
"description": "Represents the type of the artifact (\"IMAGE\", \"HELM\", \"CHART\", etc)"
},
"tags": {
"type": "array",
"description": "Tags associated with a specific artifact that represent the different versions of the artifact"
}
}
},
"registry-robot": {
"title": "registry-robot",
"type": "object",
"x-tags": [
"registry-robot",
"registry-robots"
],
"description": "Container Registry Robot Account",
"x-examples": {},
"properties": {
"name": {
"type": "string",
"description": "Name of the robot account"
},
"description": {
"type": "string",
"description": "User defined description of this repository"
},
"secret": {
"type": "string",
"description": "A secret"
},
"disable": {
"type": "boolean",
"description": "Denotes whether the robot account is disabled or not"
},
"duration": {
"type": "integer",
"description": "Time in seconds when the robot account will expire and -1 if it never expires"
},
"creation_time": {
"type": "string",
"description": "Timestamp of when the robot account was created"
},
"permissions": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"description": "Level in which the robot account operates"
},
"namespace": {
"type": "string",
"description": "The registry the robot account is associated with"
},
"access": {
"type": "object",
"properties": {
"action": {
"type": "string",
"description": "Action to act on resource like pull, push, read, or delete"
},
"resource": {
"type": "string",
"description": "Type of resource to act on like repository or artifact"
},
"effect": {
"type": "string",
"description": "The effect of the action on resource, deny will remove this access"
}
}
}
}
}
}
},
"apikey": {
"title": "apikey",
"type": "object",
"x-tags": [
"apikey"
],
"description": "API key information.",
"properties": {
"id": {
"type": "string",
"description": "A unique ID for the API key."
},
"api_key": {
"type": "string",
"description": "The API key."
},
"name": {
"type": "string",
"description": "Custom name of the API key."
},
"expire": {
"type": "boolean",
"description": "Will the API key expire?"
},
"date_expire": {
"type": "string",
"description": "Date when the API key expires. Only valid when `expire` is `true`."
}
}
},
"nodepool-label": {
"title": "nodepool-label",
"type": "object",
"x-tags": [
"nodepool-label",
"nodepool-labels"
],
"description": "Kubernetes Node Pool Label",
"x-examples": {},
"properties": {
"id": {
"type": "string",
"description": "ID of the Label"
},
"key": {
"type": "string",
"description": "Key of the Label"
},
"value": {
"type": "string",
"description": "Value of the Label"
}
}
},
"nodepool-label-req": {
"title": "nodepool-label-req",
"type": "object",
"x-tags": [
"nodepool-label",
"nodepool-labels"
],
"description": "Kubernetes Node Pool Label",
"x-examples": {},
"properties": {
"key": {
"type": "string",
"description": "Key of the Label"
},
"value": {
"type": "string",
"description": "Value of the Label"
}
}
},
"nodepool-taint": {
"title": "nodepool-taint",
"type": "object",
"x-tags": [
"nodepool-taint",
"nodepool-taints"
],
"description": "Kubernetes Node Pool Taint",
"x-examples": {},
"properties": {
"id": {
"type": "string",
"description": "ID of the Taint"
},
"key": {
"type": "string",
"description": "Key of the Taint"
},
"value": {
"type": "string",
"description": "Value of the Taint"
},
"effect": {
"type": "string",
"description": "Effect of the Taint"
}
}
},
"nodepool-taint-req": {
"title": "nodepool-taint-req",
"type": "object",
"x-tags": [
"nodepool-taint",
"nodepool-taints"
],
"description": "Kubernetes Node Pool Taint",
"x-examples": {},
"properties": {
"key": {
"type": "string",
"description": "Key of the Taint"
},
"value": {
"type": "string",
"description": "Value of the Taint"
},
"effect": {
"type": "string",
"description": "Effect of the Taint"
}
}
},
"ticket": {
"title": "ticket",
"type": "object",
"x-tags": [
"tickets"
],
"description": "Ticket information.",
"x-examples": {},
"properties": {
"subject": {
"type": "string",
"description": "Subject for the ticket."
},
"date_created": {
"type": "string",
"description": "The date and time this ticket was created."
},
"date_last_entry": {
"type": "string",
"description": "The date and time the last entry was created for this ticket."
},
"last_reply_name": {
"type": "string",
"description": "The name of the user who last replied to the ticket."
},
"linked_subscriptions": {
"type": "array",
"description": "Subscriptions that are linked to this ticket.",
"items": {
"type": "object",
"properties": {
"description": {
"type": "string",
"description": "Subscription description"
},
"status": {
"type": "string",
"description": "Subscription status"
},
"type": {
"type": "string",
"description": "Subscription type"
},
"uuid": {
"type": "string",
"description": "Subscription UUID"
}
}
}
},
"reference": {
"type": "string",
"description": "Unique ticket identifier."
},
"status": {
"type": "string",
"description": "Current ticket status.\n\n* `open` - The ticket is open and is in progress.\n* `feedback` - The ticket is awaiting feedback from the customer.\n* `resolved` - The ticket has been resolved but can be reopened with reply.\n* `rca` - Root Cause Analysis (RCA) is in progress.\n* `closed` - The ticket is closed.",
"enum": [
"open",
"feedback",
"resolved",
"rca",
"closed"
]
},
"severity": {
"type": "string",
"description": "Ticket severity level."
},
"severity_custom": {
"type": "string",
"description": "Custom ticket severity level if account supports it."
},
"ticket_opener": {
"type": "string",
"description": "Name of the person who opened the ticket."
},
"ticket_closer": {
"type": "string",
"description": "Name of the person who closed the ticket."
}
}
},
"reply": {
"title": "reply",
"type": "object",
"x-tags": [
"replies"
],
"description": "Ticket reply.",
"x-examples": {},
"properties": {
"index": {
"type": "number",
"description": "Unique identifier for this reply in the ticket."
},
"age": {
"type": "string",
"description": "Age of the reply."
},
"date": {
"type": "string",
"description": "The date when reply was created."
},
"description": {
"type": "string",
"description": "Reply message."
},
"from_email": {
"type": "string",
"description": "Email the reply is from."
},
"from_name": {
"type": "string",
"description": "Person the reply is from."
},
"from_type": {
"type": "string",
"description": "User type of the person who created the reply. Values are `staff` or `user`."
},
"review_comment": {
"type": "string",
"description": "Reply rating comment - only for Vultr replies."
},
"review_date": {
"type": "string",
"description": "Reply rating date - only for Vultr replies."
},
"review_rating": {
"type": "number",
"description": "Reply rating - only for Vultr replies."
},
"reviewable": {
"type": "number",
"description": "Whether this reply is from Vultr."
},
"attachments": {
"type": "array",
"description": "Subscriptions that are linked to this ticket.",
"items": {
"type": "object",
"properties": {
"index": {
"type": "number",
"description": "Unique identifier for the attachment in this reply."
},
"context_type": {
"type": "string",
"description": "Type of the file."
},
"filename": {
"type": "string",
"description": "Uploaded file name."
}
}
}
}
}
},
"cluster": {
"title": "cluster",
"type": "object",
"x-tags": [
"clusters"
],
"description": "Cluster information.",
"x-examples": {
"example cluster": {
"id": "7a1b2c3d-4e5f-6789-abcd-ef0123456789",
"region": "ewr",
"label": "My GPU Cluster",
"plan": "vbm-256c-3072gb-8-mi325x-aac-gpu",
"min_pool_count": 1,
"desired_pool_count": 2,
"hostname": "my-cluster",
"status": "active",
"state": "running",
"date_created": "2026-01-15T10:30:00+00:00",
"cluster_type": "fabric",
"auto_provision": false,
"type": "cluster"
}
},
"properties": {
"id": {
"type": "string",
"description": "Unique ID for the cluster."
},
"region": {
"type": "string",
"description": "The [Region id](#operation/list-regions) where the cluster is deployed."
},
"label": {
"type": "string",
"description": "User-supplied label for the cluster."
},
"plan": {
"type": "string",
"description": "Plan name from the cluster's instance template."
},
"min_pool_count": {
"type": "integer",
"description": "Minimum number of instances in the cluster's pool."
},
"desired_pool_count": {
"type": "integer",
"description": "Desired number of instances in the cluster's pool."
},
"auto_provision": {
"type": "boolean",
"description": "Whether the cluster automatically provisions its compute pool. Cannot be enabled on `fabric` clusters."
},
"hostname": {
"type": "string",
"description": "Hostname applied to cluster instances."
},
"status": {
"type": "string",
"description": "Subscription status of the cluster.\n\n* pending\n* active\n* suspended\n* upgrading"
},
"state": {
"type": "string",
"description": "Current operational state of the cluster."
},
"instance_template_id": {
"type": "string",
"description": "UUID of the instance template backing the cluster's compute nodes. Returned by List, Create, and Update responses; [Get Cluster](#operation/get-cluster) replaces it with the full `instance_template` object."
},
"instance_template": {
"$ref": "#/components/schemas/instance-template"
},
"date_created": {
"type": "string",
"description": "Date the cluster was created."
},
"cluster_type": {
"type": "string",
"description": "Cluster type (e.g. `fabric`)."
},
"type": {
"type": "string",
"description": "Resource type. On list responses this is `cluster` or `vke`; on get responses this matches `cluster_type`."
},
"head_node_instance_template_id": {
"type": "string",
"description": "UUID of the instance template for the cluster's head node. Only returned when a head node is configured."
},
"vfs": {
"type": "array",
"description": "VFS subscriptions attached to the cluster. Empty when nothing is attached. Every instance in the cluster sees every attached VFS.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "UUID of the VFS subscription."
},
"label": {
"type": "string",
"description": "Label of the VFS subscription."
}
}
}
},
"instances": {
"type": "array",
"description": "Instances that belong to the cluster.",
"items": {
"$ref": "#/components/schemas/cluster-instance-summary"
}
},
"vpc_networks": {
"type": "array",
"description": "VPC networks attached to the cluster's worker nodes.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "VPC ID."
},
"description": {
"type": "string",
"description": "VPC description."
}
}
}
}
}
},
"cluster-instance-summary": {
"title": "cluster-instance-summary",
"type": "object",
"description": "Summary of an instance attached to a cluster.",
"x-tags": [
"clusters"
],
"properties": {
"id": {
"type": "string",
"description": "Instance ID."
},
"label": {
"type": "string",
"description": "Instance label."
},
"date_created": {
"type": "string",
"description": "Date the instance was created."
},
"status": {
"type": "string",
"description": "Instance status."
},
"ip_address": {
"type": "string",
"description": "The instance's main IP address, or its internal VPC IP for VPC-only instances. Empty when none is assigned yet (e.g. pending instances)."
},
"hostname": {
"type": "string",
"description": "The instance hostname. Distinct from `label`, which may differ."
},
"is_head_node": {
"type": "boolean",
"description": "Present and `true` when the instance is the cluster's head node."
},
"block_storage": {
"type": "array",
"description": "Block storage volumes attached to the instance. Only returned by [Get Cluster](#operation/get-cluster); omitted on list and update responses.\n\nIncludes boot volumes; excludes detached volumes. Empty when the instance has no attached volumes. Always empty for bare metal instances, which cannot attach block storage.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "UUID of the block storage volume."
},
"label": {
"type": "string",
"description": "Label of the block storage volume."
},
"status": {
"type": "string",
"description": "Subscription status of the block storage volume (e.g. `active`, `suspended`)."
},
"size_gb": {
"type": "integer",
"description": "Size of the volume in GB."
},
"bootable": {
"type": "boolean",
"description": "Whether the volume is bootable."
}
}
}
}
}
},
"cluster-availability-item": {
"title": "cluster-availability-item",
"type": "object",
"description": "An available cluster configuration returned by Get Cluster Availability.",
"x-tags": [
"clusters"
],
"properties": {
"id": {
"type": "string",
"description": "Plan or configuration ID."
},
"description": {
"type": "string",
"description": "Human-readable description of the configuration."
},
"automation_type": {
"type": "string",
"description": "Automation type (e.g. `fabric`)."
},
"available": {
"type": "boolean",
"description": "Whether this configuration is currently available."
},
"gpu_fabric": {
"type": "boolean",
"description": "Whether this is a GPU fabric configuration."
},
"requires_fabric_manager": {
"type": "boolean",
"description": "Whether this configuration requires a fabric manager."
},
"key_type": {
"type": "string",
"description": "Key type for the configuration."
},
"cpu_count": {
"type": "integer",
"description": "Number of physical CPU cores. Present on `bare-metal` and `gpu-fabric` configurations."
},
"vcpu_count": {
"type": "integer",
"description": "Number of vCPUs. Present on `vps` configurations."
},
"ram": {
"type": "integer",
"description": "Amount of memory in MB."
},
"disk": {
"type": "integer",
"description": "Size of each disk in GB."
},
"disk_count": {
"type": "integer",
"description": "Number of disks."
},
"bandwidth": {
"type": "integer",
"description": "Monthly bandwidth allowance in GB."
},
"gpu_brand": {
"type": "string",
"description": "GPU manufacturer (e.g. `NVIDIA`, `AMD`), or `none` if the configuration has no GPU."
},
"gpu_type": {
"type": "string",
"description": "GPU model identifier (e.g. `AMD_MI300X`). Empty string if the configuration has no GPU."
},
"gpu_count": {
"type": "integer",
"description": "Number of GPUs."
},
"gpu_vram_gb": {
"type": "integer",
"description": "Total GPU VRAM in GB. `0` if the configuration has no GPU."
},
"monthly_cost": {
"type": "number",
"description": "Monthly price in USD for the region and account."
},
"hourly_cost": {
"type": "number",
"description": "Hourly price in USD for the region and account."
}
}
},
"cluster-instance-metrics": {
"title": "cluster-instance-metrics",
"type": "object",
"description": "GPU and fabric metrics for a single instance in a cluster.",
"x-tags": [
"clusters"
],
"properties": {
"gpu": {
"type": "object",
"description": "GPU metrics grouped by category.",
"properties": {
"temperature": {
"type": "object",
"properties": {
"gpu": {
"type": "array",
"description": "GPU temperature readings, one entry per GPU.",
"items": {
"$ref": "#/components/schemas/cluster-time-series-metric"
}
}
}
},
"utilization": {
"type": "object",
"properties": {
"gpu": {
"type": "array",
"description": "GPU utilization readings, one entry per GPU.",
"items": {
"$ref": "#/components/schemas/cluster-time-series-metric"
}
},
"memory": {
"type": "object",
"properties": {
"total": {
"type": "array",
"items": {
"$ref": "#/components/schemas/cluster-time-series-metric"
}
},
"free": {
"type": "array",
"items": {
"$ref": "#/components/schemas/cluster-time-series-metric"
}
},
"used": {
"type": "array",
"items": {
"$ref": "#/components/schemas/cluster-time-series-metric"
}
}
}
}
}
},
"power": {
"type": "object",
"properties": {
"used": {
"type": "array",
"description": "Power used readings, one entry per GPU.",
"items": {
"$ref": "#/components/schemas/cluster-time-series-metric"
}
},
"max": {
"type": "array",
"description": "Max power readings, one entry per GPU.",
"items": {
"$ref": "#/components/schemas/cluster-time-series-metric"
}
}
}
}
}
},
"fabric": {
"type": "object",
"description": "Fabric metrics. Returns an empty array `[]` when no fabric data is available.",
"properties": {
"raw_throughput": {
"type": "object",
"description": "TX/RX throughput in bytes.",
"properties": {
"tx": {
"type": "array",
"items": {
"$ref": "#/components/schemas/cluster-time-series-metric"
}
},
"rx": {
"type": "array",
"items": {
"$ref": "#/components/schemas/cluster-time-series-metric"
}
}
}
},
"retries": {
"type": "object",
"description": "TX/RX retry counts.",
"properties": {
"tx": {
"type": "array",
"items": {
"$ref": "#/components/schemas/cluster-time-series-metric"
}
},
"rx": {
"type": "array",
"items": {
"$ref": "#/components/schemas/cluster-time-series-metric"
}
}
}
},
"optical_power_strength": {
"type": "object",
"description": "TX/RX optical power signal strength.",
"properties": {
"tx": {
"type": "array",
"items": {
"$ref": "#/components/schemas/cluster-time-series-metric"
}
},
"rx": {
"type": "array",
"items": {
"$ref": "#/components/schemas/cluster-time-series-metric"
}
}
}
}
}
}
}
},
"cluster-time-series-metric": {
"title": "cluster-time-series-metric",
"type": "object",
"description": "A single time series metric (one entry per GPU or fabric port).",
"x-tags": [
"clusters"
],
"properties": {
"unit": {
"type": "string",
"description": "Unit of the metric values, for display and conversion. One of `celsius`, `percent`, `megabytes`, `watts`, `bytes`, `count`, or `milliwatts`."
},
"target": {
"type": "string",
"description": "GPU index or port identifier (e.g. `\"0\"`, `\"1\"`)."
},
"datapoints": {
"type": "array",
"description": "Array of `[value, unix_timestamp]` tuples. Value is a number or `null` when no data is available.",
"items": {
"type": "array",
"items": {}
}
},
"tags": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "GPU index or port identifier."
}
}
}
}
},
"instance-template": {
"title": "instance-template",
"type": "object",
"x-tags": [
"instance-templates"
],
"description": "Instance Template information.",
"x-examples": {
"example instance template": {
"id": "98765432-10ab-cdef-1234-567890abcdef",
"plan": "vc2-6c-16gb",
"label": "my-template",
"os": "Ubuntu 22.04 x64"
}
},
"properties": {
"id": {
"type": "string",
"description": "Unique ID for the instance template."
},
"plan": {
"type": "string",
"description": "The [Plan id](#operation/list-plans) used by this template."
},
"label": {
"type": "string",
"description": "User-supplied label for the template."
},
"os": {
"type": "string",
"description": "Name of the operating system."
},
"marketplace_app": {
"type": "string",
"description": "Name of the marketplace application, if any."
},
"marketplace_image": {
"type": "string",
"description": "Marketplace image identifier, if any."
},
"snapshot": {
"type": "string",
"description": "Snapshot identifier, if any."
},
"iso": {
"type": "string",
"description": "ISO identifier, if any."
},
"ssh_keys": {
"type": "array",
"description": "SSH keys attached to the template.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "SSH key ID."
},
"name": {
"type": "string",
"description": "SSH key name."
}
}
}
},
"startup_script": {
"type": "string",
"description": "Startup script identifier, if any."
},
"disk_config": {
"type": "string",
"description": "Disk configuration for the template."
},
"ephemeral": {
"type": "boolean",
"description": "Whether this template was auto-created to back a cluster (ephemeral). Ephemeral templates are hidden from List Instance Templates unless `include_all=true`, and are deleted when their cluster is destroyed. Promote one to a permanent template via the Promote Instance Template endpoint."
},
"plan_details": {
"$ref": "#/components/schemas/cluster-plan-details"
},
"user_data": {
"type": "string",
"description": "base64 encoded string containing user_data that should be executed by cloud init."
}
}
},
"instance-template-list-item": {
"title": "instance-template-list-item",
"type": "object",
"x-tags": [
"instance-templates"
],
"description": "Instance template entry returned by List Instance Templates (excludes `plan_details`).",
"properties": {
"id": {
"type": "string",
"description": "Unique ID for the instance template."
},
"plan": {
"type": "string",
"description": "The [Plan id](#operation/list-plans) used by this template."
},
"label": {
"type": "string",
"description": "User-supplied label for the template."
},
"os": {
"type": "string",
"description": "Name of the operating system."
},
"marketplace_app": {
"type": "string",
"description": "Name of the marketplace application, if any."
},
"marketplace_image": {
"type": "string",
"description": "Marketplace image identifier, if any."
},
"snapshot": {
"type": "string",
"description": "Snapshot identifier, if any."
},
"iso": {
"type": "string",
"description": "ISO identifier, if any."
},
"ssh_keys": {
"type": "array",
"description": "SSH keys attached to the template.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "SSH key ID."
},
"name": {
"type": "string",
"description": "SSH key name."
}
}
}
},
"startup_script": {
"type": "string",
"description": "Startup script identifier, if any."
},
"disk_config": {
"type": "string",
"description": "Disk configuration for the template."
},
"ephemeral": {
"type": "boolean",
"description": "Whether this template was auto-created to back a cluster (ephemeral). Ephemeral templates are hidden from this list unless `include_all=true`, and are deleted when their cluster is destroyed."
},
"user_data": {
"type": "string",
"description": "base64 encoded string containing user_data that should be executed by cloud init."
}
}
},
"vfs-storage-size": {
"title": "vfs-storage-size",
"type": "object",
"description": "VFS storage size specification. `gb` is required when creating a VFS subscription.",
"x-tags": [
"clusters"
],
"properties": {
"bytes": {
"type": "integer",
"format": "int64",
"description": "Size in bytes."
},
"gb": {
"type": "integer",
"description": "Size in gigabytes."
}
}
},
"cluster-vfs-input": {
"title": "cluster-vfs-input",
"type": "object",
"description": "VFS attachments for a cluster. Every instance in the cluster (compute and head node alike) sees every attached VFS.\n`ids` and `create` may both be present in a single object — the resulting set is their union (existing VFS subscriptions referenced by `ids` plus a freshly created VFS from `create`). Either field alone is also valid; an object with neither is treated as \"detach all\" on update.",
"x-tags": [
"clusters"
],
"properties": {
"ids": {
"type": "array",
"description": "UUIDs of existing [VFS subscriptions](#operation/list-vfs) to attach. All must be in the same region as the cluster.",
"items": {
"type": "string"
}
},
"create": {
"type": "object",
"description": "When present, a new VFS subscription is created in the cluster's region and attached alongside any `ids`.",
"properties": {
"label": {
"type": "string",
"description": "Label for the new VFS subscription."
},
"storage_size": {
"$ref": "#/components/schemas/vfs-storage-size"
}
}
}
}
},
"cluster-node-template": {
"title": "cluster-node-template",
"type": "object",
"description": "Instance template configuration for a cluster node, exposing the same image and access\nfields as the [Create Instance Template](#operation/create-instance-template) endpoint.\nSupplied as `compute_node_template` (compute nodes) or `head_node_template` (head node).\nWhen present, these fields override the deprecated top-level `os_id`/`app_id`/`image_id`.",
"x-tags": [
"clusters"
],
"properties": {
"os_id": {
"type": "integer",
"description": "The [Operating System id](#operation/list-os) to install on the node."
},
"marketplace_app_id": {
"type": "integer",
"description": "The [Application id](#operation/list-applications) to install on the node."
},
"marketplace_image_id": {
"type": "integer",
"description": "The [Application image_id](#operation/list-applications) to install on the node."
},
"iso_id": {
"type": "string",
"description": "The [ISO id](#operation/list-isos) to attach to the node."
},
"snapshot_id": {
"type": "string",
"description": "The [Snapshot id](#operation/list-snapshots) to deploy the node from."
},
"ssh_key_ids": {
"type": "array",
"description": "Array of [SSH Key ids](#operation/list-ssh-keys) to install on the node. The alias `sshkey_ids` is also accepted; `ssh_key_ids` takes precedence if both are sent.",
"items": {
"type": "string"
}
},
"sshkey_ids": {
"type": "array",
"description": "Alias of `ssh_key_ids` (alternate spelling). Accepted for convenience; `ssh_key_ids` takes precedence if both are sent.",
"items": {
"type": "string"
}
},
"label": {
"type": "string",
"description": "Label for the instance template created for the node."
},
"user_data": {
"type": "string",
"description": "base64 encoded string containing user_data that should be executed by cloud init on the node."
}
}
},
"cluster-plan-details": {
"title": "cluster-plan-details",
"type": "object",
"description": "Plan details returned with an instance template. This is a superset of VPS and bare-metal plan fields; fields marked \"VPS only\" or \"Bare metal only\" are absent for the other plan type.",
"x-tags": [
"instance-templates"
],
"properties": {
"name": {
"type": "string",
"description": "Plan name (common to VPS and bare metal)."
},
"type": {
"type": "string",
"description": "Plan type (e.g. `shared_cloud_compute`, `bare_metal`)."
},
"cpu_manufacturer": {
"type": "string",
"description": "CPU manufacturer (common to VPS and bare metal)."
},
"cpu_count": {
"type": "integer",
"description": "Number of CPUs (common to VPS and bare metal)."
},
"cpu_threads": {
"type": "integer",
"description": "Number of CPU threads (bare metal only)."
},
"cpu_mhz": {
"type": "integer",
"description": "CPU clock speed in MHz (bare metal only)."
},
"cpu_model": {
"type": "string",
"description": "CPU model (bare metal only)."
},
"memory_mb": {
"type": "integer",
"description": "Memory in MB (common to VPS and bare metal)."
},
"disk_gb": {
"type": "integer",
"description": "Disk size in GB (common to VPS and bare metal)."
},
"disk_type": {
"type": "string",
"description": "Disk type (common to VPS and bare metal)."
},
"disk_num": {
"type": "integer",
"description": "Number of disks (common to VPS and bare metal)."
},
"bandwidth_tb": {
"type": "number",
"description": "Bandwidth in TB (common to VPS and bare metal)."
},
"gpu_brand": {
"type": "string",
"description": "GPU brand (common to VPS and bare metal)."
},
"gpu_model": {
"type": "string",
"description": "GPU model (common to VPS and bare metal)."
},
"gpu_count": {
"type": "integer",
"description": "Number of GPUs (bare metal only)."
},
"gpu_profile": {
"type": "string",
"description": "GPU profile (VPS only)."
},
"gpu_profile_count": {
"type": "integer",
"description": "GPU profile count (VPS only)."
},
"price": {
"type": "string",
"description": "Monthly price (common to VPS and bare metal)."
},
"price_hr": {
"type": "string",
"description": "Hourly price (common to VPS and bare metal)."
}
}
}
},
"securitySchemes": {
"API Key": {
"type": "http",
"scheme": "bearer",
"in": "header",
"description": "The Vultr API v2 uses API keys for authentication. You can manage your API keys in the Vultr customer portal or within the Vultr API. Please do not share API keys publicly, or embed them in client-side code. It is a good security practice to restrict their use by IP address in the [customer portal](https://console.vultr.com/settings/#settingsapi).\n\nTo authenticate a request, send your API Key as a bearer token in the request header.\n\n### Authentication Example\n\n curl \"https://api.vultr.com/v2/account\" \\\n -X GET \\\n -H \"Authorization: Bearer ${VULTR_API_KEY}\"\n\nUnauthenticated API requests will fail. All requests must use HTTPS encryption for security, and calls made with HTTP will fail."
}
}
},
"tags": [
{
"name": "account",
"x-displayName": "Account",
"description": "Read-only information about your [user account](https://console.vultr.com/settings/#settingsprofile) and [billing](https://console.vultr.com/billing/#billinghistory) information.\n"
},
{
"name": "application",
"x-displayName": "Applications",
"description": "[One-Click](https://www.vultr.com/features/one-click-apps/) and [Marketplace](https://www.vultr.com/marketplace/) Applications are ready-to-run with minimal configuration. We have an extensive [documentation library](https://docs.vultr.com/category/apps/) for our Applications.\n
There are two types of Applications: `marketplace` and `one-click`. This is denoted by the `type` field in the Application object. Applications with `type` of `marketplace` can be deployed by using the `image_id` while Applications with `type` of `one-click` should use the `id`.\n"
},
{
"name": "api-keys",
"x-displayName": "API Keys",
"description": "The Vultr API v2 uses API keys for authentication. These methods enable you to manage your API keys without having to access the customer portal. Keys are only accessible for the currently authenticated user. To manage keys for other users, see the \"Users\" section.\n"
},
{
"name": "backup",
"x-displayName": "Backups",
"description": "A backup is a scheduled, automatic, point-in-time image of an instance. We do not stop the instance when taking a backup. Booting from a backup is similar to rebooting after a non-graceful restart. [Snapshots](#tag/snapshot) are physically the same as backups, but snapshots are manual while backups run automatically on a schedule. Backups can be converted into snapshots. See our [Automatic Backup FAQ](https://docs.vultr.com/vps-automatic-backups/) for more information.\n"
},
{
"name": "baremetal",
"x-displayName": "Bare Metal",
"description": "[Bare Metal](https://www.vultr.com/products/bare-metal/) servers give you access to the underlying physical hardware in a single-tenant environment without a virtualization layer.\n"
},
{
"name": "billing",
"x-displayName": "Billing",
"description": "Read-only [billing](https://console.vultr.com/billing/#billinghistory) information for your [user account](https://console.vultr.com/settings/#settingsprofile)."
},
{
"name": "block",
"x-displayName": "Block Storage",
"description": "[Block Storage](https://www.vultr.com/products/block-storage/) volumes are highly-available, redundant, SSD backed, and expandable from 10 GB to 40,000 GB depending on the type. Block storage volumes can be formatted with your choice of filesystems and moved between server instances as needed. [See our FAQ](https://docs.vultr.com/block-storage/) for details.\n"
},
{
"name": "CDNs",
"x-displayName": "CDNs",
"description": "A Vultr Content Delivery Network (CDN) optimizes your website, allowing you to deliver content quickly to users worldwide. More information on Vultr CDN can be found [here](https://docs.vultr.com/vultr-content-delivery-network).\n"
},
{
"name": "clusters",
"x-displayName": "Clusters",
"description": "Clusters group related [instances](#tag/instances) together for coordinated deployment and management, and are especially useful for GPU fabric workloads. Each cluster is tied to a single [Region](#tag/region) and uses an [Instance Template](#tag/instance-templates) to define the configuration of its member instances. Optionally, a cluster can include a head node and attached [VFS](#tag/VFS) storage.\n"
},
{
"name": "Container Registry",
"x-displayName": "Container Registry",
"description": "Store and manage public and private container images for rapid deployment to Vultr Managed Kubernetes.\n"
},
{
"name": "dns",
"x-displayName": "DNS",
"description": "Vultr offers [free DNS hosting](https://docs.vultr.com/introduction-to-vultr-dns/) for customers' domains. The nameservers are on an AnyCAST network and ensure fast DNS resolution. When you manage your DNS through the API, you can view the results [in your customer portal](https://console.vultr.com/dns/).\n"
},
{
"name": "firewall",
"x-displayName": "Firewall",
"description": "Vultr offers a [web-based firewall](https://docs.vultr.com/vultr-firewall/) solution to protect one or more compute instances. [Firewall groups](https://console.vultr.com/firewall/) can manage multiple servers with a standard ruleset. You can control multiple groups with the API.\n"
},
{
"name": "iam",
"x-displayName": "IAM",
"description": "Identity and Access Management (IAM) allows you to manage policies, roles, groups, and invitations to control access to Vultr resources."
},
{
"name": "instances",
"x-displayName": "Instances",
"description": "Vultr [Cloud instances](https://www.vultr.com/products/cloud-compute/) can be [deployed](https://console.vultr.com/) with your preferred operating system or pre-installed application in seconds. [High Frequency Compute](https://www.vultr.com/products/high-frequency-compute/) instances are powered by high clock speed CPU's and NVMe local storage to power your most demanding applications. [Dedicated Cloud](https://www.vultr.com/products/cloud-compute/) instances have dedicated CPU, SSD drives, and RAM.\n
\n
\nNote: Do not use this endpoint to manage [Kubernetes](https://www.vultr.com/kubernetes/) cluster nodes as it may result in unintended issues and charges. Use the kubernetes [endpoint](https://www.vultr.com/api/#tag/kubernetes) instead.\n"
},
{
"name": "instance-templates",
"x-displayName": "Instance Templates",
"description": "Instance Templates capture a reusable configuration — plan, operating system, SSH keys, VPCs, VFS subscriptions, and other deployment options — that can be applied when creating [instances](#tag/instances) or [clusters](#tag/clusters).\n"
},
{
"name": "iso",
"x-displayName": "ISO",
"description": "[Upload](https://www.vultr.com/features/upload-iso/) and boot instances from your ISO, or choose one from our [public ISO library](https://console.vultr.com/iso/public/). See our [ISO documentation](https://docs.vultr.com/requirements-for-uploading-an-os-iso-to-vultr/).\n"
},
{
"name": "kubernetes",
"x-displayName": "Kubernetes",
"description": "Vultr Kubernetes Engine is a managed Kubernetes offering."
},
{
"name": "load-balancer",
"x-displayName": "Load Balancers",
"description": "[Load Balancers](https://docs.vultr.com/vultr-load-balancers/) sit in front of your application and distribute incoming traffic across multiple Instances. When you control the load balancer via the API, you can inspect the results in the [customer portal](https://console.vultr.com/loadbalancers/).\n"
},
{
"name": "logs",
"x-displayName": "Logs",
"description": "[Logs](https://docs.vultr.com/vultr-logs/) record activity of users on your account. Events that are logged include user logins, interactions with the console.vultr.com web portal, and requests to the api.vultr.com REST API.\n"
},
{
"name": "managed-databases",
"x-displayName": "Managed Databases",
"description": "[Vultr Managed Databases](https://docs.vultr.com/vultr-managed-databases/) is a managed database offering supporting MySQL, PostgreSQL, Valkey, and Apache Kafka®.\n"
},
{
"name": "marketplace",
"x-displayName": "Marketplace",
"description": "[Vultr Marketplace](https://docs.vultr.com/vultr-marketplace) is a platform for vendors to publish custom applications on Vultr's infrastructure.\n"
},
{
"name": "oauth",
"x-displayName": "OAuth Apps",
"description": "OAuth Apps let your organization build integrations that Vultr users authorize to act on their behalf, using the OAuth 2.0 authorization code flow.\n\nAs an app owner: create an [OIDC Provider](#tag/oidc), register an OAuth App linked to it, attach [IAM policies](#tag/iam) as scopes, test it with draft users, and submit it for review by Vultr. Once approved (`Active`), any Vultr user can authorize it.\n\nAs a user: authorizing an app issues it a one-time code that it exchanges for a bearer token at the app's [OIDC Provider token endpoint](#operation/create-oidc-provider-token). You can list and revoke your authorized apps at any time.\n"
},
{
"name": "oidc",
"x-displayName": "OIDC",
"description": "OpenID Connect (OIDC) allows external identity providers to authenticate users and services for your Vultr account. Manage OIDC providers and issuers to enable federated identity."
},
{
"name": "organizations",
"x-displayName": "Organizations",
"description": "Allows you to Organization Settings."
},
{
"name": "scim",
"x-displayName": "SCIM (Pre-Release)",
"description": "SCIM (System for Cross-domain Identity Management) 2.0 endpoints allow identity providers to automatically provision and deprovision users and groups in your Vultr Organization. Authenticate using the SCIM token from your [Organization SCIM configuration](#operation/get-iam-organization-scim). Endpoints are available at `/scim/v2/`.\n"
},
{
"name": "s3",
"x-displayName": "Object Storage",
"description": "[Object Storage](https://docs.vultr.com/vultr-object-storage/) is S3 API compatible. Objects uploaded to object storage can be accessed privately or publicly on the web. Object storage supports a virtually unlimited number of objects. Control your Object Storage via the API or browse in the [Customer Portal](https://console.vultr.com/objectstorage/).\n"
},
{
"name": "os",
"x-displayName": "Operating Systems",
"description": "We have a wide range of [operating systems](https://www.vultr.com/features/operating-systems/) available to deploy server instances. You can also [upload an ISO](#tag/iso) or choose from our public ISO library.\n"
},
{
"name": "plans",
"x-displayName": "Plans",
"description": "A Plan is a particular configuration of vCPU, RAM, SSD, and bandwidth to deploy an [Instance](#tag/instances). Not all Plans are available in all [Regions](#tag/region). You can browse plans in the [Customer Portal](https://console.vultr.com/deploy/) or get a list of Plans from the API.\n"
},
{
"name": "private Networks",
"x-displayName": "Private Networks",
"description": "**Deprecated**: use [VPCs](#tag/VPCs) instead.
[Private Networks](https://docs.vultr.com/configuring-private-network/) are fully isolated networks accessible only by instances on your account. Each private network is only available in one Region and cannot span across regions. An [instance](#tag/instances) can connect to [multiple private networks](https://docs.vultr.com/multiple-private-networks/) and you may have up to 5 private networks per [region](#tag/region).\n"
},
{
"name": "serverless-inference",
"x-displayName": "Serverless Inference",
"description": "[Vultr Serverless Inference](https://www.vultr.com/products/cloud-inference/) intelligently deploys and serves GenAI models without the complexity of infrastructure management.\n"
},
{
"name": "software-licenses",
"x-displayName": "Software Licenses",
"description": "View software licenses attached to instances on your account.\n"
},
{
"name": "tickets",
"x-displayName": "Tickets",
"description": "View and manage support tickets created on your Vultr account.\n"
},
{
"name": "VPCs",
"x-displayName": "VPCs",
"description": "[VPCs](https://docs.vultr.com/how-to-create-a-vultr-virtual-private-cloud-vpc/) are fully isolated networks accessible only by instances on your account. Each VPC is only available in one region and cannot span across regions. An [instance](#tag/instances) can connect to multiple VPCs and you may have up to 5 VPCs per [region](#tag/region).\n"
},
{
"name": "reserved-ip",
"x-displayName": "Reserved IPs",
"description": "IP addresses can be [reserved](https://console.vultr.com/network/) and moved between [instances](#tag/instances). Reserved IPs can also be used as [floating addresses](https://docs.vultr.com/high-availability-on-vultr-with-floating-ip-and-bgp/) for high-availability.\n"
},
{
"name": "region",
"x-displayName": "Regions",
"description": "Instances can be deployed in many [Regions](https://www.vultr.com/features/datacenter-locations/) on multiple continents. Choose any of our worldwide locations to deploy servers near your office or customers for low-latency."
},
{
"name": "snapshot",
"x-displayName": "Snapshots",
"description": "A snapshot is a point-in-time image of an instance. We do not stop the instance when taking a snapshot. Booting from a snapshot is similar to rebooting after a non-graceful restart. Snapshots are physically the same as [backups](#tag/backup), but snapshots are manual while backups run automatically on a schedule. See our [Snapshot Quickstart Guide](https://docs.vultr.com/vultr-vps-snapshots/) for more information.\n"
},
{
"name": "subaccount",
"x-displayName": "Sub-Accounts",
"description": "Sub-accounts are separate Vultr accounts that are directly linked to your account. These accounts function similarly to normal Vultr accounts with some additional billing and administrative features available to your account.\n"
},
{
"name": "ssh",
"x-displayName": "SSH Keys",
"description": "You can add [SSH keys](https://docs.vultr.com/how-do-i-generate-ssh-keys/) to your [account](https://console.vultr.com/sshkeys/), which can be copied to new instances when first deployed. Updating a key does not update any running instances. If you [reinstall](#operation/reinstall-instance) an instance (erasing all its data), it will inherit the updated key."
},
{
"name": "startup",
"x-displayName": "Startup Scripts",
"description": "Vultr allows you to assign [two types of scripts to a server](https://docs.vultr.com/vultr-startup-scripts-quickstart-guide/). Boot scripts configure new deployments, and PXE scripts automatically install operating systems. Assign startup scripts to your servers through the API or on your [Startup Scripts page](https://console.vultr.com/startup/) in the customer portal.\n
\n
\n**Note**: There is a size limit of 64KB on the startup script.\n"
},
{
"name": "storage-gateways",
"x-displayName": "Storage Gateways",
"description": "[Storage Gateways](https://docs.vultr.com/products/cloud-storage/storage-gateway/provisioning) allow access to Vultr File System via the NFS v4.2 protocol. Each SG is only available in one region and cannot span across regions. An SG may be configured with a public IPv4/IPv6 for access over WAN and/or attached to a VPC Network.\n"
},
{
"name": "users",
"x-displayName": "Users",
"description": "Vultr supports [multiple users](https://console.vultr.com/settings/#settingsusers) in each account, and each user has [individual access permissions](https://console.vultr.com/users/manage/?USERID=new). Users have unique API keys, which respect the permission for that user."
},
{
"name": "VFS",
"x-displayName": "VFS",
"description": "Vultr's VFS ([Vultr File System](https://www.vultr.com/products/file-system/)) is a fully managed, high-performance cloud file storage solution based on virtiofs, enabling multiple Vultr Cloud Compute instances (or Kubernetes pods) to simultaneously access and share the same scalable volume with features like write locking and low-latency data sharing. It's ideal for collaborative workloads, shared application data, or ReadWriteMany (RWX) storage in clusters."
}
],
"security": [
{
"API Key": []
}
]
}