Skip to main content
RapidDev - Software Development Agency
flutterflow-integrationsFlutterFlow API Call

Algorithmia

Connect FlutterFlow to Algorithmia (now part of DataRobot) by deploying a Firebase Cloud Function proxy that holds your API key and forwards inference requests to your algorithm or model endpoint. Algorithmia uses an Authorization: Simple {key} header on legacy clusters; DataRobot uses standard Bearer tokens. The response is wrapped in a result field — parse it with a JSON path in FlutterFlow.

What you'll learn

  • Why Algorithmia was acquired by DataRobot and how that affects which base URL and auth scheme you use
  • How the legacy Algorithmia Authorization: Simple {key} header differs from standard Bearer token auth
  • How to deploy a Firebase Cloud Function proxy for Algorithmia or DataRobot inference calls
  • How to create a FlutterFlow API Group that submits model inputs and parses the result from a wrapped response
  • How to handle platform ambiguity (legacy cluster vs DataRobot) and confirm your endpoint before building
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Intermediate17 min read45 minutesAI & MLLast updated July 2026RapidDev Engineering Team
TL;DR

Connect FlutterFlow to Algorithmia (now part of DataRobot) by deploying a Firebase Cloud Function proxy that holds your API key and forwards inference requests to your algorithm or model endpoint. Algorithmia uses an Authorization: Simple {key} header on legacy clusters; DataRobot uses standard Bearer tokens. The response is wrapped in a result field — parse it with a JSON path in FlutterFlow.

Quick facts about this guide
FactValue
ToolAlgorithmia
CategoryAI & ML
MethodFlutterFlow API Call
DifficultyIntermediate
Time required45 minutes
Last updatedJuly 2026

Calling Algorithmia and DataRobot Model Inference from FlutterFlow

Algorithmia started as a marketplace for algorithms and machine learning models, letting developers call any published algorithm via a uniform REST API. In 2021 it was acquired by DataRobot, and standalone self-serve Algorithmia signups are now closed. New work either targets DataRobot's platform at https://app.datarobot.com/api/v2 or points at an existing enterprise Algorithmia cluster your organization already has at a custom URL like https://your-cluster.algorithmia.com/api.

The acquisition creates a fork in the road that determines your base URL, authentication scheme, and response format. Legacy Algorithmia clusters use a custom Authorization: Simple {key} header — not the standard Bearer scheme — and wrap all algorithm outputs in a JSON envelope: {"result": ..., "metadata": {...}}. DataRobot uses standard Bearer tokens and returns model predictions in a different format. Before building anything in FlutterFlow, confirm which platform you actually have access to and get the correct base URL, API key, and algorithm or model path from your account.

Regardless of platform, the FlutterFlow integration follows the same secure architecture: a Firebase Cloud Function proxy holds the API key server-side, FlutterFlow's API Group points at the proxy, and JSON path parsing extracts the prediction from the response. The API key is a secret that must never appear in a FlutterFlow API Call header or Dart code — it would ship in the compiled APK or web bundle where anyone could extract it and consume your inference credits or quota.

Integration method

FlutterFlow API Call

FlutterFlow sends inference requests to a Firebase Cloud Function proxy that holds the Algorithmia or DataRobot API key. The proxy adds the correct Authorization header (Authorization: Simple {key} for legacy Algorithmia clusters, Bearer for DataRobot) and forwards the JSON payload to the algorithm or model endpoint. The JSON response — wrapped in a result field on Algorithmia — is returned to FlutterFlow, parsed with a JSON path, and bound to UI widgets.

Prerequisites

  • An existing Algorithmia enterprise cluster account or a DataRobot account — no public self-serve Algorithmia signup is available post-acquisition
  • Your API key, base URL, and algorithm path from your Algorithmia cluster or DataRobot account team
  • A Firebase project with Cloud Functions enabled (Blaze pay-as-you-go plan for outbound HTTP in functions)
  • A FlutterFlow project on a paid plan with API Calls configured
  • Clarity on whether you are on a legacy Algorithmia cluster (Simple auth) or DataRobot (Bearer auth) — the auth scheme and response format differ

Step-by-step guide

1

Determine your platform and confirm your endpoint credentials

Algorithmia no longer accepts new self-serve signups — it was acquired by DataRobot and the public marketplace is being wound down. Before starting the FlutterFlow build, you need to answer a critical question: which platform do you actually have? Option A — Legacy Algorithmia cluster: Your organization has an existing enterprise Algorithmia deployment at a custom domain like https://your-company.algorithmia.com. In this case, your API key uses the Authorization: Simple {key} header format (not Bearer), and algorithm endpoints follow the pattern /api/v1/algo/{owner}/{algorithm}/{version} under your cluster URL. Algorithm responses are wrapped: {"result": ..., "metadata": {...}}. The result field contains the actual algorithm output. Option B — DataRobot: You are using DataRobot's platform at https://app.datarobot.com/api/v2. DataRobot uses a standard Bearer token in the Authorization header, and the response format is DataRobot's prediction JSON structure, not the Algorithmia envelope. Contact your account administrator or DataRobot/Algorithmia account representative to confirm which platform you have, get the correct base URL, your API key, and the exact algorithm or model endpoint path. Write these down — you will need them in your Cloud Function. Do not guess the base URL or auth format: getting either wrong produces silent 401 or 404 failures that are hard to debug.

Pro tip: If you are trying to use the public Algorithmia marketplace (algorithmia.com) without an existing enterprise account, you will find that new signups are closed post-DataRobot acquisition. The integration in this guide requires either an existing enterprise cluster or a DataRobot account.

Expected result: You know exactly which platform you are on (legacy Algorithmia cluster or DataRobot), have the base URL, API key, auth header format, and algorithm path written down and ready.

2

Deploy a Firebase Cloud Function proxy that holds the API key

The Algorithmia or DataRobot API key is a secret credential that must never appear in a FlutterFlow API Call header or in any Dart code — both end up in the compiled app binary. The Cloud Function proxy sits between FlutterFlow and the inference API, adding the correct Authorization header server-side. Create a Node.js 18 Firebase Cloud Function named algorithmiaProxy. The function should: 1. Read the API key from an environment variable (ALGO_KEY) set via Firebase Functions Config or Google Cloud Secret Manager. 2. Determine the auth header format: for legacy Algorithmia clusters use Authorization: Simple {key}; for DataRobot use Authorization: Bearer {key}. Confirm this with your account documentation. 3. POST the JSON body from FlutterFlow (the model input) to the algorithm endpoint URL, adding the Authorization header. 4. Return the response JSON to FlutterFlow with CORS headers for web build support. For legacy Algorithmia, the endpoint URL follows the pattern https://your-cluster.algorithmia.com/api/v1/algo/{owner}/{algo}/{version}. For DataRobot, your account team provides the specific prediction endpoint URL. Deploy with firebase deploy --only functions and note the HTTPS trigger URL. That URL is what FlutterFlow calls — not the Algorithmia or DataRobot URL.

index.js
1// functions/index.js (Firebase Cloud Functions, Node.js 18)
2// Adjust BASE_URL, ALGO_PATH, and auth header format per your platform
3const functions = require('firebase-functions');
4const axios = require('axios');
5
6exports.algorithmiaProxy = functions.https.onRequest(async (req, res) => {
7 res.set('Access-Control-Allow-Origin', '*');
8 res.set('Access-Control-Allow-Methods', 'POST, OPTIONS');
9 res.set('Access-Control-Allow-Headers', 'Content-Type');
10 if (req.method === 'OPTIONS') { res.status(204).send(''); return; }
11
12 const apiKey = functions.config().algo.key;
13 const baseUrl = functions.config().algo.baseurl; // e.g. https://your-cluster.algorithmia.com
14 const algoPath = functions.config().algo.path; // e.g. /api/v1/algo/owner/AlgoName/1.0.0
15
16 // For legacy Algorithmia: 'Simple {key}' | For DataRobot: 'Bearer {key}'
17 const authScheme = functions.config().algo.authscheme || 'Simple'; // 'Simple' or 'Bearer'
18
19 try {
20 const response = await axios.post(
21 `${baseUrl}${algoPath}`,
22 req.body,
23 {
24 headers: {
25 'Authorization': `${authScheme} ${apiKey}`,
26 'Content-Type': 'application/json',
27 },
28 }
29 );
30 res.json(response.data);
31 } catch (err) {
32 res.status(err.response?.status || 500).json({ error: err.message });
33 }
34});

Pro tip: Set all four config values before deploying: firebase functions:config:set algo.key="YOUR_KEY" algo.baseurl="https://your-cluster.algorithmia.com" algo.path="/api/v1/algo/owner/AlgoName/1.0.0" algo.authscheme="Simple" then run firebase deploy --only functions.

Expected result: A deployed Cloud Function proxy that accepts POST requests and forwards them to your Algorithmia cluster or DataRobot endpoint with the correct auth header. Testing it with a sample input returns the algorithm's output JSON.

3

Create a FlutterFlow API Group pointing at the proxy

Open FlutterFlow and click API Calls in the left navigation panel. Click + Add and choose Create API Group. Name it Algorithmia (or DataRobot, or a more specific name like ImageClassifier if you are only calling one algorithm). Set the Base URL to your Cloud Function HTTPS trigger URL — for example https://us-central1-YOUR-PROJECT.cloudfunctions.net/algorithmiaProxy. Do not enter the Algorithmia cluster URL or DataRobot URL here — the Cloud Function handles that routing internally. Inside the group, click + Add to create an API Call. Name it RunInference (or something that matches your algorithm's purpose, like ClassifyImage or PredictDemand). Set the method to POST. Leave the path empty — the Cloud Function's own endpoint logic determines the algorithm URL. For the body, set the type to JSON. The body shape depends on what your algorithm expects as input. For many Algorithmia algorithms, the input is a simple value or object; for example, a text classification algorithm might expect: { "text": "{{ inputText }}" } For image inputs, you typically encode the image as a base64 string using a Custom Action before calling the API, then pass it in the body: { "image_base64": "{{ imageData }}" } Add the appropriate variables in the Variables tab. You do not need to add any Authorization header to the FlutterFlow API Call — the proxy injects it.

typescript
1// Example API Call body templates (adjust to your algorithm's input spec)
2
3// For text classification:
4{ "text": "{{ inputText }}" }
5
6// For image classification (image sent as base64):
7{ "image_base64": "{{ imageData }}" }
8
9// For a DataRobot tabular prediction:
10{
11 "datarobot-key": "{{ datarobotKey }}",
12 "data": [
13 { "feature1": "{{ val1 }}", "feature2": "{{ val2 }}" }
14 ]
15}

Pro tip: If the algorithm you are calling accepts multiple input types (text or image), create two separate API Calls inside the same API Group — one per input type — rather than trying to handle both in a single call with conditional logic.

Expected result: An Algorithmia API Group in the left nav with a RunInference POST call, a JSON body template with input variables, and no Authorization header visible in FlutterFlow.

4

Test the API Call and parse the result from the response

Click the Response & Test tab inside the RunInference API Call. Enter sample values in the input variables — for example, a short text string for a text classification algorithm. Click Send Test Request. If the proxy is configured correctly, you will receive a JSON response. For legacy Algorithmia, the response is wrapped in an envelope: { "result": "positive", "metadata": { "content_type": "text", "duration": 0.045 } } For DataRobot, the prediction format is specific to your model type and will look different — consult your DataRobot documentation for the exact response structure. For Algorithmia, click Generate JSON Paths from Response. The critical path is $.result — name it predictionResult and set the type to String (or Dynamic if the result is a number or object). Also generate $.metadata.duration as durationMs (Double) if you want to display processing time. If the test returns 401: the API key is wrong or the auth scheme is incorrect — check your Cloud Function config and confirm with your account team whether to use Simple or Bearer. If the test returns 404: the algorithm path is wrong — double-check the full path including version number. If the test returns 500 from the proxy itself: check Cloud Function logs in the Firebase Console for the specific error.

Pro tip: Algorithmia algorithms can have multiple published versions (e.g. /1.0.0, /1.1.2). Pin your proxy to a specific version number rather than using /latest to avoid unexpected behavior when the algorithm publisher updates it.

Expected result: The test returns a valid algorithm response, and FlutterFlow generates JSON paths including $.result (named predictionResult) ready for widget binding.

5

Wire the inference call to your UI and display predictions

With the API Call tested and JSON paths generated, connect it to your FlutterFlow UI. The exact UI depends on your algorithm's purpose, but here is the pattern for a text classification screen: Add a Column to your screen containing a TextField for the input text, a Classify button, a Text widget for the prediction result, and a CircularProgressIndicator visible only when isLoading is true. Create Page State variables: inputText (String), predictionResult (String), isLoading (Boolean). For the Classify button's Action Flow: 1. Update Page State: set isLoading to true. 2. Backend/API Call: select Algorithmia → RunInference; set inputText to the TextField value. 3. On Success: Update Page State to set predictionResult from the predictionResult JSON path; set isLoading to false. 4. On Error: show a Snack Bar with an error message; reset isLoading to false. Set the prediction Text widget's value to predictionResult Page State and add conditional styling if the prediction is a categorical label (for example, green text for 'positive', red for 'negative'). For image classification, the flow is slightly more complex: add a Custom Action before the API Call that accesses the device camera or gallery (using the image_picker package), encodes the selected image to base64, and stores it in a Page State variable. That base64 string is then passed as the imageData variable in the RunInference API Call body.

Pro tip: Large base64-encoded images can make the request body very large, increasing latency and potentially hitting Cloud Function payload size limits. Consider resizing the image to a maximum of 640x640 pixels in your Custom Action before base64 encoding — most classification algorithms do not need higher resolution.

Expected result: Tapping the Classify button sends the input to the algorithm via the proxy, shows a loading indicator while processing, and displays the prediction result in the UI once the response arrives.

6

Handle errors, CORS, and platform-specific differences

Before publishing your FlutterFlow app, add error handling for the most common failure scenarios and test on the target platforms. Error branches to add in your Action Flow: • 401 Unauthorized: the API key is wrong or the auth scheme (Simple vs Bearer) does not match your platform — check your Cloud Function config and confirm with your account team. • 404 Not Found: the algorithm path or model URL is incorrect — verify the full path including version number. • 429 Too Many Requests: you have hit your algorithm's rate limit or your account quota — show a try again later message and do not auto-retry immediately. • 500 from the proxy: check Cloud Function logs for the Algorithmia or DataRobot error; common causes include malformed input JSON or algorithm-side exceptions. For web builds, the Cloud Function's Access-Control-Allow-Origin: * header allows browser requests to the proxy. Direct calls from FlutterFlow to your Algorithmia cluster URL or app.datarobot.com would fail with XMLHttpRequest error due to CORS — always route through the proxy. For mobile builds (iOS/Android), CORS is not enforced, but the proxy is still required to keep the API key off the device. Test on a real device rather than just FlutterFlow's web Test Mode if you are using Custom Actions for image encoding — those run on device and may behave differently in the preview than in a real build. The DataRobot acquisition means Algorithmia's product direction is evolving — if your cluster or account setup changes, update the base URL and API key in your Cloud Function config rather than in FlutterFlow. If you need help navigating the platform ambiguity or setting up the proxy, RapidDev builds FlutterFlow AI integrations every week — free scoping call at rapidevelopers.com/contact.

Pro tip: Keep your Cloud Function's algo.path config value up to date with a pinned algorithm version. If the algorithm owner publishes a new version and you are using /latest, your results may change unexpectedly mid-production.

Expected result: Your app shows user-friendly error messages for 401, 404, and 429 responses, works correctly on both web and mobile, and all Algorithmia credentials remain server-side in the Cloud Function.

Common use cases

Image classification feature in a mobile inspection or quality app

A field inspection app built in FlutterFlow lets workers photograph equipment or products. The image is base64-encoded in a Custom Action, sent to an Algorithmia image-classification algorithm through the proxy, and the returned class labels and confidence scores are displayed alongside the photo. Workers can flag items for review without leaving the app.

FlutterFlow Prompt

Build a screen where the user taps a camera button to capture a photo. The image is sent as base64 to an Algorithmia image-classification algorithm via a proxy, and the top 3 class labels with confidence percentages are shown below the photo.

Copy this prompt to try it in FlutterFlow

Text classification or NLP enrichment in a customer service app

A customer service FlutterFlow app automatically classifies incoming support tickets by routing the ticket text to a deployed NLP algorithm on Algorithmia or a DataRobot text model. The returned category and priority labels are displayed on the ticket card, helping agents triage faster without reading every message.

FlutterFlow Prompt

On the ticket detail page, automatically call an Algorithmia text-classification algorithm when the ticket loads and show the predicted category and priority level as badges at the top of the ticket.

Copy this prompt to try it in FlutterFlow

Predictive analytics dashboard in a business intelligence app

A FlutterFlow analytics app lets managers enter current business metrics (sales numbers, inventory levels, seasonality factors) and get a model prediction for next-period demand. The inputs are POSTed to a DataRobot prediction endpoint through the proxy, and the returned forecast value is displayed in a chart alongside historical actuals.

FlutterFlow Prompt

Create a forecasting screen where the user enters current period metrics, taps Predict, and the returned DataRobot prediction value is added to a Recharts-style line chart showing historical data alongside the forecast.

Copy this prompt to try it in FlutterFlow

Troubleshooting

API call returns 401 Unauthorized even though the API key looks correct

Cause: The Authorization header scheme is wrong. Legacy Algorithmia clusters use Authorization: Simple {key}, not Authorization: Bearer {key}. Using Bearer on a legacy cluster always returns 401.

Solution: Check which platform you are on. If it is a legacy Algorithmia cluster, update the Cloud Function config to set algo.authscheme to 'Simple' and redeploy. Verify with your account administrator that the key is active and has not been rotated. Check Cloud Function logs in the Firebase Console to see the exact outgoing Authorization header value.

API call returns 404 Not Found — the algorithm endpoint does not exist

Cause: The algorithm path in the Cloud Function config is incorrect — either the owner name, algorithm name, or version number is wrong. This also occurs if the algorithm has been unpublished or the DataRobot model endpoint URL has changed.

Solution: Log in to your Algorithmia cluster or DataRobot account and confirm the exact algorithm path and version. For Algorithmia, the path follows /api/v1/algo/{owner}/{AlgorithmName}/{version} — every segment must be correct. Update algo.path in your Firebase Functions Config and redeploy. If on DataRobot, get the updated prediction endpoint URL from your account team.

XMLHttpRequest error in FlutterFlow web build

Cause: The API Group's Base URL is pointing at the Algorithmia cluster URL or app.datarobot.com directly, rather than the Cloud Function proxy URL. Browser CORS policy blocks these cross-origin requests.

Solution: Open API Calls in FlutterFlow, select the Algorithmia API Group, and verify the Base URL is your Cloud Function HTTPS trigger URL (https://us-central1-YOUR-PROJECT.cloudfunctions.net/algorithmiaProxy). Update it to the proxy URL and re-test. Confirm the Cloud Function's response includes Access-Control-Allow-Origin: *.

The prediction result is null in FlutterFlow even though the API call returns 200

Cause: The JSON path in FlutterFlow is referencing the result field incorrectly, or the Algorithmia response envelope structure is different from what was expected during testing. The result field is nested at $.result for legacy Algorithmia, but DataRobot uses a different structure.

Solution: Go to the RunInference API Call → Response & Test tab. Paste a raw Algorithmia or DataRobot response JSON and click Generate from Response. For legacy Algorithmia, confirm the path is $.result. For DataRobot predictions, the path depends on your model type — check your DataRobot documentation for the correct prediction field path. Update the JSON path name and re-bind the widget.

Best practices

  • Confirm before building whether you are on a legacy Algorithmia cluster (Simple auth) or DataRobot (Bearer auth) — the two platforms have different base URLs, auth schemes, and response formats.
  • Never put the Algorithmia or DataRobot API key in a FlutterFlow API Call header, App Constants, or Dart code — it ships in the compiled app and can be extracted from any APK or web bundle.
  • Use Authorization: Simple {key} for legacy Algorithmia clusters — using Bearer (which is the standard OAuth format) returns 401 and is the most common mistake builders make.
  • Parse the $.result JSON path for Algorithmia responses — the actual algorithm output is wrapped in an envelope with result and metadata fields, not returned at the top level of the JSON.
  • Pin your Cloud Function's algorithm path to a specific version number (e.g. /1.0.0) rather than /latest to ensure your FlutterFlow app's behavior does not change unexpectedly when the algorithm is updated.
  • Add graceful error handling in your Action Flow for 401 (wrong key or auth scheme), 404 (wrong algorithm path), and 429 (rate limit exceeded) — show user-friendly messages rather than silent failures.
  • Route all inference calls through the Cloud Function proxy for web builds — Algorithmia cluster URLs and app.datarobot.com do not send CORS headers, causing XMLHttpRequest errors in browser-based FlutterFlow web apps.
  • For image-input algorithms, resize images to a reasonable resolution (640x640 or less) in your Custom Action before base64 encoding — large images inflate payload size and increase latency without benefiting most classification models.

Alternatives

Frequently asked questions

Can I still sign up for Algorithmia as a new user?

As of the time this page was written, Algorithmia's public self-serve signup has been discontinued following its acquisition by DataRobot. New users should explore DataRobot's platform at datarobot.com instead. If your organization already has an enterprise Algorithmia cluster deployed before the acquisition, you can continue using it — this guide covers that scenario as the legacy cluster path.

Why does Algorithmia use Authorization: Simple instead of the standard Bearer scheme?

Algorithmia pre-dated the widespread adoption of OAuth Bearer tokens as the de-facto standard for REST APIs. They chose a custom Simple auth scheme when the platform was originally designed. This is purely a header naming convention — the security implications are the same. The important thing for FlutterFlow builders is to use the exact header name Algorithmia expects: Authorization: Simple {key}, not Authorization: Bearer {key}. The latter always returns 401 on legacy clusters.

What does the Algorithmia response envelope look like and how do I parse it?

Legacy Algorithmia wraps every algorithm output in a JSON object with two top-level fields: result (the actual algorithm output — could be a string, number, object, or array depending on the algorithm) and metadata (an object containing duration, content_type, and other execution details). To extract the prediction in FlutterFlow, use the JSON path $.result. If the result itself is a complex object, you can navigate deeper — for example $.result.label for a classification algorithm that returns {"label": "positive", "confidence": 0.87}.

Does the Algorithmia integration work for web FlutterFlow builds?

Yes, through the Cloud Function proxy. Algorithmia cluster URLs and the DataRobot API do not send CORS headers, so direct browser calls from a FlutterFlow web build fail with XMLHttpRequest error. The Cloud Function proxy you deploy adds Access-Control-Allow-Origin: * to its responses, making web builds work correctly. Mobile builds (iOS/Android) do not enforce CORS, but the proxy is still required to protect the API key.

How do I choose between pointing FlutterFlow at a legacy Algorithmia cluster vs DataRobot?

Use whichever platform your organization has an active account on and has deployed your algorithm or model to. If your company set up an Algorithmia enterprise cluster before the acquisition, use the legacy cluster approach (Simple auth, /api/v1/algo/ path structure). If your company has migrated to or started fresh with DataRobot, use the DataRobot API (Bearer auth, app.datarobot.com endpoints). If you are unsure, ask your internal AI or data science team which platform hosts the model you want to call.

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 FlutterFlow 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.