Create a minimal working Miro example with real board and item operations.
Use when starting a new Miro integration, testing your setup,
or learning the Miro REST API v2 item model.
Trigger with phrases like "miro hello world", "miro example",
"miro quick start", "first miro board", "create miro sticky note".
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Um comando direto ignora o prompt de revisão. Verifique a origem antes de executá-lo.
Create a minimal working Miro example with real board and item operations.
Use when starting a new Miro integration, testing your setup,
or learning the Miro REST API v2 item model.
Trigger with phrases like "miro hello world", "miro example",
"miro quick start", "first miro board", "create miro sticky note".
allowed-tools
Read, Write, Edit, Bash(npm:*), Bash(npx:*)
version
1.6.0
license
MIT
author
Jeremy Longshore <jeremy@intentsolutions.io>
tags
["saas","miro","quickstart"]
compatibility
Designed for Claude Code
Miro Hello World
Overview
Minimal working example: create a board, add a sticky note, add a shape, connect them, and read the results back — all using the Miro REST API v2.
Prerequisites
Completed miro-install-auth setup
Valid access token with boards:read and boards:write scopes
asyncfunctionlistBoardItems(boardId: string) {
// GET https://api.miro.com/v2/boards/{board_id}/items// Returns cursor-paginated resultsconst response = awaitfetch(
`https://api.miro.com/v2/boards/${boardId}/items?limit=50`,
{
headers: {
'Authorization': `Bearer ${process.env.MIRO_ACCESS_TOKEN}`,
},
}
);
const result = await response.json();
console.log(`Board has ${result.data.length} items:`);
for (const item of result.data) {
console.log(` - ${item.type}: ${item.id} (${item.data?.content ?? 'no content'})`);
}
// Handle paginationif (result.cursor) {
console.log(`More items available. Next cursor: ${result.cursor}`);
}
}
Step 6: Run the Complete Flow
asyncfunctionmain() {
const boardId = awaitcreateBoard();
const noteId = awaitaddStickyNote(boardId);
const shapeId = awaitaddShape(boardId);
awaitconnectItems(boardId, noteId, shapeId);
awaitlistBoardItems(boardId);
console.log('\nDone! Open the board in Miro to see your items.');
}
main().catch(console.error);
Miro REST API v2 Item Types
Type
Create Endpoint
Key Properties
sticky_note
/v2/boards/{id}/sticky_notes
content, shape, fillColor
shape
/v2/boards/{id}/shapes
content, shape, fillColor, borderStyle
card
/v2/boards/{id}/cards
title, description, dueDate, assigneeId
text
/v2/boards/{id}/texts
content, fontSize
frame
/v2/boards/{id}/frames
title, showContent, childrenIds
image
/v2/boards/{id}/images
url or data (base64)
document
/v2/boards/{id}/documents
url
embed
/v2/boards/{id}/embeds
url
app_card
/v2/boards/{id}/app_cards
title, description, fields, status
connector
/v2/boards/{id}/connectors
startItem, endItem, captions
All create endpoints require boards:write scope. All GET endpoints require boards:read.