Developer Portal

CentreCareOS API Documentation

Build powerful integrations with our REST API. Access student data, attendance records, billing information, and more programmatically.

Getting Started

The CentreCareOS API allows you to programmatically access and manage your childcare center's data. With our REST API, you can build custom integrations, automate workflows, and sync data with your existing systems.

Enterprise Plan Required

API access is available exclusively on the Enterprise plan.View pricing

Base URL

https://www.centrecareos.com/api/v1

Quick Example

cURL
curl -X GET "https://www.centrecareos.com/api/v1/students" \
  -H "Authorization: Bearer ccapi_your_api_key_here" \
  -H "Content-Type: application/json"

Authentication

All API requests must include your API key in the Authorization header using the Bearer scheme. API keys can be created and managed from yourAPI Settingspage.

API Key Format

All CentreCareOS API keys begin with the prefix ccapi_ followed by 32 alphanumeric characters.

ccapi_AbCdEfGhIjKlMnOpQrStUvWxYz123456

Authorization Header

Authorization: Bearer ccapi_your_api_key_here

Security Best Practices

  • Never expose your API key in client-side code or public repositories
  • Store API keys in environment variables or secure vaults
  • Rotate your API keys periodically
  • Use the minimum required scopes for each key
  • Set expiration dates for keys when possible

API Scopes

Scopes define what data and actions your API key can access. When creating an API key, select only the scopes required for your integration to follow the principle of least privilege.

ScopeDescriptionAccess
students:readRead student profiles, enrollment status, and demographicsRead
students:writeCreate and update student recordsWrite
attendance:readRead check-in/check-out records and attendance historyRead
attendance:writeRecord check-ins and check-outsWrite
billing:readRead invoices, payments, and billing historyRead
staff:readRead staff profiles and schedulesRead
rooms:readRead classroom/room data and capacityRead
reports:readGenerate and read analytics reportsRead
messages:readRead message history and conversationsRead
messages:writeSend messages to parents and staffWrite

API Endpoints

Students

Manage student records and enrollment

GET
/api/v1/students

List all students in your school

Required scope: students:read

GET
/api/v1/students/:id

Get a specific student by ID

Required scope: students:read

POST
/api/v1/students

Create a new student record

Required scope: students:write

PATCH
/api/v1/students/:id

Update a student record

Required scope: students:write

Attendance

Track check-ins and check-outs

GET
/api/v1/attendance

List attendance records with optional date filtering

Required scope: attendance:read

POST
/api/v1/attendance/check-in

Record a student check-in

Required scope: attendance:write

POST
/api/v1/attendance/check-out

Record a student check-out

Required scope: attendance:write

Billing

Access invoices and payment information

GET
/api/v1/invoices

List all invoices with status filtering

Required scope: billing:read

GET
/api/v1/invoices/:id

Get invoice details including line items

Required scope: billing:read

GET
/api/v1/payments

List payment transactions

Required scope: billing:read

Rooms

Classroom and capacity management

GET
/api/v1/rooms

List all classrooms with capacity and assigned staff

Required scope: rooms:read

GET
/api/v1/rooms/:id/students

Get students currently assigned to a room

Required scope: rooms:read

Staff

Staff profiles and schedules

GET
/api/v1/staff

List all staff members

Required scope: staff:read

GET
/api/v1/staff/:id

Get staff member details

Required scope: staff:read

Messages

Communication with parents and staff

GET
/api/v1/messages

List message threads

Required scope: messages:read

POST
/api/v1/messages

Send a new message

Required scope: messages:write

Rate Limits

To ensure fair usage and maintain service quality, API requests are rate-limited. Rate limits are applied per API key.

PlanRequests/HourRequests/Day
Enterprise1,00010,000

Rate Limit Headers

Every API response includes headers indicating your current rate limit status:

X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 999
X-RateLimit-Reset: 1704067200

Exceeding Rate Limits

When you exceed your rate limit, the API will return a 429 Too Many Requests response. Wait until the reset time before making additional requests.

Error Handling

The API uses conventional HTTP response codes to indicate the success or failure of requests.

CodeMeaning
200Success - Request completed successfully
201Created - Resource created successfully
400Bad Request - Invalid parameters or malformed request
401Unauthorized - Invalid or missing API key
403Forbidden - API key lacks required scope
404Not Found - Resource does not exist
429Too Many Requests - Rate limit exceeded
500Internal Error - Something went wrong on our end

Error Response Format

{
  "error": {
    "code": "INVALID_SCOPE",
    "message": "Your API key does not have the required scope: students:write",
    "status": 403
  }
}

SDKs & Libraries

Official SDKs for JavaScript/Node.js and Python. Zero-dependency single-file libraries that you can drop into any project.

JavaScript / Node.js

v1.0.0 · Zero dependencies

Works in Node.js (18+) and modern browsers. Uses native fetch API.

Download SDK

Python

v1.0.0 · Requires: requests

Python 3.7+ compatible. Uses the requests library for HTTP.

Download SDK

JavaScript / Node.js

Installation

Download centrecareos.js and add it to your project, or use it via a script tag:

Install
# Copy to your project
curl -o centrecareos.js https://www.centrecareos.com/sdk/centrecareos.js

# Or use in HTML
<script src="https://www.centrecareos.com/sdk/centrecareos.js"></script>

Initialize the Client

JavaScript
import { CentreCareOS } from './centrecareos.js';

const client = new CentreCareOS('ccapi_your_api_key_here');

Usage Examples

Students
// List all students
const students = await client.students.list();
console.log(students);

// Get a specific student
const student = await client.students.get('student_id_here');

// Create a student
const newStudent = await client.students.create({
  firstName: 'Emma',
  lastName: 'Johnson',
  dateOfBirth: '2021-03-15',
  roomId: 'room_id_here',
});

// Update a student
await client.students.update('student_id_here', {
  firstName: 'Emma',
  lastName: 'Smith',
});
Attendance
// Check in a student
await client.attendance.checkIn({
  studentId: 'student_id_here',
  note: 'Dropped off by parent',
});

// Check out a student
await client.attendance.checkOut({
  studentId: 'student_id_here',
});

// List today's attendance
const records = await client.attendance.list({
  date: '2026-02-14',
});
Billing, Rooms, Staff, Messages
// Billing
const invoices = await client.billing.listInvoices({ status: 'pending' });
const invoice = await client.billing.getInvoice('invoice_id');
const payments = await client.billing.listPayments();

// Rooms
const rooms = await client.rooms.list();
const room = await client.rooms.get('room_id');

// Staff
const staff = await client.staff.list();

// Messages
const messages = await client.messages.list({ threadId: 'thread_id' });
await client.messages.send({
  threadId: 'thread_id',
  content: 'Hello from the API!',
});
Error Handling & Rate Limits
import { CentreCareOS, CentreCareOSError } from './centrecareos.js';

const client = new CentreCareOS('ccapi_your_api_key_here');

try {
  const students = await client.students.list();
} catch (err) {
  if (err instanceof CentreCareOSError) {
    console.error('API Error:', err.message);
    console.error('Status:', err.status);   // e.g. 403
    console.error('Code:', err.code);       // e.g. "INVALID_SCOPE"
  }
}

// Check rate limit status after any request
console.log('Remaining:', client.rateLimit.remaining);
console.log('Limit:', client.rateLimit.limit);

Python

Installation

Download centrecareos.py and add it to your project. Requires the requests library.

Install
# Install the requests dependency
pip install requests

# Download the SDK
curl -o centrecareos.py https://www.centrecareos.com/sdk/centrecareos.py

Initialize the Client

Python
from centrecareos import CentreCareOS

client = CentreCareOS("ccapi_your_api_key_here")

Usage Examples

Students
# List all students
students = client.students.list()
print(students)

# Get a specific student
student = client.students.get("student_id_here")

# Create a student
new_student = client.students.create({
    "firstName": "Emma",
    "lastName": "Johnson",
    "dateOfBirth": "2021-03-15",
    "roomId": "room_id_here",
})

# Update a student
client.students.update("student_id_here", {
    "firstName": "Emma",
    "lastName": "Smith",
})
Attendance
# Check in a student
client.attendance.check_in(
    student_id="student_id_here",
    note="Dropped off by parent",
)

# Check out a student
client.attendance.check_out(student_id="student_id_here")

# List today's attendance
records = client.attendance.list(date="2026-02-14")
Billing, Rooms, Staff, Messages
# Billing
invoices = client.billing.list_invoices(status="pending")
invoice = client.billing.get_invoice("invoice_id")
payments = client.billing.list_payments()

# Rooms
rooms = client.rooms.list()
room = client.rooms.get("room_id")

# Staff
staff = client.staff.list()

# Messages
messages = client.messages.list(thread_id="thread_id")
client.messages.send(
    thread_id="thread_id",
    content="Hello from the API!",
)
Error Handling & Context Manager
from centrecareos import CentreCareOS, CentreCareOSError

# Use as a context manager for automatic cleanup
with CentreCareOS("ccapi_your_api_key_here") as client:
    try:
        students = client.students.list()
    except CentreCareOSError as e:
        print(f"API Error: {e}")
        print(f"Status: {e.status}")    # e.g. 403
        print(f"Code: {e.code}")        # e.g. "INVALID_SCOPE"

    # Check rate limit status after any request
    print(f"Remaining: {client.rate_limit.remaining}")
    print(f"Limit: {client.rate_limit.limit}")

Support