Sapilon becomes publicly available on 1 December 2026: 42 days to go. The core goes open source the same day →

Miro integration

In short

Read boards and add sticky notes, cards, shapes and text. Connect it on the Integrations page; your app then calls Miro through Sapilon without ever holding a Miro credential.

Lets your app list the boards a Miro team can see, read their items and add sticky notes, cards, shapes and text to them.

Connecting

On the Integrations page choose Connect on Miro and fill in:

  • Access token — Miro → Profile settings → Your apps → Create new app → Install app and get OAuth token. Give it boards:read and boards:write.

Sapilon checks the key with the provider before it saves it, and stores it encrypted; it is never shown again.

What your app can do

Only these requests are available; anything else is refused.

  • GET|POST /boards
  • GET /boards/*
  • GET /boards/*/items
  • GET /boards/*/items/*
  • POST /boards/*/sticky_notes
  • POST /boards/*/cards
  • POST /boards/*/shapes
  • POST /boards/*/texts

How the agent uses it

Use integrations.request('miro', …); paths are relative to https://api.miro.com/v2.

  • GET|POST /boards — list (query: { query: 'Roadmap' }) or create (body: { name: 'Q3 planning' }).
  • GET /boards/{id}, GET /boards/{id}/items (query: { type: 'sticky_note' }), GET /boards/{id}/items/{itemId}.
  • POST /boards/{id}/sticky_notes — Example: { method: 'POST', path: '/boards/uXjVO123=/sticky_notes', body: { data: { content: 'Ship it' }, position: { x: 0, y: 0 } } }.
  • POST /boards/{id}/cards, POST /boards/{id}/shapes, POST /boards/{id}/texts — same shape: data, style, position.

Board ids end in =; send them as they are. Deleting is not allowed.

More from Miro: https://developers.miro.com/reference/api-reference

Last updated .

Was this page helpful?