1---
2layout: "language"
3page_title: "Backend Type: http"
4sidebar_current: "docs-backends-types-standard-http"
5description: |-
6  Terraform can store state remotely at any valid HTTP endpoint.
7---
8
9# http
10
11**Kind: Standard (with optional locking)**
12
13Stores the state using a simple [REST](https://en.wikipedia.org/wiki/Representational_state_transfer) client.
14
15State will be fetched via GET, updated via POST, and purged with DELETE. The method used for updating is configurable.
16
17When locking support is enabled it will use LOCK and UNLOCK requests providing the lock info in the body. The endpoint should
18return a 423: Locked or 409: Conflict with the holding lock info when it's already taken, 200: OK for success. Any other status
19will be considered an error. The ID of the holding lock info will be added as a query parameter to state updates requests.
20
21## Example Usage
22
23```hcl
24terraform {
25  backend "http" {
26    address = "http://myrest.api.com/foo"
27    lock_address = "http://myrest.api.com/foo"
28    unlock_address = "http://myrest.api.com/foo"
29  }
30}
31```
32
33## Data Source Configuration
34
35```hcl
36data "terraform_remote_state" "foo" {
37  backend = "http"
38  config = {
39    address = "http://my.rest.api.com"
40  }
41}
42```
43
44## Configuration variables
45
46The following configuration options / environment variables are supported:
47
48 * `address` / `TF_HTTP_ADDRESS` - (Required) The address of the REST endpoint
49 * `update_method` / `TF_HTTP_UPDATE_METHOD` - (Optional) HTTP method to use
50   when updating state. Defaults to `POST`.
51 * `lock_address` / `TF_HTTP_LOCK_ADDRESS` - (Optional) The address of the lock
52   REST endpoint. Defaults to disabled.
53 * `lock_method` / `TF_HTTP_LOCK_METHOD` - (Optional) The HTTP method to use
54   when locking. Defaults to `LOCK`.
55 * `unlock_address` / `TF_HTTP_UNLOCK_ADDRESS` - (Optional) The address of the
56   unlock REST endpoint. Defaults to disabled.
57 * `unlock_method` / `TF_HTTP_UNLOCK_METHOD` - (Optional) The HTTP method to use
58   when unlocking. Defaults to `UNLOCK`.
59 * `username` / `TF_HTTP_USERNAME` - (Optional) The username for HTTP basic
60   authentication
61 * `password` / `TF_HTTP_PASSWORD` - (Optional) The password for HTTP basic
62   authentication
63 * `skip_cert_verification` - (Optional) Whether to skip TLS verification.
64   Defaults to `false`.
65 * `retry_max` / `TF_HTTP_RETRY_MAX` – (Optional) The number of HTTP request
66   retries. Defaults to `2`.
67 * `retry_wait_min` / `TF_HTTP_RETRY_WAIT_MIN` – (Optional) The minimum time in
68   seconds to wait between HTTP request attempts. Defaults to `1`.
69 * `retry_wait_max` / `TF_HTTP_RETRY_WAIT_MAX` – (Optional) The maximum time in
70   seconds to wait between HTTP request attempts. Defaults to `30`.
71