GoToWebinar Recording Assets API

Operations available for assets of a given organizer.

Operations 2

POST /recordingassets/search Search for completed recording assets #
POST /accounts/{accountKey}/recordingassets/search Search for completed recording assets of an admin user #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/gotowebinar-recording-assets-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

gotowebinar-recording-assets-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GoTo Webinar 2.0 REST Recording Assets API
  description: We recommend you use the v2 of this API.
  version: 2.0.0
servers:
- url: https://api.getgo.com/G2W/rest/v2
security:
- OAuth2: []
tags:
- name: Recording Assets
  description: Operations available for assets of a given organizer.
paths:
  /recordingassets/search:
    post:
      tags:
      - Recording Assets
      operationId: searchAssets
      summary: Search for completed recording assets
      description: 'Allows search for a completed recording asset.


        ### Example Interaction with curl


        The default request is represented below, that excludes the `includes` query parameter.

        You will get the `mp4DownloadUrl` and `transcriptUrl` by default in the response if they exist.

        The `recordingShareUrl` and `webinarKey` fields will not be included.


        ```

        curl --request PUT ''https://api.getgo.com/G2W/rest/v2/recordingassets/search?page={page}&size={size}'' \

        --header ''Authorization: Bearer {ACCESS_TOKEN}'' \

        --header ''Content-Type: application/json'' \

        --data-raw ''{

        "accountKey": "123456",

        "sortField": "CREATETIME",

        "sortOrder": "DESC"

        }''


        ```

        By adding the `includes` query parameter has shown below, you''ll get

        the `recordingShareUrl` and `webinarKey` fields in the response.


        ```

        curl --request PUT ''https://api.getgo.com/G2W/rest/v2/recordingassets/search?page={page}&size={size}&includes=recordingShareUrl%2CwebinarKey'' \

        --header ''Authorization: Bearer {ACCESS_TOKEN}'' \

        --header ''Content-Type: application/json'' \

        --data-raw ''{

        "accountKey": "123456",

        "sortField": "CREATETIME",

        "sortOrder": "DESC"

        }''

        ```'
      parameters:
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/size'
      - $ref: '#/components/parameters/includes'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetsSearchReq'
        description: The asset search parameters
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetsResponse'
        '400':
          description: Bad Request
        '403':
          description: Forbidden
        '404':
          description: Not Found
      x-codeSamples:
      - lang: Node + Axios
        source: "var axios = require(\"axios\").default;\n\nvar options = {\n  method: 'POST',\n  url: 'https://api.getgo.com/G2W/rest/v2/recordingassets/search',\n  params: {\n    page: 'SOME_INTEGER_VALUE',\n    size: 'SOME_INTEGER_VALUE',\n    includes: 'SOME_ARRAY_VALUE'\n  },\n  headers: {\n    Authorization: 'Bearer REPLACE_BEARER_TOKEN',\n  },\n  data: {\n    accountKey: 'string',\n    name: 'string',\n    sortField: 'CREATETIME',\n    sortOrder: 'DESC'\n  }\n};\n\naxios.request(options).then(function (response) {\n  console.log(response.data);\n}).catch(function (error) {\n  console.error(error);\n});"
      - lang: Shell + Curl
        source: "curl --request POST \\\n  --url 'https://api.getgo.com/G2W/rest/v2/recordingassets/search?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&includes=SOME_ARRAY_VALUE' \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --header 'content-type: application/json' \\\n  --data '{\"accountKey\":\"string\",\"name\":\"string\",\"sortField\":\"CREATETIME\",\"sortOrder\":\"DESC\"}'"
      - lang: Python + Python3
        source: "import http.client\n\nconn = http.client.HTTPSConnection(\"api.getgo.com\")\n\npayload = \"{\\\"accountKey\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"sortField\\\":\\\"CREATETIME\\\",\\\"sortOrder\\\":\\\"DESC\\\"}\"\n\nheaders = {\n    'Authorization': \"Bearer REPLACE_BEARER_TOKEN\",\n    'content-type': \"application/json\"\n    }\n\nconn.request(\"POST\", \"/G2W/rest/v2/recordingassets/search?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&includes=SOME_ARRAY_VALUE\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
      - lang: Php + Http2
        source: "<?php\n\n$client = new http\\Client;\n$request = new http\\Client\\Request;\n\n$body = new http\\Message\\Body;\n$body->append('{\"accountKey\":\"string\",\"name\":\"string\",\"sortField\":\"CREATETIME\",\"sortOrder\":\"DESC\"}');\n\n$request->setRequestUrl('https://api.getgo.com/G2W/rest/v2/recordingassets/search');\n$request->setRequestMethod('POST');\n$request->setBody($body);\n\n$request->setQuery(new http\\QueryString([\n  'page' => 'SOME_INTEGER_VALUE',\n  'size' => 'SOME_INTEGER_VALUE',\n  'includes' => 'SOME_ARRAY_VALUE'\n]));\n\n$request->setHeaders([\n  'Authorization' => 'Bearer REPLACE_BEARER_TOKEN',\n  'content-type' => 'application/json'\n]);\n\n$client->enqueue($request)->send();\n$response = $client->getResponse();\n\necho $response->getBody();"
      - lang: Ruby + Native
        source: 'require ''uri''

          require ''net/http''

          require ''openssl''


          url = URI("https://api.getgo.com/G2W/rest/v2/recordingassets/search?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&includes=SOME_ARRAY_VALUE")


          http = Net::HTTP.new(url.host, url.port)

          http.use_ssl = true

          http.verify_mode = OpenSSL::SSL::VERIFY_NONE


          request = Net::HTTP::Post.new(url)

          request["Authorization"] = ''Bearer REPLACE_BEARER_TOKEN''

          request["content-type"] = ''application/json''

          request.body = "{\"accountKey\":\"string\",\"name\":\"string\",\"sortField\":\"CREATETIME\",\"sortOrder\":\"DESC\"}"


          response = http.request(request)

          puts response.read_body'
  /accounts/{accountKey}/recordingassets/search:
    post:
      tags:
      - Recording Assets
      operationId: searchAssetsForAdmin
      summary: Search for completed recording assets of an admin user
      description: 'Allows search for a completed recording asset for an admin user. The authorization token must represent an admin.


        ### Example Interaction with curl


        The default request is represented below, that excludes the `includes` query parameter.

        You will get the `mp4DownloadUrl` and `transcriptUrl` by default in the response if they exist.

        The `recordingShareUrl` and `webinarKey` fields will not be included.


        ```

        curl --request POST ''https://api.getgo.com/G2W/rest/v2/accounts/{accountKey}/recordingassets/search?page={page}&size={size}'' \

        --header ''Authorization: Bearer {ACCESS_TOKEN}'' \

        --header ''Content-Type: application/json'' \

        --data-raw ''{

        "name": "Test"

        "organizerKey": "123456",

        "sortField": "CREATETIME",

        "sortOrder": "DESC",

        "fromTime":"2021-01-01T00:00:00Z",

        "toTime":"2022-02-02T06:36:02.352Z"

        }''


        ```

        By adding the `includes` query parameter has shown below, you''ll get

        the `recordingShareUrl` and `webinarKey` fields in the response.


        ```

        curl --request POST ''https://api.getgo.com/G2W/rest/v2/accounts/{accountKey}/recordingassets/search?page={page}&size={size}&includes=recordingShareUrl%2CwebinarKey'' \

        --header ''Authorization: Bearer {ACCESS_TOKEN}'' \

        --header ''Content-Type: application/json'' \

        --data-raw ''{

        "name": "Test"

        "organizerKey": "123456",

        "sortField": "CREATETIME",

        "sortOrder": "DESC",

        "fromTime":"2021-01-01T00:00:00Z",

        "toTime":"2022-02-02T06:36:02.352Z"

        }''

        ```'
      parameters:
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/size'
      - $ref: '#/components/parameters/includes'
      - $ref: '#/components/parameters/accountKey'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetsSearchRequestForAdmin'
        description: The asset search parameters
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetsResponse'
        '400':
          description: Bad Request
        '403':
          description: Forbidden or oauth scope is invalid
        '404':
          description: Not Found
      x-codeSamples:
      - lang: Node + Axios
        source: "var axios = require(\"axios\").default;\n\nvar options = {\n  method: 'POST',\n  url: 'https://api.getgo.com/G2W/rest/v2/accounts/%7BaccountKey%7D/recordingassets/search',\n  params: {\n    page: 'SOME_INTEGER_VALUE',\n    size: 'SOME_INTEGER_VALUE',\n    includes: 'SOME_ARRAY_VALUE'\n  },\n  headers: {\n    Authorization: 'Bearer REPLACE_BEARER_TOKEN',\n  },\n  data: {\n    organizerKey: 'string',\n    name: 'string',\n    sortField: 'CREATETIME',\n    sortOrder: 'DESC',\n    fromTime: 'string',\n    toTime: 'string'\n  }\n};\n\naxios.request(options).then(function (response) {\n  console.log(response.data);\n}).catch(function (error) {\n  console.error(error);\n});"
      - lang: Shell + Curl
        source: "curl --request POST \\\n  --url 'https://api.getgo.com/G2W/rest/v2/accounts/%7BaccountKey%7D/recordingassets/search?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&includes=SOME_ARRAY_VALUE' \\\n  --header 'Authorization: Bearer REPLACE_BEARER_TOKEN' \\\n  --header 'content-type: application/json' \\\n  --data '{\"organizerKey\":\"string\",\"name\":\"string\",\"sortField\":\"CREATETIME\",\"sortOrder\":\"DESC\",\"fromTime\":\"string\",\"toTime\":\"string\"}'"
      - lang: Python + Python3
        source: "import http.client\n\nconn = http.client.HTTPSConnection(\"api.getgo.com\")\n\npayload = \"{\\\"organizerKey\\\":\\\"string\\\",\\\"name\\\":\\\"string\\\",\\\"sortField\\\":\\\"CREATETIME\\\",\\\"sortOrder\\\":\\\"DESC\\\",\\\"fromTime\\\":\\\"string\\\",\\\"toTime\\\":\\\"string\\\"}\"\n\nheaders = {\n    'Authorization': \"Bearer REPLACE_BEARER_TOKEN\",\n    'content-type': \"application/json\"\n    }\n\nconn.request(\"POST\", \"/G2W/rest/v2/accounts/%7BaccountKey%7D/recordingassets/search?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&includes=SOME_ARRAY_VALUE\", payload, headers)\n\nres = conn.getresponse()\ndata = res.read()\n\nprint(data.decode(\"utf-8\"))"
      - lang: Php + Http2
        source: "<?php\n\n$client = new http\\Client;\n$request = new http\\Client\\Request;\n\n$body = new http\\Message\\Body;\n$body->append('{\"organizerKey\":\"string\",\"name\":\"string\",\"sortField\":\"CREATETIME\",\"sortOrder\":\"DESC\",\"fromTime\":\"string\",\"toTime\":\"string\"}');\n\n$request->setRequestUrl('https://api.getgo.com/G2W/rest/v2/accounts/%7BaccountKey%7D/recordingassets/search');\n$request->setRequestMethod('POST');\n$request->setBody($body);\n\n$request->setQuery(new http\\QueryString([\n  'page' => 'SOME_INTEGER_VALUE',\n  'size' => 'SOME_INTEGER_VALUE',\n  'includes' => 'SOME_ARRAY_VALUE'\n]));\n\n$request->setHeaders([\n  'Authorization' => 'Bearer REPLACE_BEARER_TOKEN',\n  'content-type' => 'application/json'\n]);\n\n$client->enqueue($request)->send();\n$response = $client->getResponse();\n\necho $response->getBody();"
      - lang: Ruby + Native
        source: 'require ''uri''

          require ''net/http''

          require ''openssl''


          url = URI("https://api.getgo.com/G2W/rest/v2/accounts/%7BaccountKey%7D/recordingassets/search?page=SOME_INTEGER_VALUE&size=SOME_INTEGER_VALUE&includes=SOME_ARRAY_VALUE")


          http = Net::HTTP.new(url.host, url.port)

          http.use_ssl = true

          http.verify_mode = OpenSSL::SSL::VERIFY_NONE


          request = Net::HTTP::Post.new(url)

          request["Authorization"] = ''Bearer REPLACE_BEARER_TOKEN''

          request["content-type"] = ''application/json''

          request.body = "{\"organizerKey\":\"string\",\"name\":\"string\",\"sortField\":\"CREATETIME\",\"sortOrder\":\"DESC\",\"fromTime\":\"string\",\"toTime\":\"string\"}"


          response = http.request(request)

          puts response.read_body'
components:
  parameters:
    accountKey:
      name: accountKey
      in: path
      description: The key of the account
      required: true
      schema:
        type: integer
        format: int64
    page:
      name: page
      in: query
      required: false
      description: The page number to be displayed. The first page is 0.
      schema:
        type: integer
        format: int64
    includes:
      name: includes
      in: query
      required: false
      description: Add the response variables.
      schema:
        type: array
        collectionFormat: csv
        items:
          type: string
          enum:
          - recordingShareUrl
          - webinarKey
    size:
      name: size
      in: query
      required: false
      description: The size of the page.
      schema:
        type: integer
        format: int64
        maximum: 200
  schemas:
    AssetsSearchRequestForAdmin:
      description: Describes the details used to search a completed recordingasset.
      required:
      - organizerKey
      properties:
        organizerKey:
          type: string
          description: The key of the organizer
        name:
          type: string
          description: The name of the recordingasset
        sortField:
          type: string
          description: Sorts on the specified field. The default value is 'CREATETIME'. The possible values are 'CREATETIME' and 'NAME'.
          default: CREATETIME
        sortOrder:
          description: Specifies the sort order type. The default value is 'DESC'. The possible values are 'DESC', 'ASC'.
          type: string
          default: DESC
        fromTime:
          description: Specifies the time from which the recordings should be included. Date should be in ISO format.
          type: string
        toTime:
          description: Specifies the time till which the recordings should be included. Date should be in ISO format.
          type: string
    AssetsSearchReq:
      description: Describes the details used to search a completed recordingasset.
      required:
      - accountKey
      properties:
        accountKey:
          type: string
          description: The key of the account
        name:
          type: string
          description: The name of the recordingasset
        sortField:
          type: string
          description: Sorts on the specified field. The default value is 'CREATETIME'. The possible values are 'CREATETIME' and 'NAME'.
          default: CREATETIME
        sortOrder:
          description: Specifies the sort order type. The default value is 'DESC'. The possible values are 'DESC', 'ASC'.
          type: string
          default: DESC
    Asset:
      description: Describes a completed recordingasset.
      required:
      - name
      - recordingAssetKey
      - productName
      - createTime
      - creatorKey
      - accountKey
      - totalReferenceCount
      - mp4DownloadUrl
      properties:
        name:
          type: string
          description: The name of the asset
        recordingAssetKey:
          type: string
          description: The unique identifier for the recording asset
        productName:
          type: string
          description: The product with which the asset was originally created
        createTime:
          type: string
          format: date-time
          description: The create time of the asset
        creatorKey:
          type: string
          description: The key of the creator
        accountKey:
          type: string
          description: The key of the account
        totalReferenceCount:
          type: integer
          format: int32
          description: The total number of references of the asset across products
        mp4DownloadUrl:
          type: string
          description: The url to download recording assets video
        transcriptDownloadUrl:
          type: string
          description: The url to download the transcript for the given recording video, available only if the transcript was generated
        recordingShareUrl:
          type: string
          description: The share link for recording
        webinarKey:
          type: string
          description: The webinarKey of parent webinar for which this online recordings was created, not available for uploaded recordings
    AssetsResponse:
      description: Describes a list of completed assets
      required:
      - _embedded
      - page
      properties:
        _embedded:
          $ref: '#/components/schemas/Assets'
        page:
          $ref: '#/components/schemas/page'
    Assets:
      description: ''
      required:
      - recordingAssets
      properties:
        recordingAssets:
          type: array
          items:
            $ref: '#/components/schemas/Asset'
    page:
      required:
      - size
      - totalElements
      - totalPages
      - number
      properties:
        size:
          type: integer
          format: int32
          description: The page size
        totalElements:
          type: integer
          format: int32
          description: The total elements
        totalPages:
          type: integer
          format: int32
          description: The pages count
        number:
          type: integer
          format: int32
          description: The current page number. The first page is 0
  securitySchemes:
    OAuth2:
      type: oauth2
      description: 'To use this API, you _must_ provide an OAuth Token that has been requested from LogMeIn OAuth Authorization Server. See https://goto-developer.logmeininc.com/how-get-access-token-and-organizer-key for documentation about how to use LogMeIn’s OAuth.

        '
      in: header
      name: Authorization
      scheme: Bearer
      flows:
        password:
          tokenUrl: https://authentication.logmeininc.com/oauth/token
          refreshUrl: https://authentication.logmeininc.com/oauth/token
        authorizationCode:
          authorizationUrl: https://authentication.logmeininc.com/oauth/authorize
          tokenUrl: https://authentication.logmeininc.com/oauth/token
          refreshUrl: https://authentication.logmeininc.com/oauth/token