🏆 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
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
I have a MindMap and would like to add more items there using my script. Obviously I want the new elements to have the same style as the ones already created - but they turn to be quite ugly (notice the white background of the “Sample Widget”). :-(The only differences between the “widget” object that was created manually and the one created by script areCreated on Miro UI Created by script "id": "3458764523334544261", "style": { "backgroundOpacity": 1.0, "backgroundColor": "#ffffffff", "borderColor": "#ffffffff", "borderStyle": "normal", "borderOpacity": 1.0, "borderWidth": 2.0, "fontSize": 14, "fontFamily": "OpenSans", "textColor": "#1a1a1a", "textAlign": "right", "shapeType": "text_rect" }, "text": "<p>SIP trunk</p>", "x": -437.200615234375, "y": 10.0, "width": 56.4, "scale": 1.0, "rotation": 0.0, "type"
Hi everyone! How can I organize access to a Miro not public board if the attendees don’t have a Miro accounts?I see that invite a team method requires userEmail (https://developers.miro.com/reference/enterprise-invite-team-member) and share a board method requires the list of email (https://developers.miro.com/reference/share-board)
Hi,Trying to create a miro board for unregistered users (anonymous board), once the board is created the board picker returns with a accessToken which we can use to share the board with to other users . I am trying to embed the miro board in ReactNative with an iframe using WebView, even though the link has accessToken , the board always shows up as a private board for another user with the link.The code : <WebView originWhitelist={["*"]} scalesPageToFit={false} scrollEnabled={false} ref={this.miroWhiteboardRef} style={{ flex: 1, }} source={{ // uri: whiteboard?.accessLink, html: `<iframe title="miro-whiteboard" referrerpolicy="no-referrer-when-downgrade" allow="fullscreen; clipboard-read; clipboard-write" src=${`https://miro.com/app/live-embed/${whiteboard?.accessLink}`} style="background: transparent; border: 1px solid rgb(204, 204, 204); transform: scale(calc(0
Is there an API to delete a user account in Miro ?I see APIs to remove members from a team but unable to find one which could delete the account altogether.
It would be great if images and icons could be added as nodes/topics in mind maps
Hey, Miro Developers! We’re excited to announce the open beta of a new experimental space in our developer portal, dedicated to streamlining the developer experience. Introducing the Developer Space—your one-stop shop for onboarding, progress tracking, app creation, an enhanced app management list, and more!You can access the beta version of the Developer Space here, or from the upper right-hand corner of our developer portal at developers.miro.com:We’re focused on making sure we’re meeting the right needs of developers with this new space, and your voice is invaluable to us! We’d like to hear from you and learn from your experience with our early beta! Share any feedback or bugs with us here:Feedback on Developer Space Cheers,Miro Developer Platform Team
Hi Miro,Some iFrame embed widgets seems to run (when you press the play icon) inline directly on the board (e.g. Youtube & SoundCloud) and some run in the popup modal view (e.g. Spotify, Product Hunt). I’m building a web app (to run inside the iFrame embed widget) and a Miro web-plugin, how can I make the embed widget to run inline directly on the board? I can’t find any documentation or references in the SDK.Cheers,Niklas
Hi there,i urgently need to administrate miro accounts and rights through active directoy. Also I need to manage boards through active directoy. The goal is to create and change user accounts and their user rights.How could i realise it ?Also I need the following files on daily basis (daily report) e.g. csv-filelist of all miro accounts (firstname, surname) list of rights and roles possible inside miro list of all combinations of accounts, rights and rolesHow can i get these informations? Many thanx in advance for your support. Best,Bergin
Issue is that when you copy a code block all the “<” are changed to “& lr ;” .. so formatting is ruined.
I would love a feature where a single frame (including all content inside that frame) could be displayed and edited in multiple boards! EX. My team created a “project planning” board that keeps progress/ tasks/ activities/ and assignments for all our projects. We link to individual boards for each project inside that board. I would be great if there was a way to have that specific project plan viewable inside that project Miro board. we then could plan out and update that progress inside that project board and the same information would update in the project planning board! I hope this makes sense and would be happy to answer questions if this is not clear.ThanksTerriljohnson_terril_j@cat.com
TLDR: Probably can be fixed by adding “object-fit: contain” to the CSS for “.library-root__item--list .library-root__item-icon” to the Miro Board.library-root__item--list .library-root__item-icon { width: 24px; height: 24px; margin-right: 16px; object-fit: contain;}Icons are sometimes stretched in the Apps search on the Mio Board.Should be:They do not show up stretched anywhere else. We submitted a square SVG but at some point it was converted to a PNG and any transparent space was trimmed. That png is properly displayed on the marketplace page with a object-fit: contains css. but the CSS on the Miro Board App Search display does not have the object-fit: contains CSS.We cannot think of a way to solve this on our end. We already submitted a square image. One idea was to add a white background but then the icon highlighting in the SVG icons for the app would not look proper.
Hi, My use case is to create a diagram (similar to a uml class diagram) on the micro canvas. I basically parse complex code bases and after filtering and structuring relevant tokens parsed, I end up with a complex json data that has information about the different files, classes, variables, api calls etc. I want to draw a visual representation of that code base where an application is represented by a frame, and each file inside it forms a separate frame, which further contains shapes representing api calls and variables etc. I want to maintain the hierarchy in the diagram just like in the code itself- for example, a file containing a class, which in turn contains an api call, must be rendered as a frame (the file), containing another frame (the class) as its child, which finally contains a box representing the api call as its child.So, now that I have provided a context, I’ll come straight to the point. I did not find an api call where I could pass data for multiple items (frames, sha
Hi , I am trying to create board for unregistered users . But getting “Something went wrong” in the board picker.The API’s :async function getTokenFromServer() { const response = await makeApiRequest( "POST", backendApi, "server/generate/jwt", false, { client_id: "...", // hidden client_secret: "...", //hidden } ); if (response.error) { console.log(response.message); return response?.message; } console.log("token", response.response.jwt_token); // this returns a JWT token <string> , there is no errors in this func return response.response.jwt_token;}export const initMiroBoard = () => (dispatch, getState) => { window.miroBoardsPicker.open({ clientId: "...", // hidden action: "access-link", allowCreateAnonymousBoards: true, getToken: () => getTokenFromServer(), success: (data) => { console.log("on success", data); dispatch(setMiroWhiteboard(data)); }, error: (e) => { console.log("on error",
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.