Skip to content

Get Learning's signal sources

GET/v1/organization/{orgId}/learning/workspace/engagement/sources

US Region: https://public-api.sessionboard.com · EU Region: https://public-api-eu.sessionboard.com

How connected the Learning workspace is: every source that feeds learner engagement (courses, certifications, credits, your meetings, Marketing campaigns, registration and webinar platforms, files), whether each is connected, what each brought in over the last 30 days, an estimate of what an unconnected one would add (only from this organization's own history, else none), the capabilities connected sources turn on, the next best connection, and recent signals. Reads only. Requires read:learning; refused for a key restricted to particular events. Also at GET /v1/learning/workspace/engagement/sources.

Request example

Terminal window
curl --request GET \
--url 'https://public-api.sessionboard.com/v1/organization/{orgId}/learning/workspace/engagement/sources' \
--header 'x-access-token: <api-token>'

Try it

Authorization

Your token stays in this page. It is sent only to the region above and is never saved; it is gone when you leave or reload the page.

Path parameters
GET

Authorizations

  • x-access-tokenstringheader

    Organization API token. Generate from Organization Settings → API Tokens.

  • AuthorizationBearer <token>headeror

    OAuth 2.1 access token. Obtained via the OAuth PKCE flow at /oauth/token.

Send one of these. See Authentication.

Path parameters

  • orgIdstringpathrequired

    Your organization ID. Any other organization returns 404.

Responses

200application/json

OK

  • successboolean
  • payloadLearningSignalSources
    Show child attributes
    • window_daysinteger
    • connected_pctinteger
      Minimum
      0
      Maximum
      100
    • summarystring
    • signals_30dinteger
    • people_30dinteger
    • sourcesobject[]
      Show child attributes
      • keystring
      • labelstring
      • groupstring | null
      • slotstring
      • providerstring | null
      • app_idstring | null
      • builtinboolean
      • connectedboolean
      • needs_reauthboolean
      • connect_methodstring | null

        oauth, api_key, simulated, apps_page or coming.

      • comingboolean
      • adds_signalsboolean
      • signals_30dinteger
      • via_file_30dinteger
      • minutes_watched_30dinteger
      • last_atstring<date-time> | null
      • topobject[]
        Max items
        3
        Show child attributes
        • typestring
        • labelstring
        • countinteger
      • ready_hintstring | null
      • startobject | null

        Where to start a built-in source that has nothing yet.

      • estimateobject | null

        What an unconnected source would add. per_month is null when there is nothing to go on.

        Show child attributes
        • per_monthinteger | null
        • basisstring
        • comingboolean
        • covered_bystring
    • superpowersobject[]

      Capabilities connected sources turn on.

      Show child attributes
      • keystring
      • labelstring
      • for_attendeesstring | null
      • for_marketingstring | null
      • onboolean
      • powered_bystring[]
      • needs_any_ofstring[]
      • turn_onobject | null
      • better_withobject | null
    • next_bestobject | null

      The connection that would add the most.

      Show child attributes
      • keystring
      • app_idstring | null
      • labelstring
      • slotstring
      • unlocksstring[]
      • per_monthinteger | null
      • adds_pointsinteger
      • whystring
    • recentobject[]
      Show child attributes
      • atstring<date-time>
      • textstring
      • sourcestring
      • typestring
    • notestring

401

Missing, invalid or expired token.

403application/json

  • SCOPE_REQUIRED — the token lacks read:learning (reads) or write:learning (writes). Legacy tokens with no scopes cannot write.
  • ORG_WIDE_TOKEN_REQUIRED — the token is restricted to particular events: "The Learning workspace covers every event and learner in the organization, so this API key (restricted to particular events) cannot use it. Use a key without an event restriction."
  • FEATURE_NOT_ENABLED (feature: lessons_credits) — Learning is not on for the organization.
  • FORBIDDEN — the token's user is not an active member of the organization, or lacks the Lessons permission the operation needs.

Gateway errors carry error (a code) and message. Errors from Learning itself carry status, success: false, message, name, and sometimes code (and feature or paused_at).

  • errorstring | object

    The gateway's error code (SCOPE_REQUIRED, ORG_WIDE_TOKEN_REQUIRED, NOT_FOUND, …).

  • messagestring
  • statusinteger
  • successboolean
  • namestring
  • codestring

    FEATURE_NOT_ENABLED, AGENT_WRITES_PAUSED, …

  • featurestring
  • paused_atstring<date-time>

404application/json

orgId is not your organization (error: NOT_FOUND, message: Organization not found).

Gateway errors carry error (a code) and message. Errors from Learning itself carry status, success: false, message, name, and sometimes code (and feature or paused_at).

  • errorstring | object

    The gateway's error code (SCOPE_REQUIRED, ORG_WIDE_TOKEN_REQUIRED, NOT_FOUND, …).

  • messagestring
  • statusinteger
  • successboolean
  • namestring
  • codestring

    FEATURE_NOT_ENABLED, AGENT_WRITES_PAUSED, …

  • featurestring
  • paused_atstring<date-time>

429application/json

  • The token's request limit (100 requests per 15 minutes per bucket by default — see Rate Limiting). Wait Retry-After seconds.
  • QUOTA_EXCEEDED (writes) — the token's daily write quota (10,000 a day). Resets at midnight UTC.

Gateway errors carry error (a code) and message. Errors from Learning itself carry status, success: false, message, name, and sometimes code (and feature or paused_at).

  • errorstring | object

    The gateway's error code (SCOPE_REQUIRED, ORG_WIDE_TOKEN_REQUIRED, NOT_FOUND, …).

  • messagestring
  • statusinteger
  • successboolean
  • namestring
  • codestring

    FEATURE_NOT_ENABLED, AGENT_WRITES_PAUSED, …

  • featurestring
  • paused_atstring<date-time>
  • Retry-Afterintegerheader

    Seconds to wait before retrying.

Response examples

{
"success": true,
"payload": {
"window_days": 30,
"connected_pct": 0,
"summary": "<string>",
"signals_30d": 123,
"people_30d": 123,
"sources": [
{
"key": "<string>",
"label": "<string>",
"group": "<string>",
"slot": "<string>",
"provider": "<string>",
"app_id": "<string>",
"builtin": true,
"connected": true,
"needs_reauth": true,
"connect_method": "<string>",
"coming": true,
"adds_signals": true,
"signals_30d": 123,
"via_file_30d": 123,
"minutes_watched_30d": 123,
"last_at": "2026-01-15T09:30:00Z",
"top": [
{
"type": "<string>",
"label": "<string>",
"count": 123
}
],
"ready_hint": "<string>",
"start": {},
"estimate": {
"per_month": 123,
"basis": "<string>",
"coming": true,
"covered_by": "<string>"
}
}
],
"superpowers": [
{
"key": "<string>",
"label": "<string>",
"for_attendees": "<string>",
"for_marketing": "<string>",
"on": true,
"powered_by": [
"<string>"
],
"needs_any_of": [
"<string>"
],
"turn_on": {},
"better_with": {}
}
],
"next_best": {
"key": "<string>",
"app_id": "<string>",
"label": "<string>",
"slot": "<string>",
"unlocks": [
"<string>"
],
"per_month": 123,
"adds_points": 123,
"why": "<string>"
},
"recent": [
{
"at": "2026-01-15T09:30:00Z",
"text": "<string>",
"source": "<string>",
"type": "<string>"
}
],
"note": "<string>"
}
}