Quick start
Request the catalog with a normal HTTP GET. Responses use JSON, allow cross-origin reads, and include quota metadata.
curl -sS \
-H "Accept: application/json" \
https://www.evergreencomply.com/api/public/v1/coursesEndpoints
/api/public/v1/statusConfirm API availability and discover documentation.
operationId: serviceStatus
/api/public/v1/coursesList public courses with prices, audiences, and regulations.
operationId: listPublicCourses
/api/public/v1/courses/{courseId}Retrieve one course by an ID returned from the catalog.
operationId: getPublicCourse
Structured errors
API failures use application/problem+json with a stable code, HTTP status, readable detail, and concrete resolution hint. Unknown API paths use the same shape.
{
"type": "https://www.evergreencomply.com/developers#errors",
"title": "Course not found",
"status": 404,
"detail": "No public course was found for that ID.",
"code": "course_not_found",
"resolution": "List the catalog and use a returned ID.",
"docs_url": "https://www.evergreencomply.com/developers"
}Rate limits
Anonymous clients can make 120 requests per 60-second window. Every response includes RateLimit-Policy and RateLimit, plus compatibility limit, remaining, and reset headers. A 429 response includes Retry-After. Limits are enforced per client in each serving region, and upstream abuse protection may also apply.
Versioning and deprecation
Stable endpoints use a major version in the path, currently /api/public/v1. Breaking changes receive a new major version. Deprecated routes advertise Deprecation, Sunset, and successor Link headers before removal.
Read the complete API versioning policy. The unversioned compatibility routes are deprecated on February 1, 2027 and sunset on August 1, 2027.
Machine discovery
- /api — JSON service index
- /openapi.json — OpenAPI 3.1 contract
- /llms.txt — agent-oriented site guide