# Bubble

Bubble is a visual programming language and a PaaS developed by Bubble Group.

- **Category:** app builder
- **Auth:** API_KEY
- **Composio Managed App Available?** N/A
- **Tools:** 15
- **Triggers:** 0
- **Slug:** `BUBBLE`
- **Version:** 20260307_00

## Tools

### Bulk Create Things

**Slug:** `BUBBLE_DATA_BULK_CREATE_THINGS`

Tool to bulk create multiple Things in Bubble via newline-separated JSON. Use when you need to insert many records at once. Must have Create via API permission.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `items` | array | Yes | List of objects to create. Must contain between 1 and 1000 items. |
| `typename` | string | Yes | Bubble data type API name (lowercase, no spaces). |
| `subdomain` | string | No | Bubble app subdomain to target *.bubbleapps.io (e.g., 'my-bubble-app'). |
| `custom_domain` | string | No | Custom domain host (e.g., 'myapp.example.com'). |
| `full_url_override` | string | No | Full URL override for the bulk endpoint. If provided, the request will be sent to this URL as-is, ignoring 'typename', 'custom_domain', and 'subdomain'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Thing

**Slug:** `BUBBLE_DATA_CREATE_THING`

Tool to create a new Thing. Use when providing a complete JSON payload to add a new record.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `fields` | object | Yes | JSON object mapping field names to values for the new Thing. Required fields must be provided (e.g., 'email' for the User type). |
| `typename` | string | Yes | Name of the data type (Thing) to create (case-sensitive). |
| `subdomain` | string | No | Bubble app subdomain to target *.bubbleapps.io (e.g., 'my-bubble-app'). |
| `custom_domain` | string | No | Custom domain host (e.g., 'myapp.example.com'). |
| `full_url_override` | string | No | Full URL override for the create endpoint. If provided, the request will be sent to this URL as-is, ignoring 'typename', 'custom_domain', and 'subdomain'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Thing By ID

**Slug:** `BUBBLE_DATA_DELETE_THING_BY_ID`

Tool to delete a Bubble Thing by its unique ID. Use when you need to remove a specific record via the Bubble Data API.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `uid` | string | Yes | Unique identifier of the record to delete |
| `typename` | string | Yes | Bubble data type name (must be lowercase, no spaces) |
| `subdomain` | string | No | Bubble app subdomain to target *.bubbleapps.io (e.g., 'my-bubble-app'). |
| `custom_domain` | string | No | Custom domain host (e.g., 'myapp.example.com'). |
| `full_url_override` | string | No | Full URL override for the delete endpoint. If provided, the request will be sent to this URL as-is, ignoring 'typename', 'custom_domain', and 'subdomain'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Thing By ID

**Slug:** `BUBBLE_DATA_GET_THING_BY_ID`

Retrieves a single Thing (record) from a Bubble Data Type by its unique ID. This is a read-only operation that fetches complete details of a specific record. The response includes all custom fields defined in the Data Type, plus standard Bubble fields (_id, created_by, created_date, modified_date). Use when you need to: - Fetch details of a specific record you know the ID of - Verify a record exists - Get the latest field values for a Thing Note: Requires the Data API to be enabled in your Bubble app settings and the specific Data Type to be exposed via the API.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `uid` | string | Yes | The unique identifier of the Thing to retrieve. This is the value returned in the '_id' or 'id' field when the Thing was created. Bubble typically uses format like '1234567890123x123456789012345678'. |
| `typename` | string | Yes | The Bubble Data Type name (case-sensitive). This is the custom data type defined in your Bubble app (e.g., 'user', 'order', 'product'). Check your Bubble app's Data tab for available types. |
| `subdomain` | string | No | Bubble app subdomain to target *.bubbleapps.io (e.g., 'my-bubble-app'). |
| `custom_domain` | string | No | Custom domain host (e.g., 'myapp.example.com'). |
| `full_url_override` | string | No | Full URL override for the GET endpoint. If provided, the request will be sent to this URL as-is, ignoring 'typename', 'custom_domain', and 'subdomain'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Patch Thing By ID

**Slug:** `BUBBLE_DATA_PATCH_THING_BY_ID`

Tool to modify selected fields on a Thing by its unique ID. Use after confirming the Thing exists.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `uid` | string | Yes | Unique ID of the record to modify. |
| `typename` | string | Yes | Data type name in URL format (lowercase, no spaces). |
| `subdomain` | string | No | Bubble app subdomain to target *.bubbleapps.io (e.g., 'my-bubble-app'). |
| `custom_domain` | string | No | Custom domain host (e.g., 'myapp.example.com'). |
| `field_updates` | object | Yes | JSON object of fields to update. Each key is an existing field name; each value must match the field’s type. |
| `full_url_override` | string | No | Full URL override for the patch endpoint. If provided, the request will be sent to this URL as-is, ignoring 'typename', 'custom_domain', and 'subdomain'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Replace Thing by ID

**Slug:** `BUBBLE_DATA_PUT_REPLACE_THING_BY_ID`

Tool to replace all editable fields on a Thing by its Unique ID. Use when you need a full overwrite of a Thing's fields and reset omitted fields to default.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `uid` | string | Yes | Unique ID of the Thing to overwrite. |
| `data` | object | Yes | Mapping of each editable field name to its new value. Omitted editable fields will be reset to their default values. |
| `typename` | string | Yes | Bubble data type name to target for replacement. |
| `subdomain` | string | No | Bubble app subdomain to target *.bubbleapps.io (e.g., 'my-bubble-app'). |
| `custom_domain` | string | No | Custom domain host (e.g., 'myapp.example.com'). |
| `full_url_override` | string | No | Full URL override for the PUT endpoint. If provided, the request will be sent to this URL as-is, ignoring 'typename', 'custom_domain', and 'subdomain'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Download File

**Slug:** `BUBBLE_FILE_DOWNLOAD`

Tool to download a file given its URL. Use when you need to retrieve file content and obtain an s3key for subsequent upload tests.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `url` | string | Yes | HTTP or HTTPS URL of the file to download. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Create Temp File

**Slug:** `BUBBLE_FILE_TEMP_CREATE`

Tool to upload bytes as a temporary file to Cloudflare R2 and return an S3 key. Use when you need a short-lived file reference before persisting it in a Thing.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | Name to assign to the temporary file (including extension) |
| `content` | string | Yes | Base64-encoded file contents or plain text data |
| `mimetype` | string | Yes | MIME type of the file |
| `subdomain` | string | No | Bubble app subdomain to target *.bubbleapps.io (e.g., 'my-bubble-app'). |
| `custom_domain` | string | No | Custom domain host (e.g., 'myapp.example.com'). |
| `full_url_override` | string | No | Full URL override for the temp upload endpoint. If provided, the request will be sent to this URL as-is. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upload File

**Slug:** `BUBBLE_FILE_UPLOAD`

Tool to upload a file to Bubble storage. Use when you need to store arbitrary files via Bubble's /fileupload endpoint.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `file` | object | Yes | File to upload. |
| `subdomain` | string | No | Bubble subdomain (e.g., 'my-app') to target https://<subdomain>.bubbleapps.io/fileupload |
| `custom_domain` | string | No | Custom domain host (e.g., 'app.example.com') to target https://<host>/fileupload |
| `additional_fields` | object | No | Optional additional multipart form fields to include in the upload request. |
| `full_url_override` | string | No | Full URL override for the upload endpoint (e.g., https://httpbin.org/post) |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Bubble API Swagger JSON

**Slug:** `BUBBLE_META_GET_SWAGGER_JSON`

Tool to retrieve the auto-generated Swagger JSON for enabled APIs. Use after enabling the Swagger file in your Bubble app's API settings.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `subdomain` | string | No | Bubble app subdomain (e.g., 'my-bubble-app') to target *.bubbleapps.io. |
| `swagger_url` | string | No | Full URL to the Swagger 2.0 JSON to fetch. Takes precedence if provided. |
| `custom_domain` | string | No | Custom domain host to target (e.g., 'myapp.example.com'). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get OAuth Access Token

**Slug:** `BUBBLE_O_AUTH_ACCESS_TOKEN`

Tool to exchange an authorization code or refresh token for an OAuth2 access token. Use after obtaining an authorization code or when refreshing an expired token.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `code` | string | No | Authorization code returned from /oauth/authorize; required for initial exchange. |
| `client_id` | string | Yes | OAuth client identifier. |
| `subdomain` | string | No | Bubble app subdomain (e.g., 'my-bubble-app'). |
| `grant_type` | string | No | Must be 'refresh_code' when exchanging a refresh token for a new access token. Note: Bubble uses 'refresh_code' instead of the standard OAuth 2.0 'refresh_token' value. |
| `redirect_uri` | string | Yes | Redirect URI used during the authorization request. |
| `client_secret` | string | Yes | OAuth client secret. |
| `custom_domain` | string | No | Custom domain host (e.g., 'myapp.example.com'). |
| `refresh_token` | string | No | Previously issued refresh token; required when grant_type='refresh_code'. |
| `use_version_test` | boolean | No | Whether to target the '/version-test' environment when building the URL. |
| `token_url_override` | string | No | Full URL to the token endpoint. If provided, takes precedence over domain/subdomain/metadata-derived URL. |
| `additional_body_fields` | object | No | Additional fields to include in the POST JSON body. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### OAuth Authorize

**Slug:** `BUBBLE_OAUTH_AUTHORIZE`

Tool to initiate OAuth2 authorization flow for Bubble. Use when setting up third-party login integration. Returns the URL for user-agent redirection to obtain an authorization code.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `scope` | string | No | Space-delimited list of scopes being requested. |
| `state` | string | No | Opaque value to maintain state between the request and callback (CSRF token, etc). |
| `client_id` | string | Yes | OAuth client identifier issued by Bubble when you register your application. |
| `subdomain` | string | No | Bubble app subdomain (e.g., 'my-bubble-app') to target *.bubbleapps.io. |
| `extra_params` | object | No | Additional query parameters to include in the authorize request. |
| `redirect_uri` | string | Yes | Callback URL where Bubble will send the authorization code. |
| `custom_domain` | string | No | Custom domain host to target (e.g., 'myapp.example.com'). |
| `response_type` | string | No | OAuth response type. For authorization code flow this should be 'code'. |
| `use_version_test` | boolean | No | If True, use '/version-test' in the root path for Bubble apps. |
| `authorize_url_override` | string | No | Full URL to the authorization endpoint. If provided, takes precedence over subdomain/custom_domain/metadata-derived URL. Useful for testing against non-Bubble endpoints (e.g., httpbin) or when metadata contains placeholders. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Bubble OAuth Register App

**Slug:** `BUBBLE_O_AUTH_REGISTER_APP`

Tool to validate/initialize OAuth application credentials with Bubble. It performs a real call to Bubble's /oauth/authorize endpoint (or provided override) using client_id and redirect_uri to confirm connectivity and returns supplied credentials.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `client_id` | string | Yes | OAuth client identifier as configured in Bubble editor. |
| `subdomain` | string | No | Bubble app subdomain (e.g., 'my-bubble-app'). |
| `extra_params` | object | No | Additional query parameters to append to the authorize request. |
| `redirect_uri` | string | Yes | Redirect URI configured in the Bubble OAuth app. |
| `client_secret` | string | No | OAuth client secret as configured in Bubble editor. |
| `custom_domain` | string | No | Custom domain host (e.g., 'myapp.example.com'). |
| `use_version_test` | boolean | No | Whether to target the '/version-test' environment. |
| `authorize_url_override` | string | No | Full URL to call instead of constructing from domain/subdomain. Useful for testing. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Trigger Bubble Workflow via GET

**Slug:** `BUBBLE_WORKFLOW_TRIGGER_GET`

Trigger a Bubble API workflow using an HTTP GET request. API workflows are server-side workflows in Bubble that can be triggered externally. Use GET for simple workflows that don't require a request body (parameters passed as query strings). For workflows requiring complex data or file uploads, use the POST version instead. Before using: The workflow must be created in Bubble's workflow editor and marked as "Expose as a public API workflow". The Bubble app must have API access enabled in its subscription.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `branch` | string ("live" | "version-test") | No | Bubble deployment branch to target. Use 'live' for production workflows or 'version-test' for development/testing workflows. |
| `parameters` | object | No | Query string parameters to pass to the workflow, matching the workflow's defined inputs. Each key should match a parameter name configured in your Bubble workflow. Values can be strings, numbers, booleans, or simple objects. Example: {'user_id': '123', 'send_email': true, 'priority': 1} |
| `workflow_name` | string | Yes | Name of the API workflow to trigger (as defined in Bubble's workflow editor). This is the exact name you gave the workflow, which becomes part of the endpoint URL. Example: if your workflow is named 'send_email', use 'send_email'. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Trigger Bubble Workflow via POST

**Slug:** `BUBBLE_WORKFLOW_TRIGGER_POST`

Triggers a Bubble API workflow by name using a POST request. Use this tool to execute backend workflows in your Bubble application. The workflow must be configured in your Bubble app's API Workflows section with "Expose as public API workflow" enabled. Pass any required parameters as a JSON object in the parameters field.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `branch` | string ("live" | "version-test") | No | Deployment branch to target. Use 'live' for production environment or 'version-test' for development/testing environment. |
| `parameters` | object | No | JSON body parameters to pass to the workflow, matching the workflow's configured input parameters. Use ISO 8601 format for dates (e.g., '2024-01-15T10:30:00Z'), and unique IDs (strings) for Bubble data type references. |
| `workflow_name` | string | Yes | URL-friendly name of the Bubble API workflow to trigger. This is the name you configured in your Bubble app's API Workflows section, converted to lowercase with hyphens instead of spaces (e.g., 'send-email', 'process-payment'). |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
