Overview
Kolibri is a learning platform that imports educational content channels published on Kolibri Studio. This integration enables offline access to educational materials in low-connectivity environments.Kolibri Studio acts as the content creation and curation hub, while Kolibri serves as the distribution platform for learners.
Channel Distribution Flow
- Content Creation: Educators create and organize content in Kolibri Studio
- Publishing: Channels are published, making them exportable
- Discovery: Kolibri queries the public API to discover available channels
- Import: Kolibri downloads channel metadata and content
- Distribution: Content is made available to learners offline
Public API Endpoints
Kolibri uses versioned public API endpoints to discover and import channels.List All Public Channels
Retrieve all public channels available for import:keyword(optional): Search channels by name, description, or tagslanguage(optional): Filter by language IDtokens(optional): Comma-separated list of channel tokens for private access
id: Unique channel identifier (UUID)name: Channel display namelanguage: Primary language codeincluded_languages: All languages available in the channeltotal_resource_count: Total number of learning resourcesversion: Current published version numberkind_count: Breakdown of content by type (video, exercise, document, etc.)published_size: Total size in byteslast_published: Timestamp of last publicationicon_encoding: Base64-encoded channel thumbnailmatching_tokens: Channel tokens that match the requestpublic: Whether the channel is publicly listedversion_notes: Version history with release notes
Channel Lookup by Identifier
Retrieve a specific channel by ID or token:identifier: Channel ID (UUID) or channel token
- Checking if a private channel token is valid
- Getting updated metadata for a specific channel
- Verifying channel existence before import
Get Channel Metadata
Retrieve basic channel information:Content Node API
Kolibri also accesses detailed content metadata through the content node endpoints.List Channel Content
channel_id: Filter by channelkind: Filter by content kind (video, exercise, topic, etc.)parent: Get children of a specific nodekeywords: Search content by keywordslanguages: Filter by language codes
Get Content Tree
Retrieve hierarchical content structure:depth: Recursion depth (1 or 2)next__gt: Pagination token for next results
Version Synchronization
Kolibri tracks channel versions to determine when updates are available.Version Checking
- Kolibri stores the current
versionnumber for each imported channel - Periodically, Kolibri queries the public API for updated channel metadata
- If the API returns a higher
versionnumber, an update is available - Users can choose to update to the new version
Version Notes
Theversion_notes field provides a history of changes:
Channel Import Process
Step 1: Discovery
Kolibri discovers available channels through the public API:Step 2: Download Metadata
Kolibri downloads the complete content tree structure:Step 3: Download Files
Kolibri downloads actual content files using thestorage_url from the file metadata:
checksum field to ensure integrity.
Step 4: Database Import
Kolibri creates its local database from the downloaded metadata, making content available offline.Private Channels
Channels can be made private using secret tokens.Accessing Private Channels
Include the channel token in thetokens query parameter:
matching_tokens:
Caching and Performance
The public API implements caching for optimal performance:- Cache Duration: 5 minutes (300 seconds)
- Cache Headers: Includes
Last-ModifiedandCache-Control - Stale While Revalidate: 100 seconds
Content Filtering
Kolibri can filter channels based on various criteria:By Availability
By Categories
By Country
Error Handling
Channel Not Found
Invalid API Version
Invalid UUID Format
Best Practices
Respect Cache Headers
Respect Cache Headers
Implement proper HTTP caching to reduce server load and improve performance. Honor
Cache-Control and Last-Modified headers.Paginate Large Requests
Paginate Large Requests
Use pagination parameters for channels with many resources. The
more field indicates additional pages.Validate File Checksums
Validate File Checksums
Always verify downloaded files against the provided checksum to ensure data integrity.
Handle Version Updates Gracefully
Handle Version Updates Gracefully
Check for version updates periodically, but allow users to control when updates are applied.
Resources
Kolibri Documentation
Complete Kolibri platform documentation
Kolibri GitHub
View the Kolibri source code
Next Steps
Ricecooker Integration
Learn how to import content programmatically
API Reference
Explore the complete API documentation
