Introduction to Rise API

Technical information you need to use the Rise API

Anthony Karcz avatar
Written by Anthony Karcz
Updated over a week ago

The Rise API is organized around REST. Our API has predictable resource-oriented URLs, accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication, and verbs.

Your Rise API requests will use the URL https://api.rise.com. For the latest updates, see the Changelog.

Click here to learn how to generate API keys in Rise.

Authentication

Your API Key is used to authenticate requests and identifies your Rise.com account. It should be stored securely: make sure it is kept out of version control, and can only be accessed by those who need it. Treat it like any other password.

All API requests must use Bearer Authentication: your API Key must be provided as a Bearer Token in the Authorization header. All API requests must be made over HTTPS. Calls made over plain HTTP will fail. API requests without authentication will also fail.

Versioning

When changes are made to our API that aren't backward-compatible, we'll release a new, dated API version. The initial API version of 2020-07-16 will be assumed when your requests do not include a Rise-API-Version header.

When an invalid API version header is provided you will receive a 400 response with the error code invalid_api_version. Successful API requests will include a Rise-API-Version response header, indicating which API version your request was processed using.

Whenever a new API version is released, we call it out explicitly in our Changelog, in addition to creating a new entry on the API Versions page.

Example Request

curl -i <https://api.rise.com/users> \\ 
-H "Authorization: Bearer $API_KEY"
-H "Rise-API-Version: 2020-07-16"

Pagination

All paginated endpoints are cursor-based and return a nextUrl property. If not null, nextUrl indicates that there may be additional results. A GET request can be made to the nextUrl URL to get the next page of results. A nextUrl of null indicates there are no further results. All paginated endpoints support a limit query string parameter that specifies the maximum number of results to return in a single response. All endpoints that return a list of results support pagination.

Note: The limit value must be between 1 and 100 (except where otherwise noted; and defaults to 50 if not specified).

Endpoints Supporting Pagination

  • GET /courses

  • GET /groups

  • GET /groups/{groupId}/users

  • GET /invitations

  • GET /learning-paths

  • GET /learning-paths/{learningPathId}

  • GET /learning-paths/{learningPathId}/courses

  • GET /reports/activity

  • GET /reports/courses/{courseId}

  • GET /reports/learners/{userId}

  • GET /reports/learning-paths/{learningPathId}/courses

  • GET /reports/learning-paths/{learningPathId}/learners

  • GET /users

  • GET /users/{userId}/groups

  • GET /webhooks

Errors

A 400 response containing a list of errors will be returned when the request is not valid. Some common error codes include:

  • validation_failed: The request body has a validation error

  • invalid_email: The email property is not a correctly formatted email address

  • missing_api_key: The request is missing an API Key

  • invalid_api_key: The API Key provided is invalid

Example Response

{ 
"errors" : [
{
"code" : "invalid_email",
"message" : "\\"email\\" must be a valid email"
}
]
}

Support

We're excited for you to connect Rise with the tools you use most. Support can confirm if API calls are working as expected, but we can't help with writing custom script or debugging third-party applications.

If you do run into an issue, we'll do our best to help you troubleshoot by asking for:

  • The simplest version of the call you're making with the API

  • Whether the problem can be replicated outside of your application

  • Request headers, response headers (including the X-Request-Id header), request bodies, and response bodies

Reach out to our team and let us know what's happening. We'll take it from there!

Did this answer your question?