The Programs API manages the Online Programs that site owners create for courses, challenges, coaching journeys, and other structured experiences. A program contains public-facing information, scheduling rules, access restrictions, optional pricing, SEO settings, rewards, and summary counts for its sections and steps.
Use this API for both owner-facing program management and visitor or member-facing program discovery. The programs a caller can retrieve depend on the caller identity and the program's access restrictions.
With the Programs API, you can:
Programs are usually used together with other Online Programs APIs. Use the Steps and Sections APIs to manage program content, the Categories API to organize programs, the Join Applications API to handle enrollment and payment flows, and the Participants API to manage enrolled members and progress.
Programs move through these statuses:
| Status | Description |
|---|---|
DRAFT | The program is editable and visible only in management contexts. |
PUBLISHED | The program is available according to its access restrictions. |
ENDED | The program is no longer available for new participation, but remains visible where applicable. |
ARCHIVED | The program is closed and removed from normal public discovery. |
A program can be self-paced or scheduled:
timeline.startDate and timeline.durationInDays to determine the program period.When a published scheduled program reaches its end date, the service schedules an automatic transition to ENDED. The transition timing uses the site's timezone.
The restrictions.accessType field controls who can discover and join a program:
| Access type | Description |
|---|---|
PUBLIC | Anyone who can access the site can discover the program and start the join flow. |
PRIVATE | The program can be discovered, but joining requires owner approval. |
SECRET | The program is hidden from public discovery and visible only to participants, owners, and trusted apps. |
It's important to note the following points before starting to code:
categoryIds is read-only on the Program object. Use the Categories API to assign categories to a program.Date last updated: 22 June 2026