{"openapi":"3.1.0","info":{"title":"Daily (BYOK) API","version":"0.1.0","description":"Daily (BYOK) lets an AI assistant read your own Daily data through the Daily API with a key you supply (Daily API key). Read-only: 8 tools (get_domain_config, list_rooms, get_room, list_meetings, get_meeting, list_recordings, get_recording, list_transcripts). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached; it is only ever sent to...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-daily.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-daily/docs"},"termsOfService":"https://connectorbay.com/byok-daily/terms"},"servers":[{"url":"https://byok-daily.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-daily/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_domain_config":{"post":{"operationId":"get_domain_config","summary":"Show the top-level settings of the Daily domain the key belongs to: domain name, ID, language and branding, HIPAA and ex","description":"Show the top-level settings of the Daily domain the key belongs to: domain name, ID, language and branding, HIPAA and exit-redirect flags. Use for \"What are the settings of my Daily domain\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_domain_configArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_rooms":{"post":{"operationId":"list_rooms","summary":"List the video rooms of the domain with name, URL, privacy and creation time, newest first. Page with limit and starting","description":"List the video rooms of the domain with name, URL, privacy and creation time, newest first. Page with limit and starting_after. Use for \"Which Daily rooms do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many records to return (the API picks a default when omitted).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Return records after this record ID (cursor taken from the last ID of the previous page).","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Return records before this record ID.","title":"Ending Before"}},"title":"list_roomsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_room":{"post":{"operationId":"get_room","summary":"Get one room's privacy, URL and main settings (expiry, participant cap, chat, screen share, recording, knocking, default","description":"Get one room's privacy, URL and main settings (expiry, participant cap, chat, screen share, recording, knocking, default camera and microphone state). Use for \"What are the settings of the Daily room my-room\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"room_name":{"description":"Name of the Daily room (the last part of its URL). Take it from list_rooms.","maxLength":200,"title":"Room Name","type":"string"}},"required":["room_name"],"title":"get_roomArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_meetings":{"post":{"operationId":"list_meetings","summary":"List meeting sessions with room, start time, duration, whether still ongoing and peak participant count, optionally with","description":"List meeting sessions with room, start time, duration, whether still ongoing and peak participant count, optionally within a time window. Participant names are not returned. Use for \"How many Daily meetings happened in the last week and how long did they run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"timeframe_start":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only meetings starting after this Unix timestamp (seconds).","title":"Timeframe Start"},"timeframe_end":{"anyOf":[{"maximum":4102444800,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only meetings starting before this Unix timestamp (seconds).","title":"Timeframe End"},"ongoing":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to list only meetings that are in progress.","title":"Ongoing"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many records to return (the API picks a default when omitted).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Return records after this record ID (cursor taken from the last ID of the previous page).","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Return records before this record ID.","title":"Ending Before"}},"title":"list_meetingsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_meeting":{"post":{"operationId":"get_meeting","summary":"Get one meeting session: room, start time, duration, ongoing flag and peak participants. Use for \"How long did Daily mee","description":"Get one meeting session: room, start time, duration, ongoing flag and peak participants. Use for \"How long did Daily meeting d61cd7b2-a273-42b4-89bd-be763fd562c1 last\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"meeting_id":{"description":"Meeting session ID from list_meetings.","maxLength":200,"title":"Meeting Id","type":"string"}},"required":["meeting_id"],"title":"get_meetingArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_recordings":{"post":{"operationId":"list_recordings","summary":"List recordings with room, start time, status, duration, peak participants and storage provider; optionally for one room","description":"List recordings with room, start time, status, duration, peak participants and storage provider; optionally for one room. Use for \"Which recordings do I have for the Daily room my-room\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"room_name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only recordings of this room.","title":"Room Name"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many records to return (the API picks a default when omitted).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Return records after this record ID (cursor taken from the last ID of the previous page).","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Return records before this record ID.","title":"Ending Before"}},"title":"list_recordingsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_recording":{"post":{"operationId":"get_recording","summary":"Get one recording's room, start time, status, duration, peak participants and whether it is a raw-tracks recording. Use ","description":"Get one recording's room, start time, status, duration, peak participants and whether it is a raw-tracks recording. Use for \"What is the status and length of Daily recording 0cb313e1-211f-4be0-833d-8c7305b19902\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"recording_id":{"description":"Recording ID from list_recordings.","maxLength":200,"title":"Recording Id","type":"string"}},"required":["recording_id"],"title":"get_recordingArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_transcripts":{"post":{"operationId":"list_transcripts","summary":"List meeting transcripts with room, session, status, duration and times; filter by room name, room ID or session ID. Use","description":"List meeting transcripts with room, session, status, duration and times; filter by room name, room ID or session ID. Use for \"Do I have transcripts for the Daily room my-room\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"room_name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only transcripts of this room name.","title":"Room Name"},"room_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only transcripts of this room ID.","title":"Room Id"},"meeting_session_id":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only transcripts of this meeting session ID.","title":"Meeting Session Id"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"How many records to return (the API picks a default when omitted).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Return records after this record ID (cursor taken from the last ID of the previous page).","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Return records before this record ID.","title":"Ending Before"}},"title":"list_transcriptsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}