babbleBrush
babbleBrush is a voice-first image editor. Humans can use it directly to edit, view, manage images and agents can use it alongside their human or on behalf of the user to do the same programatically.
The units of work are canvases and versions, you create or use an existing canvas and edit the image inside of it as a canvas version, ie, the image edit. You can also upload images in the canvas to edit them, to use as a reference, or mixing them in the edit.
Website - https://babblebrush.com
API index - https://babblebrush.com/api
- - Users start with trial credits
- After trial credits are exhausted, platform access must be unlocked(one time payment) to manage API keys
- Check
platform_access_unlocked in GET /api/v1/me to see if unlocked
Important:
- - If you haven't added a key for a provider, edits with that provider will use credits
- Your API usage is billed directly by the provider (Google, xAI, etc.)
- Keys are encrypted and stored securely
Skill URL
| File | URL |
|---|
| INLINECODE2 | INLINECODE3 |
| INLINECODE4 |
https://babblebrush.com/babblebrush/openclaw/SKILL.md |
Core Concepts
Canvas
A Canvas is a workspace for image generation & editing.
A canvas contains multiple Canvas versions representing the edit history.
The latest completed canvas version is the current image of any given canvas.
Canvas version
A canvas version represents an image edit inside a canvas, it's the main unit of work.
It contains information all the information about the eidt, like the prompt, image references uploaded(the limit depends on the model), the source canvas version the edit branched from, the status, etc
Authentication
All requests require an API key sent in the Authorization header.
CODEBLOCK0
You can create API tokens from the settings page at https://babblebrush.com/app/settings.
Once you have the API key, store it locally and securely.
API Reference
- - https://babblebrush.com/api
Endpoint Details
Get current user
CODEBLOCK1
Response:
CODEBLOCK2
Info:
- -
platform_access_unlocked - Whether user has unlocked platform access (required for BYOK after trial)
List provider models
CODEBLOCK3
Response:
CODEBLOCK4
Info:
- max_imgs_per_prompt - Maximum images accepted in a single prompt
List provider credentials
See which providers have API keys configured.
CODEBLOCK5
Response:
CODEBLOCK6
Add/update provider API key
CODEBLOCK7
Valid providers: gemini, INLINECODE10
Response:
CODEBLOCK8
Remove provider API key
CODEBLOCK9
Response:
CODEBLOCK10
List canvases
CODEBLOCK11
Response:
CODEBLOCK12
Create canvas with image
CODEBLOCK13
Response:
CODEBLOCK14
Create blank canvas
CODEBLOCK15
Get canvas details
CODEBLOCK16
INLINECODE11 expects the canvas public_token.
Response includes full canvas details with all versions.
Update canvas
CODEBLOCK17
Delete canvas
CODEBLOCK18
Response:
CODEBLOCK19
List versions of a canvas
CODEBLOCK20
Response:
CODEBLOCK21
Create new edit in a canvas (enqueue)
This is the main editing endpoint. It creates a new version and starts AI processing.
CODEBLOCK22
Optional parameters:
- -
source_version_id - Edit from a specific version instead of the current version - INLINECODE14 - Override the model for this specific edit (e.g.,
gemini/gemini-3-pro-image-preview)
How image inputs are chosen for this edit:
- - The new pending edit version points to a
source_version. - INLINECODE17 is
source_version_id if provided, otherwise the canvas current version. - Image inputs for the provider come from that
source_version. - If you want extra context images for the next edit, upload them as reference images to that
source_version before enqueueing. - Max images are model-specific. Use
GET /api/v1/provider-models and read max_imgs_per_prompt (total images = source image + reference images).
Reference images workflow:
- 1. Upload reference image(s) to the version you want to use as source.
- Enqueue a new edit with that version as
source_version_id.
CODEBLOCK23
Example: add 3 reference images (extra context)
CODEBLOCK24
Note: this 3-reference example needs a model that supports at least 4 total images (1 source + 3 references).
Model Override Example:
CODEBLOCK25
Model Resolution Order:
- 1. Per-edit
model parameter (if provided) - Canvas
default_model (if set) - Default model for the provider
Response (202 Accepted):
CODEBLOCK26
Important: The edit is processed asynchronously. Poll the version endpoint or canvas to check when it completes.
Get canvas version details
CODEBLOCK27
Use this to poll for completion after creating an edit.
Promote canvas version (make current)
"Time travel" to a previous version by promoting it to current.
CODEBLOCK28
Response:
CODEBLOCK29
Cancel pending edit
Cancel an edit that is still pending or processing. Credits are refunded.
CODEBLOCK30
Response:
CODEBLOCK31
Important: Cancel is best-effort. If provider request already started, provider-side compute may continue.
Common Workflows
1. Create canvas, enqueue edit, poll to completion
CODEBLOCK32
2. Add reference images, then edit from that source version
CODEBLOCK33
3. Branch from an older version (with optional model override)
CODEBLOCK34
4. Promote or cancel an edit
CODEBLOCK35
5. Start multiple edits from the same source (different models)
CODEBLOCK36
Error Behavior
| Status | Meaning |
|---|
| 401 | Missing or invalid API key |
| 402 |
Insufficient credits |
| 403 | Forbidden |
| 404 | Resource not found |
| 422 | Invalid request (validation error) |
| 500 | Server error |
Error response format:
CODEBLOCK37
Rate Limits
Currently no rate limits are enforced, but please be respectful of the service.
Tips for Agents
- 1. Check access first - Before starting a workflow, verify the user has sufficient credits or
platform_access_unlocked with provider keys configured - Poll for completion - Edits are async; poll
GET /api/v1/canvases/:canvas_id/versions/:id until status is terminal (completed, failed, cancelled) - Use descriptive prompts - The AI responds better to detailed, clear prompts
- Branch experiments - Use
source_version_id to try different approaches without losing progress - Promote to revert - If an edit doesn't work out, promote an earlier version to go back
- 6. Inline Images in the chat - If the chat interface you're using allows(eg: Telegram), let's display the images inline instead of just posting the image link, unless the user asks for it.
babbleBrush
babbleBrush 是一款语音优先的图像编辑器。人类可以直接使用它来编辑、查看和管理图像,而智能体也可以与人类一起使用,或代表用户以编程方式执行相同操作。
工作单元是画布和版本,您可以创建或使用现有的画布,并将其中的图像作为画布版本进行编辑,即图像编辑。您还可以在画布中上传图像进行编辑、用作参考,或在编辑中混合使用。
网站 - https://babblebrush.com
API 索引 - https://babblebrush.com/api
- - 用户从试用积分开始
- 试用积分用完后,必须解锁平台访问权限(一次性付费)才能管理 API 密钥
- 在 GET /api/v1/me 中检查 platformaccessunlocked 以查看是否已解锁
重要提示:
- - 如果您尚未为某个提供商添加密钥,使用该提供商的编辑将消耗积分
- 您的 API 使用量由提供商(Google、xAI 等)直接计费
- 密钥经过加密并安全存储
技能 URL
| 文件 | URL |
|---|
| claude/SKILL.md | https://babblebrush.com/babblebrush/claude/SKILL.md |
| openclaw/SKILL.md |
https://babblebrush.com/babblebrush/openclaw/SKILL.md |
核心概念
画布
画布是用于图像生成和编辑的工作空间。
一个画布包含多个画布版本,代表编辑历史。
任何给定画布的最新完成版本即为该画布的当前图像。
画布版本
画布版本代表画布内的一次图像编辑,是主要的工作单元。
它包含有关编辑的所有信息,如提示词、上传的图像参考(数量取决于模型)、编辑所基于的源画布版本、状态等。
身份验证
所有请求都需要在 Authorization 标头中发送 API 密钥。
bash
Authorization: Bearer bb_...
您可以在 https://babblebrush.com/app/settings 的设置页面创建 API 令牌。
获取 API 密钥后,请将其安全地存储在本地。
API 参考
- - https://babblebrush.com/api
端点详情
获取当前用户
bash
curl -H Authorization: Bearer $BABBLEBRUSHAPIKEY \
https://babblebrush.com/api/v1/me
响应:
json
{
email: user@example.com,
credits: 5,
platformaccessunlocked: false,
platformaccessunlocked_at: null,
canvases_count: 1,
created_at: 2026-02-27T14:27:41.281Z
}
信息:
- - platformaccessunlocked - 用户是否已解锁平台访问权限(试用后使用自有密钥需要)
列出提供商模型
bash
curl -H Authorization: Bearer $BABBLEBRUSHAPIKEY \
https://babblebrush.com/api/v1/provider-models
响应:
json
{
providers: [
{
id: gemini,
label: Gemini,
models: [
{
id: gemini-2.5-flash-image,
name: Flash 2.5 - Nano Banana,
description: 快速图像生成,
maximgsper_prompt: 3
}
]
}
]
}
信息:
- maximgsper_prompt - 单个提示词中可接受的最大图像数量
列出提供商凭据
查看哪些提供商已配置 API 密钥。
bash
curl -H Authorization: Bearer $BABBLEBRUSHAPIKEY \
https://babblebrush.com/api/v1/provider-credentials
响应:
json
{
credentials: [
{
provider: gemini,
created_at: 2025-10-11T10:00:00.000Z,
updated_at: 2025-10-11T10:00:00.000Z
}
]
}
添加/更新提供商 API 密钥
bash
curl -X POST \
-H Authorization: Bearer $BABBLEBRUSHAPIKEY \
-H Content-Type: application/json \
-d {provider: gemini, api_key: AIza...} \
https://babblebrush.com/api/v1/provider-credentials
有效的提供商:gemini、xai
响应:
json
{
credential: {
provider: gemini,
created_at: 2025-10-11T10:00:00.000Z,
updated_at: 2025-10-11T10:00:00.000Z
},
message: gemini 的 API 密钥已保存
}
删除提供商 API 密钥
bash
curl -X DELETE \
-H Authorization: Bearer $BABBLEBRUSHAPIKEY \
https://babblebrush.com/api/v1/provider-credentials/gemini
响应:
json
{
message: gemini 的 API 密钥已删除
}
列出画布
bash
curl -H Authorization: Bearer $BABBLEBRUSHAPIKEY \
https://babblebrush.com/api/v1/canvases
响应:
json
{
canvases: [
{
public_token: 01234567-89ab-cdef-0123-456789abcdef,
title: 我的 Logo 设计,
default_model: gemini/gemini-2.5-flash-image,
currentversionid: 105,
latestversionnumber: 5,
currentversionimageurl: https://babblebrush.com/rails/activestorage/...,
islatestversion_pending: false,
created_at: 2025-10-11T10:00:00.000Z,
updated_at: 2025-10-11T12:30:00.000Z
}
]
}
创建带图像的画布
bash
通过文件上传
curl -X POST \
-H Authorization: Bearer $BABBLEBRUSH
APIKEY \
-F title=我的新画布 \
-F image=@/path/to/image.png \
https://babblebrush.com/api/v1/canvases
通过 base64 图像
curl -X POST \
-H Authorization: Bearer $BABBLEBRUSH
APIKEY \
-H Content-Type: application/json \
-d {
title: 我的新画布,
default_model: gemini/gemini-2.5-flash-image,
image: data:image/png;base64,iVBORw0KGgo...
} \
https://babblebrush.com/api/v1/canvases
响应:
json
{
public_token: 01234567-89ab-cdef-0123-456789abcdef,
title: 我的新画布,
default_model: gemini/gemini-2.5-flash-image,
currentversionid: 201,
latestversionnumber: 1,
currentversionimageurl: https://babblebrush.com/rails/activestorage/...,
islatestversion_pending: false,
created_at: 2025-10-11T10:00:00.000Z,
updated_at: 2025-10-11T10:00:00.000Z,
versions: [
{
id: 201,
canvas_id: 42,
version_number: 1,
status: completed,
prompt: null,
model_identifier: gemini/gemini-2.5-flash-image,
fail_reason: null,
sourceversionid: null,
job_identifier: null,
metadata: {},
imageurl: https://babblebrush.com/rails/activestorage/...,
created_at: 2025-10-11T10:00:00.000Z,
updated_at: 2025-10-11T10:00:00.000Z
}
]
}
创建空白画布
bash
curl -X POST \
-H Authorization: Bearer $BABBLEBRUSHAPIKEY \
-H Content-Type: application/json \
-d {title: 空白画布} \
https://babblebrush.com/api/v1/canvases/blank
获取画布详情