From your native app, you can open the ExodeBiz app directly on the screen you need —
select the school, sign the user in with a token if needed, and open a lesson. All it takes is opening
the scheme link the standard way (
Intent.ACTION_VIEW on Android / UIApplication.open on iOS).Link format
The deep link uses the app’s URL schemeexodebizapp://. All parameters go into a single data
parameter — a URL-encoded query string:
data:
string
required
Always
open-page.string
required
The school’s domain (FQDN), for example
my-school.com or my-school.exode.biz.string
required
Screen identifier. For a lesson, see the “Open a lesson” section.
string (JSON)
required
JSON with the screen parameters, for example
{"page":"1","courseId":"42","lessonId":"123"}.string (base64url)
A list of additional actions (for example, sign-in). See the “extra” section.
Open a lesson
page— the page in the course list; to go to a lesson, specify"1".courseId,lessonId— the course and lesson IDs in your school.
DOMAIN, COURSE_ID, LESSON_ID:
Other screens
By changingpageId and params, you can open any screen:
extra — nested actions (sign-in)
Theextra parameter lets you pass a list of actions to the app that run along with
opening it — for example, token-based sign-in. extra is base64url(JSON.stringify({ actions: [...] })).
JSON structure:
The execution order is guaranteed: first the actions from
extra (in array order), then
the navigation from open-page. So an open-page link + extra:[{login-by-token}] does exactly this:
open the app → sign in → open the page.1
Get the user's session token
The token is created with the Create a session token method
(
POST /saas/v2/user/session/auth-token). Take the value of the token field from the response.2
Build extra
extra = base64url(JSON.stringify({ actions: [{ type: 'login-by-token', token }] })).Example (with the placeholder token USER_TOKEN):3
Add extra to data
Add
extra to the query string inside data — the app switches the school, signs the user in
and opens the lesson.Use base64url specifically (
-/_ instead of +//, no = padding) — regular base64 may
not pass through a query string correctly.Building and opening the link in code
Behavior
- The deep link works only if the app is installed. If it isn’t, the OS opens nothing:
handle this yourself and show a fallback (the app store or the school’s website). On Android, catch
ActivityNotFoundException; on iOS, checksuccess == falsein theopencompletion handler. - If the school hasn’t been added to the app yet, it is added automatically and becomes active.
- Navigation follows the usual authorization rules: without an
extrasign-in, an unauthenticated user sees the sign-in screen.
Troubleshooting
Updated: 2026-09-25 14:33 UTC