Skip to content

API Overview

CoogCasa provides REST APIs for accessing sports data, scholarship information, and more.

ServiceURL
Unified APIhttps://api.coogcasa.com
Sports Backendhttps://coog-sports-backend.coog-planner.workers.dev
Scholarships Backendhttps://coog-scholarships-backend.coog-planner.workers.dev

The unified API router (api.coogcasa.com) is recommended as it provides a single entry point with path-based routing.

Access UH athletics data including schedules, rosters, standings, and game details.

Prefix: /sports

GET /sports/api/schedules
GET /sports/api/roster?sport=mens-basketball
GET /sports/api/standings?sport=mens-basketball
GET /sports/api/game?id=401827646

View Sports API Documentation →

Search and browse UH scholarship opportunities.

Prefix: /scholarships

GET /scholarships/api/scholarships
GET /scholarships/api/scholarships?source=bauer
GET /scholarships/api/scholarship?id=123

View Scholarships API Documentation →

Combined health check for all services:

GET /health

Response:

{
"status": "ok",
"service": "coog-api-router",
"timestamp": "2026-01-24T12:00:00.000Z",
"backends": {
"sports": {
"status": "ok",
"service": "coog-sports-backend"
},
"scholarships": {
"status": "ok",
"version": "1.0.1"
}
}
}

Most read endpoints are public and don’t require authentication.

Protected endpoints (triggers, admin) require an API key:

X-API-Key: your-api-key

Rate limiting is handled by Cloudflare WAF:

  • Default: 60 requests per minute per IP
  • Bulk operations: May have lower limits

When rate limited, you’ll receive a 429 Too Many Requests response.

The API supports CORS for the following origins:

  • https://coogcasa.com
  • https://www.coogcasa.com
  • https://coogcasa.pages.dev
  • http://localhost:4321-4325 (development)

All responses are JSON with the following structure:

{
"data": { ... },
"meta": {
"timestamp": "2026-01-24T12:00:00.000Z",
"cached": true
}
}
{
"error": "Error message",
"code": "ERROR_CODE",
"details": { ... }
}
CodeDescription
200Success
400Bad Request - Invalid parameters
404Not Found - Resource doesn’t exist
429Too Many Requests - Rate limited
500Internal Server Error
503Service Unavailable

Responses are cached at the edge:

EndpointCache Duration
Schedules24 hours
Rosters24 hours
Standings1 hour
Game details5 minutes
Scholarships24 hours

Use the ?nocache=1 parameter to bypass cache (if supported).

Currently, there are no official SDKs. Use any HTTP client:

// JavaScript/TypeScript
const response = await fetch('https://api.coogcasa.com/sports/api/schedules');
const data = await response.json();
# Python
import requests
response = requests.get('https://api.coogcasa.com/sports/api/schedules')
data = response.json()
Terminal window
# cURL
curl https://api.coogcasa.com/sports/api/schedules