openapi: 3.1.0 info: title: Daily REST API description: >- REST API for managing Daily domains, rooms, meeting tokens, recordings, transcripts, meetings, participants, presence, batch operations, dial-in/dial-out (PSTN/SIP), webhooks, live streaming, and phone numbers. Authenticated with a Bearer API key. version: "1.0.0" servers: - url: https://api.daily.co/v1 description: Daily REST API base URL security: - bearerAuth: [] tags: - name: Domain - name: Rooms - name: Recordings - name: Transcription - name: LiveStreaming - name: MeetingTokens - name: Meetings - name: Presence - name: DialOut - name: DialIn - name: CallTransfer - name: Webhooks - name: PhoneNumbers paths: /: get: tags: [Domain] summary: Get domain configuration responses: '200': { description: Domain configuration } post: tags: [Domain] summary: Set domain configuration requestBody: content: application/json: schema: { type: object } responses: '200': { description: Updated } /rooms: get: tags: [Rooms] summary: List rooms parameters: - in: query name: limit schema: { type: integer } - in: query name: ending_before schema: { type: string } - in: query name: starting_after schema: { type: string } responses: '200': { description: List of rooms } post: tags: [Rooms] summary: Create a room requestBody: content: application/json: schema: type: object properties: name: { type: string } privacy: { type: string, enum: [public, private] } properties: { type: object } responses: '200': { description: Room created } /rooms/{name}: parameters: - in: path name: name required: true schema: { type: string } get: tags: [Rooms] summary: Get room configuration responses: '200': { description: Room } post: tags: [Rooms] summary: Set room configuration requestBody: content: application/json: schema: { type: object } responses: '200': { description: Updated } delete: tags: [Rooms] summary: Delete a room responses: '200': { description: Deleted } /rooms/{name}/presence: get: tags: [Rooms] summary: Get room presence parameters: - in: path name: name required: true schema: { type: string } responses: '200': { description: Presence } /rooms/{name}/send-app-message: post: tags: [Rooms] summary: Send app message to room parameters: - in: path name: name required: true schema: { type: string } requestBody: content: application/json: schema: type: object properties: data: { type: object } recipientSessionId: { type: string } responses: '200': { description: Sent } /rooms/{name}/get-session-data: get: tags: [Rooms] summary: Retrieve session data parameters: - in: path name: name required: true schema: { type: string } responses: '200': { description: Session data } /rooms/{name}/set-session-data: post: tags: [Rooms] summary: Store session data parameters: - in: path name: name required: true schema: { type: string } requestBody: content: application/json: schema: { type: object } responses: '200': { description: Stored } /rooms/{name}/eject: post: tags: [Rooms] summary: Eject participants parameters: - in: path name: name required: true schema: { type: string } requestBody: content: application/json: schema: type: object properties: ids: type: array items: { type: string } responses: '200': { description: Ejected } /rooms/{name}/update-permissions: post: tags: [Rooms] summary: Update participant permissions parameters: - in: path name: name required: true schema: { type: string } requestBody: content: application/json: schema: { type: object } responses: '200': { description: Updated } /batch/rooms: post: tags: [Rooms] summary: Batch create rooms requestBody: content: application/json: schema: type: object properties: rooms: type: array items: { type: object } responses: '200': { description: Created } delete: tags: [Rooms] summary: Batch delete rooms requestBody: content: application/json: schema: type: object properties: names: type: array items: { type: string } responses: '200': { description: Deleted } /recordings: get: tags: [Recordings] summary: List recordings parameters: - in: query name: limit schema: { type: integer } - in: query name: room_name schema: { type: string } responses: '200': { description: Recordings } /recordings/{id}: parameters: - in: path name: id required: true schema: { type: string } get: tags: [Recordings] summary: Get recording details responses: '200': { description: Recording } delete: tags: [Recordings] summary: Delete recording responses: '200': { description: Deleted } /recordings/{id}/access-link: get: tags: [Recordings] summary: Generate recording download link parameters: - in: path name: id required: true schema: { type: string } responses: '200': { description: Access link } /rooms/{name}/recordings/start: post: tags: [Recordings] summary: Start recording in room parameters: - in: path name: name required: true schema: { type: string } requestBody: content: application/json: schema: { type: object } responses: '200': { description: Started } /rooms/{name}/recordings/update: post: tags: [Recordings] summary: Update recording in room parameters: - in: path name: name required: true schema: { type: string } requestBody: content: application/json: schema: { type: object } responses: '200': { description: Updated } /rooms/{name}/recordings/stop: post: tags: [Recordings] summary: Stop recording in room parameters: - in: path name: name required: true schema: { type: string } responses: '200': { description: Stopped } /transcript: get: tags: [Transcription] summary: List transcripts responses: '200': { description: Transcripts } /transcript/{id}: parameters: - in: path name: id required: true schema: { type: string } get: tags: [Transcription] summary: Get transcript details responses: '200': { description: Transcript } delete: tags: [Transcription] summary: Delete transcript responses: '200': { description: Deleted } /transcript/{id}/access-link: get: tags: [Transcription] summary: Generate transcript access link parameters: - in: path name: id required: true schema: { type: string } responses: '200': { description: Access link } /rooms/{name}/transcription/start: post: tags: [Transcription] summary: Start transcription in room parameters: - in: path name: name required: true schema: { type: string } requestBody: content: application/json: schema: { type: object } responses: '200': { description: Started } /rooms/{name}/transcription/update: post: tags: [Transcription] summary: Update transcription in room parameters: - in: path name: name required: true schema: { type: string } requestBody: content: application/json: schema: { type: object } responses: '200': { description: Updated } /rooms/{name}/transcription/stop: post: tags: [Transcription] summary: Stop transcription in room parameters: - in: path name: name required: true schema: { type: string } responses: '200': { description: Stopped } /rooms/{name}/live-streaming/start: post: tags: [LiveStreaming] summary: Start live streaming in room parameters: - in: path name: name required: true schema: { type: string } requestBody: content: application/json: schema: { type: object } responses: '200': { description: Started } /rooms/{name}/live-streaming/update: post: tags: [LiveStreaming] summary: Update live streaming parameters: - in: path name: name required: true schema: { type: string } requestBody: content: application/json: schema: { type: object } responses: '200': { description: Updated } /rooms/{name}/live-streaming/stop: post: tags: [LiveStreaming] summary: Stop live streaming parameters: - in: path name: name required: true schema: { type: string } responses: '200': { description: Stopped } /meeting-tokens: post: tags: [MeetingTokens] summary: Create meeting token requestBody: content: application/json: schema: type: object properties: properties: { type: object } responses: '200': { description: Token created } /meeting-tokens/{meeting_token}: get: tags: [MeetingTokens] summary: Validate meeting token parameters: - in: path name: meeting_token required: true schema: { type: string } responses: '200': { description: Token data } /meetings: get: tags: [Meetings] summary: List meetings responses: '200': { description: Meetings } /meetings/{meeting}: get: tags: [Meetings] summary: Get a specific meeting parameters: - in: path name: meeting required: true schema: { type: string } responses: '200': { description: Meeting } /meetings/{meeting}/participants: get: tags: [Meetings] summary: List meeting participants parameters: - in: path name: meeting required: true schema: { type: string } responses: '200': { description: Participants } /presence: get: tags: [Presence] summary: Retrieve presence responses: '200': { description: Presence } /rooms/{name}/dialOut/start: post: tags: [DialOut] summary: Start dial-out call parameters: - in: path name: name required: true schema: { type: string } requestBody: content: application/json: schema: { type: object } responses: '200': { description: Started } /rooms/{name}/dialOut/sendDTMF: post: tags: [DialOut] summary: Send DTMF tones parameters: - in: path name: name required: true schema: { type: string } requestBody: content: application/json: schema: type: object properties: tones: { type: string } sessionId: { type: string } responses: '200': { description: Sent } /rooms/{name}/dialOut/stop: post: tags: [DialOut] summary: Stop dial-out call parameters: - in: path name: name required: true schema: { type: string } responses: '200': { description: Stopped } /dialin/pinlessCallUpdate: post: tags: [DialIn] summary: Update dial-in status requestBody: content: application/json: schema: { type: object } responses: '200': { description: Updated } /rooms/{name}/sipCallTransfer: post: tags: [CallTransfer] summary: Transfer call via SIP parameters: - in: path name: name required: true schema: { type: string } requestBody: content: application/json: schema: { type: object } responses: '200': { description: Transferred } /rooms/{name}/sipRefer: post: tags: [CallTransfer] summary: Issue SIP REFER parameters: - in: path name: name required: true schema: { type: string } requestBody: content: application/json: schema: { type: object } responses: '200': { description: Refer issued } /webhooks: get: tags: [Webhooks] summary: List webhooks responses: '200': { description: Webhooks } post: tags: [Webhooks] summary: Register webhook requestBody: content: application/json: schema: type: object properties: url: { type: string, format: uri } eventTypes: type: array items: { type: string } responses: '200': { description: Created } delete: tags: [Webhooks] summary: Remove webhook responses: '200': { description: Deleted } /webhooks/{uuid}: parameters: - in: path name: uuid required: true schema: { type: string, format: uuid } get: tags: [Webhooks] summary: Get webhook details responses: '200': { description: Webhook } post: tags: [Webhooks] summary: Update webhook requestBody: content: application/json: schema: { type: object } responses: '200': { description: Updated } /list-available-numbers: get: tags: [PhoneNumbers] summary: List available phone numbers to purchase responses: '200': { description: Available numbers } /buy-phone-number: post: tags: [PhoneNumbers] summary: Purchase a phone number requestBody: content: application/json: schema: type: object properties: number: { type: string } responses: '200': { description: Purchased } /release-phone-number/{id}: delete: tags: [PhoneNumbers] summary: Release a purchased phone number parameters: - in: path name: id required: true schema: { type: string } responses: '200': { description: Released } /purchased-phone-numbers: get: tags: [PhoneNumbers] summary: List purchased phone numbers responses: '200': { description: Numbers } components: securitySchemes: bearerAuth: type: http scheme: bearer description: API key passed as a Bearer token in the Authorization header.