curl --request PATCH \
--url https://api.nexspace365.com/api/facilities/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Downtown Distribution Center",
"type": "warehouse",
"city": "Columbus",
"state": "OH",
"phone": "+1-614-555-0142",
"isActive": true
}
'import requests
url = "https://api.nexspace365.com/api/facilities/{id}"
payload = {
"name": "Downtown Distribution Center",
"type": "warehouse",
"city": "Columbus",
"state": "OH",
"phone": "+1-614-555-0142",
"isActive": True
}
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: 'Downtown Distribution Center',
type: 'warehouse',
city: 'Columbus',
state: 'OH',
phone: '+1-614-555-0142',
isActive: true
})
};
fetch('https://api.nexspace365.com/api/facilities/{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.nexspace365.com/api/facilities/{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' => 'Downtown Distribution Center',
'type' => 'warehouse',
'city' => 'Columbus',
'state' => 'OH',
'phone' => '+1-614-555-0142',
'isActive' => true
]),
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.nexspace365.com/api/facilities/{id}"
payload := strings.NewReader("{\n \"name\": \"Downtown Distribution Center\",\n \"type\": \"warehouse\",\n \"city\": \"Columbus\",\n \"state\": \"OH\",\n \"phone\": \"+1-614-555-0142\",\n \"isActive\": true\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.nexspace365.com/api/facilities/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Downtown Distribution Center\",\n \"type\": \"warehouse\",\n \"city\": \"Columbus\",\n \"state\": \"OH\",\n \"phone\": \"+1-614-555-0142\",\n \"isActive\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nexspace365.com/api/facilities/{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\": \"Downtown Distribution Center\",\n \"type\": \"warehouse\",\n \"city\": \"Columbus\",\n \"state\": \"OH\",\n \"phone\": \"+1-614-555-0142\",\n \"isActive\": true\n}"
response = http.request(request)
puts response.read_body{
"id": 1,
"name": "Downtown Distribution Center",
"type": "warehouse",
"address": "500 Industrial Pkwy",
"city": "Columbus",
"state": "OH",
"zip": "43004",
"phone": "+1-614-555-0142",
"email": "ops@acme.example.com",
"website": "https://acme.example.com",
"licenseNumber": null,
"bedCount": null,
"departments": [
"Receiving",
"Fulfillment",
"Shipping"
],
"isActive": true,
"createdAt": "2026-01-15T09:00:00Z",
"updatedAt": "2026-05-02T14:30:00Z"
}{
"error": {
"message": "Invalid or revoked API key",
"code": "UNAUTHENTICATED",
"suggestion": "Send a valid `Authorization: Bearer <token>` (nex_live_/nex_pat_ key, JWT, or OAuth access token).",
"retryable": false
}
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {},
"suggestion": "<string>",
"retryable": true
},
"requestId": "<string>"
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {},
"suggestion": "<string>",
"retryable": true
},
"requestId": "<string>"
}{
"error": {
"message": "Rate limit exceeded for this API key",
"code": "API_KEY_RATE_LIMITED",
"suggestion": "Wait until X-RateLimit-Reset before retrying, or batch operations.",
"retryable": true
}
}Update facility
Update facility information (requires appropriate permissions). Required API-key scope: facilities:write
curl --request PATCH \
--url https://api.nexspace365.com/api/facilities/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Downtown Distribution Center",
"type": "warehouse",
"city": "Columbus",
"state": "OH",
"phone": "+1-614-555-0142",
"isActive": true
}
'import requests
url = "https://api.nexspace365.com/api/facilities/{id}"
payload = {
"name": "Downtown Distribution Center",
"type": "warehouse",
"city": "Columbus",
"state": "OH",
"phone": "+1-614-555-0142",
"isActive": True
}
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: 'Downtown Distribution Center',
type: 'warehouse',
city: 'Columbus',
state: 'OH',
phone: '+1-614-555-0142',
isActive: true
})
};
fetch('https://api.nexspace365.com/api/facilities/{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.nexspace365.com/api/facilities/{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' => 'Downtown Distribution Center',
'type' => 'warehouse',
'city' => 'Columbus',
'state' => 'OH',
'phone' => '+1-614-555-0142',
'isActive' => true
]),
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.nexspace365.com/api/facilities/{id}"
payload := strings.NewReader("{\n \"name\": \"Downtown Distribution Center\",\n \"type\": \"warehouse\",\n \"city\": \"Columbus\",\n \"state\": \"OH\",\n \"phone\": \"+1-614-555-0142\",\n \"isActive\": true\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.nexspace365.com/api/facilities/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Downtown Distribution Center\",\n \"type\": \"warehouse\",\n \"city\": \"Columbus\",\n \"state\": \"OH\",\n \"phone\": \"+1-614-555-0142\",\n \"isActive\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.nexspace365.com/api/facilities/{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\": \"Downtown Distribution Center\",\n \"type\": \"warehouse\",\n \"city\": \"Columbus\",\n \"state\": \"OH\",\n \"phone\": \"+1-614-555-0142\",\n \"isActive\": true\n}"
response = http.request(request)
puts response.read_body{
"id": 1,
"name": "Downtown Distribution Center",
"type": "warehouse",
"address": "500 Industrial Pkwy",
"city": "Columbus",
"state": "OH",
"zip": "43004",
"phone": "+1-614-555-0142",
"email": "ops@acme.example.com",
"website": "https://acme.example.com",
"licenseNumber": null,
"bedCount": null,
"departments": [
"Receiving",
"Fulfillment",
"Shipping"
],
"isActive": true,
"createdAt": "2026-01-15T09:00:00Z",
"updatedAt": "2026-05-02T14:30:00Z"
}{
"error": {
"message": "Invalid or revoked API key",
"code": "UNAUTHENTICATED",
"suggestion": "Send a valid `Authorization: Bearer <token>` (nex_live_/nex_pat_ key, JWT, or OAuth access token).",
"retryable": false
}
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {},
"suggestion": "<string>",
"retryable": true
},
"requestId": "<string>"
}{
"error": {
"message": "<string>",
"code": "<string>",
"details": {},
"suggestion": "<string>",
"retryable": true
},
"requestId": "<string>"
}{
"error": {
"message": "Rate limit exceeded for this API key",
"code": "API_KEY_RATE_LIMITED",
"suggestion": "Wait until X-RateLimit-Reset before retrying, or batch operations.",
"retryable": true
}
}Authorizations
JWT token authentication
Headers
Pin the request to a dated API version (e.g. 2026-05-10). Applied by app-level middleware to every /api route (server/routes/index.ts → apiVersionMiddleware), which echoes the resolved value back in the NexSpace-Version response header. Omit to get the latest version. Discover the catalog at GET /.well-known/api-versions.
^\d{4}-\d{2}-\d{2}$Replay guard for write requests. Applied by app-level middleware to every /api route (server/routes/index.ts → idempotencyMiddleware), which only acts on POST/PUT/PATCH — GET, DELETE and OPTIONS ignore the header. Re-sending the same key with an identical body within 24 hours replays the original response; the same key with a different body returns 409.
255Path Parameters
Facility ID
Body
Response
Facility updated successfully
Unique facility identifier
Facility name
Facility/site type (industry-specific, free-form — e.g. clinic, branch, warehouse, store)
Facility address
City
State
ZIP code
Primary phone number
Primary email address
Facility website URL
Facility license number
Number of beds in the facility
List of departments in the facility
Whether the facility is active
Facility creation timestamp
Last update timestamp

