openapi: 3.0.1
info:
title: Miro Developer Platform AI Interaction Logs Bulk operations API
version: v2.0
description: '<img src="https://content.pstmn.io/47449ea6-0ef7-4af2-bac1-e58a70e61c58/aW1hZ2UucG5n" width="1685" height="593">
### 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. <br/><br>To try out this API in our documentation:<br/><br>1. In the **BODY PARAMS** section, scroll down until you see **ADD OBJECT** (Figure 1).<br><br><img alt=“add src="https://files.readme.io/570dac1-small-add_object.png"><br>Figure 1. Add object user interface in readme<br><br>2. Click **ADD OBJECT**, and then select or enter the appropriate values for parameters of the item that you want to add.<br><br>3. Repeat steps 1 and 2 for each item that you want to add.<br> <br/><h3>Required scope</h3> <a target=_blank href=https://developers.miro.com/reference/scopes>boards:write</a>
<br/><h3>Rate limiting</h3> <a target=_blank href="/reference/rate-limiting#rate-limit-tiers">Level 2</a> 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.
<h3>Required scope</h3> <a target=_blank href=https://developers.miro.com/reference/scopes>boards:write</a> <br/> <h3>Rate limiting</h3> <a target=_blank href="/reference/rate-limiting#rate-limit-tiers">Level 2</a> per item<br/>
'
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. <br>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. <br>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'
fil
# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/miro/refs/heads/main/openapi/miro-bulk-operations-api-openapi.yml