Update a provider
curl --request PATCH \
--url https://api.usecobalt.com/v1/providers/{id} \
--header 'Content-Type: application/json' \
--header 'access_token: <api-key>' \
--header 'client_id: <api-key>' \
--header 'client_secret: <api-key>' \
--data '
{
"status": "active",
"hours": [
{
"day": "Monday",
"shifts": [
{
"start": "09:00",
"end": "17:00"
}
]
}
],
"hide_in_availability": "false"
}
'import requests
url = "https://api.usecobalt.com/v1/providers/{id}"
payload = {
"status": "active",
"hours": [
{
"day": "Monday",
"shifts": [
{
"start": "09:00",
"end": "17:00"
}
]
}
],
"hide_in_availability": "false"
}
headers = {
"client_id": "<api-key>",
"client_secret": "<api-key>",
"access_token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
client_id: '<api-key>',
client_secret: '<api-key>',
access_token: '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
status: 'active',
hours: [{day: 'Monday', shifts: [{start: '09:00', end: '17:00'}]}],
hide_in_availability: 'false'
})
};
fetch('https://api.usecobalt.com/v1/providers/{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.usecobalt.com/v1/providers/{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([
'status' => 'active',
'hours' => [
[
'day' => 'Monday',
'shifts' => [
[
'start' => '09:00',
'end' => '17:00'
]
]
]
],
'hide_in_availability' => 'false'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"access_token: <api-key>",
"client_id: <api-key>",
"client_secret: <api-key>"
],
]);
$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.usecobalt.com/v1/providers/{id}"
payload := strings.NewReader("{\n \"status\": \"active\",\n \"hours\": [\n {\n \"day\": \"Monday\",\n \"shifts\": [\n {\n \"start\": \"09:00\",\n \"end\": \"17:00\"\n }\n ]\n }\n ],\n \"hide_in_availability\": \"false\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("client_id", "<api-key>")
req.Header.Add("client_secret", "<api-key>")
req.Header.Add("access_token", "<api-key>")
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.usecobalt.com/v1/providers/{id}")
.header("client_id", "<api-key>")
.header("client_secret", "<api-key>")
.header("access_token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"status\": \"active\",\n \"hours\": [\n {\n \"day\": \"Monday\",\n \"shifts\": [\n {\n \"start\": \"09:00\",\n \"end\": \"17:00\"\n }\n ]\n }\n ],\n \"hide_in_availability\": \"false\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.usecobalt.com/v1/providers/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["client_id"] = '<api-key>'
request["client_secret"] = '<api-key>'
request["access_token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"status\": \"active\",\n \"hours\": [\n {\n \"day\": \"Monday\",\n \"shifts\": [\n {\n \"start\": \"09:00\",\n \"end\": \"17:00\"\n }\n ]\n }\n ],\n \"hide_in_availability\": \"false\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"provider_id": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}Providers
Update Provider
Updates a provider’s status, working hours, and/or availability visibility.
PATCH
/
providers
/
{id}
Update a provider
curl --request PATCH \
--url https://api.usecobalt.com/v1/providers/{id} \
--header 'Content-Type: application/json' \
--header 'access_token: <api-key>' \
--header 'client_id: <api-key>' \
--header 'client_secret: <api-key>' \
--data '
{
"status": "active",
"hours": [
{
"day": "Monday",
"shifts": [
{
"start": "09:00",
"end": "17:00"
}
]
}
],
"hide_in_availability": "false"
}
'import requests
url = "https://api.usecobalt.com/v1/providers/{id}"
payload = {
"status": "active",
"hours": [
{
"day": "Monday",
"shifts": [
{
"start": "09:00",
"end": "17:00"
}
]
}
],
"hide_in_availability": "false"
}
headers = {
"client_id": "<api-key>",
"client_secret": "<api-key>",
"access_token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {
client_id: '<api-key>',
client_secret: '<api-key>',
access_token: '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
status: 'active',
hours: [{day: 'Monday', shifts: [{start: '09:00', end: '17:00'}]}],
hide_in_availability: 'false'
})
};
fetch('https://api.usecobalt.com/v1/providers/{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.usecobalt.com/v1/providers/{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([
'status' => 'active',
'hours' => [
[
'day' => 'Monday',
'shifts' => [
[
'start' => '09:00',
'end' => '17:00'
]
]
]
],
'hide_in_availability' => 'false'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"access_token: <api-key>",
"client_id: <api-key>",
"client_secret: <api-key>"
],
]);
$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.usecobalt.com/v1/providers/{id}"
payload := strings.NewReader("{\n \"status\": \"active\",\n \"hours\": [\n {\n \"day\": \"Monday\",\n \"shifts\": [\n {\n \"start\": \"09:00\",\n \"end\": \"17:00\"\n }\n ]\n }\n ],\n \"hide_in_availability\": \"false\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("client_id", "<api-key>")
req.Header.Add("client_secret", "<api-key>")
req.Header.Add("access_token", "<api-key>")
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.usecobalt.com/v1/providers/{id}")
.header("client_id", "<api-key>")
.header("client_secret", "<api-key>")
.header("access_token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"status\": \"active\",\n \"hours\": [\n {\n \"day\": \"Monday\",\n \"shifts\": [\n {\n \"start\": \"09:00\",\n \"end\": \"17:00\"\n }\n ]\n }\n ],\n \"hide_in_availability\": \"false\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.usecobalt.com/v1/providers/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["client_id"] = '<api-key>'
request["client_secret"] = '<api-key>'
request["access_token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"status\": \"active\",\n \"hours\": [\n {\n \"day\": \"Monday\",\n \"shifts\": [\n {\n \"start\": \"09:00\",\n \"end\": \"17:00\"\n }\n ]\n }\n ],\n \"hide_in_availability\": \"false\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "<string>",
"provider_id": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}{
"success": false,
"message": "<string>"
}Use the Cobalt
id in the URL path. The {id} parameter should be the Cobalt provider ID (the id field from GET responses), not the ehr_id. If you prefer to use the EMR ID, see PATCH /providers/ehr/{ehr_id} instead.Example Request
curl -X PATCH https://api.usecobalt.com/v1/providers/abc123def4567890abcdef1234567890 \
-H 'Content-Type: application/json' \
-H 'client_id: ci_live_198908HJDKJSH98789OHKJL' \
-H 'client_secret: cs_live_9827hofdsklOYYHJLJh' \
-H 'access_token: 493JKLHIU98789hLKH9HHJH' \
-d '{
"status": "active",
"hours": [
{
"day": "Monday",
"shifts": [
{
"start": "T09:00:00",
"end": "T18:00:00",
"facility_id": "095f8067-d3fc-4e13-b771-32f87cd0c3f2",
"set_start_date": "2025-11-13T00:00:00",
"set_end_date": "2026-11-13T00:00:00"
}
]
},
{
"day": "Tuesday",
"shifts": [
{
"start": "T08:00:00",
"end": "T17:00:00",
"facility_id": "095f8067-d3fc-4e13-b771-32f87cd0c3f2",
"set_start_date": "2025-11-13T00:00:00",
"set_end_date": "2026-11-13T00:00:00"
}
]
}
]
}'
{
"success": true,
"message": "Provider status and hours updated successfully.",
"provider_id": "abc123def4567890abcdef1234567890"
}
Request Body Parameters
You can update one or more of the following fields:-
status (string, optional): Provider’s sync status
"active": Schedule will be synced from EMR"inactive": Schedule will not be synced from EMR- Status is case-insensitive (“active”, “Active”, “ACTIVE” are all accepted)
-
hide_in_availability (string, optional): Controls whether provider is hidden from availability results
"false": Provider appears in/v1/availabilityendpoint (default behavior)"true": Provider is hidden from/v1/availabilityendpoint- Common use case: Set a provider to
"status": "active"and"hide_in_availability": "true"to continue syncing their schedule (for reporting purposes) while hiding them from new appointment availability
-
hours (array, optional): Provider’s working schedule
- The
facility_idmust exist in your organization’s locations - The
facility_namewill be automatically enriched from the database - Time format must be
THH:MM:SS(e.g.,T08:00:00) - Dates must be in ISO 8601 format (e.g.,
2025-11-13T00:00:00) - Days must be capitalized day names (Monday, Tuesday, etc.)
- The
Example: Hide Provider from Availability
curl -X PATCH https://api.usecobalt.com/v1/providers/abc123def4567890abcdef1234567890 \
-H 'Content-Type: application/json' \
-H 'client_id: ci_live_198908HJDKJSH98789OHKJL' \
-H 'client_secret: cs_live_9827hofdsklOYYHJLJh' \
-H 'access_token: 493JKLHIU98789hLKH9HHJH' \
-d '{
"status": "active",
"hide_in_availability": "true"
}'
{
"success": true,
"message": "Provider status and hide_in_availability updated successfully.",
"provider_id": "abc123def4567890abcdef1234567890"
}
Authorizations
Path Parameters
Cobalt provider ID (UUID, with or without dashes).
Body
application/json
Provider status. One of: "active", "inactive".
Example:
"active"
Provider working hours (per-day shift definitions).
Show child attributes
Show child attributes
Example:
[
{
"day": "Monday",
"shifts": [{ "start": "09:00", "end": "17:00" }]
}
]
Whether to hide the provider from availability. One of: "true", "false".
Example:
"false"