Create an app in the Miro Developer Portal and complete OAuth 2.0 authorization to get an access token with the appropriate scopes (boards:read, boards:write).
Create a new board by POSTing to https://api.miro.com/v2/boards with Authorization: Bearer {token} and a JSON body containing name and optionally policy settings for sharing and permissions.
Add a sticky note by POSTing to https://api.miro.com/v2/boards/{board_id}/sticky_notes with data.content, style.fillColor, and position (x, y coordinates on the board canvas).
Add a card item by POSTing to https://api.miro.com/v2/boards/{board_id}/cards with data.title, data.description, and position; cards support assignee, due date, and custom fields.
Create a frame to group items by POSTing to https://api.miro.com/v2/boards/{board_id}/frames with geometry (width, height) and position, then move items into the frame by updating their parent property.
Known gotchas
Miro positions items using absolute canvas coordinates; items created without explicit position values may be placed at origin (0,0) and stack on top of each other, which is not visible as an error in the API response.
The Miro API v2 enforces per-board and per-organization rate limits; bulk programmatic creation of many items (e.g., generating a board from a dataset) will hit rate limits, and the retry-after header must be respected.
Board sharing settings created via API may not match what users expect from the UI defaults; programmatically created boards default to restricted access, requiring explicit policy configuration to make them accessible to team members.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp