Integrations / Miro
Miro
Online whiteboards: boards, sticky notes, text, frames and other board items.
9 actions
OAuth 2
4 read4 write1 destructive
Calls api.miro.com
Connect
const conn = await setu.connections.initiate({ userId: "user_1", toolkit: "miro" });
console.log(conn.connectUrl); // show this to your user
await conn.waitUntilActive();Permissions requested
| Scope | Why it is requested |
|---|---|
boards:read | Read your boards and the items on them |
boards:write | Create boards and add, change or delete items on them |
Actions
Create boardwritemiro.create_boardCreate a new board with a name and optional description, in the user's default team or in a given team.
Needs scope: boards:write
| Input | Type | Description | |
|---|---|---|---|
name | string | Required | Board name |
description | string | Optional | Board description |
team_id | string | Optional | Team to create the board in |
await setu.execute({
userId: "user_1",
action: "miro.create_board",
input: {
"name": "<name>"
},
});Add sticky notewritemiro.create_sticky_noteAdd a sticky note to a board at a position (x, y in board coordinates; 0,0 is the board center) with a fill color.
Needs scope: boards:write
| Input | Type | Description | |
|---|---|---|---|
board_id | string | Required | Board ID |
content | string | Required | Text on the note |
fill_color | string | Required | Note color |
x | number | Required | Horizontal position |
y | number | Required | Vertical position |
await setu.execute({
userId: "user_1",
action: "miro.create_sticky_note",
input: {
"board_id": "<board_id>",
"content": "<content>",
"fill_color": "<fill_color>",
"x": 1,
"y": 1
},
});Add textwritemiro.create_textAdd a text item to a board at a position (x, y in board coordinates; 0,0 is the board center).
Needs scope: boards:write
| Input | Type | Description | |
|---|---|---|---|
board_id | string | Required | Board ID |
content | string | Required | The text |
x | number | Required | Horizontal position |
y | number | Required | Vertical position |
await setu.execute({
userId: "user_1",
action: "miro.create_text",
input: {
"board_id": "<board_id>",
"content": "<content>",
"x": 1,
"y": 1
},
});Delete board itemdestructivemiro.delete_itemDelete an item (sticky note, text, shape, card, frame and so on) from a board.
Needs scope: boards:write
| Input | Type | Description | |
|---|---|---|---|
board_id | string | Required | Board ID |
item_id | string | Required | Item ID |
await setu.execute({
userId: "user_1",
action: "miro.delete_item",
input: {
"board_id": "<board_id>",
"item_id": "<item_id>"
},
confirm: true,
});Get boardreadmiro.get_boardGet one board's name, description and team by ID.
Needs scope: boards:read
| Input | Type | Description | |
|---|---|---|---|
board_id | string | Required | Board ID, e.g. uXjVOD6LSME= |
await setu.execute({
userId: "user_1",
action: "miro.get_board",
input: {
"board_id": "<board_id>"
},
});Get board itemreadmiro.get_itemGet one item on a board by ID, with its type, content, position and creator.
Needs scope: boards:read
| Input | Type | Description | |
|---|---|---|---|
board_id | string | Required | Board ID |
item_id | string | Required | Item ID |
await setu.execute({
userId: "user_1",
action: "miro.get_item",
input: {
"board_id": "<board_id>",
"item_id": "<item_id>"
},
});List boardsreadmiro.list_boardsList the boards the user can access, optionally filtered by name text, team or owner. Returns one page of up to 50 boards.
Needs scope: boards:read
| Input | Type | Description | |
|---|---|---|---|
query | string | Optional | Only boards whose name or description contains this text |
team_id | string | Optional | Only boards in this team |
owner | string | Optional | Only boards owned by this user ID |
limit | integer | Optional | Boards per page, 1 to 50 (default 20) |
offset | integer | Optional | Zero-based offset for paging |
await setu.execute({
userId: "user_1",
action: "miro.list_boards",
input: {},
});List board itemsreadmiro.list_itemsList items on a board (sticky notes, text, shapes, cards, frames and more), optionally only one type. Returns one page; pass cursor from the last page for the next.
Needs scope: boards:read
| Input | Type | Description | |
|---|---|---|---|
board_id | string | Required | Board ID |
type | string | Optional | Only items of this type |
limit | integer | Optional | Items per page, 10 to 50 (default 10) |
cursor | string | Optional | Cursor from the previous page |
await setu.execute({
userId: "user_1",
action: "miro.list_items",
input: {
"board_id": "<board_id>"
},
});Edit sticky notewritemiro.update_sticky_noteChange the text of an existing sticky note.
Needs scope: boards:write
| Input | Type | Description | |
|---|---|---|---|
board_id | string | Required | Board ID |
item_id | string | Required | Sticky note item ID |
content | string | Required | New text |
await setu.execute({
userId: "user_1",
action: "miro.update_sticky_note",
input: {
"board_id": "<board_id>",
"item_id": "<item_id>",
"content": "<content>"
},
});