Update user profile by email

URL: https://api.gradual-api.com/public-api/v1/updateProfileByEmail

HTTP Method: POST

Content type: application/json

Request Body Parameters:

  • email, string, required, this is the unique identifier to find and update user
  • firstName, string
  • lastName, string
  • position, string
  • company, string
  • pictureUrl, string
  • memberType, string (one of “Standard”, “Guest”, or “Limited Approval”)

Response:

{
user: {
id
email
firstName
lastName
position
company
memberType
}
}

Add a new user

URL: https://api.gradual-api.com/public-api/v1/users

HTTP Method: POST

Content type: application/json

Request Body Parameters:

  • email, string, required, this is the unique identifier to find and update user
  • firstName, string, required
  • lastName, string, required
  • position, string, required
  • company, string, required
  • linkedInUrl, string, optional
  • pictureUrl, string, optional

Request Body Example:

{
"email": "[email protected]",
"firstName": "test_first",
"lastName": "test_last",
"company": "test_company",
"position": "test_position",
"linkedInUrl": "",
"pictureUrl": "" }

Response Example:

{
"userEmail": "[email protected]",
"userFirstName": "test_first",
"userLastName": "test_last",
"userTitle": "test_position",
"userCompany": "test_company",
"userLinkedIn": "",
"pictureUrl": "",
"userId": "6553ce608b3f645e79d95034",
"memberType": "Standard",
"approvalStatus": "approved",
"displayName": "test_first test_last",
"spaces": [
"Space 1",
"Space 2"
],
"questionnaire": {}
}

Get a user by user ID

URL: https://api.gradual-api.com/public-api/v1/users/:userId

HTTP Method: GET

Content type: application/json

Path Parameters:

  • userId, string, required, this is the unique identifier to find a user

Response Example:

{
"userEmail": "[email protected]",
"userFirstName": "test_first",
"userLastName": "test_last",
"userTitle": "test_position",
"userCompany": "sbsbsbsbsbsbsbsb",
"userLinkedIn": "",
"userId": "6553ce608b3f645e79d95034",
"memberType": "Standard",
"approvalStatus": "approved",
"displayName": "test_first test_last",
"questionnaire": {},
"signUpAt": "2024-06-12T08:21:16.388Z",
"lastLoginAt": "2024-06-14T16:07:13.786Z",
"onboardingAt": "2024-06-13T04:57:19.262Z"
}

Get a user by email

URL: https://api.gradual-api.com/public-api/v1/users

HTTP Method: GET

Content type: application/json

Query Parameters:

  • email, string, required, this is the unique identifier to find a user

Response Example:

{
"userEmail": "[email protected]",
"userFirstName": "test_first",
"userLastName": "test_last",
"userTitle": "test_position",
"userCompany": "sbsbsbsbsbsbsbsb",
"userLinkedIn": "",
"userId": "6553ce608b3f645e79d95034",
"memberType": "Standard",
"approvalStatus": "approved",
"displayName": "test_first test_last",
"questionnaire": {},
"signUpAt": "2024-06-12T08:21:16.388Z",
"lastLoginAt": "2024-06-14T16:07:13.786Z",
"onboardingAt": "2024-06-13T04:57:19.262Z"
}

Get the events data

URL: https://api.gradual-api.com/public-api/v1/events

HTTP Method: GET

Content type: application/json

Query Parameters:

  • pageNum: number, optional, default 1
  • pageSize: number, optional, default 50
  • title: string, optional, support partial matches
  • startDate: string, optional, format: YYYY-MM-DD, date will be padded to the start of the day. If a startDate is specified, the response will include events with a start time later than 00:00 of the provided startDate.
  • endDate: string, optional, format: YYYY-MM-DD, date will be padded to the end of the day. Similarly, if an endDate is specified, the response will include events with an end time earlier than 23:59 of the provided endDate.

Response Example:

{
"size": 2,
"pageNumber": 1,
"pageSize": 2,
"results": [
{
"eventId": "654180e3566f8d5a7fb49e86",
"eventTitle": "Test Room",
"eventType": "Livestream",
"eventTimezone": "America/Los_Angeles",
"eventStartTime": "2023-10-30T07:00:00.000Z",
"eventEndTime": "2023-11-30T08:00:00.000Z",
"eventCreatedTime": "2023-10-31T22:34:11.099Z",
"eventCreatedFrom": "CommunityDashboard",
"eventSlug": "test-room-2023-10-30",
"eventUrl": "https://test.gradual/home/events/test-room-2023-10-30",
"eventStatus": "Published"
},
{
"eventId": "64adee61dc5dfe85abf9ae3e",
"eventTitle": "Test livestream",
"eventType": "Livestream",
"eventTimezone": "America/Los_Angeles",
"eventStartTime": "2023-07-25T00:00:00.000Z",
"eventEndTime": "2024-09-30T00:00:00.000Z",
"eventCreatedTime": "2023-07-12T00:05:53.487Z",
"eventCreatedFrom": "CommunityDashboard",
"eventSlug": "test-livestream-2023-07-11",
"eventUrl": "https://test.gradual/home/events/test-livestream-2023-07-11",
"eventStatus": "Published"
}
]
}

Get an event by event ID

URL: https://api.gradual-api.com/public-api/v1/events/:eventId

HTTP Method: GET

Content type: application/json

Path Parameters:

  • eventId, string, required, this is the unique identifier to find an event

Response Example:

{
"eventId": "654180e3566f8d5a7fb49e86",
"eventTitle": "Test Room",
"eventType": "Livestream",
"eventTimezone": "America/Los_Angeles",
"eventStartTime": "2023-10-30T07:00:00.000Z",
"eventEndTime": "2023-11-30T08:00:00.000Z",
"eventCreatedTime": "2023-10-31T22:34:11.099Z",
"eventCreatedFrom": "CommunityDashboard",
"eventSlug": "test-room-2023-10-30",
"eventUrl": "https://test.gradual/home/events/test-room-2023-10-30",
"eventStatus": "Published"
}

Get the event’s attendees’ data

URL: https://api.gradual-api.com/public-api/v1/events/:eventId/attendees

HTTP Method: GET

Content type: application/json

Path Parameters:

  • eventId, string, required, this is the unique identifier to find an event

Query Parameters:

  • pageNum: number, optional, default 1
  • pageSize: number, optional, default 50
  • userEmail: string, optional, filter attendees by their email address
  • userId: string, optional, filter attendees by their user ID

Response Example:

{
"size": 2,
"pageNumber": 1,
"pageSize": 2,
"results": [
{
"attendeeId": "654d66f8ea532ea2ac8cf004",
"userId": "654d6623ea532ea2ac8ced28",
"attendeeFirstName": "Vijay",
"attendeeLastName": "John",
"attendeeDisplayName": "Vijay John",
"attendeeEmail": "[email protected]",
"attendeeType": "USER",
"registeredAt": "2023-11-09T23:10:48.118Z",
"attendeeLinkedUrl": "https://www.linkedin.com/in/xxxxxx",
"attendeeCompanyName": "TestCo",
"attendeePosition": "CEO"
},
{
"attendeeId": "65488c238314ce3add483d54",
"userId": "64bffb03c4ac58e329f0f0b4",
"attendeeFirstName": "Jerry",
"attendeeLastName": "Louis",
"attendeeDisplayName": "Jerry Louis",
"attendeeEmail": "[email protected]",
"attendeeType": "USER",
"registeredAt": "2023-11-06T06:48:03.354Z",
"attendeeLinkedUrl": "https://www.linkedin.com/in/xxxxxx",
"attendeeCompanyName": "Gradual Inc",
"attendeePosition": "Engineering"
}
]
}

Get Attendee by Attendee ID

URL: https://api.gradual-api.com/public-api/v1/events/:eventId/attendees/:attendeeId

HTTP Method: GET

Content type: application/json

Path Parameters:

  • eventId, string, required, this is the unique identifier to find an event
  • attendeeId, string, required, this is the unique identifier to find an attendee

Response Example:

{
"attendeeId": "654d66f8ea532ea2ac8cf004",
"userId": "654d6623ea532ea2ac8ced28",
"attendeeFirstName": "Vijay",
"attendeeLastName": "John",
"attendeeDisplayName": "Vijay John",
"attendeeEmail": "[email protected]",
"attendeeType": "USER",
"registeredAt": "2023-11-09T23:10:48.118Z",
"attendeeLinkedUrl": "https://www.linkedin.com/in/xxxxxx",
"attendeeCompanyName": "TestCo",
"attendeePosition": "CEO"
},

Register User To An Event

URL: https://api.gradual-api.com/public-api/v1/registration

HTTP Method: POST

Content type: application/json

Request Body Parameters:

  • eventSlug: string, required, slug of the event
  • email: string, required, user email
  • firstName: string, required, user first name
  • lastName: string, required, user last name
  • position: string, required, user job title
  • company: string, required, user company name
  • ticketOptionId: string, optional, id of ticket option (available from event dashboard)

Response:

  • success
    • status code = 200 with payload { "message": "Registration successful" }
  • if user already registered:
    • status code = 400 with payload { "message": User with email \"<email_address>\" already registered for this event." }
  • other errors:
    • status code = 400 with error-specific messages.

Get List of All Spaces

URL: https://api.gradual-api.com/public-api/v1/spaces

HTTP Method: GET

Content type: application/json

Response Example:

[
{
"name": "Space 1",
"description": "Space description is optional"
},
{
"name": "Space 2"
}
]

Update User Space Assignments

URL: https://api.gradual-api.com/public-api/v1/updateUserSpacesByEmail

HTTP Method: POST

Content type: application/json

Request Body Parameters:

  • email, string, required, this is the unique identifier to find and update user
  • spaces, [string], array of space names to be assigned
  • mode, string, one of “override” or “add
    • add” mode would add user to all spaces specified in spaces, user’s previous space assignments will not be affected
    • override” mode would wipe out any previous space assignments of this user, before assigning the user to the spaces specified by spaces
    • Use mode = “override” with spaces = [] would remove user from all spaces

Response Example:

{
"userEmail": "[email protected]",
"userId": "654d6623ea532ea2ac8ced28",
"userFirstName": "John",
"userLastName": "Smith",
"oldSpaces": [
"Space 1"
],
"newSpaces": [
"Space 1",
"Space 2"
]
}

Get a user's club by user ID

URL: https://api.gradual-api.com/public-api/v1/users/:userId/clubs

HTTP Method: GET

Content type: application/json

Path Parameters:

  • userId, string, required, this is the unique identifier to find a user

Response Example:

{
"userEmail": "[email protected]",
"userFirstName": "test_first",
"userLastName": "test_last",
"userId": "6553ce608b3f645e79d95034",
"userClubs": [
{
"clubId": "6553ce608b3f645e79d95034",
"clubName": "Club 1",
"clubSlug": "club-1"
}
]
}

Get all clubs

URL: https://api.gradual-api.com/public-api/v1/clubs

HTTP Method: GET

Content type: application/json

Response Example:

[
{
"clubId": "6553ce608b3f645e79d95034",
"clubName": "Club 1",
"clubSlug": "club-1"
}
]

Add a user to a club

URL: https://api.gradual-api.com/public-api/v1/clubs/:clubId/users

HTTP Method: POST

Content type: application/json

Path Parameters:

  • clubId, string, required, this is the unique identifier to find a club

Request Body Parameters:

  • userId, string, optional, this is the unique identifier to find a user(at least one of userId or email is required)
  • email, string, optional, this is the unique identifier to find a user(at least one of userId or email is required)

Response Example:

{
"success": true,
}

Delete a user from a club

URL: https://api.gradual-api.com/public-api/v1/clubs/:clubId/users

HTTP Method: DELETE

Content type: application/json

Path Parameters:

  • clubId, string, required, this is the unique identifier to find a club

Request Body Parameters:

  • userId, string, optional, this is the unique identifier to find a user(at least one of userId or email is required)
  • email, string, optional, this is the unique identifier to find a user(at least one of userId or email is required)

Response Example:

{
"success": true,
}
# Get all collections
URL: `https://api.gradual-api.com/public-api/v1/collections`
HTTP Method: `GET`
Content type: `application/json`
Query Parameters:
- `pageNum`, number, optional, default 1
- `pageSize`, 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:
```json
{
"size": 1,
"pageNumber": 1,
"pageSize": 50,
"results": [
{
"collectionID": "63e293d17efa0788a97273fe",
"collectionName": "Collection Name",
"collectionVisibility": "Visible",
"collectionUrl": "https://elc.gradual/home/collections/collection-name",
"collectionCoverUrl": "https://d2xo500swnpgl1.cloudfront.net/uploads/elc/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

Query Parameters:

  • pageNum: number, optional, default 1
  • pageSize: number, optional, default 50, max 200
  • fromDate: string, optional, format: YYYY-MM-DD, date will be padded to the start of the day. If a fromDate is specified, the response will include videos with a created time later than 00:00 of the provided fromDate.
  • toDate: string, optional, format: YYYY-MM-DD, date will be padded to the end of the day. Similarly, if an toDate is specified, the response will include videos with an created time earlier than 23:59 of the provided toDate.

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=_Z1mwUosYgwU",
"videoThumbnailUrl": "https://d2xo500swnpgl1.cloudfront.net/uploads/elc/Video-Title-fd0ffeb0-195e-491e-9eea-ae351f9914d8-1676390983173.png",
"videoDuration": 120,
"videoTags": [
"tag1",
"tag2"
],
"spaces": [
"Space 1",
"Space 2"
],
"access": "Public"
},
{
"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=_Z1mwUosYgwU",
"videoThumbnailUrl": "https://d2xo500swnpgl1.cloudfront.net/uploads/elc/Video-Title-fd0ffeb0-195e-491e-9eea-ae351f9914d8-1676390983173.png",
"videoDuration": 120,
"videoTags": [],
"spaces": [],
"access": "Public"
}
]
}

Get all blogs

URL: https://api.gradual-api.com/public-api/v1/blogs

HTTP Method: GET

Content type: application/json

Query Parameters:

  • pageNum: number, optional, default 1
  • pageSize: number, optional, default 50, max 200
  • fromDate: string, optional, format: YYYY-MM-DD, date will be padded to the start of the day. If a fromDate is specified, the response will include blogs with a created time later than 00:00 of the provided fromDate.
  • toDate: string, optional, format: YYYY-MM-DD, date will be padded to the end of the day. Similarly, if an toDate is specified, the response will include blogs with an created time earlier than 23:59 of the provided toDate.

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://d2xo500swnpgl1.cloudfront.net/uploads/elc/Video-Title-fd0ffeb0-195e-491e-9eea-ae351f9914d8-1676390983173.png",
"blogTags": [
"tag1",
],
"spaces": [
"Space 1",
],
"access": "Public"
}
]
}

Get all podcasts

URL: https://api.gradual-api.com/public-api/v1/podcasts

HTTP Method: GET

Content type: application/json

Query Parameters:

  • pageNum: number, optional, default 1
  • pageSize: number, optional, default 50, max 200
  • fromDate: string, optional, format: YYYY-MM-DD, date will be padded to the start of the day. If a fromDate is specified, the response will include podcasts with a created time later than 00:00 of the provided fromDate.
  • toDate: string, optional, format: YYYY-MM-DD, date will be padded to the end of the day. Similarly, if an toDate is specified, the response will include podcasts with an created time earlier than 23:59 of the provided toDate.

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://d2xo500swnpgl1.cloudfront.net/uploads/elc/Video-Title-fd0ffeb0-195e-491e-9eea-ae351f9914d8-1676390983173.png",
"podcastTags": [
"tag1",
],
"spaces": [
"Space 1",
],
"access": "Public"
}
]
}

Get all resources

URL: https://api.gradual-api.com/public-api/v1/resources

HTTP Method: GET

Content type: application/json

Query Parameters:

  • pageNum: number, optional, default 1
  • pageSize: number, optional, default 50, max 200
  • fromDate: string, optional, format: YYYY-MM-DD, date will be padded to the start of the day. If a fromDate is specified, the response will include resources with a created time later than 00:00 of the provided fromDate.
  • toDate: string, optional, format: YYYY-MM-DD, date will be padded to the end of the day. Similarly, if an toDate is specified, the response will include resources with an created time earlier than 23:59 of the provided toDate.

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://d2xo500swnpgl1.cloudfront.net/uploads/elc/Video-Title-fd0ffeb0-195e-491e-9eea-ae351f9914d8-1676390983173.png",
"resourceTags": [
"tag1",
],
"spaces": [
"Space 1",
],
"access": "Public"
}
]
}

Get all external-contents

URL: https://api.gradual-api.com/public-api/v1/external-contents

HTTP Method: GET

Content type: application/json

Query Parameters:

  • pageNum: number, optional, default 1
  • pageSize: number, optional, default 50, max 200
  • fromDate: string, optional, format: YYYY-MM-DD, date will be padded to the start of the day. If a fromDate is specified, the response will include external-contents with a created time later than 00:00 of the provided fromDate.
  • toDate: string, optional, format: YYYY-MM-DD, date will be padded to the end of the day. Similarly, if an toDate is specified, the response will include external-contents with an created time earlier than 23:59 of the provided toDate.

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://d2xo500swnpgl1.cloudfront.net/uploads/elc/Video-Title-fd0ffeb0-195e-491e-9eea-ae351f9914d8-1676390983173.png",
"externalContentLink": "https://www.google.com",
"externalContentTags": [
"tag1",
],
"spaces": [
"Space 1",
],
"access": "Public"
}
]
}