Demodesk Public API
The Demodesk Public API API from Demodesk — 0 operation(s) for demodesk public api.
The Demodesk Public API API from Demodesk — 0 operation(s) for demodesk public api.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/demodesk-demodesk-public-api-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Demodesk Public API
version: v2
description: Customer-facing API for external integrations.
contact:
email: support@demodesk.com
servers:
- url: https://demodesk.com/api/v2
description: Public demodesk host
security:
- bearerAuth: []
tags:
- name: Demodesk Public API
paths: {}
webhooks:
demo.scheduled:
post:
operationId: webhookDemoScheduled
summary: demo.scheduled webhook
description: 'Sent when a demo gets scheduled.
To enable the Webhook API, please email support@demodesk.com with the endpoint urls on your side and which events to activate.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/webhook-demo-scheduled-payload'
responses:
'200':
description: Webhook accepted by your endpoint.
default:
description: Non-2xx responses are treated as delivery failures and retried. If webhooks keep failing, they get disabled automatically.
tags:
- Demodesk Public API
demo.rescheduled:
post:
operationId: webhookDemoRescheduled
summary: demo.rescheduled webhook
description: 'Sent when a demo gets rescheduled.
To enable the Webhook API, please email support@demodesk.com with the endpoint urls on your side and which events to activate.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/webhook-demo-rescheduled-payload'
responses:
'200':
description: Webhook accepted by your endpoint.
default:
description: Non-2xx responses are treated as delivery failures and retried. If webhooks keep failing, they get disabled automatically.
tags:
- Demodesk Public API
demo.handovered:
post:
operationId: webhookDemoHandovered
summary: demo.handovered webhook
description: 'Sent when a demo gets handed over to another host.
To enable the Webhook API, please email support@demodesk.com with the endpoint urls on your side and which events to activate.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/webhook-demo-handovered-payload'
responses:
'200':
description: Webhook accepted by your endpoint.
default:
description: Non-2xx responses are treated as delivery failures and retried. If webhooks keep failing, they get disabled automatically.
tags:
- Demodesk Public API
demo.canceled:
post:
operationId: webhookDemoCanceled
summary: demo.canceled webhook
description: 'Sent when a demo gets canceled.
To enable the Webhook API, please email support@demodesk.com with the endpoint urls on your side and which events to activate.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/webhook-demo-canceled-payload'
responses:
'200':
description: Webhook accepted by your endpoint.
default:
description: Non-2xx responses are treated as delivery failures and retried. If webhooks keep failing, they get disabled automatically.
tags:
- Demodesk Public API
demo.started:
post:
operationId: webhookDemoStarted
summary: demo.started webhook
description: 'Sent when a demo starts.
To enable the Webhook API, please email support@demodesk.com with the endpoint urls on your side and which events to activate.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/webhook-demo-started-payload'
responses:
'200':
description: Webhook accepted by your endpoint.
default:
description: Non-2xx responses are treated as delivery failures and retried. If webhooks keep failing, they get disabled automatically.
tags:
- Demodesk Public API
demo.ended:
post:
operationId: webhookDemoEnded
summary: demo.ended webhook
description: 'Sent when a demo ends.
To enable the Webhook API, please email support@demodesk.com with the endpoint urls on your side and which events to activate.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/webhook-demo-ended-payload'
responses:
'200':
description: Webhook accepted by your endpoint.
default:
description: Non-2xx responses are treated as delivery failures and retried. If webhooks keep failing, they get disabled automatically.
tags:
- Demodesk Public API
demo.call_note_updated:
post:
operationId: webhookDemoCallNoteUpdated
summary: demo.call_note_updated webhook
description: 'Sent when call notes are updated for a demo.
To enable the Webhook API, please email support@demodesk.com with the endpoint urls on your side and which events to activate.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/webhook-demo-call-note-updated-payload'
responses:
'200':
description: Webhook accepted by your endpoint.
default:
description: Non-2xx responses are treated as delivery failures and retried. If webhooks keep failing, they get disabled automatically.
tags:
- Demodesk Public API
demo.event_response_updated:
post:
operationId: webhookDemoEventResponseUpdated
summary: demo.event_response_updated webhook
description: 'Sent when event responses of attendees are updated.
To enable the Webhook API, please email support@demodesk.com with the endpoint urls on your side and which events to activate.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/webhook-demo-event-response-updated-payload'
responses:
'200':
description: Webhook accepted by your endpoint.
default:
description: Non-2xx responses are treated as delivery failures and retried. If webhooks keep failing, they get disabled automatically.
tags:
- Demodesk Public API
recording.uploaded:
post:
operationId: webhookRecordingUploaded
summary: recording.uploaded webhook
description: 'Sent when a recording upload finished.
To enable the Webhook API, please email support@demodesk.com with the endpoint urls on your side and which events to activate.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/webhook-recording-uploaded-payload'
responses:
'200':
description: Webhook accepted by your endpoint.
default:
description: Non-2xx responses are treated as delivery failures and retried. If webhooks keep failing, they get disabled automatically.
tags:
- Demodesk Public API
recording.transcription_postprocessed:
post:
operationId: webhookRecordingTranscriptionPostprocessed
summary: recording.transcription_postprocessed webhook
description: 'Sent when recording transcription and post-processing are complete.
To enable the Webhook API, please email support@demodesk.com with the endpoint urls on your side and which events to activate.'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/webhook-recording-transcription-postprocessed-payload'
responses:
'200':
description: Webhook accepted by your endpoint.
default:
description: Non-2xx responses are treated as delivery failures and retried. If webhooks keep failing, they get disabled automatically.
tags:
- Demodesk Public API
components:
schemas:
webhook-meta-event:
type: object
required:
- action
- apiVersion
- createdAt
properties:
action:
type: string
apiVersion:
type: string
enum:
- v1
createdAt:
type: string
format: date-time
webhook-recording-transcription-postprocessed-payload:
type: object
required:
- meta
- data
properties:
meta:
type: object
required:
- event
properties:
event:
allOf:
- $ref: '#/components/schemas/webhook-meta-event'
- type: object
properties:
action:
type: string
enum:
- recording.transcription_postprocessed
data:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
type:
type: string
enum:
- recordings
attributes:
$ref: '#/components/schemas/webhook-recording-transcription-postprocessed-attributes'
webhook-demo-base-attributes:
type: object
required:
- token
- link
- createdVia
- createdAt
- updatedAt
- location
- name
- eventTypeName
- playbookName
- hostId
- hostEmail
- attendeeClassification
- calendarOrganizerClassification
- salesforceEventId
- hubspotMeetingId
- pipedriveActivityId
- hubspotCompanyId
- hubspotCompanyName
- hubspotDealId
- hubspotDealName
- salesforceAccountId
- salesforceAccountName
- salesforceOpportunityId
- salesforceOpportunityName
- pipedriveDealId
- pipedriveDealName
- googleEventId
- googleBeforeBufferEventId
- googleAfterBufferEventId
- office365EventId
- office365BeforeBufferEventId
- office365AfterBufferEventId
- tokens
properties:
token:
type: string
link:
type: string
createdVia:
type: string
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
location:
type: string
name:
type: string
eventTypeName:
type:
- string
- 'null'
playbookName:
type:
- string
- 'null'
hostId:
type: integer
hostEmail:
type:
- string
- 'null'
attendeeClassification:
type:
- string
- 'null'
calendarOrganizerClassification:
type:
- string
- 'null'
salesforceEventId:
$ref: '#/components/schemas/webhook-crm-id'
hubspotMeetingId:
$ref: '#/components/schemas/webhook-crm-id'
pipedriveActivityId:
$ref: '#/components/schemas/webhook-crm-id'
hubspotCompanyId:
$ref: '#/components/schemas/webhook-crm-id'
hubspotCompanyName:
type:
- string
- 'null'
hubspotDealId:
$ref: '#/components/schemas/webhook-crm-id'
hubspotDealName:
type:
- string
- 'null'
salesforceAccountId:
$ref: '#/components/schemas/webhook-crm-id'
salesforceAccountName:
type:
- string
- 'null'
salesforceOpportunityId:
$ref: '#/components/schemas/webhook-crm-id'
salesforceOpportunityName:
type:
- string
- 'null'
pipedriveDealId:
$ref: '#/components/schemas/webhook-crm-id'
pipedriveDealName:
type:
- string
- 'null'
googleEventId:
type:
- string
- 'null'
googleBeforeBufferEventId:
type:
- string
- 'null'
googleAfterBufferEventId:
type:
- string
- 'null'
office365EventId:
type:
- string
- 'null'
office365BeforeBufferEventId:
type:
- string
- 'null'
office365AfterBufferEventId:
type:
- string
- 'null'
tokens:
type: object
additionalProperties:
oneOf:
- type: string
- type: number
- type: boolean
- type: 'null'
webhook-demo-call-note-updated-payload:
type: object
required:
- meta
- data
properties:
meta:
type: object
required:
- event
properties:
event:
allOf:
- $ref: '#/components/schemas/webhook-meta-event'
- type: object
properties:
action:
type: string
enum:
- demo.call_note_updated
data:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
type:
type: string
enum:
- demos
attributes:
$ref: '#/components/schemas/webhook-demo-ended-attributes'
webhook-demo-scheduled-attributes:
allOf:
- $ref: '#/components/schemas/webhook-demo-base-attributes'
- type: object
required:
- description
- startDate
- endDate
- duration
- participantEmail
- participantFirstName
- participantLastName
- participantCompany
- bookerEmail
- publicCancellationUrl
- publicReschedulingUrl
properties:
description:
type:
- string
- 'null'
startDate:
type: string
format: date-time
endDate:
type:
- string
- 'null'
format: date-time
duration:
type: integer
participantEmail:
type:
- string
- 'null'
participantFirstName:
type:
- string
- 'null'
participantLastName:
type:
- string
- 'null'
participantCompany:
type:
- string
- 'null'
bookerEmail:
type:
- string
- 'null'
publicCancellationUrl:
type:
- string
- 'null'
publicReschedulingUrl:
type:
- string
- 'null'
webhook-demo-rescheduled-payload:
type: object
required:
- meta
- data
properties:
meta:
type: object
required:
- event
properties:
event:
allOf:
- $ref: '#/components/schemas/webhook-meta-event'
- type: object
properties:
action:
type: string
enum:
- demo.rescheduled
data:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
type:
type: string
enum:
- demos
attributes:
$ref: '#/components/schemas/webhook-demo-scheduled-attributes'
webhook-demo-started-payload:
type: object
required:
- meta
- data
properties:
meta:
type: object
required:
- event
properties:
event:
allOf:
- $ref: '#/components/schemas/webhook-meta-event'
- type: object
properties:
action:
type: string
enum:
- demo.started
data:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
type:
type: string
enum:
- demos
attributes:
$ref: '#/components/schemas/webhook-demo-base-attributes'
webhook-demo-scheduled-payload:
type: object
required:
- meta
- data
properties:
meta:
type: object
required:
- event
properties:
event:
allOf:
- $ref: '#/components/schemas/webhook-meta-event'
- type: object
properties:
action:
type: string
enum:
- demo.scheduled
data:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
type:
type: string
enum:
- demos
attributes:
$ref: '#/components/schemas/webhook-demo-scheduled-attributes'
webhook-recording-transcription-postprocessed-attributes:
allOf:
- $ref: '#/components/schemas/webhook-recording-base-attributes'
- type: object
required:
- primaryAiSummaryPlaintext
- primaryAiSummaryHtml
- latestAiSummaryPlaintext
- latestAiSummaryHtml
properties:
primaryAiSummaryPlaintext:
type:
- string
- 'null'
primaryAiSummaryHtml:
type:
- string
- 'null'
latestAiSummaryPlaintext:
type:
- string
- 'null'
latestAiSummaryHtml:
type:
- string
- 'null'
webhook-crm-id:
oneOf:
- type: string
- type: integer
- type: 'null'
webhook-recording-base-attributes:
type: object
required:
- demoId
- token
- url
- temporaryVideoUrl
- hostId
- hostEmail
- attendeeClassification
- calendarOrganizerClassification
- salesforceEventId
- hubspotMeetingId
- pipedriveActivityId
- hubspotCompanyId
- hubspotCompanyName
- hubspotDealId
- hubspotDealName
- salesforceAccountId
- salesforceAccountName
- salesforceOpportunityId
- salesforceOpportunityName
- pipedriveDealId
- pipedriveDealName
properties:
demoId:
type: integer
token:
type: string
url:
type: string
temporaryVideoUrl:
type:
- string
- 'null'
hostId:
type: integer
hostEmail:
type:
- string
- 'null'
attendeeClassification:
type:
- string
- 'null'
calendarOrganizerClassification:
type:
- string
- 'null'
salesforceEventId:
$ref: '#/components/schemas/webhook-crm-id'
hubspotMeetingId:
$ref: '#/components/schemas/webhook-crm-id'
pipedriveActivityId:
$ref: '#/components/schemas/webhook-crm-id'
hubspotCompanyId:
$ref: '#/components/schemas/webhook-crm-id'
hubspotCompanyName:
type:
- string
- 'null'
hubspotDealId:
$ref: '#/components/schemas/webhook-crm-id'
hubspotDealName:
type:
- string
- 'null'
salesforceAccountId:
$ref: '#/components/schemas/webhook-crm-id'
salesforceAccountName:
type:
- string
- 'null'
salesforceOpportunityId:
$ref: '#/components/schemas/webhook-crm-id'
salesforceOpportunityName:
type:
- string
- 'null'
pipedriveDealId:
$ref: '#/components/schemas/webhook-crm-id'
pipedriveDealName:
type:
- string
- 'null'
webhook-recording-uploaded-payload:
type: object
required:
- meta
- data
properties:
meta:
type: object
required:
- event
properties:
event:
allOf:
- $ref: '#/components/schemas/webhook-meta-event'
- type: object
properties:
action:
type: string
enum:
- recording.uploaded
data:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
type:
type: string
enum:
- recordings
attributes:
$ref: '#/components/schemas/webhook-recording-base-attributes'
webhook-demo-event-response-updated-attributes:
allOf:
- $ref: '#/components/schemas/webhook-demo-base-attributes'
- type: object
required:
- event
properties:
event:
type: object
required:
- start
- end
- attendees
properties:
start:
type: object
required:
- dateTime
properties:
dateTime:
type: string
format: date-time
end:
type: object
required:
- dateTime
properties:
dateTime:
type: string
format: date-time
attendees:
type: array
items:
type: object
required:
- email
- displayName
- responseStatus
properties:
email:
type: string
displayName:
type:
- string
- 'null'
responseStatus:
type: string
enum:
- none
- needsAction
- declined
- tentative
- accepted
webhook-demo-canceled-payload:
type: object
required:
- meta
- data
properties:
meta:
type: object
required:
- event
properties:
event:
allOf:
- $ref: '#/components/schemas/webhook-meta-event'
- type: object
properties:
action:
type: string
enum:
- demo.canceled
data:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
type:
type: string
enum:
- demos
attributes:
$ref: '#/components/schemas/webhook-demo-scheduled-attributes'
webhook-demo-event-response-updated-payload:
type: object
required:
- meta
- data
properties:
meta:
type: object
required:
- event
properties:
event:
allOf:
- $ref: '#/components/schemas/webhook-meta-event'
- type: object
properties:
action:
type: string
enum:
- demo.event_response_updated
data:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
type:
type: string
enum:
- demos
attributes:
$ref: '#/components/schemas/webhook-demo-event-response-updated-attributes'
webhook-demo-handovered-payload:
type: object
required:
- meta
- data
properties:
meta:
type: object
required:
- event
properties:
event:
allOf:
- $ref: '#/components/schemas/webhook-meta-event'
- type: object
properties:
action:
type: string
enum:
- demo.handovered
data:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
type:
type: string
enum:
- demos
attributes:
$ref: '#/components/schemas/webhook-demo-scheduled-attributes'
webhook-demo-ended-payload:
type: object
required:
- meta
- data
properties:
meta:
type: object
required:
- event
properties:
event:
allOf:
- $ref: '#/components/schemas/webhook-meta-event'
- type: object
properties:
action:
type: string
enum:
- demo.ended
data:
type: object
required:
- id
- type
- attributes
properties:
id:
type: string
type:
type: string
enum:
- demos
attributes:
$ref: '#/components/schemas/webhook-demo-ended-attributes'
webhook-demo-ended-attributes:
allOf:
- $ref: '#/components/schemas/webhook-demo-base-attributes'
- type: object
required:
- participantEmail
- participantName
- startDate
- endDate
- duration
- notes
- status
properties:
participantEmail:
type:
- string
- 'null'
participantName:
type:
- string
- 'null'
startDate:
type: string
format: date-time
endDate:
type:
- string
- 'null'
format: date-time
duration:
type: integer
notes:
type:
- string
- 'null'
status:
type: string
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: API key or OAuth token
description: 'Pass your API key or OAuth token as a Bearer token in the `Authorization` HTTP header.
```
curl -H "Authorization: Bearer YOUR_API_KEY" https://demodesk.com/api/v2/recordings
```
**Obtaining a key:** Generate an API key in your Demodesk account under
*Settings > Integrations > Other*.
**Permissions:** The key inherits the permissions of the user who created it.
So when trying to access resources of your whole company, make sure to use the API key of an admin user who is
member of all restricted groups.
'