Configure the TikTok shop connection
Sets the house-account member (house_member_id, null to clear) that receives volume credit for TikTok orders with no creator or an unmatched or ambiguous creator. It applies only to orders imported after the house member is set; earlier orders are never credited; the member must be an active member of this company, otherwise 422. At least one of tiktok_warehouse_id and house_member_id is required, and fluid_warehouse_id requires tiktok_warehouse_id. When tiktok_warehouse_id is sent, sets the TikTok logistics warehouse that inventory publishing uses for the company’s TikTok Shop connection. Without fluid_warehouse_id, tiktok_warehouse_id must either equal the id already stored on the connection or, for a connection with no bound Fluid warehouse yet, match exactly one Fluid warehouse of this company by external_integration_market_id (the connection is then bound to it); anything else returns 422 and leaves the connection unchanged. Changing a bound connection to a different TikTok warehouse requires fluid_warehouse_id. With fluid_warehouse_id, the TikTok warehouse is checked against the shop’s warehouses (it must exist, be a sales warehouse, and not be disabled); then, in one transaction, the connection stores the TikTok warehouse id and the Fluid warehouse id (the warehouse must belong to this company); no warehouse record is modified. Each successful mapping re-syncs inventory for the connection’s listed SKUs to TikTok in the background, so repeating a request is safe. Requires a company admin token with the company_settings.update permission, and also warehouses.update when fluid_warehouse_id is sent (droplet tokens cannot send it). Returns the updated connection.
curl --request PATCH \
--url https://api.fluid.app/api/v202506/tiktok/connection \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"tiktok_warehouse_id": "7302198465731028741",
"fluid_warehouse_id": 12,
"house_member_id": "0198f3a2-7c41-7d2e-9b5a-3e1f4a6c8d90"
}
'import requests
url = "https://api.fluid.app/api/v202506/tiktok/connection"
payload = {
"tiktok_warehouse_id": "7302198465731028741",
"fluid_warehouse_id": 12,
"house_member_id": "0198f3a2-7c41-7d2e-9b5a-3e1f4a6c8d90"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
tiktok_warehouse_id: '7302198465731028741',
fluid_warehouse_id: 12,
house_member_id: '0198f3a2-7c41-7d2e-9b5a-3e1f4a6c8d90'
})
};
fetch('https://api.fluid.app/api/v202506/tiktok/connection', 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/v202506/tiktok/connection",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'tiktok_warehouse_id' => '7302198465731028741',
'fluid_warehouse_id' => 12,
'house_member_id' => '0198f3a2-7c41-7d2e-9b5a-3e1f4a6c8d90'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/v202506/tiktok/connection"
payload := strings.NewReader("{\n \"tiktok_warehouse_id\": \"7302198465731028741\",\n \"fluid_warehouse_id\": 12,\n \"house_member_id\": \"0198f3a2-7c41-7d2e-9b5a-3e1f4a6c8d90\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.fluid.app/api/v202506/tiktok/connection")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"tiktok_warehouse_id\": \"7302198465731028741\",\n \"fluid_warehouse_id\": 12,\n \"house_member_id\": \"0198f3a2-7c41-7d2e-9b5a-3e1f4a6c8d90\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202506/tiktok/connection")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"tiktok_warehouse_id\": \"7302198465731028741\",\n \"fluid_warehouse_id\": 12,\n \"house_member_id\": \"0198f3a2-7c41-7d2e-9b5a-3e1f4a6c8d90\"\n}"
response = http.request(request)
puts response.read_body{
"connection": {
"id": 3342,
"shop_id": "7494851036219083526",
"shop_name": "Dunder Mifflin Paper Company",
"region": "US",
"seller_type": "LOCAL",
"status": "connected",
"access_token_expires_at": "2026-10-07T15:32:08.000Z",
"refresh_token_expires_at": "2027-03-13T15:32:08.000Z",
"last_error": null,
"connected_at": "2026-09-14T15:32:08.000Z",
"disconnected_at": null,
"tiktok_warehouse_id": "7302198465731028741"
},
"status": 200,
"meta": {
"request_uuid": "8b4e2f71-3c9a-4d6e-b1f0-5a7c9e2d4b18",
"timestamp": "2026-09-30T16:42:11Z"
}
}{
"message": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Id of the active company member to credit with TikTok orders that have no matched creator. Send null to clear the house account.
Id of the company's Fluid warehouse to map to the TikTok warehouse. Omit it to select a warehouse that is already mapped.
x >= 1curl --request PATCH \
--url https://api.fluid.app/api/v202506/tiktok/connection \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"tiktok_warehouse_id": "7302198465731028741",
"fluid_warehouse_id": 12,
"house_member_id": "0198f3a2-7c41-7d2e-9b5a-3e1f4a6c8d90"
}
'import requests
url = "https://api.fluid.app/api/v202506/tiktok/connection"
payload = {
"tiktok_warehouse_id": "7302198465731028741",
"fluid_warehouse_id": 12,
"house_member_id": "0198f3a2-7c41-7d2e-9b5a-3e1f4a6c8d90"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
tiktok_warehouse_id: '7302198465731028741',
fluid_warehouse_id: 12,
house_member_id: '0198f3a2-7c41-7d2e-9b5a-3e1f4a6c8d90'
})
};
fetch('https://api.fluid.app/api/v202506/tiktok/connection', 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/v202506/tiktok/connection",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'tiktok_warehouse_id' => '7302198465731028741',
'fluid_warehouse_id' => 12,
'house_member_id' => '0198f3a2-7c41-7d2e-9b5a-3e1f4a6c8d90'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/v202506/tiktok/connection"
payload := strings.NewReader("{\n \"tiktok_warehouse_id\": \"7302198465731028741\",\n \"fluid_warehouse_id\": 12,\n \"house_member_id\": \"0198f3a2-7c41-7d2e-9b5a-3e1f4a6c8d90\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.fluid.app/api/v202506/tiktok/connection")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"tiktok_warehouse_id\": \"7302198465731028741\",\n \"fluid_warehouse_id\": 12,\n \"house_member_id\": \"0198f3a2-7c41-7d2e-9b5a-3e1f4a6c8d90\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202506/tiktok/connection")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"tiktok_warehouse_id\": \"7302198465731028741\",\n \"fluid_warehouse_id\": 12,\n \"house_member_id\": \"0198f3a2-7c41-7d2e-9b5a-3e1f4a6c8d90\"\n}"
response = http.request(request)
puts response.read_body{
"connection": {
"id": 3342,
"shop_id": "7494851036219083526",
"shop_name": "Dunder Mifflin Paper Company",
"region": "US",
"seller_type": "LOCAL",
"status": "connected",
"access_token_expires_at": "2026-10-07T15:32:08.000Z",
"refresh_token_expires_at": "2027-03-13T15:32:08.000Z",
"last_error": null,
"connected_at": "2026-09-14T15:32:08.000Z",
"disconnected_at": null,
"tiktok_warehouse_id": "7302198465731028741"
},
"status": 200,
"meta": {
"request_uuid": "8b4e2f71-3c9a-4d6e-b1f0-5a7c9e2d4b18",
"timestamp": "2026-09-30T16:42:11Z"
}
}{
"message": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}