API Authentication
Get Auth Token
Generates authentication tokens for a client using clientId and clientSecret.
POST
/
api
/
token
cURL
curl --request POST \
--url https://forecaster.cairhealth.com/api/token \
--header 'Content-Type: application/json' \
--data '
{
"clientId": "xxxxx-xxxxxx-xxxxxxx",
"clientSecret": "xxxxx-xxxxxx-xxxxxxx"
}
'import requests
url = "https://forecaster.cairhealth.com/api/token"
payload = {
"clientId": "xxxxx-xxxxxx-xxxxxxx",
"clientSecret": "xxxxx-xxxxxx-xxxxxxx"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({clientId: 'xxxxx-xxxxxx-xxxxxxx', clientSecret: 'xxxxx-xxxxxx-xxxxxxx'})
};
fetch('https://forecaster.cairhealth.com/api/token', 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://forecaster.cairhealth.com/api/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'clientId' => 'xxxxx-xxxxxx-xxxxxxx',
'clientSecret' => 'xxxxx-xxxxxx-xxxxxxx'
]),
CURLOPT_HTTPHEADER => [
"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://forecaster.cairhealth.com/api/token"
payload := strings.NewReader("{\n \"clientId\": \"xxxxx-xxxxxx-xxxxxxx\",\n \"clientSecret\": \"xxxxx-xxxxxx-xxxxxxx\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.post("https://forecaster.cairhealth.com/api/token")
.header("Content-Type", "application/json")
.body("{\n \"clientId\": \"xxxxx-xxxxxx-xxxxxxx\",\n \"clientSecret\": \"xxxxx-xxxxxx-xxxxxxx\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://forecaster.cairhealth.com/api/token")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"clientId\": \"xxxxx-xxxxxx-xxxxxxx\",\n \"clientSecret\": \"xxxxx-xxxxxx-xxxxxxx\"\n}"
response = http.request(request)
puts response.read_body{
"accessToken": "xxxxxxxxxxxxx.xxxxxxxx",
"refreshToken": "xxxxxxxxxxxxx.xxxxxxxx",
"expiresAt": "2025-03-24T18:38:47.781Z",
"refreshTokenExpiresAt": "2025-03-25T18:28:47.781Z"
}{
"message": "<string>"
}This endpoint as well as
/api/refresh will be used in tandem to provide authentication to all of our public endpoints.
These endpoints require your clientId and clientSecret which can be found in your admin panel.Body
application/json
Client credentials for authentication
Response
Authentication tokens generated successfully
⌘I
cURL
curl --request POST \
--url https://forecaster.cairhealth.com/api/token \
--header 'Content-Type: application/json' \
--data '
{
"clientId": "xxxxx-xxxxxx-xxxxxxx",
"clientSecret": "xxxxx-xxxxxx-xxxxxxx"
}
'import requests
url = "https://forecaster.cairhealth.com/api/token"
payload = {
"clientId": "xxxxx-xxxxxx-xxxxxxx",
"clientSecret": "xxxxx-xxxxxx-xxxxxxx"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({clientId: 'xxxxx-xxxxxx-xxxxxxx', clientSecret: 'xxxxx-xxxxxx-xxxxxxx'})
};
fetch('https://forecaster.cairhealth.com/api/token', 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://forecaster.cairhealth.com/api/token",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'clientId' => 'xxxxx-xxxxxx-xxxxxxx',
'clientSecret' => 'xxxxx-xxxxxx-xxxxxxx'
]),
CURLOPT_HTTPHEADER => [
"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://forecaster.cairhealth.com/api/token"
payload := strings.NewReader("{\n \"clientId\": \"xxxxx-xxxxxx-xxxxxxx\",\n \"clientSecret\": \"xxxxx-xxxxxx-xxxxxxx\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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.post("https://forecaster.cairhealth.com/api/token")
.header("Content-Type", "application/json")
.body("{\n \"clientId\": \"xxxxx-xxxxxx-xxxxxxx\",\n \"clientSecret\": \"xxxxx-xxxxxx-xxxxxxx\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://forecaster.cairhealth.com/api/token")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"clientId\": \"xxxxx-xxxxxx-xxxxxxx\",\n \"clientSecret\": \"xxxxx-xxxxxx-xxxxxxx\"\n}"
response = http.request(request)
puts response.read_body{
"accessToken": "xxxxxxxxxxxxx.xxxxxxxx",
"refreshToken": "xxxxxxxxxxxxx.xxxxxxxx",
"expiresAt": "2025-03-24T18:38:47.781Z",
"refreshTokenExpiresAt": "2025-03-25T18:28:47.781Z"
}{
"message": "<string>"
}
