PostHog Desktop Recordings API
The desktop_recordings API from PostHog — 3 operation(s) for desktop_recordings.
The desktop_recordings API from PostHog — 3 operation(s) for desktop_recordings.
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/posthog-desktop-recordings-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: PostHog Desktop Recordings API
version: 1.0.0
description: ''
tags:
- name: desktop_recordings
paths:
/api/environments/{project_id}/desktop_recordings/:
get:
operationId: desktop_recordings_list
description: 'RESTful API for managing desktop meeting recordings.
Standard CRUD operations plus transcript management as a subresource.'
parameters:
- name: limit
required: false
in: query
description: Number of results to return per page.
schema:
type: integer
- name: offset
required: false
in: query
description: The initial index from which to return the results.
schema:
type: integer
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- desktop_recordings
security:
- PersonalAPIKeyAuth:
- desktop_recording:read
- PersonalAPIKeyAuth:
- desktop_recording:read
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/PaginatedDesktopRecordingList'
description: ''
x-explicit-tags:
- desktop_recordings
summary: Desktop recordings list
x-summary-source: derived
post:
operationId: desktop_recordings_create
description: Create a new recording and get Recall.ai upload token for the desktop SDK
parameters:
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- desktop_recordings
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRecordingRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/CreateRecordingRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/CreateRecordingRequest'
security:
- PersonalAPIKeyAuth:
- desktop_recording:write
- PersonalAPIKeyAuth:
- desktop_recording:write
responses:
'201':
content:
application/json:
schema:
$ref: '#/components/schemas/CreateRecordingResponse'
description: ''
x-explicit-tags:
- desktop_recordings
summary: Desktop recordings create
x-summary-source: derived
/api/environments/{project_id}/desktop_recordings/{id}/:
get:
operationId: desktop_recordings_retrieve
description: 'RESTful API for managing desktop meeting recordings.
Standard CRUD operations plus transcript management as a subresource.'
parameters:
- in: path
name: id
schema:
type: string
format: uuid
description: A UUID string identifying this desktop recording.
required: true
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- desktop_recordings
security:
- PersonalAPIKeyAuth:
- desktop_recording:read
- PersonalAPIKeyAuth:
- desktop_recording:read
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/DesktopRecording'
description: ''
x-explicit-tags:
- desktop_recordings
summary: Desktop recordings retrieve
x-summary-source: derived
put:
operationId: desktop_recordings_update
description: 'RESTful API for managing desktop meeting recordings.
Standard CRUD operations plus transcript management as a subresource.'
parameters:
- in: path
name: id
schema:
type: string
format: uuid
description: A UUID string identifying this desktop recording.
required: true
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- desktop_recordings
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DesktopRecording'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/DesktopRecording'
multipart/form-data:
schema:
$ref: '#/components/schemas/DesktopRecording'
required: true
security:
- PersonalAPIKeyAuth:
- desktop_recording:write
- PersonalAPIKeyAuth:
- desktop_recording:write
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/DesktopRecording'
description: ''
x-explicit-tags:
- desktop_recordings
summary: Desktop recordings update
x-summary-source: derived
patch:
operationId: desktop_recordings_partial_update
description: 'RESTful API for managing desktop meeting recordings.
Standard CRUD operations plus transcript management as a subresource.'
parameters:
- in: path
name: id
schema:
type: string
format: uuid
description: A UUID string identifying this desktop recording.
required: true
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- desktop_recordings
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PatchedDesktopRecording'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/PatchedDesktopRecording'
multipart/form-data:
schema:
$ref: '#/components/schemas/PatchedDesktopRecording'
security:
- PersonalAPIKeyAuth:
- desktop_recording:write
- PersonalAPIKeyAuth:
- desktop_recording:write
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/DesktopRecording'
description: ''
x-explicit-tags:
- desktop_recordings
summary: Desktop recordings partial update
x-summary-source: derived
delete:
operationId: desktop_recordings_destroy
description: 'RESTful API for managing desktop meeting recordings.
Standard CRUD operations plus transcript management as a subresource.'
parameters:
- in: path
name: id
schema:
type: string
format: uuid
description: A UUID string identifying this desktop recording.
required: true
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- desktop_recordings
security:
- PersonalAPIKeyAuth:
- desktop_recording:write
- PersonalAPIKeyAuth:
- desktop_recording:write
responses:
'204':
description: No response body
x-explicit-tags:
- desktop_recordings
summary: Desktop recordings destroy
x-summary-source: derived
/api/environments/{project_id}/desktop_recordings/{id}/append_segments/:
post:
operationId: desktop_recordings_append_segments_create
description: Append transcript segments (supports batched real-time streaming)
parameters:
- in: path
name: id
schema:
type: string
format: uuid
description: A UUID string identifying this desktop recording.
required: true
- $ref: '#/components/parameters/ProjectIdPath'
tags:
- desktop_recordings
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AppendSegments'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/AppendSegments'
multipart/form-data:
schema:
$ref: '#/components/schemas/AppendSegments'
required: true
security:
- PersonalAPIKeyAuth:
- desktop_recording:write
- PersonalAPIKeyAuth:
- desktop_recording:write
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/DesktopRecording'
description: ''
x-explicit-tags:
- desktop_recordings
summary: Desktop recordings append segments create
x-summary-source: derived
components:
schemas:
AppendSegments:
type: object
description: Serializer for appending transcript segments (supports batched real-time uploads)
properties:
segments:
type: array
items:
$ref: '#/components/schemas/TranscriptSegment'
minItems: 1
required:
- segments
CreateRecordingRequest:
type: object
description: Request body for creating a new recording
properties:
platform:
allOf:
- $ref: '#/components/schemas/CreateRecordingRequestPlatformEnum'
default: desktop_audio
description: 'Meeting platform being recorded
* `zoom` - zoom
* `teams` - teams
* `meet` - meet
* `desktop_audio` - desktop_audio
* `slack` - slack'
CreateRecordingResponse:
type: object
description: Response for creating a new recording (includes upload_token)
properties:
id:
type: string
format: uuid
readOnly: true
team:
type: integer
readOnly: true
created_by:
type:
- integer
- 'null'
readOnly: true
sdk_upload_id:
type: string
format: uuid
readOnly: true
recall_recording_id:
type:
- string
- 'null'
format: uuid
platform:
$ref: '#/components/schemas/MeetingPlatformEnum'
meeting_title:
type:
- string
- 'null'
maxLength: 255
meeting_url:
type:
- string
- 'null'
format: uri
maxLength: 200
duration_seconds:
type:
- integer
- 'null'
maximum: 2147483647
minimum: -2147483648
status:
$ref: '#/components/schemas/DesktopRecordingStatusEnum'
notes:
type:
- string
- 'null'
error_message:
type:
- string
- 'null'
video_url:
type:
- string
- 'null'
format: uri
maxLength: 200
video_size_bytes:
type:
- integer
- 'null'
maximum: 9223372036854775807
minimum: -9223372036854775808
format: int64
participants:
type: array
items:
type: string
description: List of participant names
transcript_text:
type: string
readOnly: true
transcript_segments:
type: array
items:
$ref: '#/components/schemas/TranscriptSegment'
description: Transcript segments with timestamps
summary:
type:
- string
- 'null'
extracted_tasks:
type: array
items:
$ref: '#/components/schemas/DesktopRecordingTask'
description: AI-extracted tasks from transcript
tasks_generated_at:
type:
- string
- 'null'
format: date-time
summary_generated_at:
type:
- string
- 'null'
format: date-time
started_at:
type: string
format: date-time
completed_at:
type:
- string
- 'null'
format: date-time
created_at:
type: string
format: date-time
readOnly: true
updated_at:
type: string
format: date-time
readOnly: true
upload_token:
type: string
description: Recall.ai upload token for the desktop SDK
required:
- created_at
- created_by
- id
- platform
- sdk_upload_id
- team
- transcript_text
- updated_at
- upload_token
TranscriptSegment:
type: object
description: Serializer for individual transcript segments from AssemblyAI
properties:
timestamp:
type:
- number
- 'null'
format: double
description: Milliseconds from recording start
speaker:
type:
- string
- 'null'
text:
type: string
confidence:
type:
- number
- 'null'
format: double
description: Transcription confidence score
is_final:
type:
- boolean
- 'null'
description: Whether this is the final version
required:
- text
PaginatedDesktopRecordingList:
type: object
required:
- count
- results
properties:
count:
type: integer
example: 123
next:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?offset=400&limit=100
previous:
type:
- string
- 'null'
format: uri
example: http://api.example.org/accounts/?offset=200&limit=100
results:
type: array
items:
$ref: '#/components/schemas/DesktopRecording'
DesktopRecordingStatusEnum:
enum:
- recording
- uploading
- processing
- ready
- error
type: string
description: '* `recording` - Recording
* `uploading` - Uploading
* `processing` - Processing
* `ready` - Ready
* `error` - Error'
PatchedDesktopRecording:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
team:
type: integer
readOnly: true
created_by:
type:
- integer
- 'null'
readOnly: true
sdk_upload_id:
type: string
format: uuid
readOnly: true
recall_recording_id:
type:
- string
- 'null'
format: uuid
platform:
$ref: '#/components/schemas/MeetingPlatformEnum'
meeting_title:
type:
- string
- 'null'
maxLength: 255
meeting_url:
type:
- string
- 'null'
format: uri
maxLength: 200
duration_seconds:
type:
- integer
- 'null'
maximum: 2147483647
minimum: -2147483648
status:
$ref: '#/components/schemas/DesktopRecordingStatusEnum'
notes:
type:
- string
- 'null'
error_message:
type:
- string
- 'null'
video_url:
type:
- string
- 'null'
format: uri
maxLength: 200
video_size_bytes:
type:
- integer
- 'null'
maximum: 9223372036854775807
minimum: -9223372036854775808
format: int64
participants:
type: array
items:
type: string
description: List of participant names
transcript_text:
type: string
readOnly: true
transcript_segments:
type: array
items:
$ref: '#/components/schemas/TranscriptSegment'
description: Transcript segments with timestamps
summary:
type:
- string
- 'null'
extracted_tasks:
type: array
items:
$ref: '#/components/schemas/DesktopRecordingTask'
description: AI-extracted tasks from transcript
tasks_generated_at:
type:
- string
- 'null'
format: date-time
summary_generated_at:
type:
- string
- 'null'
format: date-time
started_at:
type: string
format: date-time
completed_at:
type:
- string
- 'null'
format: date-time
created_at:
type: string
format: date-time
readOnly: true
updated_at:
type: string
format: date-time
readOnly: true
DesktopRecording:
type: object
properties:
id:
type: string
format: uuid
readOnly: true
team:
type: integer
readOnly: true
created_by:
type:
- integer
- 'null'
readOnly: true
sdk_upload_id:
type: string
format: uuid
readOnly: true
recall_recording_id:
type:
- string
- 'null'
format: uuid
platform:
$ref: '#/components/schemas/MeetingPlatformEnum'
meeting_title:
type:
- string
- 'null'
maxLength: 255
meeting_url:
type:
- string
- 'null'
format: uri
maxLength: 200
duration_seconds:
type:
- integer
- 'null'
maximum: 2147483647
minimum: -2147483648
status:
$ref: '#/components/schemas/DesktopRecordingStatusEnum'
notes:
type:
- string
- 'null'
error_message:
type:
- string
- 'null'
video_url:
type:
- string
- 'null'
format: uri
maxLength: 200
video_size_bytes:
type:
- integer
- 'null'
maximum: 9223372036854775807
minimum: -9223372036854775808
format: int64
participants:
type: array
items:
type: string
description: List of participant names
transcript_text:
type: string
readOnly: true
transcript_segments:
type: array
items:
$ref: '#/components/schemas/TranscriptSegment'
description: Transcript segments with timestamps
summary:
type:
- string
- 'null'
extracted_tasks:
type: array
items:
$ref: '#/components/schemas/DesktopRecordingTask'
description: AI-extracted tasks from transcript
tasks_generated_at:
type:
- string
- 'null'
format: date-time
summary_generated_at:
type:
- string
- 'null'
format: date-time
started_at:
type: string
format: date-time
completed_at:
type:
- string
- 'null'
format: date-time
created_at:
type: string
format: date-time
readOnly: true
updated_at:
type: string
format: date-time
readOnly: true
required:
- created_at
- created_by
- id
- platform
- sdk_upload_id
- team
- transcript_text
- updated_at
DesktopRecordingTask:
type: object
description: Serializer for extracted tasks
properties:
title:
type: string
description:
type: string
assignee:
type:
- string
- 'null'
required:
- title
MeetingPlatformEnum:
enum:
- zoom
- teams
- meet
- desktop_audio
- slack
type: string
description: '* `zoom` - Zoom
* `teams` - Microsoft Teams
* `meet` - Google Meet
* `desktop_audio` - Desktop audio
* `slack` - Slack huddle'
CreateRecordingRequestPlatformEnum:
enum:
- zoom
- teams
- meet
- desktop_audio
- slack
type: string
description: '* `zoom` - zoom
* `teams` - teams
* `meet` - meet
* `desktop_audio` - desktop_audio
* `slack` - slack'
parameters:
ProjectIdPath:
in: path
name: project_id
required: true
schema:
type: string
description: Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
securitySchemes:
PersonalAPIKeyAuth:
type: http
scheme: bearer
x-tagGroups:
- name: All endpoints
tags:
- LLM Analytics
- actions
- activity_log
- activity_logs
- advanced_activity_logs
- alerts
- annotations
- approval_policies
- batch_exports
- cdp
- change_requests
- code
- code-invites
- cohorts
- comments
- conversations
- core
- customer_analytics
- customer_journeys
- customer_profile_configs
- dashboard_templates
- dashboards
- data_color_themes
- data_modeling_jobs
- data_warehouse
- dataset_items
- datasets
- desktop_recordings
- domains
- early_access_feature
- early_access_features
- elements
- endpoints
- environments
- error_tracking
- evaluation_runs
- evaluations
- event_definitions
- event_filter
- event_schemas
- events
- experiment_holdouts
- experiment_saved_metrics
- experiments
- exports
- external_data_schemas
- external_data_sources
- feature_flags
- file_system
- file_system_shortcut
- flag_value
- groups
- groups_types
- health_issues
- heatmap_screenshots
- heatmaps
- hog_flows
- hog_function_templates
- hog_functions
- insight_variables
- insights
- integrations
- invites
- js-snippet
- legal_documents
- lineage
- live_debugger_breakpoints
- llm_analytics
- llm_prompts
- llm_skills
- logs
- managed_viewsets
- max
- max_tools
- mcp_server_installations
- mcp_servers
- mcp_store
- mcp_tools
- members
- notebooks
- oauth_applications
- object_media_previews
- organizations
- persisted_folder
- persons
- platform_features
- plugin_configs
- product_analytics
- product_tours
- project_secret_api_keys
- projects
- property_definitions
- proxy_records
- public_hog_function_templates
- query
- replay
- reverse_proxy
- role_external_references
- roles
- sandbox-environments
- sandbox_environments
- saved
- schema_property_groups
- sdk_doctor
- session_group_summaries
- session_recording_playlists
- session_recordings
- session_summaries
- sessions
- signals
- subscriptions
- surveys
- taggers
- task-automations
- task-runs
- task_automations
- tasks
- uploaded_media
- user_home_settings
- user_interviews
- users
- visual_review
- warehouse_dag
- warehouse_model_paths
- warehouse_saved_queries
- warehouse_saved_query_folders
- warehouse_tables
- warehouse_view_link
- warehouse_view_links
- web_analytics
- web_experiments
- web_vitals
- welcome
- workflows