Skip to content

Bring in a meeting and draft courses, step by step

POST/v1/organization/{orgId}/learning/workspace/meetings/import-for-learning

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

"Import last year's meeting and make courses" in three steps. preview (the default) writes nothing: with no appId it lists the platforms and what each brings; with an appId, that platform's events and suggested (the latest one that already happened); with a remoteEventId, what the import would do. import brings the event in, as Bring in a meeting (needs appId and remoteEventId; answers job_id and event). draft makes draft courses from every session of the imported event (needs eventId; pass jobId to get status: still_importing while the import runs), the ones without a recording waiting for one. Nothing is published and no one is notified: publishing is Publish a meeting on demand, which a person approves. Credit is never set here. The token's user needs the Lessons create permission and permission to view integrations. Requires write:learning; refused for a key restricted to particular events. Also at POST /v1/learning/workspace/meetings/import-for-learning.

Request example

Terminal window
curl --request POST \
--url 'https://public-api.sessionboard.com/v1/organization/{orgId}/learning/workspace/meetings/import-for-learning' \
--header 'x-access-token: <api-token>' \
--header 'Content-Type: application/json' \
--data '{
"step": "preview",
"appId": "cvent",
"remoteEventId": "<string>",
"eventId": 123,
"jobId": "<string>"
}'

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
Body application/json
POST

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.

Request body

application/json

  • stepstring
    Allowed values
    "preview", "import", "draft"
    Default
    "preview"
  • appIdstring

    A registration platform. Today sessions can be brought in from cvent, swoogo and bizzabo; the others answer not_available (List registration platforms says why).

    Allowed values
    "cvent", "swoogo", "bizzabo", "rainfocus", "eventbrite", "swapcard", "visit", "map-your-show", "a2z"
  • remoteEventIdstring

    The platform's event id.

    Max length
    200
  • eventIdinteger | string

    The Sessionboard event the import made (draft step).

    Option 1

    integer

    Option 2

    string

  • jobIdstring

    The import job (draft step waits for it).

    Max length
    64
{
"step": "preview",
"appId": "cvent",
"remoteEventId": "<string>",
"eventId": 123,
"jobId": "<string>"
}

Responses

200application/json

The step's answer: step plus, for preview, the platforms (as List registration platforms), one platform's events (as List a registration platform's events, with suggested and message) or an import preview (as Bring in a meeting with status: preview); for import, the import (as Bring in a meeting); for draft, status: still_importing or status: drafted with the result of Make draft courses from a meeting and next.

  • successboolean
  • payloadLearningMeetingForLearningStep

    step plus the fields of the answer it wraps (List registration platforms, List a registration platform's events, Bring in a meeting, or Make draft courses from a meeting).

    Show child attributes
    • stepstring
      Allowed values
      "preview", "import", "draft"
    • statusstring

      still_importing or drafted on the draft step; on import and an import preview, as in Bring in a meeting.

    • suggestedLearningRemoteEvent | any | null

      preview with an appId: the latest of its events that already happened.

      Show child attributes
      • idstring

        The platform's event id.

      • namestring
      • starts_atstring | null
      • imported_event_idinteger | null

        The Sessionboard event it was brought into before.

      • imported_event_namestring | null
    • event_idinteger

      still_importing only.

    • nextstring

      drafted only: what to do next.

    • messagestring

400application/json

The body failed validation; Importing needs appId and remoteEventId.; Drafting needs the eventId the import returned.; the connection has no event with that id; or No courses could be made from those sessions.

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>

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: "Bringing in a meeting reaches the organization's registration platforms and every event, 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, lacks the Lessons permission, or (listing a platform's events, importing) lacks permission to view integrations (You need permission to view integrations to use Apps).

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

Another organization, or (draft step) the event is not in your organization (Event could not be 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": {
"step": "preview",
"status": "<string>",
"suggested": {
"id": "<string>",
"name": "<string>",
"starts_at": "<string>",
"imported_event_id": 123,
"imported_event_name": "<string>"
},
"event_id": 123,
"next": "<string>",
"message": "<string>"
}
}