openapi: 3.0.1 info: title: Miro Developer Platform AI Interaction Logs Bulk operations 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: Bulk operations paths: /v2/boards/{board_id}/items/bulk: parameters: - $ref: '#/components/parameters/boardId' post: x-settings: publish: true description: 'Adds different types of items to a board. You can add up to 20 items of the same or different type per create call. For example, you can create 3 shape items, 4 card items, and 5 sticky notes in one create call. The bulk create operation is transactional. If any item''s create operation fails, the create operation for all the remaining items also fails, and none of the items will be created.

To try out this API in our documentation:

1. In the **BODY PARAMS** section, scroll down until you see **ADD OBJECT** (Figure 1).

“add
Figure 1. Add object user interface in readme

2. Click **ADD OBJECT**, and then select or enter the appropriate values for parameters of the item that you want to add.

3. Repeat steps 1 and 2 for each item that you want to add.

Required scope

boards:write

Rate limiting

Level 2 per item. For example, if you want to create one sticky note, one card, and one shape item in one call, the rate limiting applicable will be 300 credits. This is because create item calls take Level 2 rate limiting of 100 credits each, 100 for sticky note, 100 for card, and 100 for shape item.' operationId: create-items requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/ItemCreate' minItems: 1 maxItems: 20 required: true responses: '201': description: Items created content: application/json: schema: $ref: '#/components/schemas/Items' '400': description: Malformed request content: application/json: schema: $ref: '#/components/schemas/BulkOperationError' '429': description: Too many requests content: application/json: schema: $ref: '#/components/schemas/Error' summary: Create items in bulk tags: - Bulk operations /v2/boards/{board_id_Platformcreateitemsinbulkusingfilefromdevice}/items/bulk: parameters: - $ref: '#/components/parameters/boardId' post: description: 'Adds different types of items to a board using files from a device. You can add up to 20 items of the same or different type per create call. For example, you can create 5 document items and 5 images in one create call. The bulk create operation is transactional. If any item''s create operation fails, the create operation for all the remaining items also fails, and none of the items will be created. To try out this API in our documentation: 1. In the **BODY PARAMS** section, select **ADD FILE**, and then upload a local file. Repeat for each item that you want to add. 2. Upload a JSON file that contains the bulk data for the items you want to create.

Required scope

boards:write

Rate limiting

Level 2 per item
' operationId: create-items-in-bulk-using-file-from-device requestBody: required: true content: multipart/form-data: schema: type: object properties: data: type: string format: binary description: JSON file containing bulk data, where each object represents an item to be created. For details, see [JSON file example](https://developers.miro.com/reference/json-data-example). resources: type: array description: Array of items to create (PDFs, images, etc.). Maximum of 20 items. items: type: string format: binary required: - data - resources responses: '201': description: Items created content: application/json: schema: $ref: '#/components/schemas/Items' summary: Create items in bulk using file from device tags: - Bulk operations components: schemas: AppCardData: type: object description: Contains app card item data, such as the title, description, or fields. properties: description: type: string description: A short text description to add context about the app card. example: Sample app card description fields: type: array description: Array where each object represents a custom preview field. Preview fields are displayed on the bottom half of the app card in the compact view. items: $ref: '#/components/schemas/CustomField' owned: type: boolean description: Defines whether the card is owned by the application making the call. status: type: string description: Status indicating whether an app card is connected and in sync with the source. When the source for the app card is deleted, the status returns `disabled`. enum: - disconnected - connected - disabled title: type: string description: A short text header to identify the app card. example: sample app card item ModificationTime: type: string format: date-time description: 'Date and time when the item was last modified.
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: '2022-03-30T17:26:50.000Z' ImageDataResponse: type: object properties: imageUrl: type: string description: 'The URL to download the resource. You must use your access token to access the URL. The URL contains the `redirect` parameter and the `format` parameter to control the request execution as described in the following parameters: `format` parameter: By default, the image format is set to the preview image. If you want to download the original image, set the `format` parameter in the URL to `original`. `redirect`: By default, the `redirect` parameter is set to `false` and the resource object containing the URL and the resource type is returned with a 200 OK HTTP code. This URL is valid for 60 seconds. You can use this URL to retrieve the resource file. If the `redirect` parameter is set to `true`, a 307 TEMPORARY_REDIRECT HTTP response is returned. If you follow HTTP 3xx responses as redirects, you will automatically be redirected to the resource file and the content type returned can be `image/png`, ''image/svg'', or ''image/jpg'', depending on the original image type.' example: https://api.miro.com/v2/boards/uXjVOfjkmAk=/resources/98765467890987654?format=preview&redirect=false title: type: string description: A short text header to identify the image. example: Sample image title BulkOperationError: type: object description: Error information with details about operation failure properties: type: type: string description: Type of the error example: error code: type: string description: Code of the error example: 2.074 message: type: string description: Description of the error example: Error message context: type: object properties: fields: type: array items: $ref: '#/components/schemas/BulkSubOperationError' status: type: integer format: int32 description: Status code of the error example: 400 required: - message CreationTime: type: string format: date-time description: 'Date and time when the item was created.
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: '2022-03-30T17:26:50.000Z' ImageUrlData: type: object description: Contains information about the image URL. properties: title: type: string description: A short text header to identify the image. example: Sample image title url: type: string default: https://miro.com/static/images/page/mr-index/localization/en/slider/ideation_brainstorming.png description: URL of the image. example: https://miro.com/static/images/page/mr-index/localization/en/slider/ideation_brainstorming.png required: - url DocumentDataResponse: type: object properties: documentUrl: type: string description: 'The URL to download the resource. You must use your access token to access the URL. The URL contains the `redirect` parameter to control the request execution. `redirect`: By default, the `redirect` parameter is set to `false` and the resource object containing the URL and the resource type is returned with a 200 OK HTTP code. This URL is valid for 60 seconds. You can use this URL to retrieve the resource file. If the `redirect` parameter is set to `true`, a 307 TEMPORARY_REDIRECT HTTP response is returned. If you follow HTTP 3xx responses as redirects, you will automatically be redirected to the resource file and the content type returned is `application/octet-stream`.' example: https://api.miro.com/v2/boards/uXjVOfjkmAk=/resources/98765467890987654?redirect=false title: type: string description: A short text header to identify the document. example: Sample document title Error: type: object description: Error information properties: code: type: string description: Code of the error example: 2.074 message: type: string description: Description of the error example: Error message context: type: object status: type: integer format: int32 description: Status code of the error example: 400 type: type: string description: Type of entity that is returned. example: error required: - message - type SelfLink: type: object description: Contains applicable links for the current object. properties: self: type: string description: Link to obtain more information about the current object. example: http://api.miro.com/v2/boards/o9J_koQspF4=/object_type/3074457349143649487 CardData: type: object description: Contains card item data, such as the title, description, due date, or assignee ID. properties: assigneeId: type: string format: int64 description: Unique user identifier. In the GUI, the user ID is mapped to the name of the user who is assigned as the owner of the task or activity described in the card. The identifier is numeric, and it is automatically assigned to a user when they first sign up. example: '3074457362577955300' description: type: string description: A short text description to add context about the card. example: sample card description dueDate: type: string format: date-time description: 'The date when the task or activity described in the card is due to be completed. In the GUI, users can select the due date from a calendar. 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: '2023-10-12T22:00:55.000Z' title: type: string description: A short text header for the card. example: sample card item CustomField: type: object description: Array where each object represents a custom preview field. Preview fields are displayed on the bottom half of the app card in the compact view. properties: fillColor: type: string description: Hex value representing the color that fills the background area of the preview field, when it's displayed on the app card. example: '#2fa9e3' iconShape: type: string default: round description: The shape of the icon on the preview field. enum: - round - square iconUrl: type: string description: 'A valid URL pointing to an image available online. The transport protocol must be HTTPS. Possible image file formats: JPG/JPEG, PNG, SVG.' example: https://cdn-icons-png.flaticon.com/512/5695/5695864.png textColor: type: string description: Hex value representing the color of the text string assigned to `value`. example: '#1a1a1a' tooltip: type: string description: A short text displayed in a tooltip when clicking or hovering over the preview field. example: Completion status indicator value: type: string description: 'The actual data value of the custom field. It can be any type of information that you want to convey.' example: 'Status: in progress' Geometry: type: object description: Contains geometrical information about the item, such as its width or height. properties: height: type: number format: double description: Height of the item, in pixels. example: 60 rotation: type: number format: double description: Rotation angle of an item, in degrees, relative to the board. You can rotate items clockwise (right) and counterclockwise (left) by specifying positive and negative values, respectively. width: type: number format: double description: Width of the item, in pixels. example: 320 Item: type: object description: Contains information about an item. properties: id: $ref: '#/components/schemas/ItemId' type: type: string description: Type of item. example: document data: $ref: '#/components/schemas/ItemData' position: $ref: '#/components/schemas/Position' geometry: $ref: '#/components/schemas/Geometry' parent: $ref: '#/components/schemas/ParentWithLinks' createdBy: $ref: '#/components/schemas/CreatedBy' createdAt: $ref: '#/components/schemas/CreationTime' modifiedBy: $ref: '#/components/schemas/ModifiedBy' modifiedAt: $ref: '#/components/schemas/ModificationTime' links: $ref: '#/components/schemas/SelfLink' required: - id - type - links ParentWithLinks: type: object description: Contains information about the parent this item attached to. properties: id: type: string format: int64 example: '3458764517517819001' description: Unique identifier (ID) of a container item. links: $ref: '#/components/schemas/SelfLink' Position: type: object description: Contains location information about the item, such as its x coordinate, y coordinate, and the origin of the x and y coordinates. properties: origin: type: string default: center description: 'Area of the item that is referenced by its x and y coordinates. For example, an item with a center origin will have its x and y coordinates point to its center. The center point of the board has x: 0 and y: 0 coordinates. Currently, only one option is supported.' enum: - center relativeTo: type: string enum: - canvas_center - parent_top_left x: type: number format: double description: 'X-axis coordinate of the location of the item on the board. By default, all items have absolute positioning to the board, not the current viewport. Default: 0. The center point of the board has `x: 0` and `y: 0` coordinates.' example: 100 y: type: number format: double description: 'Y-axis coordinate of the location of the item on the board. By default, all items have absolute positioning to the board, not the current viewport. Default: 0. The center point of the board has `x: 0` and `y: 0` coordinates.' example: 100 StickyNoteStyle: type: object description: Contains information about the style of a sticky note item, such as the fill color or text alignment. properties: fillColor: type: string description: 'Fill color for the sticky note. Default: `light_yellow`.' enum: - gray - light_yellow - yellow - orange - light_green - green - dark_green - cyan - light_pink - pink - violet - red - light_blue - blue - dark_blue - black textAlign: type: string description: 'Defines how the sticky note text is horizontally aligned. Default: `center`.' enum: - left - right - center textAlignVertical: type: string description: 'Defines how the sticky note text is vertically aligned. Default: `top`.' enum: - top - middle - bottom ItemStyle: type: object description: Contains information about item-specific styles. oneOf: - $ref: '#/components/schemas/AppCardStyle' - $ref: '#/components/schemas/CardStyle' - $ref: '#/components/schemas/ShapeStyle' - $ref: '#/components/schemas/StickyNoteStyle' - $ref: '#/components/schemas/TextStyle' TextData: type: object description: Contains text item data, such as the title, content, or description. For more information on the JSON properties, see [Data](https://developers.miro.com/reference/data). properties: content: type: string description: The actual text (content) that appears in the text item. example: Hello required: - content DocumentUrlData: type: object description: Contains information about the document URL. properties: title: type: string description: A short text header to identify the document. example: Sample document title url: type: string default: https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf description: URL where the document is hosted. example: https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf required: - url Parent: type: object description: Contains information about the parent frame for the item. properties: id: type: string format: int64 description: Unique identifier (ID) of the parent frame for the item. example: '3074457362577955300' ItemCreate: type: object description: Creates one or more items in one request. You can create up to 20 items per request. properties: type: $ref: '#/components/schemas/ItemTypeChange' data: $ref: '#/components/schemas/ItemDataCreate' style: $ref: '#/components/schemas/ItemStyle' position: $ref: '#/components/schemas/PositionChange' geometry: $ref: '#/components/schemas/Geometry' parent: $ref: '#/components/schemas/Parent' required: - type CardStyle: type: object description: Contains information about the style of a card item, such as the card theme. properties: cardTheme: type: string description: 'Hex value of the border color of the card. Default: `#2d9bf0`.' example: '#2d9bf0' PositionChange: type: object description: Contains information about the item's position on the board, such as its `x` coordinate, `y` coordinate, and the origin of the `x` and `y` coordinates. properties: x: type: number format: double description: 'X-axis coordinate of the location of the item on the board. By default, all items have absolute positioning to the board, not the current viewport. Default: `0`. The center point of the board has `x: 0` and `y: 0` coordinates.' default: 0 example: 100 y: type: number format: double description: 'Y-axis coordinate of the location of the item on the board. By default, all items have absolute positioning to the board, not the current viewport. Default: `0`. The center point of the board has `x: 0` and `y: 0` coordinates.' default: 0 example: 100 ItemTypeChange: type: string description: Type of item that you want to create. enum: - app_card - text - shape - sticky_note - image - document - card - frame - embed example: text Items: type: object description: Contains items resulting from a bulk create or update operation. properties: data: type: array description: Contains the result data. items: $ref: '#/components/schemas/Item' type: type: string description: Type of the object. example: bulk-list required: - type - data ModifiedBy: type: object description: Contains information about the user who last modified the item. properties: id: type: string description: Unique identifier (ID) of the user. example: '3458764517517852417' type: type: string description: Indicates the type of object returned. In this case, `type` returns `user`. example: user ItemDataCreate: type: object description: Contains data information applicable for each item type. oneOf: - $ref: '#/components/schemas/AppCardData' - $ref: '#/components/schemas/CardData' - $ref: '#/components/schemas/DocumentUrlData' - $ref: '#/components/schemas/EmbedUrlData' - $ref: '#/components/schemas/ImageUrlData' - $ref: '#/components/schemas/ShapeData' - $ref: '#/components/schemas/StickyNoteData' - $ref: '#/components/schemas/TextData' EmbedUrlData: type: object description: Contains information about the embed URL. properties: mode: type: string description: 'Defines how the content in the embed item is displayed on the board. `inline`: The embedded content is displayed directly on the board. `modal`: The embedded content is displayed inside a modal overlay on the board.' enum: - inline - modal previewUrl: type: string description: URL of the image to be used as the preview image for the embedded item. url: type: string default: https://www.youtube.com/watch?v=HlVSNEiFCBk description: 'A [valid URL](https://developers.miro.com/reference/data#embeddata) pointing to the content resource that you want to embed in the board. Possible transport protocols: HTTP, HTTPS.' required: - url ShapeData: type: object description: Contains shape item data, such as the content or shape type of the shape. properties: content: type: string description: The text you want to display on the shape. example: Hello shape: type: string default: rectangle description: Defines the geometric shape of the item when it is rendered on the board. enum: - rectangle - round_rectangle - circle - triangle - rhombus - parallelogram - trapezoid - pentagon - hexagon - octagon - wedge_round_rectangle_callout - star - flow_chart_predefined_process - cloud - cross - can - right_arrow - left_arrow - left_right_arrow - left_brace - right_brace BulkSubOperationError: type: object properties: field: type: string description: 0-based index indicating a sub-operations from the input that caused a failure followed by parameter name message: type: string description: Description of the sub-operation related error example: Invalid parameters context: type: object required: - field - message ItemData: type: object description: Contains information about item-specific data. oneOf: - $ref: '#/components/schemas/DocumentDataResponse' - $ref: '#/components/schemas/ImageDataResponse' StickyNoteData: type: object description: Contains sticky note item data, such as the content or shape of the sticky note. properties: content: type: string description: The actual text (content) that appears in the sticky note item. example: Hello shape: type: string default: square description: Defines the geometric shape of the sticky note and aspect ratio for its dimensions. enum: - square - rectangle ShapeStyle: type: object description: Contains information about the shape style, such as the border color or opacity. properties: borderColor: type: string description: 'Defines the color of the border of the shape. Default: `#1a1a1a` (dark gray).' borderOpacity: type: string description: 'Defines the opacity level of the shape border. Possible values: any number between `0.0` and `1.0`, where: `0.0`: the background color is completely transparent or invisible `1.0`: the background color is completely opaque or solid Default: `1.0` (solid color).' maximum: 1 minimum: 0 borderStyle: type: string description: 'Defines the style used to represent the border of the shape. Default: `normal`.' enum: - normal - dotted - dashed borderWidth: type: string description: 'Defines the thickness of the shape border, in dp. Default: `2.0`.' maximum: 24 minimum: 1 color: type: string description: 'Hex value representing the color for the text within the shape item. Default: `#1a1a1a`.' example: '#1a1a1a' fillColor: type: string description: 'Fill color for the shape. Hex values: `#f5f6f8` `#d5f692` `#d0e17a` `#93d275` `#67c6c0` `#23bfe7` `#a6ccf5` `#7b92ff` `#fff9b1` `#f5d128` `#ff9d48` `#f16c7f` `#ea94bb` `#ffcee0` `#b384bb` `#000000` Default: #ffffff.' example: '#8fd14f' fillOpacity: type: string description: "Opacity level of the fill color.\nPossible values: any number between `0` and `1`, where:\n`0.0`: the background color is completely transparent or invisible.\n`1.0`: the background color is completely opaque or solid.\n\n Default: `1.0` if `fillColor` is provided, `0.0` if `fillColor` is not provided.\n" maximum: 1 minimum: 0 fontFamily: type: string description: 'Defines the font type for the text in the shape item. Default: `arial`.' enum: - arial - abril_fatface - bangers - eb_garamond - georgia - graduate - gravitas_one - fredoka_one - nixie_one - open_sans - permanent_marker - pt_sans - pt_sans_narrow - pt_serif - rammetto_one - roboto - roboto_condensed - roboto_slab - caveat - times_new_roman - titan_one - lemon_tuesday - roboto_mono - noto_sans - plex_sans - plex_serif - plex_mono - spoof - tiempos_text - formular fontSize: type: string description: 'Defines the font size, in dp, for the text on the shape. Default: `14`.' maximum: 288 minimum: 10 textAlign: type: string description: 'Defines how the sticky note text is horizontally aligned. Default: `center`.' enum: - left - right - center textAlignVertical: type: string description: 'Defines how the sticky note text is vertically aligned. Default: `top`.' enum: - top - middle - bottom TextStyle: type: object description: Contains information about the style of a text item, such as the fill color or font family. properties: color: type: string description: 'Hex value representing the color for the text within the text item. Default: `#1a1a1a`.' example: '#1a1a1a' fillColor: type: string description: 'Background color of the text item. Default: `#ffffff`.' example: '#e6e6e6' fillOpacity: type: string description: 'Opacity level of the background color. Possible values: any number between `0.0` and `1.0`, where: `0.0`: the background color is completely transparent or invisible. `1.0`: the background color is completely opaque or solid. Default: `1.0` if `fillColor` is provided, `0.0` if `fillColor` is not provided.' maximum: 1 minimum: 0 fontFamily: type: string description: 'Font type for the text in the text item. Default: `arial`.' enum: - arial - abril_fatface - bangers - eb_garamond - georgia - graduate - gravitas_one - fredoka_one - nixie_one - open_sans - permanent_marker - pt_sans - pt_sans_narrow - pt_serif - rammetto_one - roboto - roboto_condensed - roboto_slab - caveat - times_new_roman - titan_one - lemon_tuesday - roboto_mono - noto_sans - plex_sans - plex_serif - plex_mono - spoof - tiempos_text - formular fontSize: type: string description: 'Font size, in dp. Default: `14`.' minimum: 1 textAlign: type: string description: 'Horizontal alignment for the item''s content. Default: `center.`' enum: - left - right - center CreatedBy: type: object description: Contains information about the user who created the item. properties: id: type: string description: Unique identifier (ID) of the user. example: '3458764517517852417' type: type: string description: Indicates the type of object returned. In this case, `type` returns `user`. example: user ItemId: type: string description: Unique identifier (ID) of an item. format: int64 example: '3458764517517819000' AppCardStyle: type: object description: Contains information about the style of an app card item, such as the fill color. properties: fillColor: type: string description: 'Hex value of the border color of the app card. Default: `#2d9bf0`.' example: '#2d9bf0' parameters: boardId: description: Unique identifier (ID) of the board where you want to create the item. required: true in: path name: board_id schema: type: string 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