Sketch Cloud has a real REST API at https://www.sketch.com/api/v1 that lets Bubble fetch documents, artboard lists, and preview image URLs using a simple API token — no OAuth required. The primary use-case for Bubble founders is a client-approval portal where clients browse Sketch mockup previews and submit feedback stored in Bubble's database, all without needing a Sketch account.
| Fact | Value |
|---|---|
| Tool | Sketch |
| Category | DevOps & Tools |
| Method | Bubble API Connector |
| Difficulty | Beginner |
| Time required | 30–45 minutes |
| Last updated | July 2026 |
Build a Sketch design review portal in Bubble without giving clients Sketch access
The most practical Bubble + Sketch integration is a client-approval portal: your team uploads Sketch artboards to Sketch Cloud, the Bubble app fetches the artboard previews via the Sketch API and displays them in a gallery, and clients can browse and submit feedback — all through a Bubble-built interface that requires no Sketch account.
Sketch Cloud's REST API makes this straightforward. Token authentication is simpler than OAuth (just a `Authorization: Token {token}` header), artboard preview images are hosted on Sketch's CDN and loadable directly in Bubble Image elements, and the API returns structured data that maps cleanly to Bubble's data types.
One important clarification upfront: the Sketch desktop app is Mac-only. But the Sketch Cloud API — the part this tutorial uses — is platform-agnostic and works from any server, including Bubble's. Non-Mac founders can still build and operate the Bubble integration; they just won't be editing Sketch files themselves. Also, Sketch share links (www.sketch.com/s/{id}) cannot be iframed in Bubble — use the API preview images instead of attempting to embed the Sketch viewer.
Integration method
Bubble's API Connector calls the Sketch Cloud REST API server-side using a token-based Authorization header marked Private, so your Sketch credentials never reach the browser.
Prerequisites
- A Sketch account with Sketch Cloud access (Sketch Standard at $12/editor/month or Business at $20/editor/month — viewer accounts are free and can access the API with viewer-only permissions)
- At least one Sketch document shared to Sketch Cloud (needed to test API calls during initialization)
- A Bubble account — any plan works for outbound API Connector calls; a paid plan is needed for inbound Sketch webhooks via Backend Workflows
- The short ID of a Sketch Cloud share (found in the share URL: sketch.com/s/{shortId})
Step-by-step guide
Generate a Sketch Cloud API token
Sketch Cloud uses token-based authentication — simpler than OAuth, no redirect URIs required. Tokens are generated in your Sketch account settings and grant API access to all workspaces your account can access. Open your browser and go to www.sketch.com. Log in to your Sketch account. Click your profile avatar in the top-right corner and select 'Settings' from the dropdown. In the left sidebar, find 'API Access' or 'Developer Settings' (the exact label may vary — look for 'Personal Access Tokens' or similar under your account settings). Click 'Create Token' or 'New Token'. Give it a descriptive name like 'Bubble Integration'. Copy the token immediately — Sketch may only show it once. Store it somewhere safe like a password manager. Security note: this token grants API access to all workspaces and documents your Sketch account can see. For a production Bubble app, create a dedicated Sketch account with viewer-only access to the relevant workspace, generate the token from that account, and use it in Bubble. This limits the blast radius if the token is ever compromised. Do not create the token from an admin account that can edit or delete shared documents.
Pro tip: Sketch API tokens do not have built-in expiry by default — rotate them periodically as a security best practice. To rotate, generate a new token in Sketch account settings, update the API Connector in Bubble, and revoke the old token.
Expected result: You have a Sketch Cloud API token copied and ready to paste into Bubble's API Connector.
Configure the Bubble API Connector with Sketch Cloud base URL and Private token
Open your Bubble app editor in the browser. Click the Plugins tab in the left sidebar (the puzzle piece icon). If the API Connector is not listed in your installed plugins, click Add plugins, search for 'API Connector' — the one published by Bubble — and click Install. Return to the Plugins tab and click API Connector. Click Add another API to create a new API group. Set the API name to 'Sketch Cloud'. In the Shared headers section, click Add a shared header: - Key: `Authorization` - Value: `Token YOUR_SKETCH_TOKEN` — replace `YOUR_SKETCH_TOKEN` with the token you copied in Step 1. Note that Sketch uses the format `Token {token}` (not `Bearer {token}` — this is important). - Check the 'Private' checkbox on this header. This tells Bubble to process the header server-side only, so the Sketch token never appears in users' browsers. You will set the base URL at the individual call level since Sketch's API is straightforward. The base URL for all calls is: `https://www.sketch.com/api/v1` Leave other API-level settings at defaults for now. Your API group is ready — all calls you add will automatically include the Private Authorization header.
1{2 "API Name": "Sketch Cloud",3 "Shared Headers": {4 "Authorization": "Token <private>"5 },6 "Base URL": "https://www.sketch.com/api/v1"7}Pro tip: The Sketch API uses 'Token' not 'Bearer' in the Authorization header. Using 'Bearer' will return a 401 error — double-check the prefix when copying the header value.
Expected result: The Sketch Cloud API group is configured in Bubble's API Connector with a Private Authorization header. No calls added yet.
Add calls to fetch shared documents and artboard scenes, then initialize
With the Sketch Cloud API group set up, add two GET calls: one to list all shared documents, and one to fetch the artboard list (scenes) for a specific share. Call 1 — List Shares: - Click Add another call inside the Sketch Cloud API group - Name: 'Get Shares' - Method: GET - URL: `https://www.sketch.com/api/v1/shares` - Use as: Data - Click Initialize call. You need at least one shared document in your Sketch Cloud account for initialization to return data. Bubble will detect fields like `shortId`, `name`, `createdAt`, `updatedAt`, and `userIsOwner`. Call 2 — Get Artboard Scenes (Preview Images): - Click Add another call - Name: 'Get Share Scenes' - Method: GET - URL: `https://www.sketch.com/api/v1/shares/{shortId}/scenes` - Add a parameter named `shortId` (Bubble will treat this as a URL-path parameter) - Use as: Data - Click Initialize — for the `shortId` parameter, enter the actual short ID from one of your Sketch share URLs (the part after sketch.com/s/). Bubble needs a real response to detect fields. Expected fields from scenes: `name` (artboard name), `previewURL` (CDN image URL for the artboard thumbnail), `frame` (width/height dimensions), `artboardID`. Critical: if Initialize returns 'There was an issue setting up your call', the most common cause is a wrong token format (must be `Token {token}`, not `Bearer {token}`) or the shortId doesn't exist on your account.
1GET https://www.sketch.com/api/v1/shares/{shortId}/scenes2Headers:3 Authorization: Token <private>45Example response:6{7 "shares": [8 {9 "shortId": "abc123de",10 "name": "Mobile App Redesign",11 "updatedAt": "2026-06-15T14:30:00Z"12 }13 ],14 "scenes": [15 {16 "name": "Onboarding Screen 1",17 "previewURL": "https://sketch-cdn.com/assets/preview/abc123.jpg",18 "artboardID": "artboard-uuid",19 "frame": { "width": 375, "height": 812 }20 }21 ]22}Pro tip: After initializing both calls, click 'Re-initialize call' if the Sketch API response shape changes (e.g., Sketch adds new fields). You must re-initialize any time you want Bubble to detect new fields from the API.
Expected result: Both calls are initialized. 'Get Shares' returns a list of your Sketch shared documents. 'Get Share Scenes' returns artboard names and CDN preview image URLs. Both are ready to use in Bubble as data sources.
Build a client-approval portal with Repeating Groups and a feedback form
With the API calls ready, build the Bubble page that clients will use to review designs and submit feedback. Go to the Design tab in your Bubble editor. Create a new page (or use an existing one). The page layout has two main sections: Section 1 — Document List (optional, for multi-project portals): - Add a Repeating Group - Type of content: 'Sketch Cloud Get Shares' - Data source: 'Get data from an external API' → Sketch Cloud - Get Shares - Inside the cell: a Text element showing the share name, and a Button that sets a Custom State (Page State) to the current cell's shortId Section 2 — Artboard Gallery (main section): - Add another Repeating Group with layout 'Grid' (so artboards display in columns) - Type of content: 'Sketch Cloud Get Share Scenes' - Data source: 'Get data from an external API' → Sketch Cloud - Get Share Scenes → set shortId to the Page State (or hardcode one specific shortId if you're building a single-project portal) - Inside the cell: - An Image element → set its Source to 'Current cell's Sketch Cloud Get Share Scenes's previewURL'. The CDN URLs from Sketch's API are directly loadable in Bubble Image elements without any proxy or additional processing. - A Text element showing the artboard name - A 'Leave Feedback' Button that opens a Popup Feedback Popup: - Add a Popup element to the page - Inside the Popup: a Multiline Input element, a Text element showing the artboard name (pass it via a Page State when opening the popup), and a Button labeled 'Submit Feedback' - Create a Workflow triggered by Submit Feedback: action 'Create a new Thing' → Type: 'ArtboardFeedback' → Fields: artboard_id (from Page State), feedback_text (Multiline Input value), client_email (if authenticated), submitted_at (Current date/time) Data tab: Go to Data → Privacy → ArtboardFeedback. Configure a Privacy Rule so only admins can see all feedback records, and clients only see their own submissions.
Pro tip: Sketch's CDN preview images (sketch-cdn.com) are publicly accessible via their URL — no authentication header needed to display them in Bubble Image elements. This is a significant advantage over other design tool APIs that require proxied asset downloads.
Expected result: A Bubble page displays artboard preview images from Sketch Cloud in a grid layout. Clients can view each artboard and submit feedback. Feedback is saved to Bubble's database with Privacy Rules configured.
Set up an inbound Sketch webhook to trigger Bubble workflows on document updates
Sketch Cloud can send webhook events when documents are updated, new versions are published, or shares are created. You can configure a Bubble Backend Workflow URL as the webhook target so Bubble takes action automatically when Sketch changes occur — for example, creating a notification or sending an email to reviewers. Important prerequisite: Backend Workflows require a paid Bubble plan. On the Free plan, Bubble cannot expose a public webhook endpoint. If you're on the Free plan, skip this step and use a manual 'Refresh' button on your Bubble page that triggers the API call to re-fetch artboards instead. For paid plan users: 1. In your Bubble editor, go to Settings → API in the left sidebar. Enable the option 'This app exposes a Workflow API' by checking the checkbox. Save. 2. Go to the Backend Workflows section (in the left sidebar). Click 'Add API Workflow'. Name it 'sketch_document_updated'. 3. Set the API type to allow incoming requests from any source (or configure Bubble's secret token validation). 4. Inside the workflow, add a 'Detect request data' step. Bubble will show a URL like: `https://yourappname.bubbleapps.io/api/1.1/wf/sketch_document_updated/initialize` 5. Copy this initialization URL (drop the `/initialize` suffix for the production endpoint URL — the production URL is: `https://yourappname.bubbleapps.io/api/1.1/wf/sketch_document_updated`) 6. In Sketch, go to your workspace Settings → Integrations → Webhooks → Add Webhook. Paste the production Bubble URL as the Webhook URL. Select the events you want (e.g., 'Document Updated'). Save. 7. Send a test event from Sketch to populate the 'Detect request data' fields in Bubble. Once detected, map the fields (document name, share ID, event type) to workflow actions (Create Notification, send email, etc.). RapidDev's team has set up dozens of design-review portals and webhook-driven notification systems in Bubble — if you want expert help configuring the full approval workflow, book a free scoping call at rapidevelopers.com/contact.
1Production webhook endpoint URL (after enabling Workflow API on paid plan):2https://yourappname.bubbleapps.io/api/1.1/wf/sketch_document_updated34Example Sketch webhook payload:5{6 "event": "share.updated",7 "share": {8 "shortId": "abc123de",9 "name": "Mobile App Redesign",10 "updatedAt": "2026-07-10T09:00:00Z"11 },12 "triggeredBy": {13 "name": "Jane Designer"14 }15}Pro tip: The initialization URL (with /initialize suffix) is only for Bubble to detect the webhook payload schema — never register the /initialize URL with Sketch. The production webhook URL does NOT have the /initialize suffix.
Expected result: Sketch sends a document-updated webhook to your Bubble Backend Workflow URL. Bubble detects the payload fields and processes the event — creating notifications or triggering email sends automatically when Sketch documents change.
Common use cases
Client design approval portal with artboard previews and feedback tracking
Display Sketch artboard previews in a Bubble-built portal where clients can browse each screen design, click to view it at full size, and submit written feedback stored in Bubble's database. No client Sketch account needed — just a link to your Bubble app.
Show all artboard preview images from my Sketch share in a Bubble repeating group gallery with a feedback input and a save button per artboard
Copy this prompt to try it in Bubble
Design handoff status dashboard for development teams
Use the Sketch API to track which documents and artboards exist in Sketch Cloud, display version history, and let developers mark screens as 'ready for development' in a Bubble internal tool — creating a living handoff tracker without complex design tooling.
List all Sketch shared documents with their last-modified date in a Bubble table, and add a status dropdown per document that saves to the database
Copy this prompt to try it in Bubble
Automated design review notifications using Sketch webhooks
Configure a Sketch workspace webhook to fire when a document is updated. The webhook hits a Bubble Backend Workflow URL, which creates a notification record and sends an email to relevant team members — keeping the review team informed without polling.
When Sketch fires a webhook for a document update, create a Notification record in Bubble and trigger a SendGrid email to the design reviewer
Copy this prompt to try it in Bubble
Troubleshooting
Initialize call returns 401 Unauthorized
Cause: The API token format is incorrect. Sketch requires 'Token {token}' not 'Bearer {token}' in the Authorization header. The wrong prefix causes a 401 on all calls.
Solution: In the API Connector, edit the Sketch Cloud API group's shared Authorization header. Make sure the value is exactly 'Token YOUR_TOKEN_HERE' — not 'Bearer YOUR_TOKEN_HERE'. The token format is specific to Sketch Cloud and differs from most other APIs.
Initialize call returns 'There was an issue setting up your call' or 403 Forbidden
Cause: The shortId parameter used for initialization doesn't match a real Sketch share on your account, or the API token belongs to an account without access to that share.
Solution: Open your Sketch Cloud account (sketch.com) and navigate to a shared document. Copy the short ID from the URL (sketch.com/s/{shortId}). Use this exact value as the shortId parameter during initialization. Confirm the token you're using was generated from an account that has access to that share.
Artboard preview images do not load in the Bubble Image element (broken image icons)
Cause: The previewURL from the Sketch API is correct, but the Bubble Image element is trying to display the raw API response object rather than just the URL string — or the field binding is pointing to the wrong nested field.
Solution: In the Bubble Image element's Source field, make sure you're selecting the specific 'previewURL' text field from the API response, not the entire scene object. Use Bubble's field inspector (hover over the binding path) to confirm the value is a plain URL string starting with 'https://'.
Backend Workflows section is missing or the 'This app exposes a Workflow API' checkbox doesn't appear
Cause: Backend Workflows are a paid-plan Bubble feature. They are not available on the Free plan.
Solution: Upgrade to a Bubble paid plan to access Backend Workflows and expose webhook endpoints. If you're on the Free plan and need to react to Sketch document changes, use a manual 'Refresh' button on your Bubble page that calls the API to fetch the latest artboards when clicked.
Sketch share link embedded in a Bubble HTML element shows a blank page
Cause: Sketch share URLs (www.sketch.com/s/{id}) block iframe embedding via X-Frame-Options headers. This is a server-side restriction from Sketch, not a Bubble limitation.
Solution: Do not embed Sketch share links via iframe. Instead, use the API to fetch artboard preview images (CDN URLs) and display them in Bubble Image elements. For a 'view full design' experience, add a Button element in Bubble that links out to the Sketch share URL in a new browser tab.
Best practices
- Use the 'Token {token}' header format exactly — Sketch Cloud's API requires this specific prefix and will return 401 if you use 'Bearer' instead.
- Create a dedicated Sketch viewer account for the Bubble integration token rather than using your personal admin token — this limits permissions to read-only access and reduces exposure if the token is compromised.
- Display artboard previews using Sketch CDN URLs from the API response directly in Bubble Image elements — no proxy or re-upload needed, as Sketch CDN images are publicly accessible.
- Never attempt to iframe Sketch share links in Bubble — use CDN image URLs from the API for artboard previews and link-out buttons for the full Sketch viewer.
- Add Privacy Rules in Bubble's Data tab for any ArtboardFeedback or review data stored in your database — Bubble data is world-readable by default without Privacy Rules.
- Cache the artboard scenes list in a Bubble data type if your portal has many concurrent users — each Bubble page load that calls the Sketch API consumes WU; caching reduces API calls and page-load latency.
- For inbound Sketch webhooks, remember the /initialize suffix URL is only for schema detection in Bubble — register only the production URL (without /initialize) in Sketch's webhook settings.
- Rotate your Sketch API token periodically and update it in Bubble's API Connector — tokens don't expire automatically, but regular rotation is a security best practice.
Alternatives
Figma is the most widely adopted design tool and has a similar REST API with personal access token auth. Figma is cross-platform (not Mac-only like the Sketch desktop app) and has broader team adoption. If your team doesn't already use Sketch, Figma is the recommended choice for new projects.
Adobe XD requires Adobe IMS OAuth 2.0 (significantly more complex than Sketch's simple token auth) and was discontinued as a standalone product in 2023. For a design review portal in Bubble, Sketch's API is considerably easier to configure than Adobe XD's CC Libraries API.
Zeplin is a design handoff and spec tool that works with Sketch files (and Figma/XD). If your team already uses Zeplin for developer handoff, the Zeplin API may be a better source for Bubble integration than Sketch Cloud directly — Zeplin includes measurement specs and annotated screen exports in addition to preview images.
Frequently asked questions
Does the Sketch desktop app need to be Mac for me to use this Bubble integration?
The Sketch desktop design application is Mac-only. However, the Sketch Cloud API — which is what this Bubble integration uses — is platform-agnostic and works from any server or browser. If you're building the Bubble app (not editing Sketch files yourself), you can build and operate this integration from Windows or any other platform. Your designers need Macs to use Sketch, but your Bubble developers don't.
Do I need a paid Bubble plan to connect to Sketch?
No — outbound API calls to the Sketch Cloud REST API work on all Bubble plans including Free. A paid Bubble plan is only required if you want to receive inbound Sketch webhook events using Bubble's Backend Workflows (for example, auto-notifying clients when a Sketch document is updated). For a read-only design approval portal, the Free plan is sufficient.
Can I embed the Sketch viewer or prototype directly in a Bubble page?
No. Sketch share URLs (www.sketch.com/s/{id}) include X-Frame-Options headers that prevent iframe embedding. If you put a Sketch share link inside a Bubble HTML element, it will display as a blank or broken page. Use artboard preview images from the API (CDN URLs) displayed in Bubble Image elements instead, and add a 'View in Sketch' link button that opens the share URL in a new tab.
What Sketch plan do I need to use the API?
The Sketch Cloud REST API is accessible on paid Sketch plans (Standard at $12/editor/month or Business at $20/editor/month). Sketch also offers free viewer accounts, which can access the API with viewer-only permissions. For the Bubble integration, a viewer-only token is sufficient for a read-only approval portal. Webhooks (for inbound events) require your Sketch workspace to be on a plan that supports webhooks.
Why do artboard preview images load in Bubble but at low resolution?
The Sketch Cloud API returns preview image URLs with default resolution settings. Sketch CDN often supports resolution parameters in the URL — check if adding '?scale=2' or similar parameters to the previewURL improves quality. Alternatively, for high-fidelity mockup display, consider exporting artboards at 2x or 3x resolution directly from the Sketch desktop app and hosting them in Bubble's file storage.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation