🏆 Make your 2026 football predictions with Miro — + win $400 in our June Challenge
Discuss everything related to Miro API, SDK, embedding and Miro Platform apps development.
Recently active
We create widgets via the Miro API and query them afterwards back. We need to know which widgets are what (e.g. to find stickers placed within a specific widget). So far, we rely on the text to match the enclosing widget. Yet, this leads to issues if users change the text in the Miro UI and it’s cumbersome if boards are localized (i.e. lots of text variants to match). (Aa an alternative, we considered storing the Miro widget ID but that’s tricky as it requires us to hold this state.) We would like to send a hidden marker to the API during widget creation, which is then returned when querying for widgets. As a parallel, consider the ID field in HTML elements: The developer sets it, website users don’t see it and can’t change it, yet developers can query the elements afterwards with this ID via `getElementById`.
It seems to me that the panel iframe no longer recieves (at least) selection:update events after miro.board.ui.closeModal() is called by the modal iframe. When i open a modal, and a code in the modal calls miro.board.ui.closeModal(), the panel stops receiveing events. I have to re-register the listener in panel again. Does by any chance closeModal unregister listeners in the panel?
Hi everyone,We have a school project to do and I wanted to add a visual timer, but not the one we have at the bottom because the countdown is not dedicated to everyone, and is about 5 days long.I tried to add an embed one from https://www.watchisup.fr/ but the timer appears with a play button and everyone must click on it in order to see it in a popup window…What I wanted to do is for the timer to be displayed straight in Miro, with the clock ticking automatically for everyone. Is it possible to display an animated timer in that way? I can for example directly add a google slide document in it and visualize it… why I can with my timer?Also if it isn’t possible, when I click on the play button it opens a popup page inside Miro, isn’t it possible to open it like youtube videos or google slides, on the board directly ? Thanks in advance,Sacha
Hi,I have been testing the API functionality, specifically mass-copying a board to multiple Miro Teams. However, I can’t seem to get this working properly. Please note that I am new to json and rest api, so I may be getting the syntax wrong.For example, using the copy_from parameter, the body looks something like this: { "boards": { "board": [ { "policy": { "sharingPolicy": { "teamAccess": "edit", "inviteToAccountAndBoardLinkAccess": "editor" } }, "teamId": "3458764577105192620", "name": "Test 0" }, { "policy": { "sharingPolicy": { "teamAccess": "edit", "inviteToAccountAndBoardLinkAccess": "editor" } }, "teamId": "3458764577105192620", "name": "Test 1" } ] }}For some reason, running the above creates a copy of a board named “copy of original board name” and places it in DevTeam instead of the
I want to keep my app simple and only use Web SDK and does not want to integrated with Rest API.I am currently exporting list of board item to an external system. However, the createdBy and modifiedBy are returning an userId. As userId is not readable in this case. I had check through the webSDK documentation and could not find any method to retrieve a username by id. Is there any method to support this other than Rest API?
Hi,I am using the REST API, not creating a Miro App. I am using the API to build a board programmatically and although it is mostly working, I have hit a number of issues.The API exploration works, but the code samples do not - something is broken on the OpenAPI Schema (missing fields) that prevents it from working, I’ve had to make calls directly instead. Changing lineEndType does not seem to do anything. backgroundOpacity does not match what is in the application - I would like 10%. There is no ability to “send to back” or in any way adjust the z-index. Would it be so hard to add z-index to the style? It is not possible to adjust the opacity of a line.
@Anthony Roux - Can you confirm the status of the bottomBar extension point and the new UI beta?For example, the following does not appear to work in the new UI: extensionPoints: { bottomBar: { title: "Cardsy", tooltip: "Generate Cards", svgIcon: icon,Source:https://github.com/YashBhalodi/cardsy/blob/master/main.jsFor one of my personal projects, I had to switch to the ‘toolbar’ extension point and replace ‘svgIcon’ with:toolbarSvgIcon: icon,librarySvgIcon: icon,Tagging in @Yash as his Cardsy plugin is work working in the new UI using the above bottomBar extension point.
Hey Miro community! With ProBackup we’d like to publish some changes to our app. However, when we click on resubmit the app, we always get the error “Submission request failed”. Does anyone have an idea how to solve this? Is there any other way to contact the marketplace team of Miro?Thanks in advance for your help.
Has anyone else tried using libraries with the create-miro-app React TypreScript option? I followed the Hello World Miro example and it works fine but when I add Airtable and even though none of the Airtable code runs I receive the error:Uncaught Error: Module "stream" has been externalized for browser compatibility and cannot be accessed in client code. at Object.get (browser-external:stream:3) at node_modules/node-fetch/lib/index.mjs (index.mjs:10) at __init (chunk-EB7XYW2R.js?v=d66c9224:9) at node_modules/airtable/lib/fetch.js (fetch.ts:2) at __require2 (chunk-EB7XYW2R.js?v=d66c9224:12) at node_modules/airtable/lib/base.js (base.ts:4) at __require2 (chunk-EB7XYW2R.js?v=d66c9224:12) at node_modules/airtable/lib/airtable.js (airtable.ts:1) at __require2 (chunk-EB7XYW2R.js?v=d66c9224:12) at dep:airtable:1I have spent several hours looking it up and trying different options but even though the error changes I have not been able to make it work. Here is a sa
Hi!It’s my first time trying to make a Miro app and was thinking of making an elevator music app. I’m thinking - a user can click the “play audio” button and this music plays for everyone who is active on the board. The use case is - during collaboration meetings, there are many occasions when individuals have to work independently for a few minutes before regrouping. During this silent time, it would be nice to have some sort of music played for everyone in the room. I got to the point where I can get the user to play a music, but unfortunately, it only plays for that user and not other users. Does anyone know how to make this a reality?Thanks!
I've looked around the references and know to customize a lot of things like adding logos and such, but still aren’t sure if I can change the height and width or add tags to the cards via web SDK If there is a page somewhere I can look at to figure out the details of the card object creation?
I’m trying to define a set of sticky notes for our internal use. To get all specific sticky inserted I need to identify them with an unique key. I can’t find a sticky prop to save it (like a metadata o similar); I’ve tried to use tag but it is modificable and it hasn't any readonly information to do this (as sticky props). Have you any idea?
Hello. I’m trying to make miro → discord integration and I need to setup webhook to get updates from miro board to notify people on discord about certain events. Is it currently possible (couldn’t find any webhook mention in Miro API)?Is there any plans to add webhooks to Miro API in near future? My team is currently migrating from Trello to Miro and this is the only inconvenience we’ve met that we can’t move our discord notifications system from Trello to Miro.
Hello, I am trying to programmatically populate a board with predefined shape widgets. N.B i can successfully create a frame widget, but not its children and attempting to separately render child widgets hasn’t worked for me either. Please see stack trace below, I suspect that the error is originating from the Miro Web Plugin SDK.Looking through the documentation, I can’t see a requirement for a ‘name’ property for a widget.. tested and adding a name property to the json object results in the same error.Please, Let me knowRegards, RTypeError: Cannot read property 'name' of undefined at Function.t.getName (Board.4b1e51e782d99f6d574d.js:2) at t.setFontSizeOfStyle (Board.4b1e51e782d99f6d574d.js:2) at n.setWidgetData (Board.4b1e51e782d99f6d574d.js:2) at n.setJsonData (Board.4b1e51e782d99f6d574d.js:2) at n.setData (Board.4b1e51e782d99f6d574d.js:2) at new n (Board.4b1e51e782d99f6d574d.js:2) at create (Board.4b1e51e782d99f6d574d.js:2) at Object.e.create (Board.4b1e51e7
Hi all!I have an issue with CORS when accessing the Rest API from within a Web-plugin. As explained here, it is very easy to get a Rest Authorization Token to execute API calls from the miro SDK. However, when attempting to get a REST resource (I was getting /v1/boards/{id}/user-connections), I get a CORS exception because I call the API from the domain of my plugin. (which of course runs inside miro.com) My understanding is that the only workaround is to make the call to the API from a server and not the browser, which would require my plugin to require a server, which has a big complexity addition - it would be much simpler if it could continue to be hosted as a static website on GitHub Pages. So my question:Is there a way that I am not aware of to circumvent this problem (other than hosting a server)? If there is not, would it be possible to set the Access-Control-Allow-Origin header on requests to * (or potentially more safe to a list of addresses that could be configured on the bo
Hello,I’m trying to lock lines drawn by a pen in a chart, but I found out, that this doesn’t work.I tried it with the same lines in and our of the chart. Here are Screenshots of the problem Thats quite troubeling because I’m trying to use miro as a plattform for the free japanese online class that I’m currently developing.Have a nice day ^^
Hi. In February this year I paid for a year Starter plan but now I can use only 3 Bords for editing, looks like my subscription was declined
Hi,What is the functionality that i am looking for ?When https://webwhiteboard.com/ is visited, the board that opens is unregistered miro board, but when the window is closed and when opened again the same board is shown again (the miro board is reused / the miro board is remembered), how to achieve this functionality using miro board picker (live embed) ?Current functionality is: When ever the board picker is triggered, clicking on create board (unregistered) will always open a new miro board. What i have already tried: Create a new miro board with a new jwt token , store this jwt token.Now when opening a board picker again , pass in the same function that returns the same jwt token created earlier. But this also creates a new miro board . What can i do to actually reuse the same unregistered miro board ?Also,how to get the data of which board (unregistered / registered board) the user selected from the board picker? (looking get this response in board picker success response, As ther
Hi, Is it possible to integrate Miro with Blackboard? How can I do this if possible. Thank you,
I have a Web App for Miro that start an action from a Panel. once I click in a panel button I start and action moving cards in the board. The problem is that when I close the panel, the action stops. I know that this is the expected behavior for Panels, but I would need that the action keeps running even after the panel is closed. Any ideas?
Hi, after about 20-30 seconds of inactivity I get this error: Response by token not found .areYouAlive-pzexwRYT0y6q6vo4JdA5 from my app. I understand that this is triggered automatically but don’t understand how or why (since this doesn’t happen in any other ones I made) I don’t get why the token expires. Once this error gets triggered my app will not accept input, sometimes if I try to input something twice it works on the second try and sometimes the app needs a re-launch. Is there something I’m doing wrong, or some way to prevent this from happening?
Full disclosure: I have submitted a support ticket, but thought I would check here to see if anyone has ran into a similar situation and resolved it on their own as I am feeling stuck.A while back, I created a Developer Team using the following URL: https://miro.com/app/dashboard/?createDevTeam=1I then created six apps.Yesterday, Iuninstalled the apps from a few of my teams. deleted my Developer Team. Where is happening now - I cannot:delete the apps I created. When I go to my Profile settings → Your apps → select one of my created apps and then use the Delete app action, I receive an error of: Account not found: And when I try to create a new Developer Team using this URL: https://miro.com/app/dashboard/?createDevTeam=1, I get an error that User has already created a developer team (or something very close to that - it disappears quickly, and doesn’t always display, so I could not capture it).Has anyone else ran into this and had it fixed? I really need to keep this Miro account prof
Hi there! I’m developing an uber-simplified Sim-City-like simulation to use on a training setting. I’d like to know if there is a way to block actions like scaling or rotation on images. Thanks! Alan
When I move any connection line, it has a movement delay compared to normal drawn lines.
Right now Miro seems mostly about people starting things. I’m sure Miro has a frequency distribution showing how many boards people make. Over time, how many times they come back, factors driving repeat usage, tipping point between trying a few boards and being hooked on Miro, factors driving sharing and collaboration. IFTTM. I want to know about scale and how miro will help with scale. With APIs, other tools can generate boards. Like the manager who had more than a thousand pdfs for his team to annotate. People who meet could connect miro to calendaring and conferencing apps to trigger templated boards and automatically invite the right folks to contribute. Software developers might have a project’s issues not just added to a an existing kanban but start a scorecard board for each issue for a team to weigh in. There might be thousands of boards per worker, most generated automatically to lay the ground for further work. Overwhelm ahead. But nothing in the user experience suggests any
Already have an account? Login
No account yet? Create an account
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.