Skip to content

Bring in a meeting from a registration platform

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

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

Makes the platform's event a Sessionboard event and queues the import of its sessions, speakers (on the sessions they present, where the platform reads that), tracks and session check-ins. Nothing is written to the platform, nothing is published and no one is notified. Safe to repeat: an event brought in before is updated (new sessions added, changed ones updated unless someone edited them in Sessionboard), never duplicated. With dryRun it reads the platform's event and says what would happen (status: preview), writing nothing. The import runs in the background: poll Get an imported meeting with jobId until import.state is done, then make courses from it. Always answers 202; status says what happened: queued, preview, not_connected (with connect_url, where a person connects the platform), needs_remote_event, not_available or managed_on_platform. 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.

Request example

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

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/jsonrequired

  • appIdstringrequired

    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, from List a registration platform's events.

    Max length
    200
  • dryRunboolean

    Say what would happen; write nothing.

{
"appId": "cvent",
"remoteEventId": "<string>",
"dryRun": true
}

Responses

202application/json

Queued, previewed, or why not (status).

  • successboolean
  • payloadLearningMeetingImport
    Show child attributes
    • app_idstring

      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"
    • remote_event_idstring | null
    • sourceLearningRegistrationSource
      Show child attributes
      • idstring

        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"
      • namestring
      • connectedboolean
      • connection_idstring | null
      • needs_reauthboolean
      • simulatedboolean
      • comingboolean

        Cannot be connected yet.

      • importableboolean

        Sessions can be brought in from it.

      • connectstring

        How a person connects it.

        Allowed values
        "oauth", "api_key", "coming"
      • bringsobject
        Show child attributes
        • sessionsLearningSourceBrings
          Show child attributes
          • availableboolean
          • notestring
        • speakersobject
          Show child attributes
          • availableboolean
          • notestring
          • on_sessionsboolean

            Speakers arrive on the sessions they present, so faculty carry over.

        • recordingsLearningSourceBrings
          Show child attributes
          • availableboolean
          • notestring
        • attendanceobject
          Show child attributes
          • availableboolean
          • notestring
          • needs_new_sign_inboolean

            The connection's sign-in cannot read attendees or check-ins.

      • linestring

        One line to show a person.

    • statusstring
      Allowed values
      "queued", "preview", "not_connected", "needs_remote_event", "not_available", "managed_on_platform"
    • dry_runboolean

      preview only.

    • connect_urlstring

      not_connected only: where a person connects the platform in Sessionboard Learning.

    • remote_eventLearningRemoteEvent
      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
    • eventobject | null

      The Sessionboard event. On preview: id (null when one will be made), name, will_create. After an import: id, name, created; null when nothing was queued and no event was made.

      Show child attributes
      • idinteger | null
      • namestring
      • createdboolean
      • will_createboolean
    • includestring[]

      What is brought in.

      Allowed values
      "sessions", "speakers", "attendees"
    • outcomeobject

      Per kind, queued, not_available or managed_on_platform.

    • reasonsobject

      Per kind that is not brought in, why.

    • job_idstring<uuid> | null

      The import job; pass it as jobId to Get an imported meeting.

    • notesstring[]
    • messagestring

400application/json

The body failed validation, or the connection has no event with that id (There is no <platform> event with id <id> on this connection.).

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

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": {
"app_id": "cvent",
"remote_event_id": "<string>",
"source": {
"id": "cvent",
"name": "<string>",
"connected": true,
"connection_id": "<string>",
"needs_reauth": true,
"simulated": true,
"coming": true,
"importable": true,
"connect": "oauth",
"brings": {
"sessions": {
"available": true,
"note": "<string>"
},
"speakers": {
"available": true,
"note": "<string>",
"on_sessions": true
},
"recordings": {
"available": true,
"note": "<string>"
},
"attendance": {
"available": true,
"note": "<string>",
"needs_new_sign_in": true
}
},
"line": "<string>"
},
"status": "queued",
"dry_run": true,
"connect_url": "<string>",
"remote_event": {
"id": "<string>",
"name": "<string>",
"starts_at": "<string>",
"imported_event_id": 123,
"imported_event_name": "<string>"
},
"event": {
"id": 123,
"name": "<string>",
"created": true,
"will_create": true
},
"include": [
"sessions"
],
"outcome": {
"key": "<string>"
},
"reasons": {
"key": "<string>"
},
"job_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"notes": [
"<string>"
],
"message": "<string>"
}
}