Skip to content

Bubble

Bubble

Bubble is a visual programming language and a Platform as a Service (PaaS) developed by Bubble Group. It enables the creation of complete web applications without writing code, with an integrated database, business logic, and visual interface. With the Bubble integration in SquadOS, your agents can directly interact with the data and workflows of any Bubble application via API.

This tool uses an API key (API_KEY) to connect.

You will need the following fields:

FieldRequiredDescription
fullYesThe root URL of your Bubble Data API. If using Bubble’s default domain: https://your-app-name.bubbleapps.io. If using a custom domain: https://yourdomain.com.
bearer_tokenYesAPI token generated in your Bubble app settings, used to authenticate requests to the Data API.
  1. Open your Bubble app editor at bubble.io and select the desired app.

  2. Click Settings in the left sidebar menu.

  3. Navigate to the API tab.

  4. Check the Enable Data API option to activate the Data API for your app.

  5. In the list of data types shown below, select which data types should be exposed via the API (only select what you need).

  6. Scroll to the API tokens section and click Generate a new API token to create a new token.

  7. Copy the generated token — this is the value you will use in the bearer_token field when connecting in SquadOS.

  8. For the full field (Base URL), use the format https://your-app-name.bubbleapps.io (replacing your-app-name with your app’s subdomain) or the custom domain configured for your app.

  1. Go to Tools in the side menu (/admin/tools).
  2. Open the Available tab and search for Bubble.
  3. Click the card to open the details and hit Connect.
  4. You’re taken to the secure connection page hosted by Composio, where you enter the base URL and API token obtained above.
  5. Once you confirm, you’re sent back to SquadOS with the account already connected and the tool available to agents. (Connection-flow details in Organization Tools.)

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.

NameTypeRequiredDescription
itemsarrayYesList of objects to create. Must contain between 1 and 1000 items.
typenamestringYesBubble data type API name (lowercase, no spaces).
subdomainstringNoBubble app subdomain to target *.bubbleapps.io (e.g., ‘my-bubble-app’).
custom_domainstringNoCustom domain host (e.g., ‘myapp.example.com’).
full_url_overridestringNoFull URL override for the bulk endpoint. If provided, the request will be sent to this URL as-is, ignoring ‘typename’, ‘custom_domain’, and ‘subdomain’.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

BUBBLE_DATA_CREATE_THING

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

NameTypeRequiredDescription
fieldsobjectYesJSON object mapping field names to values for the new Thing. Required fields must be provided (e.g., ‘email’ for the User type).
typenamestringYesName of the data type (Thing) to create (case-sensitive).
subdomainstringNoBubble app subdomain to target *.bubbleapps.io (e.g., ‘my-bubble-app’).
custom_domainstringNoCustom domain host (e.g., ‘myapp.example.com’).
full_url_overridestringNoFull URL override for the create endpoint. If provided, the request will be sent to this URL as-is, ignoring ‘typename’, ‘custom_domain’, and ‘subdomain’.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

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.

NameTypeRequiredDescription
uidstringYesUnique identifier of the record to delete.
typenamestringYesBubble data type name (must be lowercase, no spaces).
subdomainstringNoBubble app subdomain to target *.bubbleapps.io (e.g., ‘my-bubble-app’).
custom_domainstringNoCustom domain host (e.g., ‘myapp.example.com’).
full_url_overridestringNoFull URL override for the delete endpoint. If provided, the request will be sent to this URL as-is, ignoring ‘typename’, ‘custom_domain’, and ‘subdomain’.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

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. Requires the Data API to be enabled in your Bubble app settings and the specific Data Type to be exposed via the API.

NameTypeRequiredDescription
uidstringYesThe 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’.
typenamestringYesThe 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.
subdomainstringNoBubble app subdomain to target *.bubbleapps.io (e.g., ‘my-bubble-app’).
custom_domainstringNoCustom domain host (e.g., ‘myapp.example.com’).
full_url_overridestringNoFull URL override for the GET endpoint. If provided, the request will be sent to this URL as-is, ignoring ‘typename’, ‘custom_domain’, and ‘subdomain’.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

BUBBLE_DATA_PATCH_THING_BY_ID

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

NameTypeRequiredDescription
uidstringYesUnique ID of the record to modify.
typenamestringYesData type name in URL format (lowercase, no spaces).
subdomainstringNoBubble app subdomain to target *.bubbleapps.io (e.g., ‘my-bubble-app’).
custom_domainstringNoCustom domain host (e.g., ‘myapp.example.com’).
field_updatesobjectYesJSON object of fields to update. Each key is an existing field name; each value must match the field’s type.
full_url_overridestringNoFull URL override for the patch endpoint. If provided, the request will be sent to this URL as-is, ignoring ‘typename’, ‘custom_domain’, and ‘subdomain’.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

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.

NameTypeRequiredDescription
uidstringYesUnique ID of the Thing to overwrite.
dataobjectYesMapping of each editable field name to its new value. Omitted editable fields will be reset to their default values.
typenamestringYesBubble data type name to target for replacement.
subdomainstringNoBubble app subdomain to target *.bubbleapps.io (e.g., ‘my-bubble-app’).
custom_domainstringNoCustom domain host (e.g., ‘myapp.example.com’).
full_url_overridestringNoFull URL override for the PUT endpoint. If provided, the request will be sent to this URL as-is, ignoring ‘typename’, ‘custom_domain’, and ‘subdomain’.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

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.

NameTypeRequiredDescription
urlstringYesHTTP or HTTPS URL of the file to download.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

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.

NameTypeRequiredDescription
namestringYesName to assign to the temporary file (including extension).
contentstringYesBase64-encoded file contents or plain text data.
mimetypestringYesMIME type of the file.
subdomainstringNoBubble app subdomain to target *.bubbleapps.io (e.g., ‘my-bubble-app’).
custom_domainstringNoCustom domain host (e.g., ‘myapp.example.com’).
full_url_overridestringNoFull URL override for the temp upload endpoint. If provided, the request will be sent to this URL as-is.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

BUBBLE_FILE_UPLOAD

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

NameTypeRequiredDescription
fileobjectYesFile to upload.
subdomainstringNoBubble subdomain (e.g., ‘my-app’) to target https://<subdomain>.bubbleapps.io/fileupload.
custom_domainstringNoCustom domain host (e.g., ‘app.example.com’) to target https://<host>/fileupload.
additional_fieldsobjectNoOptional additional multipart form fields to include in the upload request.
full_url_overridestringNoFull URL override for the upload endpoint (e.g., https://httpbin.org/post).
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

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.

NameTypeRequiredDescription
subdomainstringNoBubble app subdomain (e.g., ‘my-bubble-app’) to target *.bubbleapps.io.
swagger_urlstringNoFull URL to the Swagger 2.0 JSON to fetch. Takes precedence if provided.
custom_domainstringNoCustom domain host to target (e.g., ‘myapp.example.com’).
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

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.

NameTypeRequiredDescription
codestringNoAuthorization code returned from /oauth/authorize; required for initial exchange.
client_idstringYesOAuth client identifier.
subdomainstringNoBubble app subdomain (e.g., ‘my-bubble-app’).
grant_typestringNoMust 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_uristringYesRedirect URI used during the authorization request.
client_secretstringYesOAuth client secret.
custom_domainstringNoCustom domain host (e.g., ‘myapp.example.com’).
refresh_tokenstringNoPreviously issued refresh token; required when grant_type=refresh_code.
use_version_testbooleanNoWhether to target the /version-test environment when building the URL.
token_url_overridestringNoFull URL to the token endpoint. If provided, takes precedence over domain/subdomain/metadata-derived URL.
additional_body_fieldsobjectNoAdditional fields to include in the POST JSON body.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

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.

NameTypeRequiredDescription
scopestringNoSpace-delimited list of scopes being requested.
statestringNoOpaque value to maintain state between the request and callback (CSRF token, etc).
client_idstringYesOAuth client identifier issued by Bubble when you register your application.
subdomainstringNoBubble app subdomain (e.g., ‘my-bubble-app’) to target *.bubbleapps.io.
extra_paramsobjectNoAdditional query parameters to include in the authorize request.
redirect_uristringYesCallback URL where Bubble will send the authorization code.
custom_domainstringNoCustom domain host to target (e.g., ‘myapp.example.com’).
response_typestringNoOAuth response type. For authorization code flow this should be code.
use_version_testbooleanNoIf true, use /version-test in the root path for Bubble apps.
authorize_url_overridestringNoFull URL to the authorization endpoint. If provided, takes precedence over subdomain/custom_domain/metadata-derived URL.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

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.

NameTypeRequiredDescription
client_idstringYesOAuth client identifier as configured in Bubble editor.
subdomainstringNoBubble app subdomain (e.g., ‘my-bubble-app’).
extra_paramsobjectNoAdditional query parameters to append to the authorize request.
redirect_uristringYesRedirect URI configured in the Bubble OAuth app.
client_secretstringNoOAuth client secret as configured in Bubble editor.
custom_domainstringNoCustom domain host (e.g., ‘myapp.example.com’).
use_version_testbooleanNoWhether to target the /version-test environment.
authorize_url_overridestringNoFull URL to call instead of constructing from domain/subdomain. Useful for testing.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

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.

NameTypeRequiredDescription
branchstringNoBubble deployment branch to target. Use live for production workflows or version-test for development/testing workflows.
parametersobjectNoQuery 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.
workflow_namestringYesName 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.
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.

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.

NameTypeRequiredDescription
branchstringNoDeployment branch to target. Use live for production environment or version-test for development/testing environment.
parametersobjectNoJSON 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_namestringYesURL-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).
NameTypeRequiredDescription
datastringYesData from the action execution.
errorstringNoError message if execution failed.
successfulbooleanYesWhether the action executed successfully.