Get Started
Let's get you ready to ship a basic Coassemble integration: authenticate, request a signed embed URL, and render it in an iframe. We recommend starting with a learner-facing course embed, then expanding to other embeddables as needed.
Before you begin
- Your workspace has the API enabled and you have a workspace API key. You can generate or regenerate the key from your workspace API settings.
- You have at least one course in Coassemble that you can embed.
- You have a stable identifier from your app (for example, a user ID from your database). This is used to identify your learner within Coassemble.
Entitlements
The API and embeddables are gated behind a paid plan with API access enabled. Authoring, analytics, advanced, and SCORM features each require their own entitlement on top of base API access — endpoints that need these will return a 403 FORBIDDEN if your plan does not include them. See the plan matrix on the Coassemble pricing page.
1. Set your Authorization header
Every request to the Coassemble API uses this format. The key encodes your workspace ID, so it is the entire header value.
Authorization: COASSEMBLE:<YOUR_WORKSPACE_ID>:<YOUR_API_KEY>2. Fetch a course ID to embed
If you do not already have a course ID, fetch your courses and select one.
/v1/headless/coursesQuery parameters
| Field | Type | Required | Default | Description | Options |
|---|---|---|---|---|---|
identifier | string | No | — | — | |
clientIdentifier | string | No | — | — | |
length | number | No | 100 | — | |
page | number | No | 0 | — | |
title | string | No | — | — | |
deleted | boolean | No | false | — |
3. Request a signed embed URL
Request a signed URL for the course player. For a learner integration, the minimum body you will need is action, courseId, and identifier.
/v1/headless/embed/courseBody parameters
| Field | Type | Required | Desc | Options |
|---|---|---|---|---|
action | string | Yes | view (learner) or edit (authoring) | viewedit |
courseId | number | No | Course ID (required when action is view) | — |
identifier | string | Yes | Your stable user identifier | — |
clientIdentifier | string | No | The client this user belongs to | — |
themeId | number | No | Theme ID to render the embed with | — |
name | string | No | Display name for the learner | — |
avatar | string | No | Avatar URL for the learner | — |
options | object | No | — |
4. Render the signed URL in an iframe
Put the signed URL returned by the embed endpoint into your iframe src.
<iframe src="SIGNED_EMBED_URL"></iframe>Security requirements: The workspace API key must be stored exclusively on your server — the browser never holds it. Generate a fresh signed URL per user per page load; do not cache or reuse signed URLs across different users or sessions. Direct browser-to-API calls are not supported.