{"openapi":"3.1.0","info":{"title":"Riverside (BYOK) API","version":"0.1.0","description":"Riverside (BYOK) lets an AI assistant read your own Riverside data through the Riverside API with a key you supply (Business API key (select Business accounts only)). Read-only: 7 tools (list_productions, list_recordings, get_recording, list_exports, get_export, list_edits, list_events). The BYOK key travels with each request, is used for that one call only and is never stored, logged or cached;...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-riverside.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-riverside/docs"},"termsOfService":"https://connectorbay.com/byok-riverside/terms"},"servers":[{"url":"https://byok-riverside.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-riverside/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/list_productions":{"post":{"operationId":"list_productions","summary":"List the productions in your Riverside workspace with their studios and projects (IDs, names, creation dates and recordi","description":"List the productions in your Riverside workspace with their studios and projects (IDs, names, creation dates and recording counts). Use for \"What productions, studios and projects do I have in Riverside\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_productionsArguments","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 newest first, 20 per page, filtered by studio, project or creation date range. Page numbers start at 0. ","description":"List recordings newest first, 20 per page, filtered by studio, project or creation date range. Page numbers start at 0. Use for \"Which Riverside recordings did I make last month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"studio_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items in this studio ID (from list_productions).","title":"Studio Id"},"project_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items in this project ID (from list_productions).","title":"Project Id"},"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created on or after this date, YYYY-MM-DD.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created on or before this date, YYYY-MM-DD.","title":"End Date"},"page":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Page number, starting at 0.","title":"Page"}},"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 by ID: name, project, studio, status, creation date and transcription status. Use for \"Show details of","description":"Get one recording by ID: name, project, studio, status, creation date and transcription status. Use for \"Show details of Riverside recording rec123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"recording_id":{"description":"Recording ID as returned by 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_exports":{"post":{"operationId":"list_exports","summary":"List exports (finished edited videos and audio) newest first, 20 per page, filtered by studio, project or date range. Pa","description":"List exports (finished edited videos and audio) newest first, 20 per page, filtered by studio, project or date range. Page numbers start at 1. Use for \"Which Riverside exports are ready\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"studio_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items in this studio ID (from list_productions).","title":"Studio Id"},"project_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items in this project ID (from list_productions).","title":"Project Id"},"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created on or after this date, YYYY-MM-DD.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created on or before this date, YYYY-MM-DD.","title":"End Date"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_exportsArguments","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_export":{"post":{"operationId":"get_export","summary":"Get one export by ID: name, project, studio, status, type, quality and any error. Use for \"Is Riverside export exp_123 r","description":"Get one export by ID: name, project, studio, status, type, quality and any error. Use for \"Is Riverside export exp_123 ready\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"export_id":{"description":"Export ID as returned by list_exports.","maxLength":200,"title":"Export Id","type":"string"}},"required":["export_id"],"title":"get_exportArguments","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_edits":{"post":{"operationId":"list_edits","summary":"List edits (clips) made in the Riverside editor, 20 per page, filtered by studio, project or ISO 8601 date range. Page n","description":"List edits (clips) made in the Riverside editor, 20 per page, filtered by studio, project or ISO 8601 date range. Page numbers start at 1. Use for \"Which Riverside clips are still drafts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"studio_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items in this studio ID (from list_productions).","title":"Studio Id"},"project_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only items in this project ID (from list_productions).","title":"Project Id"},"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only edits created on or after this ISO 8601 time, for example 2025-10-01T00:00:00Z.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only edits created on or before this ISO 8601 time (not earlier than start_date).","title":"End Date"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_editsArguments","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_events":{"post":{"operationId":"list_events","summary":"List scheduled studio sessions and live webinars (newest start first) with status, times, studio and registrant count. U","description":"List scheduled studio sessions and live webinars (newest start first) with status, times, studio and registrant count. Uses cursor paging. Use for \"What Riverside webinars are coming up\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_type":{"anyOf":[{"enum":["session","webinar"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this kind of event: session (no registration) or webinar.","title":"Event Type"},"status":{"anyOf":[{"enum":["upcoming","live","ended"],"type":"string"},{"type":"null"}],"default":null,"description":"Only events in this state.","title":"Status"},"from_time":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only events starting at or after this ISO 8601 time.","title":"From Time"},"to_time":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only events starting at or before this ISO 8601 time.","title":"To Time"},"studio_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only events in this studio ID.","title":"Studio Id"},"cursor":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from next_cursor of the previous answer; keep the other filters identical.","title":"Cursor"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many events per page (1 to 500).","title":"Limit"}},"title":"list_eventsArguments","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}}}}