Skip to main content
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).
The deep link uses the app’s URL scheme exodebizapp://. All parameters go into a single data parameter — a URL-encoded query string:
Parameters inside 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.
Parameter values contain special characters and require double encoding: first build the query string action=...&domain=... (with URL-encoded values), then encode it as a whole and put it into data. Don’t build it manually — use standard builders (URLSearchParams, Uri.Builder, URLComponents), see the code examples below.

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.
A ready-made link — substitute DOMAIN, COURSE_ID, LESSON_ID:

Other screens

By changing pageId and params, you can open any screen:
Need another screen? Contact support and we’ll tell you the correct pageId and parameters.

extra — nested actions (sign-in)

The extra 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:
Supported actions:
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.
A link with login-by-token signs in as a specific user — anyone who has the link will be signed in as that user. Such links must be short-lived / personal and must not be published.
Use base64url specifically (-/_ instead of +//, no = padding) — regular base64 may not pass through a query string correctly.

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, check success == false in the open completion 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 extra sign-in, an unauthenticated user sees the sign-in screen.

Troubleshooting


Updated: 2026-09-25 14:33 UTC