Terraform
- Terraform Enterprise
- 1.0.x
- v202507-1
- v202506-1
- v202505-1
- v202504-1
- v202503-1
- v202502-2
- v202502-1
- v202501-1
- v202411-2
- v202411-1
- v202410-1
- v202409-3
- v202409-2
- v202409-1
- v202408-1
- No versions of this document exist before v202408-1. Click below to redirect to the version homepage.
- v202407-1
- v202406-1
- v202405-1
- v202404-2
- v202404-1
- v202402-2
- v202402-1
- v202401-2
- v202401-1
- v202312-1
- v202311-1
- v202310-1
- v202309-1
- v202308-1
- v202307-1
- v202306-1
- v202305-2
- v202305-1
- v202304-1
- v202303-1
- v202302-1
- v202301-2
- v202301-1
- v202212-2
- v202212-1
- v202211-1
- v202210-1
- v202209-2
- v202209-1
- v202208-3
- v202208-2
- v202208-1
- v202207-2
- v202207-1
- v202206-1
Support bundle requests API reference
A support bundle contains diagnostic information that helps troubleshoot issues with a Terraform Enterprise installation. Refer to the tfectl command documentation for instructions on how to generate a support bundle using tfectl.
Generate support bundle
This endpoint creates a new support bundle request that collects diagnostic information from one or more Terraform Enterprise nodes. Authentication is required to use this endpoint.
POST /api/v1/support/bundle-requests
Request body
| Parameter | Type | Description |
|---|---|---|
nodes | array of strings | Optional. List of node identifiers to generate bundles from specific nodes. If not specified, the bundle generates from all nodes in the Terraform Enterprise installation. |
Sample request
curl \
--header "Authorization: Bearer $TOKEN" \
--header "Content-Type: application/vnd.api+json" \
--request POST \
--data @payload.json \
https://tfe.example.com:8443/api/v1/support/bundle-requests
Sample payload
{
"nodes": ["node-id-1", "node-id-2"]
}
Sample response
{
"data": {
"id": "2025-09-26T09:21:06Z",
"type": "support-bundle",
"attributes": {
"status": "generating",
"created_at": "2025-05-08T10:15:30Z",
"nodes": ["node-id-1", "node-id-2"]
},
"links": {
"self": "/support/bundle-requests/2025-05-08T10:15:30Z"
}
}
}
The id returned is the identifier for the support bundle request. Use this ID to query status, download the resulting bundle, or perform other operations related to this request.
Response codes
| Status | Response | Reason |
|---|---|---|
| 202 | JSON API document | Request accepted, bundle generation started |
| 400 | JSON API error object | Invalid request parameters |
| 401 | JSON API error object | Authentication required |
| 404 | JSON API error object | Specified node ID not found |
| 429 | JSON API error object | Too many requests. Wait before retrying. |
| 500 | JSON API error object | Internal server error |
List support bundle requests
This endpoint retrieves a paginated list of support bundle requests with their current status. You can filter results by creation date, status, and node IDs. Authentication is required to use this endpoint.
GET /api/v1/support/bundle-requests
Query parameters
| Parameter | Type | Description |
|---|---|---|
filter[created_after] | datetime | Filter bundles created after this date |
filter[created_before] | datetime | Filter bundles created before this date |
filter[status] | string | Filter by status: generating, finished, or errored |
filter[nodes] | array of strings | Filter to show bundles that include the specified node IDs |
page[number] | integer | Page number for pagination. Default is 1. |
page[size] | integer | Number of items per page. Default is 20. Maximum is 100. |
Sample request
curl \
--header "Authorization: Bearer $TOKEN" \
--request GET \
"https://tfe.example.com:8443/api/v1/support/bundle-requests"
Sample response
{
"data": [
{
"id": "2025-05-07T14:30:00Z",
"type": "support-bundle",
"attributes": {
"status": "finished",
"created_at": "2025-05-07T14:30:00Z",
"completed_at": "2025-05-07T14:35:12Z",
"size_bytes": 15728640,
"nodes": [
{
"node": "node-id-1",
"status": "finished",
"size_bytes": 7864320,
"error": null,
"completed_at": "2025-05-07T14:32:45Z"
},
{
"node": "node-id-2",
"status": "finished",
"size_bytes": 7864320,
"error": null,
"completed_at": "2025-05-07T14:35:12Z"
}
]
},
"links": {
"self": "/support/bundle-requests/2025-05-07T14:30:00Z",
"download": "/support/bundle-requests/2025-05-07T14:30:00Z/download"
}
},
{
"id": "2025-05-08T10:15:30Z",
"type": "support-bundle",
"attributes": {
"status": "generating",
"created_at": "2025-05-08T10:15:30Z",
"nodes": [
{
"node": "node-id-1",
"status": "generating",
"error": null
}
]
},
"links": {
"self": "/support/bundle-requests/2025-05-08T10:15:30Z"
}
},
{
"id": "2025-05-08T10:15:30Z",
"type": "support-bundle",
"attributes": {
"status": "errored",
"created_at": "2025-05-08T10:15:30Z",
"completed_at": "2025-05-08T10:16:45Z",
"nodes": [
{
"node": "node-id-1",
"status": "errored",
"error": "Connection timeout",
"completed_at": "2025-05-08T10:16:45Z"
},
{
"node": "node-id-2",
"status": "finished",
"size_bytes": 7864320,
"error": null,
"completed_at": "2025-05-08T10:16:45Z"
}
],
"error": "Bundle generation failed on node-id-1: Connection timeout"
},
"links": {
"self": "/support/bundle-requests/2025-05-08T10:15:30Z"
}
}
],
"meta": {
"pagination": {
"current_page": 1,
"total_pages": 5,
"total_count": 48
}
},
"links": {
"self": "/support/bundle-requests?page[number]=1&page[size]=10",
"first": "/support/bundle-requests?page[number]=1&page[size]=10",
"prev": null,
"next": "/support/bundle-requests?page[number]=2&page[size]=10",
"last": "/support/bundle-requests?page[number]=5&page[size]=10"
}
}
Response attributes
| Attribute | Type | Description |
|---|---|---|
id | string | Unique identifier for the support bundle request |
status | string | Current status: generating, finished, or errored |
created_at | datetime | When the bundle request was created |
completed_at | datetime | When the bundle generation completed. This attribute is only applies to bundles with a finished or errored status. |
size_bytes | integer | Total size of the bundle in bytes. This attribute is only applies to bundles with a finished status. |
nodes | array of objects | Detailed status information for each node in the bundle |
nodes[].node | string | Node identifier |
nodes[].status | string | Status for this specific node: generating, finished, or errored |
nodes[].size_bytes | integer | Size of the bundle from this node in bytes. This attribute only applies to nodes with a finished status. |
nodes[].error | string | Error message for this node. This attribute is only for errored nodes. |
nodes[].completed_at | datetime | When bundle generation completed for this node. This attribute only applies to nodes with a finished or errored status. |
error | string | Error message. This attribute only applies to nodes with an errored status. |
Response codes
| Status | Response | Reason |
|---|---|---|
| 200 | JSON API document | Request successful |
| 400 | JSON API error object | Invalid request parameters |
| 401 | JSON API error object | Authentication required |
| 500 | JSON API error object | Internal server error |
Get support bundle details
This endpoint retrieves detailed information about a specific support bundle request, including per-node status information. Authentication is required to use this endpoint.
GET /api/v1/support/bundle-requests/:id
Path parameters
| Parameter | Type | Description |
|---|---|---|
id | string | Support bundle request identifier |
Sample request
curl \
--header "Authorization: Bearer $TOKEN" \
--request GET \
"https://tfe.example.com:8443/api/v1/support/bundle-requests/2025-09-26T09:21:06Z"
Sample response
{
"data": {
"id": "2025-09-26T09:21:06Z",
"type": "support-bundle",
"attributes": {
"status": "finished",
"created_at": "2025-05-07T14:30:00Z",
"completed_at": "2025-05-07T14:35:12Z",
"size_bytes": 15728640,
"error": null,
"nodes": [
{
"node": "node-id-1",
"status": "finished",
"size_bytes": 7864320,
"error": null,
"completed_at": "2025-05-07T14:32:45Z"
},
{
"node": "node-id-2",
"status": "finished",
"size_bytes": 7864320,
"error": null,
"completed_at": "2025-05-07T14:35:12Z"
}
]
},
"links": {
"self": "/support/bundle-requests/2025-09-26T09:21:06Z",
"download": "/support/bundle-requests/2025-09-26T09:21:06Z/download"
}
}
}
Response attributes
The response includes all attributes from the list endpoint, plus detailed per-node information:
| Attribute | Type | Description |
|---|---|---|
id | string | Unique identifier for the support bundle request |
status | string | Overall status of the bundle request: generating, finished, or errored. If one or more nodes are errored, the overall status is errored. If one or more nodes are generating, the overall status is generating. Otherwise, the status is finished. |
created_at | datetime | When the bundle request was created |
completed_at | datetime | When all bundle generation completed across all nodes. This attribute only applies to finished and errored bundles. |
size_bytes | integer | Total size of all bundles from all nodes in bytes. This attribute only applies to bundles with a finished status. |
error | string | Overall error message if any node failed during generation. This attribute only applies to bundles with an errored status. |
nodes | array of objects | Detailed status information for each node in the bundle |
nodes[].node | string | Node identifier |
nodes[].status | string | Status for this specific node: generating, finished, or errored. |
nodes[].size_bytes | integer | Size of the bundle from this node in bytes. This attribute only applies to nodes with a finished status. |
nodes[].error | string | Error message for this node. This attribute only applies to nodes with an errored status. |
nodes[].completed_at | datetime | When bundle generation completed for this node. This attribute only applies to nodes with a finished or errored status. |
Response codes
| Status | Response | Reason |
|---|---|---|
| 200 | JSON API document | Request successful |
| 401 | JSON API error object | Authentication required |
| 404 | JSON API error object | Specified support bundle request ID not found |
| 500 | JSON API error object | Internal server error |
Download support bundle
This endpoint downloads a gzip-compressed tarball for a completed support bundle. Authentication is required to use this endpoint.
GET /api/v1/support/bundle-requests/:id/download
Path and query parameters
| Parameter | Type | Description |
|---|---|---|
id | string (path) | Support bundle request identifier |
nodes | array of strings (query) | Optional. When specified, download only the bundle files for these node IDs. Repeat the nodes parameter for multiple nodes, for example: ?nodes=node-id-1&nodes=node-id-2. |
Sample request
curl \
--header "Authorization: Bearer $TOKEN" \
--request GET \
"https://tfe.example.com:8443/api/v1/support/bundle-requests/2025-05-07T14:30:00Z/download?nodes=node-id-1&nodes=node-id-2"
Success response
- Status:
200 OK - Headers:
- Body: Binary gzip-compressed tarball, such as tar.gz, containing the requested support bundle data.
Example downloaded bundle structure:
support-bundle-550e8400-e29b-41d4-a716-446655440000.tar.gz
└── 2025-05-08T10:15:30Z
├── node-id-1
│ └── node-id-1-support-bundle-2025-05-08T10:15:30Z.tar.gz
└── node-id-2
└── node-id-2-support-bundle-2025-05-08T10:15:30Z.tar.gz
Response codes
| Status | Response | Reason |
|---|---|---|
| 200 | Binary tar.gz | Request successful |
| 400 | JSON API error object | Invalid request parameters |
| 401 | JSON API error object | Authentication required |
| 404 | JSON API error object | Specified support bundle request ID not found |
| 409 | JSON API error object | Support bundle is still generating |
| [410][] | JSON API error object | Support bundle has been deleted and is no longer available |
| 500 | JSON API error object | Internal server error |
Delete support bundle
This endpoint permanently removes a support bundle request and any generated bundles from the server. Authentication is required to use this endpoint.
DELETE /api/v1/support/bundle-requests/:id
Path and query parameters
| Parameter | Type | Description |
|---|---|---|
id | string (path) | Support bundle request identifier |
Sample request
curl \
--header "Authorization: Bearer $TOKEN" \
--request DELETE \
"https://tfe.example.com:8443/api/v1/support/bundle-requests/2025-09-26T09:21:06Z"
Success response
- Status:
204 No Content
Response codes
| Status | Response | Reason |
|---|---|---|
| 204 | No Content | Request successful |
| 401 | JSON API error object | Authentication required |
| 404 | JSON API error object | Specified support bundle request ID not found |
| 409 | JSON API error object | Support bundle is still generating |
| [410][] | JSON API error object | Support bundle has been deleted and is no longer available |
| 500 | JSON API error object | Internal server error |
System API Overview
Terraform Enterprise Only: The System API is exclusive to Terraform Enterprise. It enables access to deployment configuration and data.
This API is distinct from the regular Admin API and the Backup and Restore API, with its own authentication mechanism.
Authentication
Requests to the /api/v1/ping and /api/v1/usage/bundle endpoints must be authenticated with a bearer token generated specifically for them using the tfectl admin api-token generate command. For more information on the token creation, and management, refer to the tfectl documentation.
Use the HTTP Header Authorization with the value Bearer <token>.
Rate Limiting
All System API endpoints are rate limited to 1 request per second per authentication token.
Port Configuration
By default, the System API is accessible on HTTPS port 8443. This port can be configured through the TFE_ADMIN_HTTPS_PORT environment variable in your deployment configuration.
Refer to Network settings in the configuration reference for more information about network configuration.
Versioning
The System API is versioned under the /api/v1 prefix and is separate from the main Terraform Enterprise API.
For example, if the API endpoint documentation defines the path /ping then the full path is /api/v1/ping.