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.
| Fact | Value |
|---|---|
| Tool | DeepAI |
| Category | AI & ML |
| Method | Bubble API Connector |
| Difficulty | Beginner |
| Time required | 15–25 minutes |
| Last updated | July 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
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
OpenAI is more powerful and context-aware, supporting multi-turn conversations and complex reasoning. DeepAI is simpler: single-task endpoints with one custom header and no conversation management. Choose DeepAI for quick image generation or basic NLP tasks; choose OpenAI when you need contextual, multi-step AI interactions.
Vertex AI requires cloud service account authentication and supports custom-trained ML models. DeepAI requires one custom header and works immediately with no cloud setup. Choose Vertex AI for enterprise custom models; choose DeepAI for fast prototyping with pre-built AI tasks.
IBM Watson provides enterprise-grade structured NLP (sentiment, entities, document search) with IBM Cloud IAM token-based auth. DeepAI is simpler to set up but offers less sophisticated NLP capabilities. Choose Watson for enterprise compliance and multi-feature NLP; choose DeepAI for quick, single-task AI on a budget.
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.
Talk to an Expert
Our team has built 600+ apps. Get personalized help with your project.
Book a free consultation