Members
Update a rep
Updates a rep’s profile, username, external id, rank, metadata (at most 50 keys), marketing preferences, tax fields, active state, or default address. The id may be the integer rep id or the member UUID. Email cannot be changed here; use the member change-email endpoint instead. Requires a company admin-tier Bearer token with members manage permission.
PATCH
/
api
/
v2025-06
/
reps
/
{id}
Update a rep
curl --request PATCH \
--url https://api.fluid.app/api/v2025-06/reps/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"rep": {
"phone": "+15705550199",
"rank_id": 9,
"metadata": {
"branch": "Scranton",
"territory": "Lackawanna County",
"beet_farm": "Schrute Farms"
},
"sms_marketing": false
}
}
'import requests
url = "https://api.fluid.app/api/v2025-06/reps/{id}"
payload = { "rep": {
"phone": "+15705550199",
"rank_id": 9,
"metadata": {
"branch": "Scranton",
"territory": "Lackawanna County",
"beet_farm": "Schrute Farms"
},
"sms_marketing": False
} }
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({
rep: {
phone: '+15705550199',
rank_id: 9,
metadata: {branch: 'Scranton', territory: 'Lackawanna County', beet_farm: 'Schrute Farms'},
sms_marketing: false
}
})
};
fetch('https://api.fluid.app/api/v2025-06/reps/{id}', 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/v2025-06/reps/{id}",
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([
'rep' => [
'phone' => '+15705550199',
'rank_id' => 9,
'metadata' => [
'branch' => 'Scranton',
'territory' => 'Lackawanna County',
'beet_farm' => 'Schrute Farms'
],
'sms_marketing' => false
]
]),
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/v2025-06/reps/{id}"
payload := strings.NewReader("{\n \"rep\": {\n \"phone\": \"+15705550199\",\n \"rank_id\": 9,\n \"metadata\": {\n \"branch\": \"Scranton\",\n \"territory\": \"Lackawanna County\",\n \"beet_farm\": \"Schrute Farms\"\n },\n \"sms_marketing\": false\n }\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/v2025-06/reps/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"rep\": {\n \"phone\": \"+15705550199\",\n \"rank_id\": 9,\n \"metadata\": {\n \"branch\": \"Scranton\",\n \"territory\": \"Lackawanna County\",\n \"beet_farm\": \"Schrute Farms\"\n },\n \"sms_marketing\": false\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v2025-06/reps/{id}")
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 \"rep\": {\n \"phone\": \"+15705550199\",\n \"rank_id\": 9,\n \"metadata\": {\n \"branch\": \"Scranton\",\n \"territory\": \"Lackawanna County\",\n \"beet_farm\": \"Schrute Farms\"\n },\n \"sms_marketing\": false\n }\n}"
response = http.request(request)
puts response.read_body{
"rep": {
"id": 48213,
"active": true,
"created_at": "2026-09-02T13:20:45Z",
"updated_at": "2026-09-23T11:02:19Z",
"external_id": "DM-1042",
"username": "dwight-schrute",
"share_guid": "dwight-schrute",
"first_name": "Dwight",
"last_name": "Schrute",
"email": "dwight.schrute@dundermifflin.com",
"phone": "+15705550199",
"image_url": "https://cdn.fluid.app/dunder-mifflin/avatars/dwight-schrute.jpg",
"full_name": "Dwight Schrute",
"name": "Dwight Schrute",
"country_code": "US",
"language_code": "en",
"rank": {
"id": 9,
"name": "Gold",
"external_id": "GOLD"
},
"member_id": "0192f7a3-5c1e-7d42-9b8a-3e6f1d2c4a57",
"tax_exempt": false,
"sales_tax_id": null
},
"meta": {
"request_id": "7f4d2b8e-1c9a-4e63-a5f0-9d3b6e2c7a18",
"timestamp": "2026-09-23T11:02:19Z"
}
}{
"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
}
}
}{
"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
}
}
}⌘I
Update a rep
curl --request PATCH \
--url https://api.fluid.app/api/v2025-06/reps/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"rep": {
"phone": "+15705550199",
"rank_id": 9,
"metadata": {
"branch": "Scranton",
"territory": "Lackawanna County",
"beet_farm": "Schrute Farms"
},
"sms_marketing": false
}
}
'import requests
url = "https://api.fluid.app/api/v2025-06/reps/{id}"
payload = { "rep": {
"phone": "+15705550199",
"rank_id": 9,
"metadata": {
"branch": "Scranton",
"territory": "Lackawanna County",
"beet_farm": "Schrute Farms"
},
"sms_marketing": False
} }
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({
rep: {
phone: '+15705550199',
rank_id: 9,
metadata: {branch: 'Scranton', territory: 'Lackawanna County', beet_farm: 'Schrute Farms'},
sms_marketing: false
}
})
};
fetch('https://api.fluid.app/api/v2025-06/reps/{id}', 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/v2025-06/reps/{id}",
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([
'rep' => [
'phone' => '+15705550199',
'rank_id' => 9,
'metadata' => [
'branch' => 'Scranton',
'territory' => 'Lackawanna County',
'beet_farm' => 'Schrute Farms'
],
'sms_marketing' => false
]
]),
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/v2025-06/reps/{id}"
payload := strings.NewReader("{\n \"rep\": {\n \"phone\": \"+15705550199\",\n \"rank_id\": 9,\n \"metadata\": {\n \"branch\": \"Scranton\",\n \"territory\": \"Lackawanna County\",\n \"beet_farm\": \"Schrute Farms\"\n },\n \"sms_marketing\": false\n }\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/v2025-06/reps/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"rep\": {\n \"phone\": \"+15705550199\",\n \"rank_id\": 9,\n \"metadata\": {\n \"branch\": \"Scranton\",\n \"territory\": \"Lackawanna County\",\n \"beet_farm\": \"Schrute Farms\"\n },\n \"sms_marketing\": false\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v2025-06/reps/{id}")
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 \"rep\": {\n \"phone\": \"+15705550199\",\n \"rank_id\": 9,\n \"metadata\": {\n \"branch\": \"Scranton\",\n \"territory\": \"Lackawanna County\",\n \"beet_farm\": \"Schrute Farms\"\n },\n \"sms_marketing\": false\n }\n}"
response = http.request(request)
puts response.read_body{
"rep": {
"id": 48213,
"active": true,
"created_at": "2026-09-02T13:20:45Z",
"updated_at": "2026-09-23T11:02:19Z",
"external_id": "DM-1042",
"username": "dwight-schrute",
"share_guid": "dwight-schrute",
"first_name": "Dwight",
"last_name": "Schrute",
"email": "dwight.schrute@dundermifflin.com",
"phone": "+15705550199",
"image_url": "https://cdn.fluid.app/dunder-mifflin/avatars/dwight-schrute.jpg",
"full_name": "Dwight Schrute",
"name": "Dwight Schrute",
"country_code": "US",
"language_code": "en",
"rank": {
"id": 9,
"name": "Gold",
"external_id": "GOLD"
},
"member_id": "0192f7a3-5c1e-7d42-9b8a-3e6f1d2c4a57",
"tax_exempt": false,
"sales_tax_id": null
},
"meta": {
"request_id": "7f4d2b8e-1c9a-4e63-a5f0-9d3b6e2c7a18",
"timestamp": "2026-09-23T11:02:19Z"
}
}{
"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
}
}
}{
"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
}
}
}