Bring back a member site that was taken down
Undoes a take-down. The site returns to published when it still has something published (a current bundle or an earlier publish), else to draft, and taken_down_at is cleared. Only the site comes back; a branch taken down with it stays down and is brought back on its own, once the site it was made from is back. The change is recorded in the audit log as the admin’s, and the sites gateway is told, so members can open a published site again at once. Needs application_themes.update and a signed-in admin. Not the same as restore, which restores an earlier version of the site’s settings.
curl --request POST \
--url https://api.fluid.app/api/company/v2026-10/member-sites/{id}/reinstate \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/company/v2026-10/member-sites/{id}/reinstate"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/company/v2026-10/member-sites/{id}/reinstate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fluid.app/api/company/v2026-10/member-sites/{id}/reinstate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/company/v2026-10/member-sites/{id}/reinstate"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fluid.app/api/company/v2026-10/member-sites/{id}/reinstate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/company/v2026-10/member-sites/{id}/reinstate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"member_site": {
"id": "019a2c4d-5e6f-7a7b-8c9d-0e1f2a3b4c5d",
"handle": "riley-shop",
"name": "Riley's Shop",
"owner_kind": "member",
"owner_member": {
"id": "019a1111-2222-7333-8444-555566667777",
"display_name": "Riley Rep"
},
"copied_from_id": null,
"access": {
"declared": false,
"uses": []
},
"visibility": "public",
"status": "published",
"taken_down_at": null,
"company_lock": "none",
"made_private_at": null,
"made_private_by_user_id": null,
"required": false,
"position": 0,
"featured": false,
"feature_position": null,
"layout_name": null,
"settings": {},
"content_version": "019a2c4d-6f7a-7b8c-9d0e-1f2a3b4c5d6e",
"share_url": "https://shop.example.com/accounts/riley-shop",
"site_url": "https://shop.example.com/accounts/riley-shop",
"lock_version": 4,
"created_at": "2026-10-14T11:00:00Z",
"updated_at": "2026-11-09T09:30:00Z"
},
"status": 200,
"meta": {
"request_uuid": "7d2e4f61-0a3b-4c5d-8e9f-1a2b3c4d5e6f",
"timestamp": "2026-11-09T09:30:00Z"
}
}{}{}{
"error": {
"message": "<string>",
"details": {}
},
"status": 123,
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"message": "<string>",
"details": {}
},
"status": 123,
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"message": "<string>",
"details": {}
},
"status": 123,
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}Authorizations
A company admin credential for your company, or a droplet installation token with the website scope for reads, except on the share routes, which refuse a droplet token.
Path Parameters
The site's id.
curl --request POST \
--url https://api.fluid.app/api/company/v2026-10/member-sites/{id}/reinstate \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/company/v2026-10/member-sites/{id}/reinstate"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/company/v2026-10/member-sites/{id}/reinstate', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.fluid.app/api/company/v2026-10/member-sites/{id}/reinstate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/company/v2026-10/member-sites/{id}/reinstate"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fluid.app/api/company/v2026-10/member-sites/{id}/reinstate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/company/v2026-10/member-sites/{id}/reinstate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"member_site": {
"id": "019a2c4d-5e6f-7a7b-8c9d-0e1f2a3b4c5d",
"handle": "riley-shop",
"name": "Riley's Shop",
"owner_kind": "member",
"owner_member": {
"id": "019a1111-2222-7333-8444-555566667777",
"display_name": "Riley Rep"
},
"copied_from_id": null,
"access": {
"declared": false,
"uses": []
},
"visibility": "public",
"status": "published",
"taken_down_at": null,
"company_lock": "none",
"made_private_at": null,
"made_private_by_user_id": null,
"required": false,
"position": 0,
"featured": false,
"feature_position": null,
"layout_name": null,
"settings": {},
"content_version": "019a2c4d-6f7a-7b8c-9d0e-1f2a3b4c5d6e",
"share_url": "https://shop.example.com/accounts/riley-shop",
"site_url": "https://shop.example.com/accounts/riley-shop",
"lock_version": 4,
"created_at": "2026-10-14T11:00:00Z",
"updated_at": "2026-11-09T09:30:00Z"
},
"status": 200,
"meta": {
"request_uuid": "7d2e4f61-0a3b-4c5d-8e9f-1a2b3c4d5e6f",
"timestamp": "2026-11-09T09:30:00Z"
}
}{}{}{
"error": {
"message": "<string>",
"details": {}
},
"status": 123,
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"message": "<string>",
"details": {}
},
"status": 123,
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"error": {
"message": "<string>",
"details": {}
},
"status": 123,
"meta": {
"request_uuid": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}