Skip to main content
RapidDev - Software Development Agency
bubble-integrationsBubble API Connector

DeepAI

Connect Bubble to DeepAI using the API Connector with a single custom header: api-key (lowercase, hyphenated) — NOT Authorization: Bearer. DeepAI is the simplest AI integration available in Bubble: no OAuth, no token refresh, no proxy needed. Add the header as Private, configure POST calls for image generation, text summarization, or sentiment analysis, and bind Bubble inputs to the request body. Free tier supports up to 5,000 requests per month.

What you'll learn

  • Why DeepAI uses api-key instead of Authorization: Bearer and how to add it as a custom header in Bubble
  • How to configure the API Connector with the correct base URL and Private header
  • How to add a text-to-image generation call and display the generated image in a Bubble Image element
  • How to add a text summarization call for long-form content
  • How to add a sentiment analysis call for customer feedback processing
  • What DeepAI's free tier limits are and when to upgrade
  • How to handle temporary image URLs that expire after generation
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Beginner14 min read15–25 minutesAI & MLLast updated July 2026RapidDev Engineering Team
TL;DR

Connect Bubble to DeepAI using the API Connector with a single custom header: api-key (lowercase, hyphenated) — NOT Authorization: Bearer. DeepAI is the simplest AI integration available in Bubble: no OAuth, no token refresh, no proxy needed. Add the header as Private, configure POST calls for image generation, text summarization, or sentiment analysis, and bind Bubble inputs to the request body. Free tier supports up to 5,000 requests per month.

Quick facts about this guide
FactValue
ToolDeepAI
CategoryAI & ML
MethodBubble API Connector
DifficultyBeginner
Time required15–25 minutes
Last updatedJuly 2026

DeepAI: the easiest AI integration in Bubble

Most AI API integrations require multiple steps: OAuth flows, token exchanges, refresh logic, or proxy functions. DeepAI needs none of that. You add one custom header (api-key), point the API Connector at https://api.deepai.org/api, and start calling endpoints. The critical detail that catches most developers: the header name is api-key — not Authorization, not x-api-key, not Authorization: Bearer. If you try to use Bubble's Authentication field instead of a manual header, the call will fail. Add it as a custom shared header marked Private, and Bubble's server-side API Connector ensures the key never reaches the browser. DeepAI's free tier (verify current limits at deepai.org/dashboard) is enough to prototype and test; for production apps with active users, verify paid plan options.

Integration method

Bubble API Connector

Call DeepAI's text-to-image, summarization, and sentiment endpoints using a single custom 'api-key' header marked Private in Bubble's API Connector — no OAuth required.

Prerequisites

  • A DeepAI account — sign up free at deepai.org
  • Your DeepAI API key from deepai.org/dashboard (visible immediately after signup)
  • A Bubble app on any plan, including Free
  • Bubble's API Connector plugin installed (Plugins tab → Add plugins → search 'API Connector')

Step-by-step guide

1

Get your DeepAI API key

Go to deepai.org and click Sign Up in the top right corner. You can sign up with email or a Google account. After signing in, go to deepai.org/dashboard — your API key is displayed immediately on the dashboard page under 'API Key'. Click the copy icon to copy it to your clipboard. DeepAI's free tier allows a certain number of requests per month (verify the current limit at deepai.org/dashboard — it was 5,000 at last check but may have changed). For production apps that will be used by many users simultaneously, review the paid plan options at deepai.org/pricing. Keep the dashboard tab open so you can paste the key into Bubble in the next step.

Pro tip: Your DeepAI API key is visible on the dashboard and doesn't expire unless you manually regenerate it. Unlike IBM Watson or Azure ML, there's no token exchange required — this single key is used directly in all API calls.

Expected result: You have your DeepAI API key copied and ready to paste into Bubble's API Connector.

2

Install the API Connector and create the DeepAI API group

In your Bubble editor, click the Plugins tab in the left sidebar. Click 'Add plugins', search for 'API Connector', and install the plugin by Bubble (it's free). Once installed, click 'Add another API' in the API Connector section. Name the API group 'DeepAI'. This is important: set the Authentication to 'None or self-handled' — NOT 'API Key' or 'Bearer Token'. Using Bubble's built-in auth types would set the header name to 'Authorization', which DeepAI does not use. Under Shared headers, click 'Add a shared header'. Set the key (header name) to api-key exactly — lowercase, with a hyphen, no spaces. For the value, click the blue token icon to add a parameter. Name the parameter deepai_key, check the 'Private' checkbox (critical — this keeps the key on Bubble's servers), and set the default value to your DeepAI API key. Set the Base URL to https://api.deepai.org/api. This is the common base for all DeepAI endpoints.

api-connector-config.json
1{
2 "api_name": "DeepAI",
3 "base_url": "https://api.deepai.org/api",
4 "authentication": "None or self-handled",
5 "shared_headers": {
6 "api-key": "<deepai_key: PRIVATE>"
7 }
8}

Pro tip: The header name must be api-key — not Authorization, not x-api-key, not Api-Key with capital letters. DeepAI's API is case-sensitive on the header name. If you accidentally use Authorization, the call will return 401 even with a valid key.

Expected result: The DeepAI API group is created with the api-key header marked Private. The base URL is set to https://api.deepai.org/api.

3

Add the text-to-image call and initialize it

Within the DeepAI API group, click 'Add a new call'. Name it 'generateImage'. Set the method to POST and the path to /text2img (which combines with the base URL to form https://api.deepai.org/api/text2img). Set the body type to JSON/Body. Add one body parameter: text — this will hold the user's image prompt. Give it a test default value for initialization: something like 'a golden retriever playing in a field'. Now click 'Initialize call'. Bubble will POST to DeepAI's text-to-image endpoint. If your API key is valid and the request succeeds, the response will look like: { "id": "some-id", "output_url": "https://api.deepai.org/job-view-file/..." } Bubble will parse this response and make the output_url field available in your workflows. This is the URL of the generated image — you'll use it as the dynamic source for a Bubble Image element. Important: DeepAI's image URLs are temporary. They expire after a period of time. If your users need to save or reference generated images later, you must download and store them in Bubble's file storage (or AWS S3/Cloudflare R2) immediately after generation — don't rely on the output_url being available indefinitely.

text-to-image-call.json
1{
2 "method": "POST",
3 "url": "https://api.deepai.org/api/text2img",
4 "headers": {
5 "api-key": "<private: deepai_key>",
6 "Content-Type": "application/json"
7 },
8 "body": {
9 "text": "<dynamic: image_prompt>"
10 }
11}

Pro tip: Image generation is one of DeepAI's slower endpoints — it may take 3-10 seconds to return. Always show a loading indicator in your Bubble workflow before the API call step and hide it in the step after. This prevents users from clicking the button multiple times and burning requests.

Expected result: The initialize call succeeds. Bubble shows the output_url field as parseable from the response. You can now reference this field in workflows to populate an Image element.

4

Add the summarization call and wire it to a Bubble text input

Still in the DeepAI API group, click 'Add a new call'. Name it 'summarizeText'. Set the method to POST and the path to /summarization. Set body type to JSON/Body. Add one body parameter: text — the long-form text to summarize. For initialization, provide a paragraph of text as the default value (at least a few sentences — DeepAI's summarization endpoint works best with longer inputs). Initialize the call. The response shape is: { "output": "summarized text here" }. Bubble will parse the output field for use in workflows. On your Bubble page, add a MultiLine Input element for the long text and a Button labeled 'Summarize'. Add a Text element to display the summary. In the button's workflow, add a step: Plugins → DeepAI - summarizeText. Set the text parameter to the MultiLine Input's value. After the API call step, add a 'Set state' action to store the response's output value in a Custom State on the page (create a custom state of type Text named 'summary_result'). Set the Text element's content to this Custom State. You can optionally add a 'Make changes to a Thing' step to save the summary to a database record — useful if users want to reference their summaries later or compare multiple summarization results.

summarization-call.json
1{
2 "method": "POST",
3 "url": "https://api.deepai.org/api/summarization",
4 "headers": {
5 "api-key": "<private: deepai_key>",
6 "Content-Type": "application/json"
7 },
8 "body": {
9 "text": "<dynamic: long_text>"
10 }
11}

Pro tip: DeepAI's summarization output is a flat string in the 'output' field — not an array or nested object. In Bubble's workflow action that uses the API response, reference it simply as 'Result of step X's output'.

Expected result: The summarization call is configured. Clicking the Summarize button with text in the MultiLine Input triggers the API call and displays the summary text in the page.

5

Add sentiment analysis and handle the array response

Click 'Add a new call' in the DeepAI group. Name it 'analyzeSentiment'. Set method to POST and path to /sentiment-analysis. Set body type to JSON/Body with one parameter: text. Initialize with a short sentence like 'I love this product, it works great!'. DeepAI's sentiment analysis response is slightly different from the others: { "output": ["Positive"] } — the output is an array, not a string. Bubble will parse this as a list, not a single value. In your workflow, after the API call step, use 'Result of step X's output:first item' to extract the first element of the array ('Positive', 'Negative', or 'Neutral'). This gives you a plain string you can store in a database field or display in a Text element. For a customer feedback use case, add sentiment analysis to your ticket or feedback submission workflow: after creating the Feedback Thing in Bubble, immediately call the sentiment API with the feedback text, then update the newly created Thing's 'sentiment' field with the first item from the output array. This automatically tags each feedback record as it comes in. To display sentiment results with color-coded indicators, use Bubble's Conditional formatting on a Text or Icon element: when the element's data source contains 'Positive', set the color to green; 'Negative' to red; 'Neutral' to gray.

sentiment-analysis-call.json
1{
2 "method": "POST",
3 "url": "https://api.deepai.org/api/sentiment-analysis",
4 "headers": {
5 "api-key": "<private: deepai_key>",
6 "Content-Type": "application/json"
7 },
8 "body": {
9 "text": "<dynamic: feedback_text>"
10 }
11}

Pro tip: DeepAI's sentiment API returns an array even when there's only one result. Always use ':first item' when extracting the sentiment label in Bubble workflows — referencing the raw list will show 'list of texts' in your UI instead of the label.

Expected result: Sentiment analysis call is configured. Submitting text through a Bubble workflow returns 'Positive', 'Negative', or 'Neutral' and can be stored or displayed in the app.

6

Handle image URL expiry and add privacy rules

DeepAI's generated image URLs are temporary — they point to files hosted on DeepAI's servers and will expire after a period of time. For prototyping and testing, this is fine. For production apps where users expect their generated images to persist, you need to save the images immediately after generation. The recommended approach in Bubble: after the generateImage API call step, add a 'Upload file from URL' action using Bubble's File Uploader or a dedicated workflow. Pass the output_url as the source URL, and Bubble will download the image and store it in Bubble's managed file storage, returning a permanent Bubble file URL. Store this permanent URL in the relevant database record instead of DeepAI's temporary URL. For apps that don't need persistent images (e.g., a one-time generation tool), displaying output_url in an Image element immediately is fine — just don't save it for future reference. Also add privacy rules for any data you store: go to Data tab → Privacy → select your image or content data type. Add rules restricting reads to the record's creator. This is especially relevant if users are generating images from private prompts. RapidDev's team has built dozens of AI-powered Bubble apps using DeepAI and similar tools — if you want to discuss the right architecture for your use case, book a free scoping call at rapidevelopers.com/contact.

Pro tip: Bubble's free plan limits file storage — if you're storing many generated images per user, check your storage usage in Bubble's app settings. Consider using Bubble's AWS S3 integration for high-volume image storage in production.

Expected result: Persistent images are saved to Bubble's file storage or an external storage service, and privacy rules protect user-generated content.

Common use cases

AI image generation from user prompts

Bubble apps for creative tools, marketing platforms, or e-commerce can let users type a text prompt and instantly generate an image using DeepAI's text-to-image endpoint. The generated image URL is returned in the API response and displayed directly in a Bubble Image element.

Bubble Prompt

Add an Input field and a Generate button to my Bubble page. When clicked, POST the input text to DeepAI's text2img endpoint and show the returned output_url in an Image element below the button. Show a loading indicator while the request is processing.

Copy this prompt to try it in Bubble

Article summarization for content platforms

Content platforms, news aggregators, or research tools can use DeepAI's summarization endpoint to condense long-form text into a short summary. Users paste or trigger a long article, the app calls DeepAI, and the summary is displayed alongside the original.

Bubble Prompt

Create a Bubble workflow triggered by clicking 'Summarize': take the content from a MultiLine Input, POST it to DeepAI's summarization endpoint, and display the output string in a read-only Text element below. Store the summary in the page's database record for future reference.

Copy this prompt to try it in Bubble

Customer feedback sentiment scoring

Support portals or CRM apps can run incoming customer reviews or ticket descriptions through DeepAI's sentiment analysis endpoint to automatically tag them as Positive, Negative, or Neutral — enabling teams to filter and prioritize feedback without manual review.

Bubble Prompt

In the ticket submission workflow, after creating the Ticket Thing in Bubble, POST the ticket description to DeepAI's sentiment-analysis endpoint. Store the first value from the output array (Positive, Negative, or Neutral) in the Ticket's 'sentiment' field for dashboard filtering.

Copy this prompt to try it in Bubble

Troubleshooting

API call returns 401 Unauthorized

Cause: The api-key header is named incorrectly or Bubble's built-in Authentication type is being used instead of a custom header.

Solution: In the API Connector, check the shared headers section. The header name must be exactly api-key (lowercase, with a hyphen). Confirm Authentication is set to 'None or self-handled' — if you used 'API Key' or 'Bearer Token' as the auth type, Bubble sends the key as 'Authorization' which DeepAI doesn't accept. Delete the auth type setting and add api-key manually as a custom shared header with Private checked.

There was an issue setting up your call during the initialize step

Cause: The initialize call requires a real successful response from DeepAI. If the api-key header is wrong, or if the request body doesn't include the expected 'text' parameter, DeepAI returns an error that Bubble can't parse into a usable response shape.

Solution: Before initializing, confirm the api-key Private header has your actual DeepAI key as the default value. Make sure the body has a 'text' parameter with a non-empty test value (e.g., 'test input for initialization'). Click Initialize call again. If it still fails, open the browser's developer tools (F12) on the Bubble editor page and check the network tab for the actual error response from DeepAI.

Generated image URL stops working after a short time

Cause: DeepAI's output_url points to a file hosted on DeepAI's servers with a limited TTL (time to live). These URLs are not intended for permanent storage.

Solution: Immediately after the generateImage API call step, save the file to Bubble's permanent storage using a 'Upload file from URL' workflow action, or pass the URL to an external storage service. Don't save the raw DeepAI URL to the database as a permanent reference — save the Bubble or S3 URL instead.

Sentiment analysis shows 'list of texts' instead of Positive/Negative/Neutral

Cause: DeepAI's sentiment response returns an array: { "output": ["Positive"] }. Referencing the output field directly gives you a list, not a string.

Solution: In your Bubble workflow, reference the API result as 'Result of step X's output:first item' — the ':first item' operator extracts the first string from the array. This gives you 'Positive', 'Negative', or 'Neutral' as a plain text value you can display or store.

API calls succeed in testing but users are hitting errors in production

Cause: DeepAI's free tier has a monthly request cap. Once exceeded, calls return an error response. Production apps with active users can hit this limit quickly.

Solution: Check your current request count at deepai.org/dashboard. If you're near or over the free limit, upgrade to a paid DeepAI plan at deepai.org/pricing. Also check Bubble's Logs tab to see if there are specific error response codes from DeepAI — a 429 response indicates rate limiting or quota exceeded.

Best practices

  • Always add the api-key as a custom shared header (not Bubble's Authentication field) with the Private checkbox checked — this is the only correct auth method for DeepAI.
  • Show a loading indicator in your Bubble workflow before any DeepAI API call and hide it afterward — image generation can take several seconds and users need visual feedback.
  • Save generated image URLs to permanent storage (Bubble file storage or S3) immediately after generation — DeepAI's output_url values are temporary and will expire.
  • Use ':first item' when referencing the sentiment analysis response in Bubble — the output field is an array even when it contains a single value.
  • Set an explicit WU budget awareness: even though DeepAI calls are fast, high-frequency calls from busy pages consume Bubble WU — avoid running DeepAI calls on every keystroke or automatic page refresh.
  • Monitor your DeepAI free tier usage at deepai.org/dashboard before going live — production apps with active users can exhaust free tier limits quickly and silently start returning errors.
  • Add error handling workflows for DeepAI API calls that display a user-friendly message when the call fails — this prevents raw error JSON from appearing in your app's UI.
  • For image generation use cases, set a max character limit on your Bubble Text Input for the prompt — very long prompts can increase response time and may hit DeepAI's input limits.

Alternatives

Frequently asked questions

Why does DeepAI use api-key instead of Authorization: Bearer like other APIs?

DeepAI chose a custom header name for their authentication rather than the standard Authorization header format. This is a design choice specific to DeepAI. The practical impact in Bubble is that you must add api-key as a custom shared header (with Private checked) in the API Connector, rather than using Bubble's built-in Authentication field — which always sends the key as an Authorization header.

Does Bubble's API Connector work with DeepAI without a proxy function?

Yes. Bubble's API Connector runs server-side by default, meaning your DeepAI api-key header is handled on Bubble's servers and never sent to the browser. Unlike FlutterFlow or Bolt.new, which run API calls client-side and require a proxy function to hide keys, Bubble's 'Private' header checkbox achieves the same security automatically. No external proxy is needed.

What is DeepAI's free tier limit and when should I upgrade?

Verify the current free tier limit at deepai.org/dashboard — the number of free requests per month can change. As a general rule, the free tier is sufficient for prototyping and low-traffic testing. If your Bubble app goes live with multiple daily active users each generating images or running analyses, you'll likely need a paid plan. Check your usage count in the DeepAI dashboard and upgrade before you approach the limit to avoid service interruptions.

How long do DeepAI image URLs stay valid?

DeepAI's output_url values are temporary and hosted on DeepAI's servers with a limited lifespan. The exact expiry time isn't publicly documented, but you should treat them as short-lived — valid for the current session and possibly a short time after, but not permanently. For production apps, always save the image to Bubble's file storage or an external storage service immediately after generation.

Can I use DeepAI for image uploads and editing, not just text-to-image generation?

Yes — DeepAI offers several image-to-image endpoints (e.g., image-colorization, super-resolution, waifu2x). For endpoints that accept an image URL as input rather than text, use the same JSON body approach with an 'image' parameter containing a URL. For endpoints that accept binary image uploads, the integration in Bubble is more complex — you'd need to handle multipart form data, which the API Connector supports with a different body type setting.

Do I need a paid Bubble plan to use DeepAI?

No. DeepAI integration via the API Connector works on Bubble's Free plan. Unlike integrations that require Backend Workflows (such as IBM Watson or Azure ML with Azure AD auth), DeepAI needs no Backend Workflows — just the API Connector plugin, which is available on all Bubble plans including Free.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Integrations are where projects stall

We wire Bubble integrations like this one every week — auth, webhooks, edge cases included. Fixed-price builds from $13K, delivered in 6–10 weeks.

Talk to an integration engineer

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.