Discuss everything related to Miro API, SDK, embedding and Miro Platform apps development.
Recently active
Hey Nice to finally see the addition of connectors to the SDK (though the change from “Feature request” to “Done” on the roadmap was a little swift and unexpected). To get to the point though: I see thatboard.get({type:”connector”})is actually implemented - I can use it in the dev console for example to get only connectors. But it would seem that the types package- & the documentation are not up to date with this fact? So this right here produces a compiler error (although an easy workaround is to just cast it).
When several users are in the same board, they not see the left-side panel where the app is running. They can use the app independently, but it does not show them what the administrator is doing at the moment in his panel.For example, if I'm inserting a word into wordle app , they don't see the word that i am writting ,and they can´t insert a word. But if i add a sticky note they inmediately see it on the board and they can edit it.administrator :member:In the screenshot , both users are at the same time in the same board. Both see the board, but only one the panel app.The panel where the app that I have developed is running does not allow me to share it in real time with the other team members. My question is: is there any possibility that the panel where the app is running can be shared just like the board is shared?
Hey everyone, I’m following thishttps://developers.miro.com/docs/working-with-sticky-notes-and-tags-with-the-rest-api and after obtaining my oath for my app and plug that in the code, plus added the board id from https://miro.com/app/board/uXjXXXXXXXX/ where uXjXXXXXXXX(censored) is the board id and i get the following error:‘const sticky = await board.createStickyNoteItem({ ^TypeError: board.createStickyNoteItem is not a function‘Complete code: // Using miro-api client libraryconst { MiroApi, ShapeItem } = require("@mirohq/miro-api");const api = new MiroApi('eyJtaXJvLm9yaWdpXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')const board = api.getBoard('uXjXXXXXXXX')async function main() {const sticky = await board.createStickyNoteItem({ data: { content: "I'm a sticky note", shape: "square", }, style: { fillColor: "light_yellow", textAlign: "center", textAlignVertical: "top", }, position: { x: 0, y: 0, },})}main() I think the issue is wit
Hi Team, Is there a way to capture user interactions with Live embed Miro board? I want to capture the those events and replay them later re-creating entire interaction with the board programmatically. Thank you
I understand the need to force a pagination (although 100; it's still a bit low.)But then the stroke of the cursor, I do not understand.Could a simple "offset" have been suitable?Limit=100&offset=0, Limit=100&offset=100, Limit=100&offset=200, … In any case, it complicates my work terribly.Maybe making access difficult and complicated is a way to reduce the load on api servers.
I use an async call to create a number of frames with `createFrame()`. When I go into “Presentation Mode” in the UI, the order seems random (or influenced by the async call). Using the UI sidebar, I can of course change the order. How can I do this programmatically? Is there a property such as `presentationOrder` for frames?
Hi,I am testing Miro REST API and WEB SDK and, so far, everything is woring fine.My current test is calling an external API from WEB SDK App, but it is not working.Is the ( API call ) code below valid for Miro ?It works perfectly well in a normal React site.As you can see in the code this example uses a non-authenticated and CORS enabled URI.Thanksimport * as React from 'react';import {createRoot} from 'react-dom/client';import { useState, useEffect } from 'react'; // APIasync function addSticky() { const [data, setData] = useState(null); useEffect(() => { fetch("https://contabo.easylob.com:5443/echo?origin=Miro") .then(response => response.json()) .then(json => setData(json)) .catch(error => console.error(error)); }, []); const stickyNote = await miro.board.createStickyNote({ content: 'Hello, World!', }); await miro.board.viewport.zoomTo(stickyNote);}const App = () => { React.useEffect(() => { addSticky(); }, []); return ( ... );}
Good day Miro developers! 🖖 😃 The Miro Web SDK 2.0 got a couple of new features 🚀 that we’d love to share with you! 💫Flowchart shapes are now available as an additional set of shapes in the experimental shape item. ℹ️ Currently, flowchart shapes are available only in the experimental namespace: miro.board.experimental. getOnlineUsers: how many users are currently online on a board? Use the getOnlineUsers method to fetch IDs and names of currently online users on a board. online_users:update: apps can subscribe to the online_users:update event to register changes in the number of online board users. The event contains an array with user IDs and names of the currently online users.For more details and for links to the docs, see the changelog 📄
this is the first miro app i’ve tried to create, so im following the webinar here - when i run npm run start i get the following error, npm ERR! Missing script: "start" seems like probably a basic error but i’ve not had it before on other solution i’ve developed, any ideas how to resolve it?
Hi,I just published a Medium Story and a GitHub repository with a Web SDK App created with Python and Flask, instead of JavaScript and React:Medium - Miro Web SDK App with Python and FlaskGitHub - MiroSo far I did not see any incompatibility with Python, but I will continue the tests.Next steps are including Business Logic, API and OAuth 😀Thanks ( you may close the Conversation )
Hi,First, congratuations for the excelent Miro documentation: probably the best I used in 30+ years 😀Based on my very long experience ( 5 days !!! ) with Miro, I just published a Medium Story and a GitHub repository with API Clients in C# and Python, based on Miro OpenAPI Specifications:Miro - Miro OpenAPI SpecificationsMedium - Create Miro API Clients in C# and Python from OpenAPI SpecificationGitHub - MiroIt could help other developers to create their own API Client in other languages. As far as I saw, currently Miro GitHub as an API Client just for Node.js/TypeScript.Thanks ( you may close the Conversation )
Hello Friends,I have a chat app that I would like to have blank Miro boards on. I would like each user to be able to create their own board and be able to save and share with others. When I look into embedding using Miro it looks like the ability is just to embed an existing board. My worry is that this would add one board that is shared amongst every user that when it’s customized it updates for everyone. I would like each user to start with their own blank board and the ability to create more. Is this possible? Thanks!
Hello, if i have a google sheet with many topics, how can i paste them into the miro mindmap as different branches?
HiI am testing a more complex Web SDK Form ( using Mirotone examples ) and, so far, it is working fine.But I have some questions:(1) How do I change the App Form Pop-up size ?The current width is 368 but I did not see any CSS defining it.(2) Is there any way to get a floating Form instead of a fixed one ?As far as I understand Miro creates this Form and my App “runs” inside it, so I don’t know if I have control over it from the App code.Thanksconst App = () => { React.useEffect(() => { addSticky(); }, []); return (<div className="grid form-example"> <form className="cs1 ce12 form-example--main-content"> <div className="form-group"> <label htmlFor="form-example-input-1">Input label</label> <input className="input" type="text" id="form-example-input-1" placeholder="Enter something"/> </div> <div className="form-group"> <label htmlFor="form-example-input-3">Input label</label> <select className="select"
in reddit: share>embed>copyin miro: embed iFrame code“The URL you are trying to submit is invalid”
I have created a Miro app and what pretty much does is that it creates Microsoft To Do Items from Miro Cards using the Graph API and specifically several Microsoft To Do Endpoints in there. My app makes use of both the Miro REST API and the Graph REST API by Microsoft. For both I need a client secret, a refresh token and an auth token to authenticate against these apis. My plan is to use service account on the Microsoft side and another service account on the Miro side (Or actually user accounts).Since the app is built using React and Typescript (As done in one of Miro´s tutorials) I have different options to store Auth Data. I of course don´t want to do that in plain text inside my application. How should I approach this? Should I use a database or a .env file? I am happy about any suggestions and answers. :)
I have a client who is looking to build a series of career maps, showcasing the relationships between and occupational data for some 60+ occupations. That number will grow over time, and each occupation will also undergo continuous updates. They’d ideally like to store all occupational data in a database that then integrates with Miro to write the occupational data into specific map objects. One of the developer forum posts I saw said that Miro maps cannot be powered/populated by external databases, but I wanted to confirm that and see if anything has since changed. Thanks!
HI,It seems like the PlantUML plugin is broken: when I open an editor, there is no rendered image for the diagram and the “Add to Board” button has an infinite loading spinner.Looking in the logs on developer console, I see a several errors for failed requests due to CORS
The Get Boards REST API has a “query” parameter where we can get boards based on the query. The documentation says the following about the query paramRetrieves a list of boards that contain the query string provided in the board content or board name.However we do not get the correct result. It only returns results by querying the board title (not the content). We have an enterprise plan (dev sandbox). Is this a bug?Just to elaborate moreWe have this board with the two stickiesOn searching for “present” the Miro UI, we get the right result.However, the API does not return the same.
I am creating a table like object on a Miro board. Each object requires roughly 100 shapes. I am asynchronously sending HTTP requests to “https://api.miro.com/v2/boards/{board_id}/shapes”. I am aware that uploading shapes is level 2, so there should be a limit of 1000 items per minute. However, even when sending 1 http request per 0.1 seconds, some errors happen:Error uploading shape to miro, status code: 500{ "type" : "error", "code" : "3.0023", "context" : { "boardId" : "uXjVPxuroBA=" }, "message" : "Internal error occurred", "status" : 500} I could not find anything about error code 3.0023. My program works 100% okay if I wait 1 second per http request, any ideas what is causing this?
HelloIf you select a segment on the board (a connector with empty ends) and write this code:let arrSelect = await miro.board.getSelection();console.log(arrSelect[0].style);then the end of the segment will be defined as "stealth", although in fact it should be "none" (fig. 1)If you select the first value in the list with the beginning of the arrow (Fig. 2), then it is defined as "none", which is also not true.The function works correctly with all other types of ends.
Hello community of bright people who are much more programmatically competent than me.Is it possible to have a HUD of the filepath for different Miro boards and projects on the left side of the iOS app? Is that something that could be an extension?
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
As the title states, how can I duplicate an existing board programmatically using the REST api? I couldn’t find anything in the documentation, and get all the widgets and then creating them in a new board are not practical as this method doesn’t support frames.
We are using the live embed feature , when the unregistered board is loaded , the toolbar disappears automatically but the toolbar shortcuts all work (like p (PEN) etc).Not sure why the toolbar suddenly disappeared . Looking for help regarding this.What I have already tried and failed : - Reset the cache- Using different browser- Using incognito modeWhat i have made sure : - The user the owner of the board (accessToken)- The board has not gone into view only mode- The user is able to write on the board using the toolbar shortcutsBoard URL : http://miro.com/app/live-embed/uXjVMU21pXM=/?boardAccessToken=AQ8vtfd6NXt8kfwmT4b33OkxGs8149JH&autoplay=trueAdditional info : If the were to select a registered board by selecting the board by logging in, the toolbar is visible . This is issue only happens with unregistered boards as of now. This is happening in whereby as well.ScreenshotFrom our webAppScreenshot from whereby
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.