# GitLab Terraform API

**Canonical:** https://apis.io/apis/gitlab/gitlab-terraform-api/  
**Provider:** GitLab — https://apis.io/providers/gitlab/  
**Base URL:** https://gitlab.com/api/v4  
**Documentation:** https://docs.gitlab.com/api/rest/

GitLab Terraform API is one of 189 APIs that [GitLab](https://apis.io/providers/gitlab/) publishes on the [APIs.io](https://apis.io/) network, described by a machine-readable OpenAPI specification and an AsyncAPI event-driven specification. This API exposes 16 JSON Schema definitions. Tagged areas include Terraform. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, authentication docs, an API reference, rate-limit docs, an AsyncAPI specification, and 16 JSON Schemas.

Use this API to interact with the [Terraform CLI](https://docs.gitlab.com/user/packages/terraform_module_registry/). > [!warning] > This API is used by the [Terraform CLI](https://developer.hashicorp.com/terraform) > and is generally not meant for manual consumption. Undocumented authentication methods might be removed in the future.

## Operations (18)

| Method | Path | Summary |
|---|---|---|
| GET | `/api/v4/projects/{id}/terraform/state/{name}/versions/{serial}` | Retrieve a Terraform state version |
| DELETE | `/api/v4/projects/{id}/terraform/state/{name}/versions/{serial}` | Delete a Terraform state version |
| GET | `/api/v4/projects/{id}/terraform/state/{name}` | Retrieve a Terraform state |
| POST | `/api/v4/projects/{id}/terraform/state/{name}` | Create or update a Terraform state |
| DELETE | `/api/v4/projects/{id}/terraform/state/{name}` | Delete a Terraform state |
| POST | `/api/v4/projects/{id}/terraform/state/{name}/authorize` | Authorize Terraform state upload |
| POST | `/api/v4/projects/{id}/terraform/state/{name}/lock` | Lock a Terraform state |
| DELETE | `/api/v4/projects/{id}/terraform/state/{name}/lock` | Unlock a Terraform state |
| GET | `/api/v4/projects/{id}/packages/terraform/modules/{module_name}/{module_system}` | Download the latest version of a module |
| GET | `/api/v4/projects/{id}/packages/terraform/modules/{module_name}/{module_system}/{module_version}` | Download a specific version of a module |
| PUT | `/api/v4/projects/{id}/packages/terraform/modules/{module_name}/{module_system}/{module_version}/file/authorize` | Workhorse authorize Terraform Module package file |
| PUT | `/api/v4/projects/{id}/packages/terraform/modules/{module_name}/{module_system}/{module_version}/file` | Upload Terraform Module package file |
| GET | `/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}/versions` | List all available versions for a module |
| GET | `/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}/download` | Retrieve download URL for latest module version |
| GET | `/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}` | Retrieve latest version for a module |
| GET | `/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}/{module_version}/download` | Get download location for specific version of a module |
| GET | `/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}/{module_version}/file` | Download specific version of a module |
| GET | `/api/v4/packages/terraform/modules/v1/{module_namespace}/{module_name}/{module_system}/{module_version}` | Get details about specific version of a module |

## Machine-readable artifacts (65)

- **OpenAPI** — https://artifacts.apis.io/gitlab/openapi/gitlab-terraform-api-openapi.yml
- **Documentation** — https://docs.gitlab.com/api/openapi/
- **Documentation** — https://docs.gitlab.com/api/issues/
- **Authentication** — https://docs.gitlab.com/api/rest/authentication/
- **JSONSchema** — https://artifacts.apis.io/gitlab/json-schema/gitlab-put-api-v4-application-settings-request-schema.json
- **JSONSchema** — https://artifacts.apis.io/gitlab/json-schema/gitlab-apientities-geo-node-status-schema.json
- **JSONSchema** — https://artifacts.apis.io/gitlab/json-schema/gitlab-apientities-geo-site-status-schema.json
- **JSONSchema** — https://artifacts.apis.io/gitlab/json-schema/gitlab-apientities-application-setting-schema.json
- **JSONSchema** — https://artifacts.apis.io/gitlab/json-schema/gitlab-post-api-v4-geo-status-request-schema.json
- **JSONSchema** — https://artifacts.apis.io/gitlab/json-schema/gitlab-put-api-v4-projects-id-request-schema.json
- **Documentation** — https://docs.gitlab.com/api/merge_requests/
- **Documentation** — https://docs.gitlab.com/api/pipelines/
- **Documentation** — https://docs.gitlab.com/api/jobs/
- **Documentation** — https://docs.gitlab.com/api/runners/
- **Documentation** — https://docs.gitlab.com/api/users/
- **Documentation** — https://docs.gitlab.com/api/repositories/
- **Documentation** — https://docs.gitlab.com/api/commits/
- **Documentation** — https://docs.gitlab.com/api/branches/
- **Documentation** — https://docs.gitlab.com/api/tags/
- **Documentation** — https://docs.gitlab.com/api/releases/
- **Documentation** — https://docs.gitlab.com/api/environments/
- **Documentation** — https://docs.gitlab.com/api/deployments/
- **Documentation** — https://docs.gitlab.com/api/pipeline_schedules/
- **Documentation** — https://docs.gitlab.com/api/labels/
- **Documentation** — https://docs.gitlab.com/api/milestones/
- **Documentation** — https://docs.gitlab.com/api/notes/
- **Documentation** — https://docs.gitlab.com/api/snippets/
- **Documentation** — https://docs.gitlab.com/api/packages/
- **Documentation** — https://docs.gitlab.com/api/container_registry/
- **Documentation** — https://docs.gitlab.com/api/vulnerabilities/
- **Documentation** — https://docs.gitlab.com/api/deploy_keys/
- **Documentation** — https://docs.gitlab.com/api/protected_branches/
- **Documentation** — https://docs.gitlab.com/api/wikis/
- **Documentation** — https://docs.gitlab.com/api/events/
- **Documentation** — https://docs.gitlab.com/api/search/
- **Documentation** — https://docs.gitlab.com/api/namespaces/
- **Documentation** — https://docs.gitlab.com/api/groups/
- **Documentation** — https://docs.gitlab.com/api/projects/
- **Documentation** — https://docs.gitlab.com/api/applications/
- **Documentation** — https://docs.gitlab.com/api/avatar/
- …and 25 more, listed in full on the page.

## Other GitLab APIs (12)

- [GitLab Orbit gRPC API](https://apis.io/apis/gitlab/gitlab-orbit-api/)
- [GitLab GraphQL API](https://apis.io/apis/gitlab/gitlab-graphql-api/)
- [GitLab Applications API](https://apis.io/apis/gitlab/gitlab-applications-api/)
- [GitLab Authorization API](https://apis.io/apis/gitlab/gitlab-authorization-api/)
- [GitLab Broadcast Messages API](https://apis.io/apis/gitlab/gitlab-broadcast-messages-api/)
- [GitLab Groups API](https://apis.io/apis/gitlab/gitlab-groups-api/)
- [GitLab Metadata API](https://apis.io/apis/gitlab/gitlab-metadata-api/)
- [GitLab Project Webhooks API](https://apis.io/apis/gitlab/gitlab-project-webhooks-api/)
- [GitLab Projects API](https://apis.io/apis/gitlab/gitlab-projects-api/)
- [GitLab Tokens API](https://apis.io/apis/gitlab/gitlab-tokens-api/)
- [GitLab User Info API](https://apis.io/apis/gitlab/gitlab-user-info-api/)
- [GitLab Webhook Configuration API](https://apis.io/apis/gitlab/gitlab-webhook-configuration-api/)

## Tags

Terraform

---

Profiled by [API Evangelist](https://apievangelist.com) and published on [APIs.io](https://apis.io/apis/gitlab/gitlab-terraform-api/). The API's provider profile, Kin Score and agent-readiness rating are at https://apis.io/providers/gitlab/.
