Get All Collections
URL: https://api.gradual-api.com/public-api/v1/collections
HTTP Method: GET
Content type: application/json
Tier: Medium
Query Parameters:
pageNum, number, optional, default 1pageSize, number, optional, default 50, max 200
Note: The collections are returned in order of creation date, with the most recently created collections appearing first.
Response Example:
{"size": 1,"pageNumber": 1,"pageSize": 50,"results": [{"collectionId": "63e293d17efa0788a97273fe","collectionName": "Collection Name","collectionVisibility": "Visible","collectionUrl": "https://elc.gradual/home/collections/collection-name","collectionCoverUrl": "https://abc.cloudfront.net/uploads/test/Collection-Name-fd0ffeb0-195e-491e-9eea-ae351f9914d8-1676390983173.png","collectionSlug": "collection-name","collectionUpdatedAt": "2025-08-14T12:39:31.259Z","collectionContent": [{"type": "video","id": "63d40ad685f10b97ffa7feae","title": "Video Title"},{"type": "blog","id": "6266772cfffad41e5be35862","title": "Article Title"}]}]}
Get All Videos
URL: https://api.gradual-api.com/public-api/v1/videos
HTTP Method: GET
Content type: application/json
Tier: Medium
Query Parameters:
pageNum, number, optional, default 1pageSize, number, optional, default 50, max 200fromDate, string, optional, format:YYYY-MM-DD, date will be padded to the start of the day. If afromDateis specified, the response will include videos with a created time later than 00:00 of the providedfromDate.toDate, string, optional, format:YYYY-MM-DD, date will be padded to the end of the day. Similarly, if atoDateis specified, the response will include videos with a created time earlier than 23:59 of the providedtoDate.
Note: The videos are returned in order of creation date, with the most recently created videos appearing first.
Response Example:
{"size": 2,"pageNumber": 1,"pageSize": 50,"results": [{"videoId": "654180e3566f8d5a7fb49e86","videoTitle": "Video Title","videoDescription": "Video Description","videoCreatedAt": "2023-10-31T22:34:11.099Z","videoSlug": "video-title","videoUrl": "https://www.youtube.com/watch?v=_Z1mwUosYU","videoThumbnailUrl": "https://abc.cloudfront.net/uploads/test/Video-Title-fd0ffeb0-195e-491e-9eea-ae351f9914d8-1676390983173.png","videoDuration": 120,"videoTags": ["tag1","tag2"],"spaces": ["Space 1","Space 2"],"access": "Public","ownership": "Community"},{"videoId": "64adee61dc5dfe85abf9ae3e","videoTitle": "Video Title","videoDescription": "Video Description","videoCreatedAt": "2023-10-31T22:34:11.099Z","videoSlug": "video-title","videoUrl": "https://www.youtube.com/watch?v=_Z1mwUYgwU","videoThumbnailUrl": "https://abc.cloudfront.net/uploads/test/Video-Title-fd0ffeb0-195e-491e-9eea-ae351f9914d8-1676390983173.png","videoDuration": 120,"videoTags": [],"spaces": [],"access": "Public","ownership": "VIP Club"}]}
Get All Blogs
URL: https://api.gradual-api.com/public-api/v1/blogs
HTTP Method: GET
Content type: application/json
Tier: Medium
Query Parameters:
pageNum, number, optional, default 1pageSize, number, optional, default 50, max 200fromDate, string, optional, format:YYYY-MM-DD, date will be padded to the start of the day. If afromDateis specified, the response will include blogs with a created time later than 00:00 of the providedfromDate.toDate, string, optional, format:YYYY-MM-DD, date will be padded to the end of the day. Similarly, if atoDateis specified, the response will include blogs with a created time earlier than 23:59 of the providedtoDate.
Note: The blogs are returned in order of creation date, with the most recently created blogs appearing first.
Response Example:
{"size": 1,"pageNumber": 1,"pageSize": 50,"results": [{"blogId": "654180e3566f8d5a7fb49e86","blogTitle": "Blog Title","blogSubTitle": "Blog Sub Title","blogAuthor": "Blog Author1, Blog Author2","blogSummary": "Blog Summary","blogContent": "Blog Content","blogCategory": "Blog Category","blogCreatedAt": "2023-10-31T22:34:11.099Z","blogSlug": "blog-title","blogCoverUrl": "https://abc.cloudfront.net/uploads/test/Video-Title-fd0ffeb0-195e-491e-9eea-ae351f9914d8-1676390983173.png","blogTags": ["tag1"],"spaces": ["Space 1"],"access": "Public","ownership": "Community"}]}
Get All Podcasts
URL: https://api.gradual-api.com/public-api/v1/podcasts
HTTP Method: GET
Content type: application/json
Tier: Medium
Query Parameters:
pageNum, number, optional, default 1pageSize, number, optional, default 50, max 200fromDate, string, optional, format:YYYY-MM-DD, date will be padded to the start of the day. If afromDateis specified, the response will include podcasts with a created time later than 00:00 of the providedfromDate.toDate, string, optional, format:YYYY-MM-DD, date will be padded to the end of the day. Similarly, if atoDateis specified, the response will include podcasts with a created time earlier than 23:59 of the providedtoDate.
Note: The podcasts are returned in order of creation date, with the most recently created podcasts appearing first.
Response Example:
{"size": 1,"pageNumber": 1,"pageSize": 50,"results": [{"podcastId": "654180e3566f8d5a7fb49e86","podcastTitle": "Podcast Title","podcastSubTitle": "Podcast Sub Title","podcastAuthor": "Podcast Author1, Podcast Author2","podcastSummary": "Podcast Summary","podcastContent": "Podcast Content","podcastCategory": "Podcast Category","podcastCreatedAt": "2023-10-31T22:34:11.099Z","podcastSlug": "podcast-title","podcastCoverUrl": "https://abc.cloudfront.net/uploads/test/Video-Title-fd0ffeb0-195e-491e-9eea-ae351f9914d8-1676390983173.png","podcastTags": ["tag1"],"spaces": ["Space 1"],"access": "Public","ownership": "Community"}]}
Get All Resources
URL: https://api.gradual-api.com/public-api/v1/resources
HTTP Method: GET
Content type: application/json
Tier: Medium
Query Parameters:
pageNum, number, optional, default 1pageSize, number, optional, default 50, max 200fromDate, string, optional, format:YYYY-MM-DD, date will be padded to the start of the day. If afromDateis specified, the response will include resources with a created time later than 00:00 of the providedfromDate.toDate, string, optional, format:YYYY-MM-DD, date will be padded to the end of the day. Similarly, if atoDateis specified, the response will include resources with a created time earlier than 23:59 of the providedtoDate.
Note: The resources are returned in order of creation date, with the most recently created resources appearing first.
Response Example:
{"size": 1,"pageNumber": 1,"pageSize": 50,"results": [{"resourceId": "654180e3566f8d5a7fb49e86","resourceTitle": "Resource Title","resourceSubTitle": "Resource Sub Title","resourceAuthor": "Resource Author1, Resource Author2","resourceSummary": "Resource Summary","resourceContent": "Resource Content","resourceCategory": "Resource Category","resourceCreatedAt": "2023-10-31T22:34:11.099Z","resourceSlug": "resource-title","resourceCoverUrl": "https://abc.cloudfront.net/uploads/test/Video-Title-fd0ffeb0-195e-491e-9eea-ae351f9914d8-1676390983173.png","resourceTags": ["tag1"],"spaces": ["Space 1"],"access": "Public","ownership": "VIP Club"}]}
Get All External Contents
URL: https://api.gradual-api.com/public-api/v1/external-contents
HTTP Method: GET
Content type: application/json
Tier: Medium
Query Parameters:
pageNum, number, optional, default 1pageSize, number, optional, default 50, max 200fromDate, string, optional, format:YYYY-MM-DD, date will be padded to the start of the day. If afromDateis specified, the response will include external-contents with a created time later than 00:00 of the providedfromDate.toDate, string, optional, format:YYYY-MM-DD, date will be padded to the end of the day. Similarly, if atoDateis specified, the response will include external-contents with a created time earlier than 23:59 of the providedtoDate.
Note: The external-contents are returned in order of creation date, with the most recently created external-contents appearing first.
Response Example:
{"size": 1,"pageNumber": 1,"pageSize": 50,"results": [{"externalContentId": "654180e3566f8d5a7fb49e86","externalContentTitle": "External Content Title","externalContentSummary": "External Content Summary","externalContentContent": "External Content Content","externalContentCategory": "External Content Category","externalContentCreatedAt": "2023-10-31T22:34:11.099Z","externalContentSlug": "external-content-title","externalContentCoverUrl": "https://abc.cloudfront.net/uploads/test/Video-Title-fd0ffeb0-195e-491e-9eea-ae351f9914d8-1676390983173.png","externalContentLink": "https://www.google.com","externalContentTags": ["tag1"],"spaces": ["Space 1"],"access": "Public","ownership": "Community"}]}
Add a New Video
URL: https://api.gradual-api.com/public-api/v1/videos
HTTP Method: POST
Content type: application/json
Tier: Medium
Request Body Parameters:
title, string, required, video title (1–300 characters), must be uniquevideoUrl, string, required, must be a valid URL pointing to the video fileposterUrl, string, required, must be a valid URL pointing to a thumbnail image (must be 16:9 aspect ratio)duration, string, required, video length inHH:MM:SS,MM:SS, or total seconds formatauthorEmail, string, optional, email of an existing user to attribute as the video authortags, string, optional, comma-separated list of tag names (tags will be created if they don't exist)publish, boolean, optional, whether to publish the video immediately (defaults tofalse)collection, string, optional, name of an existing collection to add the video tosummary, string, optional, video descriptiontranscript, string, optional, video transcript text
Request Body Example:
{"title": "Getting Started with Gradual","videoUrl": "https://example.com/videos/getting-started.mp4","posterUrl": "https://example.com/thumbnails/getting-started.jpg","duration": "12:34","tags": "Tutorial, Getting Started","publish": true,"collection": "Onboarding","summary": "A walkthrough of the Gradual platform for new users.","transcript": "Welcome to Gradual..."}
Response Example:
{"videoId": "6553ce608b3f645e79d95034","videoTitle": "Getting Started with Gradual","videoDescription": "A walkthrough of the Gradual platform for new users.","videoDuration": 754,"videoThumbnailUrl": "https://s3.amazonaws.com/uploads/tenant/thumbnail.jpg","videoUrl": "https://example.com/videos/getting-started.mp4","videoCreatedAt": "2024-11-14T10:30:00.000Z","videoSlug": "getting-started-with-gradual","videoTags": ["Tutorial", "Getting Started"],"videoTranscript": "Welcome to Gradual..."}
Notes:
- The
posterUrlimage must have a 16:9 aspect ratio, otherwise the request will be rejected. The image is downloaded and re-hosted on our servers. - The
durationfield accepts multiple formats:HH:MM:SS(e.g.1:12:34),MM:SS(e.g.12:34), or total seconds as a plain number (e.g.754). - If
authorEmailis provided but no matching user is found, the video will still be created without an author. - A video with a duplicate title will be rejected with a
400error. - If
collectionis provided but does not match an existing collection name, the request will be rejected with a400error.