openapi: 3.0.1
info:
title: Miro Developer Platform AI Interaction Logs Board Export API
version: v2.0
description: '
### Miro Developer Platform concepts
- New to the Miro Developer Platform? Interested in learning more about platform concepts??
[Read our introduction page](https://beta.developers.miro.com/docs/introduction) and familiarize yourself with the Miro Developer Platform capabilities in a few minutes.
### Getting started with the Miro REST API
- [Quickstart (video):](https://beta.developers.miro.com/docs/try-out-the-rest-api-in-less-than-3-minutes) try the REST API in less than 3 minutes.
- [Quickstart (article):](https://beta.developers.miro.com/docs/build-your-first-hello-world-app-1) get started and try the REST API in less than 3 minutes.
### Miro REST API tutorials
Check out our how-to articles with step-by-step instructions and code examples so you can:
- [Get started with OAuth 2.0 and Miro](https://beta.developers.miro.com/docs/getting-started-with-oauth)
### Miro App Examples
Clone our [Miro App Examples repository](https://github.com/miroapp/app-examples) to get inspiration, customize, and explore apps built on top of Miro''s Developer Platform 2.0.
'
servers:
- url: https://api.miro.com/
tags:
- name: Board Export
paths:
/v2/orgs/{org_id}/boards/export/jobs:
post:
x-settings:
skip-tests: true
description: Creates an export job for one or more boards.
This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin and eDiscovery is enabled in the Settings. You can request temporary access to Enterprise APIs using this form.
operationId: enterprise-create-board-export parameters: - description: Unique identifier of the organization. example: '3074457345821141000' in: path name: org_id required: true schema: type: string - description: Unique identifier of the board export job. example: 92343229-c532-446d-b8cb-2f155bedb807 in: query name: request_id required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateBoardExportRequest' required: true responses: '200': content: application/json: schema: $ref: '#/components/schemas/BoardExportJobId' description: Unique identifier of the board export job '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '425': $ref: '#/components/responses/425' '429': $ref: '#/components/responses/429' summary: Create board export job tags: - Board Export get: x-settings: skip-tests: true description: Retrieves the list of board export jobs based on the filters provided in the request.This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin and eDiscovery is enabled in the Settings. You can request temporary access to Enterprise APIs using this form.
operationId: enterprise-board-export-jobs parameters: - description: Unique identifier of the organization. example: '3074457345821141000' in: path name: org_id required: true schema: type: string - name: status in: query description: Status of the board export jobs that you want to retrieve, such as JOB_STATUS_CREATED, JOB_STATUS_IN_PROGRESS, JOB_STATUS_CANCELLED or JOB_STATUS_FINISHED. required: false schema: type: array items: type: string description: 'Indicates the current state of the board export job. Possible values: `JOB_STATUS_CREATED`: the job has been created but not yet started. Retry the status call after some time. `JOB_STATUS_IN_PROGRESS`: the job is in progress, and the results are not ready yet. Retry the status call after some time. `JOB_STATUS_CANCELLED`: the job has been cancelled and will not produce any more results. `JOB_STATUS_FINISHED`: the job is complete. You can now get results for the board export job.' example: JOB_STATUS_CREATED - name: creatorId in: query description: Unique identifier of the board export job creator. required: false schema: type: array items: type: integer format: int64 example: - 1234567890 - 9876543210 - name: cursor description: 'A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, set the cursor parameter equal to the cursor value you received in the response of the previous request. ' in: query required: false schema: type: string format: uuid example: 87a1a375-cee6-43f2-8049-5c9b5b6b9069 - name: limit description: 'The maximum number of results to return per call. If the number of jobs in the response is greater than the limit specified, the response returns the cursor parameter with a value. ' in: query required: false schema: type: integer format: int32 minimum: 1 maximum: 500 default: 50 example: 10 responses: '200': content: application/json: schema: $ref: '#/components/schemas/BoardExportJobsList' description: List of board export jobs. '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '429': $ref: '#/components/responses/429' summary: Get board export jobs list tags: - Board Export /v2/orgs/{org_id}/boards/export/jobs/{job_id}: get: x-settings: skip-tests: true description: Retrieves the status of the board export job.This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin and eDiscovery is enabled in the Settings. You can request temporary access to Enterprise APIs using this form.
operationId: enterprise-board-export-job-status parameters: - description: Unique identifier of the organization. example: '3074457345821141000' in: path name: org_id required: true schema: type: string - description: Unique identifier of the board export job. example: 92343229-c532-446d-b8cb-2f155bedb807 in: path name: job_id required: true schema: type: string format: uuid responses: '200': content: application/json: schema: $ref: '#/components/schemas/BoardExportJobStatus' description: Board export job status '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '429': $ref: '#/components/responses/429' summary: Get board export job status tags: - Board Export /v2/orgs/{org_id}/boards/export/jobs/{job_id}/results: get: x-settings: skip-tests: true description: Retrieves the result of the board export job. The response provides more information about the board export job, such as the S3 link to the files created.This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin and eDiscovery is enabled in the Settings. You can request temporary access to Enterprise APIs using this form.
operationId: enterprise-board-export-job-results parameters: - description: Unique identifier of the organization. example: '3074457345821141000' in: path name: org_id required: true schema: type: string - description: Unique identifier of the job. example: 92343229-c532-446d-b8cb-2f155bedb807 in: path name: job_id required: true schema: type: string format: uuid responses: '200': content: application/json: schema: $ref: '#/components/schemas/BoardExportResult' description: Board export job result '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '429': $ref: '#/components/responses/429' summary: Get results for board export job tags: - Board Export /v2/orgs/{org_id}/boards/export/jobs/{job_id}/status: put: x-settings: skip-tests: true description: Updates the status of the board export job.This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin and eDiscovery is enabled in the Settings. You can request temporary access to Enterprise APIs using this form.
operationId: enterprise-update-board-export-job parameters: - description: Unique identifier of the organization. example: '3074457345821141000' in: path name: org_id required: true schema: type: string - description: Unique identifier of the board export job. example: 92343229-c532-446d-b8cb-2f155bedb807 in: path name: job_id required: true schema: type: string format: uuid requestBody: content: application/json: schema: type: object required: - status properties: status: description: Only the `CANCELLED` status is currently supported. type: string enum: - CANCELLED example: status: CANCELLED responses: '200': content: application/json: schema: type: object required: - status properties: status: allOf: - $ref: '#/components/schemas/BoardExportJobStatus' - type: string example: CANCELLED description: Update board export job status '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '429': $ref: '#/components/responses/429' summary: Update board export job status tags: - Board Export /v2/orgs/{org_id}/boards/export/jobs/{job_id}/tasks: get: x-settings: skip-tests: true description: Retrieves the list of tasks for the board export job.This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin and eDiscovery is enabled in the Settings. You can request temporary access to Enterprise APIs using this form.
operationId: enterprise-board-export-job-tasks parameters: - description: Unique identifier of the organization. example: '3074457345821141000' in: path name: org_id required: true schema: type: string - description: Unique identifier of the board export job. example: 08ac2d88-c3a7-46a1-923d-b5fb88ff3fe2 in: path name: job_id required: true schema: type: string format: uuid - name: status in: query description: Filters the list of board export tasks by their status. Accepts an array of statuses such as TASK_STATUS_CREATED, TASK_STATUS_CANCELLED, TASK_STATUS_SCHEDULED, TASK_STATUS_SUCCESS or TASK_STATUS_ERROR. required: false schema: type: array items: $ref: '#/components/schemas/ExportTaskStatusFilter' example: TASK_STATUS_CREATED - name: cursor description: 'A cursor-paginated method returns a portion of the total set of results based on the limit specified and a cursor that points to the next portion of the results. To retrieve the next portion of the collection, set the cursor parameter equal to the cursor value you received in the response of the previous request. ' in: query required: false schema: type: string format: uuid example: 87a1a375-cee6-43f2-8049-5c9b5b6b9069 - name: limit description: 'The maximum number of results to return per call. If the number of tasks in the response is greater than the limit specified, the response returns the cursor parameter with a value. ' in: query required: false schema: type: integer format: int32 minimum: 1 maximum: 500 default: 50 example: 50 responses: '200': content: application/json: schema: $ref: '#/components/schemas/BoardExportJobTasksList' description: List of tasks for the board export job. '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '429': $ref: '#/components/responses/429' summary: Get board export job tasks list tags: - Board Export /v2/orgs/{org_id}/boards/export/jobs/{job_id}/tasks/{task_id}/export-link: post: x-settings: skip-tests: true description: Creates a link to download the results of a board export task.This API is available only for Enterprise plan users. You can only use this endpoint if you have the role of a Company Admin and eDiscovery is enabled in the Settings. You can request temporary access to Enterprise APIs using this form.
operationId: enterprise-create-board-export-task-export-link parameters: - description: Unique identifier of the organization. example: '3074457345821141000' in: path name: org_id required: true schema: type: string - description: Unique identifier of the board export job. example: 08ac2d88-c3a7-46a1-923d-b5fb88ff3fe2 in: path name: job_id required: true schema: type: string format: uuid - description: Unique identifier of the board export task. example: 9394a815-86ea-418c-8bfc-71772fdb692d in: path name: task_id required: true schema: type: string format: uuid responses: '200': content: application/json: schema: $ref: '#/components/schemas/BoardExportTaskExportLink' description: Link to download the results of a board export task. '400': $ref: '#/components/responses/400' '401': $ref: '#/components/responses/401' '403': $ref: '#/components/responses/403' '404': $ref: '#/components/responses/404' '425': $ref: '#/components/responses/425' '429': $ref: '#/components/responses/429' summary: Create task export link tags: - Board Export components: schemas: BoardExportTaskResult: required: - boardId - status type: object properties: boardId: type: string description: Unique identifier of the board. example: o9J_kzlUDmo= errorMessage: type: string description: Contains the description of the error that occurred during a board export task. exportLink: type: string description: URL of the S3 bucket that contains the exported files. status: $ref: '#/components/schemas/ExportTaskStatus' errorType: $ref: '#/components/schemas/ExportTaskErrorType' description: Board export task results. CreateBoardExportRequest: type: object properties: boardIds: maxItems: 1000 minItems: 1 type: array description: List of board IDs to be exported. Each export job can contain up to 1,000 boards. example: o9J_kzlUDmo= items: type: string description: List of board IDs to be exported. Each export job can contain up to 1,000 boards. example: o9J_kzlUDmo= boardFormat: $ref: '#/components/schemas/BoardFormat' description: List of board IDs to be exported. Each export job can contain up to 1,000 boards. ExportTaskStatus: type: string description: 'Indicates the status of the individual board export task. Possible values: `SUCCESS`: the board export task was completed successfully and the results are available. `ERROR`: the board export task encountered an error and failed to complete. The `errorMessage` field provides more information on the error. `CANCELLED`: the board export task was cancelled. `SCHEDULED`: the board export task has been scheduled and is waiting to be processed. `CREATED`: the board export task was created.' example: CREATED BoardExportJobTasksList: type: object properties: total: $ref: '#/components/schemas/PageTotal' cursor: $ref: '#/components/schemas/PageCursor' data: type: array items: $ref: '#/components/schemas/BoardExportTask' PageTotal: type: integer description: Total number of results in the collection. format: int32 example: 15 BoardFormat: type: string enum: - SVG - HTML - PDF default: SVG description: Specifies the format of the file to which the board will be exported. Supported formats include SVG (default), HTML, and PDF. example: SVG PageCursor: type: string description: Indicator of the position of the next page of the result. To retrieve the next page, make another query setting its cursor field to the value returned by the current query. If the value is empty, there are no more pages to fetch. example: '3074457345821140946' ExportTaskStatusFilter: type: string description: 'Indicates the status of the individual board export task. Possible values: `TASK_STATUS_SUCCESS`: the board export task was completed successfully and the results are available. `TASK_STATUS_ERROR`: the board export task encountered an error and failed to complete. The `errorMessage` field provides more information on the error. `TASK_STATUS_CANCELLED`: the board export task was cancelled. `TASK_STATUS_SCHEDULED`: the board export task has been scheduled and is waiting to be processed. `TASK_STATUS_CREATED`: the board export task was created.' example: TASK_STATUS_CREATED BoardExportJobId: required: - jobId type: object properties: jobId: type: string description: Unique identifier of the board export job. format: uuid example: 92343229-c532-446d-b8cb-2f155bedb807 ExportTaskErrorType: type: string description: 'Indicates the type of error encountered during the board export task. Possible values: `TEMPORARY`: the board export task encountered a temporary error. Retry the board export task after some time. `FATAL`: the board export failed and cannot be retried. This export will never succeed due to issues such as board corruption, non-existence, or other unrecoverable errors. Please verify the board''s state or contact support if assistance is needed. `UNKNOWN`: the board export task encountered an unexpected exception. Retry the board export task after some time.' example: TEMPORARY ExportJobStatus: type: string description: 'Indicates the current state of the board export job. Possible values: `CREATED`: the job has been created but not yet started. Retry the status call after some time. `IN_PROGRESS`: the job is in progress, and the results are not ready yet. Retry the status call after some time. `CANCELLED`: the job has been cancelled and will not produce any more results. `FINISHED`: the job is complete. You can now get results for the board export job.' enum: - CREATED - IN_PROGRESS - CANCELLED - FINISHED example: CREATED BoardExportResult: type: object properties: jobId: type: string description: Unique identifier of the board export job. format: uuid example: 92343229-c532-446d-b8cb-2f155bedb807 results: type: array description: Board export task results. items: $ref: '#/components/schemas/BoardExportTaskResult' BoardExportJob: description: Board export job. type: object properties: id: type: string description: Unique identifier of the board export job. format: uuid example: 92343229-c532-446d-b8cb-2f155bedb807 name: type: string description: Board export job name. boardFormat: $ref: '#/components/schemas/BoardFormat' status: type: string description: 'Indicates the current state of the board export job. Possible values: `created`: the job has been created but not yet started. Retry the status call after some time. `in_progress`: the job is in progress, and the results are not ready yet. Retry the status call after some time. `cancelled`: the job has been cancelled and will not produce any more results. `finished`: the job is complete. You can now get results for the board export job.' example: created createdAt: type: string format: date-time modifiedAt: type: string format: date-time tasksCount: type: object properties: total: type: integer format: int64 description: Total number of tasks in the export. success: type: integer format: int64 description: Successfully exported tasks count. error: type: integer format: int64 description: Failed tasks count. creator: type: object properties: id: type: string description: Unique identifier of the user who created the board export job. example: '3458764517517852417' BoardExportTask: type: object required: - id - status properties: id: type: string description: Unique identifier of the board export task. example: 9394a815-86ea-418c-8bfc-71772fdb692d status: $ref: '#/components/schemas/ExportTaskStatus' artifactExpiredAt: type: string format: date-time description: 'The date and time when the artifact will no longer be available in the S3 storage. After this time, the link will no longer be valid and the exported files will not be accessible. Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).' example: '2025-08-24T17:32:28Z' sizeInBytes: type: integer format: int64 description: Size of the exported artifact in bytes. example: 1048576 errorMessage: type: string description: Contains the description of the error that occurred during a board export task. errorType: $ref: '#/components/schemas/ExportTaskErrorType' board: type: object description: Information about a board in the board export task. properties: key: type: string description: Unique identifier of the board. example: o9J_kzlUDmo= BoardExportJobsList: description: List of export jobs. type: object properties: total: $ref: '#/components/schemas/PageTotal' cursor: $ref: '#/components/schemas/PageCursor' data: type: array items: $ref: '#/components/schemas/BoardExportJob' BoardExportJobStatus: required: - jobStatus type: object properties: jobStatus: $ref: '#/components/schemas/ExportJobStatus' BoardExportTaskExportLink: required: - status type: object properties: status: $ref: '#/components/schemas/ExportTaskStatus' exportLink: type: string description: URL of the S3 bucket that contains the exported files. artifactExpiredAt: type: string format: date-time description: 'The date and time when the artifact will no longer be available in the S3 storage. After this time, the link will no longer be valid and the exported files will not be accessible. Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).' example: '2025-08-24T17:32:28Z' linkExpiredAt: type: string format: date-time description: 'The date and time when the export link will expire. After this time, the link will no longer be valid. Format: UTC, adheres to [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601), includes a [trailing Z offset](https://en.wikipedia.org/wiki/ISO_8601#Coordinated_Universal_Time_(UTC)).' example: '2025-08-24T17:32:28Z' errorMessage: type: string description: Contains the description of the error that occurred during a board export task results link creation. errorType: type: string description: 'Indicates the type of error encountered during the board export task results link creation. Possible values: `TEMPORARY`: the board export task encountered a temporary error. Retry the board export task results link creation after some time. `FATAL`: the board export failed and cannot be retried. This export will never succeed due to issues such as board corruption, non-existence, or other unrecoverable errors. Please verify the board''s state or contact support if assistance is needed. `UNKNOWN`: the board export task encountered an unexpected exception. Retry the board export task results link creation after some time.' example: TEMPORARY description: Board export task results link. securitySchemes: oAuth2AuthCode: type: oauth2 description: For more information, see https://developers.miro.com/reference/authorization-flow-for-expiring-tokens flows: authorizationCode: authorizationUrl: https://miro.com/oauth/authorize tokenUrl: https://api.miro.com/v1/oauth/token scopes: boards:read: Retrieve information about boards, board members, or items boards:write: Create, update, or delete boards, board members, or items microphone:listen: Access a user's microphone to record audio in an iFrame screen:record: Access a user's screen to record it in an iFrame webcam:record: Allows an iFrame to access a user's camera to record video organizations:read: Read information about the organization, such as name, plan, number of licenses, organization settings, or organization members. organizations:teams:read: Read team information, such as the list of teams, team settings, team members, for an organization. organizations:teams:write: Create or delete teams, update team information, team settings, team members, for an organization. x-settings: publish: true