Demodesk Externally recorded demos API

The Externally recorded demos API from Demodesk — 3 operation(s) for externally recorded demos.

Operations 3

POST /api/v1/externally_recorded_demos Create Externally recorded demo
POST /api/v1/externally_recorded_demos/create_from_mobile_recording_upload Create demo from mobile recording upload
POST /api/v1/externally_recorded_demos/create_from_recording_upload Create demo from recording upload

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/demodesk-externally-recorded-demos-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 email required.

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

OpenAPI Specification

demodesk-externally-recorded-demos-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: V1 Externally recorded demos API
  version: v1
servers:
- url: https://{defaultHost}
  variables:
    defaultHost:
      default: demodesk.com
tags:
- name: Externally recorded demos
paths:
  /api/v1/externally_recorded_demos:
    post:
      summary: Create Externally recorded demo
      tags:
      - Externally recorded demos
      security:
      - api-key: []
      parameters: []
      responses:
        '401':
          description: unauthenticated
        '200':
          description: demo created
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                demo:
                  type: object
                  description: Meeting details
                  properties:
                    start_date:
                      type: string
                      format: datetime
                      description: Meeting start time
                    account:
                      type: string
                      description: Meeting name
                    calendar_owner_id:
                      type: string
                      description: User id of the calendar event owner.
                    booker_id:
                      type: string
                      description: User id of the calendar event booker
                  required:
                  - account
                host:
                  type: object
                  description: Identification of the meeting host
                  properties:
                    email:
                      type: string
                      description: Email address of the meeting host
                  required:
                  - email
                guests:
                  type: array
                  description: List of meeting guests/participants
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                        description: Name of the guest
                    required:
                    - name
                recording:
                  type: object
                  description: Recording details
                  properties:
                    url:
                      type: string
                      description: URL of the recording file (must be publicly accessible)
                    speaker_count:
                      type: integer
                      description: The number of speakers in the recording
                    content_type:
                      type: string
                      description: The content type of the recording, e.g., "audio/mpeg".
                  required:
                  - url
                  - speaker_count
                  - content_type
              required:
              - demo
              - host
              - guests
              - recording
        required: true
  /api/v1/externally_recorded_demos/create_from_mobile_recording_upload:
    post:
      summary: Create demo from mobile recording upload
      tags:
      - Externally recorded demos
      description: 'Uploads a recording from mobile.

        If `demo_id` is provided, the recording is attached to that existing demo.

        If `demo_id` is omitted, a new demo is created from the provided metadata.

        '
      security:
      - api-key: []
      parameters: []
      responses:
        '401':
          description: unauthenticated
        '200':
          description: demo created
        '400':
          description: invalid payload
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: object
                    additionalProperties:
                      type: array
                      items:
                        type: string
                required:
                - errors
        '404':
          description: demo not found
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                file:
                  type: string
                  description: ActiveStorage blob signed id of the uploaded video file
                  example: eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBc0EiLCJleHAiOm51bGwsInB1ciI6ImJsb2JfaWQifX0=--abcdef123
                name:
                  type: string
                  description: Original file name used as fallback demo title when demo.account is missing
                  minLength: 1
                  example: weekly-product-review.mp4
                current_index:
                  type: integer
                  description: Non-negative upload index used to stagger transcription jobs by minutes
                  minimum: 0
                  example: 0
                demo_id:
                  type: integer
                  description: Existing Demodesk meeting id to attach recording to instead of creating a new meeting
                  minimum: 1
                  example: 12345
                demo:
                  type: object
                  description: Optional demo metadata used only when demo_id is not provided. created_via is set server-side to mobile_upload.
                  properties:
                    account:
                      type: string
                      description: Meeting title
                      minLength: 1
                      example: Mobile imported meeting
                    start_date:
                      type: string
                      format: datetime
                      description: Meeting start date/time in ISO8601 format
                      example: '2025-01-20T12:00:00Z'
                    duration:
                      type: integer
                      description: Meeting duration in seconds
                      minimum: 1
                      example: 900
                participants:
                  type: array
                  description: List of participant metadata. required only when demo_id is not provided.
                  items:
                    type: object
                    properties:
                      full_name:
                        type:
                        - string
                        - 'null'
                        description: Participant full name
                        example: Ada Lovelace
                      email:
                        type:
                        - string
                        - 'null'
                        description: Participant email address
                        example: ada@example.com
                location:
                  type: object
                  description: Location/link string. Backend stores location kind as other.
                  properties:
                    value:
                      type:
                      - string
                      - 'null'
                      description: Meeting location/link string
                      example: https://meet.google.com/abc-defg-hij
              required:
              - file
              - name
              example:
                file: eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBc0EiLCJleHAiOm51bGwsInB1ciI6ImJsb2JfaWQifX0=--abcdef123
                name: weekly-product-review.mp4
                current_index: 0
                demo_id: 12345
                demo:
                  account: Mobile imported meeting
                  start_date: '2025-01-20T12:00:00Z'
                  duration: 900
                participants:
                - full_name: Ada Lovelace
                  email: ada@example.com
                - full_name: Grace Hopper
                  email: grace@example.com
                location:
                  value: https://meet.google.com/abc-defg-hij
        required: true
  /api/v1/externally_recorded_demos/create_from_recording_upload:
    post:
      summary: Create demo from recording upload
      tags:
      - Externally recorded demos
      description: 'Uploads a recording.

        If `demo_id` is provided, the recording is attached to that existing demo.

        If `demo_id` is omitted, a new manual-upload demo is created.

        '
      security:
      - api-key: []
      parameters: []
      responses:
        '401':
          description: unauthenticated
        '200':
          description: demo created or recording attached
        '404':
          description: demo not found
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                file:
                  type: string
                  description: ActiveStorage blob signed id of the uploaded video file
                  example: eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBc0EiLCJleHAiOm51bGwsInB1ciI6ImJsb2JfaWQifX0=--abcdef123
                name:
                  type: string
                  description: Original file name used as demo title when creating a new meeting
                  minLength: 1
                  example: weekly-product-review.mp4
                current_index:
                  type: integer
                  description: Non-negative upload index used to stagger transcription jobs by minutes
                  minimum: 0
                  example: 0
                demo_id:
                  type: integer
                  description: Existing Demodesk meeting id to attach recording to instead of creating a new meeting
                  minimum: 1
                  example: 12345
              required:
              - file
              - name
              example:
                file: eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBc0EiLCJleHAiOm51bGwsInB1ciI6ImJsb2JfaWQifX0=--abcdef123
                name: weekly-product-review.mp4
                current_index: 0
                demo_id: 12345
        required: true
components:
  securitySchemes:
    api-key:
      type: apiKey
      name: api-key
      in: header