openapi: 3.0.3 info: title: Roku External Control Protocol (ECP) Apps builds API version: '1.0' description: 'The External Control Protocol (ECP) is an HTTP-based API exposed on port 8060 of every Roku streaming device on the local network. It enables third-party applications, mobile remote-control apps, automated testing systems, and home-automation hubs to discover Roku devices via SSDP, inject simulated remote-control key presses, launch installed apps with deep-link parameters, query device state, and retrieve diagnostic information. The protocol is plain HTTP/1.1 (no TLS) and is intended for trusted local-network use only. Most control operations require the user to enable "Control by mobile apps" on the device. Additional diagnostic endpoints (chanperf, sgnodes, registry, etc.) are gated behind Roku Developer Mode. ' contact: name: Roku Developer Program url: https://developer.roku.com x-generated-from: documentation x-source-url: https://developer.roku.com/docs/developer-program/dev-tools/external-control-api.md servers: - url: http://{rokuDeviceIp}:8060 description: A Roku device on the local network variables: rokuDeviceIp: default: 192.168.1.100 description: The IPv4 address of the Roku device, discovered via SSDP tags: - name: builds paths: /api/v1/builds: get: tags: - builds summary: Roku List All Builds operationId: builds-list_builds security: - Nabu Cloud: [] parameters: - name: items in: query required: false schema: type: integer maximum: 1000000 description: The number of items per page. Use 0 for no limit. default: 100 title: Items description: The number of items per page. Use 0 for no limit. - name: page in: query required: false schema: type: integer description: The page number. Use 0 for the first page. default: 0 title: Page description: The page number. Use 0 for the first page. - name: artifactory_path in: query required: false schema: type: string minLength: 3 maxLength: 255 pattern: ^[a-zA-Z0-9_-]*(\/[a-zA-Z0-9._-]+)*(\:[a-zA-Z0-9._-]+)?$ description: The path of the build in artifactory. title: Artifactory Path description: The path of the build in artifactory. - name: public in: query required: false schema: type: boolean description: Whether the build is public title: Public description: Whether the build is public - name: source in: query required: false schema: $ref: '#/components/schemas/BuildSource' description: The source of the build examples: - official - premergeci description: The source of the build - name: device_type in: query required: false schema: $ref: '#/components/schemas/DeviceType' description: The type of the Device. examples: - tv description: The type of the Device. - name: asan in: query required: false schema: type: boolean description: Whether the build is ASAN title: Asan description: Whether the build is ASAN - name: only_artifactory_path in: query required: false schema: anyOf: - type: boolean - type: 'null' description: Only return the artifactory path of the build title: Only Artifactory Path description: Only return the artifactory path of the build responses: '200': description: Successful Response content: application/json: schema: anyOf: - type: array items: $ref: '#/components/schemas/BuildOut' - type: array items: type: string title: Response Builds-List Builds '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' /api/v1/builds/{build_id}: get: tags: - builds summary: Roku Get Build operationId: builds-get_build security: - Nabu Cloud: [] parameters: - name: build_id in: path required: true schema: type: integer title: Build Id responses: '200': description: Successful Response content: application/json: schema: $ref: '#/components/schemas/BuildOut' '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' components: schemas: ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError DeviceType: type: string enum: - tv - stb - streambar title: DeviceType BuildOut: properties: id: type: integer title: Id artifactory_path: type: string maxLength: 255 minLength: 3 pattern: ^[a-zA-Z0-9_-]*(\/[a-zA-Z0-9._-]+)*(\:[a-zA-Z0-9._-]+)?$ title: Artifactory Path description: The path of the build in artifactory. tag: type: string title: Tag description: The tag of the build full_version: anyOf: - type: string - type: 'null' title: Full Version description: The full version of the build asan: type: boolean title: Asan description: Whether the build is ASAN public: type: boolean title: Public description: Whether the build is public source: $ref: '#/components/schemas/BuildSource' description: The source of the build examples: - official - premergeci device_type: $ref: '#/components/schemas/DeviceType' description: The type of the Device. examples: - tv type: object required: - id - artifactory_path - tag - full_version - asan - public - source - device_type title: BuildOut HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError BuildSource: type: string enum: - pre-merge - main - released - alpha - misc title: BuildSource