curl --request PATCH \
--url https://{clinic}.{region}.practicehub.io/v3/api/locations/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"website": "<string>",
"email": "jsmith@example.com",
"phone_number": "<string>",
"custom_reference": "<string>",
"online_booking": true,
"line_1": "<string>",
"line_2": "<string>",
"line_3": "<string>",
"city": "<string>",
"state": "<string>",
"postal_code": "<string>",
"metadata": {}
}
'import requests
url = "https://{clinic}.{region}.practicehub.io/v3/api/locations/{id}"
payload = {
"name": "<string>",
"website": "<string>",
"email": "jsmith@example.com",
"phone_number": "<string>",
"custom_reference": "<string>",
"online_booking": True,
"line_1": "<string>",
"line_2": "<string>",
"line_3": "<string>",
"city": "<string>",
"state": "<string>",
"postal_code": "<string>",
"metadata": {}
}
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({
name: '<string>',
website: '<string>',
email: 'jsmith@example.com',
phone_number: '<string>',
custom_reference: '<string>',
online_booking: true,
line_1: '<string>',
line_2: '<string>',
line_3: '<string>',
city: '<string>',
state: '<string>',
postal_code: '<string>',
metadata: {}
})
};
fetch('https://{clinic}.{region}.practicehub.io/v3/api/locations/{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://{clinic}.{region}.practicehub.io/v3/api/locations/{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([
'name' => '<string>',
'website' => '<string>',
'email' => 'jsmith@example.com',
'phone_number' => '<string>',
'custom_reference' => '<string>',
'online_booking' => true,
'line_1' => '<string>',
'line_2' => '<string>',
'line_3' => '<string>',
'city' => '<string>',
'state' => '<string>',
'postal_code' => '<string>',
'metadata' => [
]
]),
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://{clinic}.{region}.practicehub.io/v3/api/locations/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"website\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone_number\": \"<string>\",\n \"custom_reference\": \"<string>\",\n \"online_booking\": true,\n \"line_1\": \"<string>\",\n \"line_2\": \"<string>\",\n \"line_3\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"metadata\": {}\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://{clinic}.{region}.practicehub.io/v3/api/locations/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"website\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone_number\": \"<string>\",\n \"custom_reference\": \"<string>\",\n \"online_booking\": true,\n \"line_1\": \"<string>\",\n \"line_2\": \"<string>\",\n \"line_3\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{clinic}.{region}.practicehub.io/v3/api/locations/{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 \"name\": \"<string>\",\n \"website\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone_number\": \"<string>\",\n \"custom_reference\": \"<string>\",\n \"online_booking\": true,\n \"line_1\": \"<string>\",\n \"line_2\": \"<string>\",\n \"line_3\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": 1,
"name": "City Centre Clinic",
"email": "hello@citycentreclinic.example",
"phone_number": "+441614960102",
"website": "https://citycentreclinic.example",
"shift_open": true,
"online_booking": true,
"feedback_url": "https://reviews.example.org/city-centre-clinic",
"feedback_rating_trigger": 4,
"feedback_visit_trigger": "3",
"updated_at": "2026-05-14T09:30:00Z",
"created_at": "2024-10-01T12:00:00Z",
"calendar_view": 2
}
}{
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"message": "<string>",
"code": "<string>",
"errors": {}
}Update locations
curl --request PATCH \
--url https://{clinic}.{region}.practicehub.io/v3/api/locations/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"website": "<string>",
"email": "jsmith@example.com",
"phone_number": "<string>",
"custom_reference": "<string>",
"online_booking": true,
"line_1": "<string>",
"line_2": "<string>",
"line_3": "<string>",
"city": "<string>",
"state": "<string>",
"postal_code": "<string>",
"metadata": {}
}
'import requests
url = "https://{clinic}.{region}.practicehub.io/v3/api/locations/{id}"
payload = {
"name": "<string>",
"website": "<string>",
"email": "jsmith@example.com",
"phone_number": "<string>",
"custom_reference": "<string>",
"online_booking": True,
"line_1": "<string>",
"line_2": "<string>",
"line_3": "<string>",
"city": "<string>",
"state": "<string>",
"postal_code": "<string>",
"metadata": {}
}
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({
name: '<string>',
website: '<string>',
email: 'jsmith@example.com',
phone_number: '<string>',
custom_reference: '<string>',
online_booking: true,
line_1: '<string>',
line_2: '<string>',
line_3: '<string>',
city: '<string>',
state: '<string>',
postal_code: '<string>',
metadata: {}
})
};
fetch('https://{clinic}.{region}.practicehub.io/v3/api/locations/{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://{clinic}.{region}.practicehub.io/v3/api/locations/{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([
'name' => '<string>',
'website' => '<string>',
'email' => 'jsmith@example.com',
'phone_number' => '<string>',
'custom_reference' => '<string>',
'online_booking' => true,
'line_1' => '<string>',
'line_2' => '<string>',
'line_3' => '<string>',
'city' => '<string>',
'state' => '<string>',
'postal_code' => '<string>',
'metadata' => [
]
]),
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://{clinic}.{region}.practicehub.io/v3/api/locations/{id}"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"website\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone_number\": \"<string>\",\n \"custom_reference\": \"<string>\",\n \"online_booking\": true,\n \"line_1\": \"<string>\",\n \"line_2\": \"<string>\",\n \"line_3\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"metadata\": {}\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://{clinic}.{region}.practicehub.io/v3/api/locations/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"website\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone_number\": \"<string>\",\n \"custom_reference\": \"<string>\",\n \"online_booking\": true,\n \"line_1\": \"<string>\",\n \"line_2\": \"<string>\",\n \"line_3\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"metadata\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{clinic}.{region}.practicehub.io/v3/api/locations/{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 \"name\": \"<string>\",\n \"website\": \"<string>\",\n \"email\": \"jsmith@example.com\",\n \"phone_number\": \"<string>\",\n \"custom_reference\": \"<string>\",\n \"online_booking\": true,\n \"line_1\": \"<string>\",\n \"line_2\": \"<string>\",\n \"line_3\": \"<string>\",\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"postal_code\": \"<string>\",\n \"metadata\": {}\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": 1,
"name": "City Centre Clinic",
"email": "hello@citycentreclinic.example",
"phone_number": "+441614960102",
"website": "https://citycentreclinic.example",
"shift_open": true,
"online_booking": true,
"feedback_url": "https://reviews.example.org/city-centre-clinic",
"feedback_rating_trigger": 4,
"feedback_visit_trigger": "3",
"updated_at": "2026-05-14T09:30:00Z",
"created_at": "2024-10-01T12:00:00Z",
"calendar_view": 2
}
}{
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"message": "<string>",
"code": "<string>",
"errors": {}
}{
"message": "<string>",
"code": "<string>",
"errors": {}
}Authorizations
API key from Developers → API Keys, sent as Authorization: Bearer .
Path Parameters
Body
The location's name as shown across the app. Locations are managed in Settings.
255The location's website URL.
255Contact email address for the location.
255Contact phone number for the location.
255Your own reference for the location (write-only; e.g. a branch code in your other system).
255Whether the location is offered in online booking.
First line of the location's postal address (write-only — a location's address is not readable through the API yet).
255Second address line (write-only).
255Third address line (write-only).
255Town or city of the address (write-only).
255County, state or region (write-only).
255Postcode / ZIP (write-only).
255ISO 3166-1 alpha-2 country code, e.g. GB (write-only).
AF, AL, DZ, AS, AD, AO, AI, AQ, AG, AR, AM, AW, AU, AT, AZ, BS, BH, BD, BB, BY, BE, BZ, BJ, BM, BT, BO, BQ, BA, BW, BV, BR, IO, BN, BG, BF, BI, CV, KH, CM, CA, KY, CF, TD, CL, CN, CX, CC, CO, KM, CD, CG, CK, CR, HR, CU, CW, CY, CZ, CI, DK, DJ, DM, DO, EC, EG, SV, GQ, ER, EE, SZ, ET, FK, FO, FJ, FI, FR, GF, PF, TF, GA, GM, GE, DE, GH, GI, GR, GL, GD, GP, GU, GT, GG, GN, GW, GY, HT, HM, VA, HN, HK, HU, IS, IN, ID, IR, IQ, IE, IM, IL, IT, JM, JP, JE, JO, KZ, KE, KI, KP, KR, KW, KG, LA, LV, LB, LS, LR, LY, LI, LT, LU, MO, MG, MW, MY, MV, ML, MT, MH, MQ, MR, MU, YT, MX, FM, MD, MC, MN, ME, MS, MA, MZ, MM, NA, NR, NP, NL, NC, NZ, NI, NE, NG, NU, NF, MP, NO, OM, PK, PW, PS, PA, PG, PY, PE, PH, PN, PL, PT, PR, QA, MK, RO, RU, RW, RE, BL, SH, KN, LC, MF, PM, VC, WS, SM, ST, SA, SN, RS, SC, SL, SG, SX, SK, SI, SB, SO, ZA, GS, SS, ES, LK, SD, SR, SJ, SE, CH, SY, TW, TJ, TZ, TH, TL, TG, TK, TO, TT, TN, TR, TM, TC, TV, UG, UA, AE, GB, UM, US, UY, UZ, VU, VE, VN, VG, VI, WF, EH, YE, ZM, ZW, AX Integrator-owned key/value metadata (max 50 keys). Values are strings (≤500 chars), numbers or booleans and read back with the type they were written with. On write, a null value removes the key. Filter with metadata[key]=op:value; number operands compare numerically.
Show child attributes
Show child attributes
Response
The resource
Show child attributes
Show child attributes
{
"id": 1,
"name": "City Centre Clinic",
"email": "hello@citycentreclinic.example",
"phone_number": "+441614960102",
"website": "https://citycentreclinic.example",
"shift_open": true,
"online_booking": true,
"feedback_url": "https://reviews.example.org/city-centre-clinic",
"feedback_rating_trigger": 4,
"feedback_visit_trigger": "3",
"updated_at": "2026-05-14T09:30:00Z",
"created_at": "2024-10-01T12:00:00Z",
"calendar_view": 2
}
Was this page helpful?