Use the Bubble CLI from KosmoKrator to call Bubble tools headlessly, return JSON, inspect schemas, and automate workflows from coding agents, scripts, and CI.
Bubble can be configured headlessly with `kosmokrator integrations:configure bubble`.
# Install KosmoKrator first if it is not available on PATH.curl -fsSL https://raw.githubusercontent.com/OpenCompanyApp/kosmokrator/main/install.sh | bash# Configure and verify this integration.kosmokrator integrations:configure bubble --set api_key="$BUBBLE_API_KEY" --set hostname="$BUBBLE_HOSTNAME" --enable --read allow --write ask --jsonkosmokrator integrations:doctor bubble --jsonkosmokrator integrations:status --json
Credentials
Authentication type: API keyapi_key. Configure credentials once, then use the same stored profile from
scripts, coding CLIs, Lua code mode, and the MCP gateway.
Key
Env var
Type
Required
Label
api_key
BUBBLE_API_KEY
Secret secret
yes
API Key
hostname
BUBBLE_HOSTNAME
URL url
yes
App URL
Call Bubble Headlessly
Use the generic call form when another coding CLI or script needs a stable universal interface.
Every function below can be called headlessly. The generic form is stable across all integrations;
the provider shortcut is shorter but specific to Bubble.
bubble.bubble_list_records
Read read
List records from a Bubble data type. Supports filtering with constraints, pagination with limit and cursor. Returns matching records and a remaining count for further pagination.
Update an existing record in Bubble by its data type and unique ID. Only the fields provided will be changed; other fields remain unchanged. Returns the updated record.
Use these parameter tables when building CLI payloads without calling integrations:schema first.
bubble.bubble_list_records
List records from a Bubble data type. Supports filtering with constraints, pagination with limit and cursor. Returns matching records and a remaining count for further pagination.
The Bubble data type name (case-sensitive, e.g. "User", "Product", "Order").
constraints
string
no
JSON-encoded array of Bubble constraint objects for filtering. Each constraint is {"key": "field_name", "constraint_type": "equals", "value": "some_value"}. Pass as a JSON string.
limit
integer
no
Maximum number of records to return (1–100, default: 100).
cursor
integer
no
Offset for pagination (0-based). Use the "remaining" count from the previous response to determine if more pages exist.
bubble.bubble_get_record
Get a single record from Bubble by its data type and unique ID. Returns all fields of the record.
The Bubble data type name (case-sensitive, e.g. "User", "Product", "Order").
fields
string
yes
JSON object of field names and values for the new record. Example: {"name": "John", "email": "[email protected]", "age": 30}. Pass as a JSON string.
bubble.bubble_update_record
Update an existing record in Bubble by its data type and unique ID. Only the fields provided will be changed; other fields remain unchanged. Returns the updated record.
The Bubble data type name (case-sensitive, e.g. "User", "Product", "Order").
id
string
yes
The unique identifier of the record to update (Bubble-generated UUID).
fields
string
yes
JSON object of field names and values to update. Only the provided fields will be changed. Example: {"name": "Jane", "status": "active"}. Pass as a JSON string.
bubble.bubble_delete_record
Delete a record from Bubble by its data type and unique ID. This action is permanent and cannot be undone.
The Bubble data type name (case-sensitive, e.g. "User", "Product", "Order").
id
string
yes
The unique identifier of the record to delete (Bubble-generated UUID).
Permissions
Headless calls still follow the integration read/write permission policy. Configure read/write defaults
with integrations:configure. Add --force only for trusted automation that should bypass that policy.