Firehouse Solutions
Web Design and Data Management for Firefighters, Rescue Techs, EMTS, Medics, and All Others Who Save Lives
Phone 301.475.1900
Web Design and Data Management for Firefighters, Rescue Techs, EMTS, Medics, and All Others Who Save Lives Phone 301.475.1900   
Firehouse Solutions Firehouse Solutions


August 15, 2026:
Training Center Now Available
April 20, 2026:
Release of AI Writing Tool and Two-Factor Authentication
October 30, 2025:
Schedule News Posts for Automated Go Live and Come Down
August 30, 2025:
Light and Dark Mode, Calendar Email Reminders, Emoji Support, and Video Galleries
October 17, 2024:
Why Your Organization Needs Email Archiving
February 5, 2024:
Introducing Upgraded SmarterMail and firehouse.email
API: Training

« Back to the API Documentation overview - authentication, security, response codes, and the full endpoint list.

Training Center data. The Type parameter selects the record set. Items restricted to specific members are excluded.

HTTP Request TypeGET
Calling URIhttps://www.YourDepartment.com/apps/api/training/
Request HeaderAuthorization: Bearer {access_token}
Success Codes200 OK
Failure Codes400, 401, 403, 404, 405, 429, 500 - see the error reference

Parameters
ParameterDescription
Type presentations (default), quizzes, certifications, or membercerts.
ID Optional. A single item ID for the chosen Type.
MemberID Optional, membercerts only. Limit to one member.

All data endpoints also accept the common MaxRows (default 100, maximum 500) and StartRow paging parameters.

Response Properties
PropertyDescription
Pres_ID / Pres_Title / Pres_Description / Pres_Hours / Pres_CreatedDate / Pres_ModifiedDate presentations: online presentations
Quiz_ID / Quiz_Title / Quiz_Description / Quiz_Hours / Quiz_CreatedDate / Quiz_ModifiedDate / Graded / PassScore / MaxAttempts quizzes: online quizzes and their settings
Cert_ID / Cert_Name / Cert_Description / Expiry_Months / Cert_CreatedDate / Cert_ModifiedDate certifications: the certification catalog
CertMem_ID / Mem_ID / Member / Cert_Name / Cert_Status / Issue_Date / Expiry_Date / Cert_Number / Added_Date / CertMem_ModifiedDate membercerts: member certification records; Cert_Status is Active, Pending, Expiring Soon, or Expired

Records are returned in the items array of the standard response envelope.


Sample Code

Exchange your refresh token for an access token, then request data. The same two steps work in any language; JavaScript and Python are shown here.

JavaScript
const BASE = "https://www.YourDepartment.com/apps/api";
const REFRESH_TOKEN = "your-refresh-token-here";

// 1. Exchange the refresh token for an access token (do this from a server,
//    not from a public web page, so the refresh token stays secret)
const tokenRes = await fetch(`${BASE}/refresh/`, {
    method: "POST",
    headers: { "Authorization": `Bearer ${REFRESH_TOKEN}` }
});
const tokenData = await tokenRes.json();

// 2. Call the training endpoint (reuse the token for up to 24 hours)
const res = await fetch(`${BASE}/training/?MaxRows=10`, {
    headers: { "Authorization": `Bearer ${tokenData.access_token}` }
});
const data = await res.json();

data.items.forEach(item => console.log(item));

Python
import requests

BASE = "https://www.YourDepartment.com/apps/api"
REFRESH_TOKEN = "your-refresh-token-here"

# 1. Exchange the refresh token for an access token
token = requests.post(f"{BASE}/refresh/",
    headers={"Authorization": f"Bearer {REFRESH_TOKEN}"}).json()

# 2. Call the training endpoint (reuse the token for up to 24 hours)
data = requests.get(f"{BASE}/training/",
    params={"MaxRows": 10},
    headers={"Authorization": f"Bearer {token['access_token']}"}).json()

for item in data["items"]:
    print(item)