Creators & communities
Substack
Posts, Notes, messages, subscribers and stats for your publication.
50 endpoints
Designs, tags, products, sales and earnings for your Redbubble shop. Use it in ChatGPT, Claude or any AI agent over MCP, or in n8n, Make and scripts over REST.
10 tools Read and write
Redbubble has no seller API, no developer docs, no webhooks and no official MCP server (checked 28 Oct 2026). Cotlet runs 10 Redbubble tools hosted, over MCP for agents and REST for scripts.
| What you need | Manage Portfolio by hand | Upload extension | Cotlet |
|---|---|---|---|
| Fix tags and titles on existing works | Yes, by hand | Some, at upload | Yes, from a prompt |
| Turn a product on for many works | Yes, by hand | No | Yes, after your OK |
| Views, sales, earnings and fees | In the dashboard | No | Yes, as data |
| Upload new works | Yes | Yes, against the bot rule | No, on purpose |
| Runs with your computer off | No | No | Yes, hosted |
Checked 28 Oct 2026. Sources: Redbubble Help: Managing Your Portfolio · Redbubble Help: How do I tag my designs? · Redbubble Community and Content Guidelines · Zapier: no Redbubble app
Use your own account in its Cotlet Cloud Browser.
Connect your agent or create a Cotlet API key.
Ask your agent or send an HTTP request.
We never keep your Redbubble password, and nothing goes on sale or turns public until you approve it. Who can see your session
Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.
Enable Redbubble for agents. Create a Cotlet account, log in to your Redbubble artist account in its Cloud Browser and press Enable for agents.
Add the Cotlet address. Put https://cotlet.dev/mcp/v1 in your agent's MCP server or connector list.
Let the agent in. Chat apps open a Cotlet sign-in. Code editors, n8n and scripts send an API key made in the console.
Redbubble shares https://cotlet.dev/mcp/v1 with the other apps on your account. Turned Redbubble on after you connected? Refresh the connector and the 10 tools appear.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet-redbubble \
https://cotlet.dev/mcp/v1 \
--header "Authorization: Bearer $COTLET_API_KEY" Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth // ~/.cursor/mcp.json
{
"mcpServers": {
"cotlet-redbubble": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet-redbubble]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: redbubble_read Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: redbubble_write Create a Cotlet API key with access to Redbubble and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.
Connect Redbubble in Cotlet and enable it for agents. Account access: Your own Redbubble artist account (email and password, or Google or Apple sign-in).
curl https://cotlet.dev/api/v1/redbubble/designs \
-H "Authorization: Bearer $COTLET_API_KEY" A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.
{
"status": "success",
"app": "redbubble",
"tool": "list_designs",
"result": {
"designs": [
{
"design_id": "112233445",
"title": "Fox in the Fog",
"public": true,
"tag_count": 15,
"products_enabled": 18
},
{
"design_id": "112233446",
"title": "Night Market Cat",
"public": true,
"tag_count": 9,
"products_enabled": 18
},
{
"design_id": "112233447",
"title": "Quiet Mountains",
"public": true,
"tag_count": 6,
"products_enabled": 12
}
],
"next_cursor": ""
}
} Returns the works in the order Manage Portfolio shows them. Each item has the design id, title, public state, tag count and the products enabled.
The next page comes back as next_cursor; an empty next_cursor means the end. Needs only your own artist account.
cursor: next_cursor from the previous page.
Keep the same selection when continuing a list. Compare changed record values as well as identifiers when refreshing your destination.
| Tool | Connect through | Example workflow |
|---|---|---|
| n8n | HTTP Request | Reads one work: title, description, tags, privacy and each product line. Use get_design in your configured content report. |
| Make | HTTP > Make a request | Reads the Artist Analytics Dashboard for a period. Use get_analytics in your configured content report. |
| Python or Node.js | REST API | Reads the Earnings Details page: the fees applied to one pay period. Use get_earnings_details in your configured content report. |
Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.
Cotlet reads Redbubble; your workflow steps write to your chosen destination. These HTTP workflows do not require a native Cotlet connector or a prebuilt template.
Python and Node.js can use the same HTTP requests without an AI agent. Keep access keys in credentials, outside shared workflow exports.
The API and MCP reference lists operations and inputs. The REST API guide explains authentication, errors and approvals.
Works already in Manage Portfolio only; nothing uploads or deletes. Tags replace the whole list, up to 15.
Returns the works in the order Manage Portfolio shows them. Each item has the design id, title, public state, tag count and the products enabled. The next page comes back as next_cursor; an empty next_cursor means the end. Needs only your own artist account.
MCP callredbubble_read → list_designs
REST endpointGET https://cotlet.dev/api/v1/redbubble/designs
| Name | Type | Description |
|---|---|---|
| query string | string | Only works whose title contains this text. |
| cursor string | string | next_cursor from the previous page. |
{
"designs": [
{
"design_id": "112233445",
"title": "Fox in the Fog",
"public": true,
"tag_count": 15,
"products_enabled": 18
},
{
"design_id": "112233446",
"title": "Night Market Cat",
"public": true,
"tag_count": 9,
"products_enabled": 18
},
{
"design_id": "112233447",
"title": "Quiet Mountains",
"public": true,
"tag_count": 6,
"products_enabled": 12
}
],
"next_cursor": ""
} Returns the full text of the work as the Edit page shows it, with every tag and the Enabled or Disabled state of each product line. Read it before changing tags so the agent keeps what is already there.
MCP callredbubble_read → get_design
REST endpointGET https://cotlet.dev/api/v1/redbubble/designs/{design_id}
| Name | Type | Description |
|---|---|---|
| design_id string required | string | Id from list_designs. |
{
"design_id": "design_8c41d2"
} {
"design_id": "112233446",
"title": "Night Market Cat",
"description": "A cat watching a lantern-lit night market.",
"tags": [
"cat",
"night market",
"lanterns",
"illustration",
"cute",
"asia",
"street food",
"animal",
"art"
],
"public": true,
"product_lines": [
{
"product": "Stickers",
"state": "Enabled"
},
{
"product": "T-Shirts",
"state": "Enabled"
}
]
} Changes only the fields you send. The old text is returned in previous so one more call can restore it. It reaches no one directly and is undone in one call, so it does not wait for your OK.
MCP callredbubble_write → update_design_text
REST endpointPATCH https://cotlet.dev/api/v1/redbubble/designs/{design_id}/text
| Name | Type | Description |
|---|---|---|
| design_id string required | string | Id from list_designs. |
| title string | string | New title. Left out: unchanged. |
| description string | string | New description. Left out: unchanged. |
{
"design_id": "design_8c41d2"
} {
"design_id": "112233447",
"title": "Quiet Mountains at Dawn",
"previous": {
"title": "Quiet Mountains"
},
"saved": true
} Enables or disables the product on each work and returns the result per work. An enabled product goes on sale to buyers. The uploader may already have turned products off for a small file, and those works come back as skipped. By default you confirm each call; you can switch that off for this tool.
MCP callredbubble_write → enable_products
REST endpointPOST https://cotlet.dev/api/v1/redbubble/products/enable
| Name | Type | Description |
|---|---|---|
| design_ids string[] required | string[] | Ids from list_designs. |
| product string required | string | The product as the Available on dropdown names it. |
| enabled boolean | boolean | true enables, false disables. Default true. |
{
"design_ids": [
"design ids"
],
"product": "product"
} {
"product": "Stickers",
"enabled": true,
"results": [
{
"design_id": "112233445",
"state": "Enabled"
},
{
"design_id": "112233446",
"state": "Enabled"
}
],
"skipped": []
} Applies the settings to every work in the list. Making a work public shows it to buyers and search. By default you confirm each call; you can switch that off for this tool.
MCP callredbubble_write → set_design_privacy
REST endpointPUT https://cotlet.dev/api/v1/redbubble/design-privacy
| Name | Type | Description |
|---|---|---|
| design_ids string[] required | string[] | Ids from list_designs. |
| privacy string | string | The privacy value as the More menu shows it, for example Public. |
| mature boolean | boolean | Whether the works are marked mature. |
{
"design_ids": [
"design ids"
]
} {
"updated": 2,
"privacy": "Public",
"mature": false
} Read only. The dashboard refreshes once a day, so today is not in it yet.
Returns the chart figures the dashboard shows for the period. Redbubble refreshes the dashboard data daily at 2:00 am UTC, so today is not included yet.
MCP callredbubble_read → get_analytics
REST endpointGET https://cotlet.dev/api/v1/redbubble/analytics
| Name | Type | Description |
|---|---|---|
| period string | string | One of 7d, 30d, 12m. Default 30d, the dashboard default. |
{
"period": "7d",
"views": 1840,
"sales": 6,
"refreshed_at": "2026-10-28T02:00:00Z"
} Returns one entry per pay period as Payment History lists them, newest first, with earnings, pending sales, cancelled sales, fees and the balance. Amounts stay in the currency you chose for payouts.
MCP callredbubble_read → get_payment_history
REST endpointGET https://cotlet.dev/api/v1/redbubble/payment-history
| Name | Type | Description |
|---|---|---|
| cursor string | string | next_cursor from the previous page. |
{
"periods": [
{
"period": "September 2026",
"earnings": 84.2,
"pending_sales": 12.5,
"cancelled_sales": 3.1,
"account_fees": 21.05,
"balance": 72.55
},
{
"period": "August 2026",
"earnings": 61,
"pending_sales": 0,
"cancelled_sales": 0,
"account_fees": 15.25,
"balance": 45.75
}
],
"currency": "USD",
"next_cursor": ""
} Returns the breakdown of fees for the pay period, including any extra fee for a product markup above 20%. Redbubble caps platform fees for Standard and Premium artists per payment period.
MCP callredbubble_read → get_earnings_details
REST endpointGET https://cotlet.dev/api/v1/redbubble/earnings-details
| Name | Type | Description |
|---|---|---|
| period string | string | Pay period as the page names it, for example September 2026. Default: the latest. |
{
"period": "September 2026",
"platform_fee": 21.05,
"markup_fee": 0,
"currency": "USD"
} Returns the tier of the account (Standard, Premium or Pro) and the fee Redbubble charges on monthly earnings for it. Pro artists pay no platform fee.
MCP callredbubble_read → get_account_tier
REST endpointGET https://cotlet.dev/api/v1/redbubble/account-tier
No parameters.
{
"tier": "Premium",
"platform_fee_percent": 20
} Your logged-in Redbubble profile, AES-256-GCM, in Finland. No password.
The 10 Redbubble tools. Never the cookie.
Your works, analytics, payment history and account tier.
Uploads, deleting works, markup, payout details, password.
You get an email with a link to log in again. We never log in for you.
Disable for agents, reset the browser or delete the API key.
cotlet.dev rates A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). We have no SOC 2 report or third-party pentest yet.
"User uploads content using any bot, scraper, or other automated means for any purpose without our written permission."
That line is why Cotlet has no upload tool. The same guidelines ban bots that "interfere with the functionality or integrity of the marketplace", and an account in breach can be "immediately and permanently disabled", along with any linked account. The User Agreement (15 May 2026) lets Redbubble close an account without notice. We found no public case of a ban for an agent or extension (checked 28 Oct 2026); one review on AlternativeTo reports a suspension right after saving tag edits, cause unknown.
Retag a few dozen works a day, not your whole portfolio in an hour. Bursts of saves are what a marketplace notices.
Redbubble redraws Manage Portfolio from time to time. When a field moves, the fix is ours and the same prompt keeps working. status.cotlet.dev watches the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Replace tags | Yes, send the old list again |
| Change title or description | Yes, the old text comes back in the answer |
| Turn a product on | Turn it off; orders placed meanwhile stay |
| Make a work public | Set it private again; search may have seen it |
| Upload or delete a work | No tool does either |
2 of 10 tools ask first: enable_products and set_design_privacy, the two that change what buyers can see or buy. Tag and text edits reach nobody and undo in one call, so they run at once. Switch the wait off per tool for a scheduled run.
New tags can take up to 15 minutes to show in Redbubble search.
{
"name": "update_tags",
"arguments": {
"design_id": "112233446",
"tags": [
"cat",
"night market",
"lanterns",
"illustration",
"cute",
"asia",
"street food",
"animal",
"art",
"lantern festival",
"night scene"
]
}
} curl -X PATCH https://cotlet.dev/api/v1/redbubble/designs/112233446/tags \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"tags":["cat","night market","lanterns","illustration","cute","asia","street food","animal","art","lantern festival","night scene"]}' {
"design_id": "112233446",
"tags": [
"cat",
"night market",
"lanterns",
"illustration",
"cute",
"asia",
"street food",
"animal",
"art",
"lantern festival",
"night scene"
],
"tag_count": 11,
"saved": true
} A cron job or script calls the same tools over REST at /api/v1/redbubble, with one key and one price. A tag list over 15 fails, and a failed call costs nothing. The tools table lists the REST path of each tool.
About $17 a monthfor an artist with about 100 works, 2,920 credits. Redbubble's own account fee stays as it is.
| Job | Calls | Credits |
|---|---|---|
| Retag 10 weak works, weekly | 22 × 4 | 880 |
| Rewrite 5 titles and descriptions, weekly | 10 × 4 | 400 |
| Views and sales, 7 and 30 days, weekly | 2 × 4 | 80 |
| Payment history, fees and tier, monthly | 3 × 1 | 30 |
| Turn on a new product for every work, once | 3 × 1 | 30 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 2,920 |
The month is our example: a 2026 income guide puts a quarter of active artists at 25 to 100 designs. Redbubble takes 50% of monthly earnings on Standard, 20% on Premium and nothing on Pro, capped at $150 a period. Dollars at the $29 pack rate.
| Credits | Price, one time | Calls at 10 credits | Per 1,000 credits |
|---|---|---|---|
| 5,000 | $29 | 500 | $5.80 |
| 15,000 | $79 | 1,500 | $5.27 |
| 32,000 | $149 | 3,200 | $4.66 |
| 60,000 | $249 | 6,000 | $4.15 |
Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.
| Option | What it does | Where it stops |
|---|---|---|
| Parker-Fawcett/redbubble-mcp | MCP server, MIT, from 21 Oct 2026: works, sales, earnings and uploads through a Playwright browser on your machine. | Your computer stays on; 0 stars, one day of commits. Its upload tool is what the guidelines ban. |
| jalbrekt85/Redbubble-Bot and similar | Scripts that upload a folder of images, 16 to 46 stars. | Last commits 2021 to 2025, uploads only, against the bot rule. |
| Octozia, MerchGhost, Auup | Chrome extensions: bulk upload with tags, tag import and export. | In your open browser; Octozia from $6.99 a month. No agent can call them. |
| Apify Redbubble actors | Scrape public products, best sellers and shops, also over Apify's MCP. | Public pages only, never your own dashboard or earnings. |
Use an extension if uploading is your bottleneck and you accept the risk. Use Apify for market research on other shops. Use Cotlet if you want an agent to keep the works you already have in shape and tell you what they earn, without running anything yourself.
Behind Cotlet is Take Group sp. z o.o., a software company registered in Poland, EU (VAT PL6342984273) and working since 2019. Its founders are Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Questions about the Redbubble tools go to contact@cotlet.dev.
Sign up free at https://cotlet.dev, open Redbubble under Integrations in the console and log in to your artist account in its Cloud Browser. The trial starts with the Cotlet account, no card asked.
Sign up at cotlet.dev, log in to Redbubble once in its Cloud Browser and add Cotlet to ChatGPT or Claude, following the steps in your console. No API key is needed. ChatGPT and Claude then work in your Redbubble account through Cotlet, in their phone apps too.
With Cotlet, ChatGPT, Claude and other AI agents handle jobs like these in Redbubble: bulk edit tags and titles; enable a product on every design; weekly sales and traffic report. You ask in plain words, and anything that reaches other people waits for your OK first.
No. Cotlet has no upload tool. Redbubble limits uploads to 30 works per day and lists uploading with a bot, scraper or other automated means without its written permission as a guideline violation. Upload new works yourself in Redbubble. Cotlet works on works already in your portfolio.
Redbubble's Community and Content Guidelines prohibit bots used in a way that interferes with the marketplace, and say a breach can lead to a warning, suspension or closure at its discretion. Cotlet acts in your own signed-in session, one change at a time, the way you would. Redbubble publishes no enforcement decisions on this, so keep changes modest.
No. Redbubble sends no events, only an order email to you. Run your agent on a schedule instead, for example get_analytics every Monday and get_payment_history after each pay period.
No. No tool touches markup, payout method, password or account deletion. Change those yourself in Redbubble.
Only the way in. Both carry the same 10 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Redbubble or Articore Group.
Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy