Skip to main content
RapidDev - Software Development Agency
retool-integrationsREST API Resource

How to Integrate Retool with Udacity

Connect Retool to Udacity by creating a REST API Resource with Udacity's enterprise API base URL and authentication token. Build queries in the Retool query editor to pull Nanodegree enrollment data, track student progress, and monitor cohort completion rates — creating a learning operations dashboard for organizations running employee upskilling programs.

What you'll learn

  • How to configure a REST API Resource in Retool for Udacity's enterprise API
  • How to fetch enrollment and progress data for Nanodegree programs in the query editor
  • How to build a cohort tracking dashboard with filters by program, cohort, and completion status
  • How to write JavaScript transformers to calculate completion rates and time-to-completion metrics
  • How to combine Udacity learning data with internal HR data for a unified employee upskilling view
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Intermediate16 min read25 minutesOtherLast updated April 2026RapidDev Engineering Team
TL;DR

Connect Retool to Udacity by creating a REST API Resource with Udacity's enterprise API base URL and authentication token. Build queries in the Retool query editor to pull Nanodegree enrollment data, track student progress, and monitor cohort completion rates — creating a learning operations dashboard for organizations running employee upskilling programs.

Quick facts about this guide
FactValue
ToolUdacity
CategoryOther
MethodREST API Resource
DifficultyIntermediate
Time required25 minutes
Last updatedApril 2026

Why Connect Retool to Udacity?

Organizations using Udacity for employee upskilling often struggle with visibility into program progress. Udacity's native dashboard provides learner-level data, but L&D managers and HR business partners need aggregated views: which teams are completing their Nanodegrees on schedule, which employees are stuck, and whether the investment in specific programs is translating into completion rates that justify renewal.

Connecting Udacity to Retool lets you build an internal learning operations dashboard that pulls enrollment and progress data from Udacity's API and combines it with your HR system's employee records. You can create cohort-level completion charts, identify at-risk learners who have not logged in recently, and track time-to-completion across different departments or job functions — all in a single Retool app that your L&D team can share with business leaders without requiring Udacity admin access.

For enterprise customers, this integration also enables automated workflows: a Retool Workflow can check weekly progress reports and send a Slack notification to managers when direct reports fall behind schedule, or trigger a re-engagement email campaign when learners have been inactive for more than two weeks. The combination of Retool's visual query builder and Udacity's API makes it straightforward to build the learning analytics tooling that Udacity's native interface does not provide.

Integration method

REST API Resource

Udacity's enterprise and learner API exposes enrollment, progress, and cohort data via REST endpoints accessible with an API authentication token. Retool connects by configuring a REST API Resource with Udacity's base URL and Bearer token, then building visual queries in the query editor to pull learner data. All requests are proxied server-side through Retool's backend, ensuring credentials never reach the browser. You can then combine Udacity data with your internal HR or people systems in a single Retool dashboard.

Prerequisites

  • A Udacity enterprise or business account with API access enabled (contact Udacity enterprise sales for API credentials)
  • An API authentication token or client credentials from Udacity's enterprise developer portal
  • Udacity enterprise admin or learning coordinator access to view enrollment and progress data
  • A Retool account (Cloud or self-hosted) with permission to add Resources
  • Optional: access to your internal HR database if you plan to join Udacity data with employee records

Step-by-step guide

1

Obtain Udacity API credentials

Udacity's API access for enterprise customers is managed through their enterprise program. Log into the Udacity for Business admin portal at https://business.udacity.com and navigate to the Integrations or API Settings section. If API access is not visible, contact your Udacity customer success manager to request API credentials — Udacity typically provides enterprise API access as part of their Business or Enterprise tier plans. Once API access is enabled, Udacity will provide you with either an API key, a Bearer token, or OAuth 2.0 client credentials (client ID and client secret). Note the authentication method and the base URL for the API — Udacity's enterprise API typically uses a base URL such as https://api.udacity.com/api/v1/enterprise/ or a program-specific subdomain provided during onboarding. Also note the specific endpoints available for your account: common enterprise endpoints include /enrollments (list all learner enrollments), /learners/{id}/progress (progress for a specific learner), /cohorts (list active cohorts), and /completions (list completed Nanodegrees). The exact endpoint paths vary by Udacity's API version and your enterprise agreement, so consult your Udacity API documentation or request it from your account manager. Store your API token securely — you will add it to Retool as a configuration variable in the next step rather than entering it directly in the resource form.

Pro tip: If you do not yet have enterprise API access, Udacity's basic REST API for individual learner data is available at https://api.udacity.com. Personal learner data (your own progress, course catalog) can be accessed with a user token from the Udacity learner dashboard — check your account settings for developer access options.

Expected result: You have a Udacity API base URL and an authentication token or credentials ready to configure in Retool.

2

Create a Retool configuration variable and REST API Resource

Before creating the resource, store your Udacity API token securely in Retool's configuration variables. Navigate to Settings (gear icon in the Retool sidebar) → Configuration Variables. Click Add Variable, name it UDACITY_API_TOKEN, paste your API token as the value, and check the 'Secret' checkbox to restrict it to resource configurations only. Click Save. Now go to the Resources tab in the Retool sidebar and click Add Resource. In the resource type search, type 'REST' and select REST API. In the configuration form: - Base URL: enter your Udacity enterprise API base URL, for example https://api.udacity.com/api/v1/enterprise/ - Authentication: select 'Bearer Token' from the Authentication dropdown - Token: enter {{ retoolContext.configVars.UDACITY_API_TOKEN }} to reference your configuration variable rather than pasting the raw token In the Headers section, add a global header: 'Content-Type' with value 'application/json'. Some Udacity API versions also require an 'X-Organization-Id' header with your enterprise organization identifier — check your API documentation and add it here if needed. Give the resource a clear name like 'Udacity Enterprise API' and click Save Changes. The resource is now ready to use in your Retool queries.

Pro tip: If Udacity provides OAuth 2.0 client credentials, select 'Custom Auth' in the Authentication section, add a step that POSTs to Udacity's token endpoint with your client ID and secret, stores the access_token from the response, and sets the Authorization header to 'Bearer ' + the stored token.

Expected result: The Udacity REST API Resource is saved in Retool. When you run a test query against it, you receive a 200 OK response with JSON data rather than an authentication error.

3

Build a query to fetch enrollment and progress data

Open or create a Retool app. In the Code panel at the bottom, click the + button to create a new query. Select your Udacity Enterprise API resource from the Resource dropdown. The query editor shows REST API mode with Method, Path, Query Params, Headers, and Body sections. For a basic enrollment list query: - Method: GET - Path: /enrollments (or the path provided in your Udacity API docs) - Query Parameters: add 'page' as {{ pagination.page || 1 }}, 'per_page' as {{ pagination.pageSize || 50 }}, and optionally 'program_key' as {{ programFilter.value }} to filter by a specific Nanodegree In the Advanced tab, add a JavaScript transformer to normalize the response into a flat array suitable for Retool's Table component: Name this query 'enrollmentsQuery' and set it to run automatically when inputs change (for pagination to work). Drag a Table component from the Component panel onto your canvas and set its Data to {{ enrollmentsQuery.data }}. Configure visible columns: learner_email, program_title, cohort_name, enrollment_date, progress_percentage, and status. Add a Select component above the table for filtering by program. Create a separate query to fetch available programs from /programs or /cohorts, and bind the Select component's options to that query's data. Reference the Select value in your enrollments query's program_key parameter.

enrollmentsTransformer.js
1// JavaScript transformer to normalize Udacity enrollment API response
2const response = data;
3// Udacity API may wrap results in 'data', 'enrollments', or 'results' key
4const enrollments = response.enrollments || response.data || response.results || (Array.isArray(response) ? response : []);
5return enrollments.map(e => ({
6 learnerId: e.learner_id || e.id,
7 learnerEmail: e.learner_email || e.email || 'N/A',
8 programTitle: e.program_title || e.nanodegree_title || 'Unknown Program',
9 programKey: e.program_key || e.nanodegree_key || '',
10 cohortName: e.cohort_name || e.cohort_id || 'Default',
11 enrollmentDate: e.enrollment_date ? new Date(e.enrollment_date).toLocaleDateString() : 'N/A',
12 progressPercent: e.progress_percentage !== undefined ? Math.round(e.progress_percentage) + '%' : 'N/A',
13 status: e.status || e.state || 'enrolled',
14 lastActivity: e.last_activity_at ? new Date(e.last_activity_at).toLocaleDateString() : 'No activity'
15}));

Pro tip: Udacity APIs may paginate differently across endpoint versions. Check the response for a 'total_count', 'next_page_url', or 'meta.pagination' key and update your pagination logic accordingly — some endpoints use cursor-based pagination rather than offset/page numbers.

Expected result: A Table in your Retool app displays Udacity learner enrollments with progress percentages, cohort names, and enrollment dates. Pagination controls load additional records.

4

Build cohort completion metrics with a JavaScript transformer

To build aggregated cohort-level metrics — the core value of this dashboard — create a JavaScript query (not a resource query) that processes your enrollment data and computes completion statistics per cohort. In the Code panel, click + to create a new query. In the Resource dropdown, select 'Run JavaScript' (a built-in Retool query type). Write a transformer that aggregates the raw enrollment data from your enrollments query: This query will run automatically whenever enrollmentsQuery.data changes (set Run mode to 'Automatically run when inputs change', and reference enrollmentsQuery.data in the script). Bind a second Table or a Chart component to this aggregated data to show cohort-level metrics. For visualization, drag a Chart component (bar or column type) from the Component panel. Set its Chart data to {{ cohortMetricsQuery.data }}, X axis to 'cohortName', and Y axis to 'completionRate'. This gives L&D managers an at-a-glance view of which cohorts are performing well.

cohortMetrics.js
1// JavaScript query to aggregate enrollment data into cohort metrics
2const enrollments = enrollmentsQuery.data || [];
3
4// Group by cohort
5const cohortMap = {};
6enrollments.forEach(e => {
7 const key = e.cohortName || 'Unassigned';
8 if (!cohortMap[key]) {
9 cohortMap[key] = {
10 cohortName: key,
11 programTitle: e.programTitle,
12 total: 0,
13 completed: 0,
14 inProgress: 0,
15 notStarted: 0,
16 totalProgress: 0
17 };
18 }
19 cohortMap[key].total++;
20 cohortMap[key].totalProgress += parseFloat(e.progressPercent) || 0;
21 if (e.status === 'completed' || e.progressPercent === '100%') {
22 cohortMap[key].completed++;
23 } else if (e.status === 'enrolled' || parseFloat(e.progressPercent) > 0) {
24 cohortMap[key].inProgress++;
25 } else {
26 cohortMap[key].notStarted++;
27 }
28});
29
30return Object.values(cohortMap).map(c => ({
31 ...c,
32 completionRate: c.total > 0 ? Math.round((c.completed / c.total) * 100) + '%' : '0%',
33 avgProgress: c.total > 0 ? Math.round(c.totalProgress / c.total) + '%' : '0%'
34}));

Pro tip: Use Retool's Stat component (the KPI card component) to display top-line numbers — total enrolled, total completed, and organization-wide completion rate — at the top of your dashboard before the cohort breakdown table.

Expected result: A Chart and Table showing per-cohort completion rates, total enrolled, and average progress appear on the canvas. The data updates automatically when the enrollment data refreshes.

5

Set up automated at-risk learner alerts with Retool Workflows

To proactively identify and notify managers about at-risk learners — those who have been inactive for two weeks or more — create a Retool Workflow that runs weekly and sends alerts. Navigate to the Workflows section in Retool's home page sidebar (lightning bolt icon). Click New Workflow. On the workflow canvas, click Add Trigger and select Schedule. Set the schedule to run every Monday at 8:00 AM in your organization's timezone. Add a Resource Query block: select your Udacity Enterprise API resource, set Method to GET, and Path to /enrollments with parameters to fetch all active enrollments. Configure the block's timeout to 30 seconds for large enrollment lists. Add a Code block after the enrollment query. Write JavaScript to filter the enrollments for at-risk learners: those with last_activity_at more than 14 days ago and status not 'completed'. For each at-risk learner, collect their email, manager email (if available from your HR system), program title, and days since last activity. Add a second Resource Query block using your Slack resource (or email resource). Set it to post a summary message to your #learning-ops Slack channel listing the at-risk learners with their programs and inactivity duration. Alternatively, use a Loop block to send individual Slack DMs or emails to each learner's manager. Click Publish Release to activate the workflow. The schedule trigger will fire every Monday morning, check Udacity progress data, and send alerts for any at-risk learners.

atRiskFilter.js
1// Code block: filter at-risk learners from Udacity enrollment data
2const enrollments = block1.data.enrollments || block1.data || [];
3const TWO_WEEKS_MS = 14 * 24 * 60 * 60 * 1000;
4const now = new Date();
5
6const atRisk = enrollments.filter(e => {
7 if (e.status === 'completed') return false;
8 if (!e.last_activity_at) return true; // never logged in
9 const lastActivity = new Date(e.last_activity_at);
10 return (now - lastActivity) > TWO_WEEKS_MS;
11}).map(e => ({
12 email: e.learner_email || e.email,
13 program: e.program_title || e.nanodegree_title,
14 progress: e.progress_percentage || 0,
15 daysSinceActivity: e.last_activity_at
16 ? Math.floor((now - new Date(e.last_activity_at)) / (1000 * 60 * 60 * 24))
17 : 'never logged in'
18}));
19
20return atRisk;

Pro tip: If your organization's HR database contains manager email addresses linked to employee emails, add a database Resource Query block between the Udacity fetch and the Slack alert to join learner emails with manager emails — this enables targeted manager notifications rather than a single ops-channel dump.

Expected result: The Workflow is published and appears as active in the Workflows list. On the next scheduled Monday, it runs automatically and posts at-risk learner data to the configured Slack channel.

Common use cases

Build a Nanodegree cohort completion tracker

Create a Retool dashboard that fetches all active Nanodegree enrollments for your organization, groups learners by cohort and program, and displays completion rates, average progress percentages, and days remaining in the program. L&D managers can filter by department, cohort start date, or program type to quickly identify which groups are on track and which need intervention.

Retool Prompt

Build a cohort tracker that fetches Udacity enrollments from the API, groups them by program_key and cohort_id in a JavaScript transformer, and displays a summary Table with columns for program_name, cohort, total_enrolled, completed_count, in_progress_count, and completion_rate. Add a bar chart showing completion rates by department.

Copy this prompt to try it in Retool

At-risk learner identification panel

Build a Retool app that queries Udacity learner progress and flags students who have not logged in within the past 14 days or whose progress percentage has not changed in the past week. L&D coordinators can view these at-risk learners, see their last activity date and current module, and trigger a re-engagement workflow — sending a reminder message or scheduling a check-in call directly from the Retool interface.

Retool Prompt

Create an at-risk learner panel that fetches progress data from the Udacity API, filters for learners with last_activity_date older than 14 days or progress unchanged from previous week, displays them in a Table with employee email, program, cohort, last_login, and current progress. Add a 'Send Reminder' button that triggers a Slack or email notification.

Copy this prompt to try it in Retool

Employee upskilling ROI dashboard

Build an executive-facing Retool dashboard that combines Udacity completion data with your internal HR database to calculate ROI metrics: completion rate by team, average cost per completion (based on Udacity seat pricing), and correlation between Nanodegree completion and promotion or retention rates. The dashboard provides L&D leadership with data to justify continued investment in specific Nanodegree programs.

Retool Prompt

Build an ROI dashboard that joins Udacity completion data (from the Udacity REST API resource) with employee records (from the internal HR PostgreSQL database), calculates cost_per_completion and completion_by_department, and displays a KPI summary with Charts for trend lines showing completion rates over the past 6 months.

Copy this prompt to try it in Retool

Troubleshooting

API requests return 401 Unauthorized even with the correct Bearer token in the resource configuration

Cause: Udacity enterprise API tokens may have an expiration period, or the token may need to be scoped to specific endpoints in the Udacity admin portal. The token may also need to be prefixed differently (e.g., 'Token' instead of 'Bearer' depending on Udacity's API version).

Solution: Verify the token is active in the Udacity enterprise admin portal and has not expired. Check whether Udacity's API requires 'Token your_key' vs 'Bearer your_key' in the Authorization header — try switching the authentication type in the resource from 'Bearer Token' to 'Custom' and manually setting the Authorization header value. Contact your Udacity account manager to confirm the correct authentication format for your enterprise tier.

Enrollment data is empty or returns far fewer learners than expected

Cause: The API query may be missing required organization or program scope parameters, or Udacity's API may be paginating results with a small default page size and only the first page is being fetched.

Solution: Add explicit pagination parameters to your query (page=1, per_page=100 or the maximum allowed). Check whether your API token is scoped to a specific program or cohort and not returning org-wide data. Review Udacity's API response for a 'total_count' or 'total_pages' field and implement multi-page fetching in a Retool Workflow if needed.

Progress percentage is always 0 or null for all learners despite active enrollments in Udacity

Cause: Progress data may be available on a separate endpoint (e.g., /learners/{id}/progress) rather than included in the bulk enrollment list response, requiring individual learner queries to populate progress fields.

Solution: Check the Udacity API documentation for whether progress is returned in the enrollments list or requires a separate progress endpoint. If separate, use a Retool Workflow with a Loop block to fetch progress for each enrolled learner individually and aggregate the results — avoid doing this in an app-level query as it may make hundreds of API calls simultaneously.

Dashboard loads slowly when the organization has hundreds of enrolled learners

Cause: Fetching and transforming large volumes of enrollment and progress data in the app's query layer causes slow initial load times, especially if progress requires multiple API calls.

Solution: Move the heavy data aggregation into a Retool Workflow that runs nightly and writes the computed metrics to a Retool Database table. Your Retool app then reads from this pre-computed table (a simple SQL query) rather than calling the Udacity API on every page load, resulting in sub-second dashboard load times.

Best practices

  • Store your Udacity API token in a Retool configuration variable marked as secret (Settings → Configuration Variables) rather than pasting it directly in the resource configuration, to prevent other Retool admins from viewing the raw token.
  • Implement caching on your enrollment queries (set a cache duration of 1-4 hours) to avoid hammering the Udacity API on every dashboard load — learning data does not change by the minute.
  • Use Retool Workflows for heavy data processing like cohort aggregations or at-risk learner identification — run them on a schedule and write results to Retool Database so your app reads pre-computed data rather than computing on every load.
  • Combine Udacity enrollment data with your internal HR database in a JavaScript query to add employee department, manager, and job title context to each learner record for richer operational reporting.
  • Filter your enrollment queries by active status (exclude completed or withdrawn learners) for the main dashboard, and provide a separate 'Completed' view with its own query to keep the primary table manageable.
  • Add date range filters to your Retool dashboard so L&D managers can view enrollment and completion trends over specific quarters or fiscal periods rather than all-time data.
  • Test your integration with a small cohort or single program filter before expanding to the full organization enrollment list, to validate response structure and transformer logic before processing thousands of records.

Alternatives

Frequently asked questions

Does Udacity offer a public REST API that any customer can use?

Udacity's API access is primarily available to enterprise customers through their Udacity for Business or Enterprise tier plans. Individual consumer accounts have limited API access for personal learner data. Contact Udacity's enterprise sales team to enable API access for your organization and receive API credentials and documentation.

Can I view individual learner progress for specific modules, not just overall completion percentage?

Depending on your Udacity API tier, individual module or project-level progress may be available via a dedicated learner progress endpoint (e.g., /learners/{learner_id}/progress). This typically returns a breakdown by Nanodegree section or project. Check your enterprise API documentation — if available, create a second Retool query that fetches per-module progress when a specific learner row is selected in your enrollment table.

How do I connect Retool to Udacity alongside our internal HR system?

Create two separate Resources in Retool: one for the Udacity REST API and one for your HR database (PostgreSQL, MySQL, or another database Resource). In your app, run both queries in parallel and use a JavaScript query to join the results on a common key (typically employee email address). This produces a merged dataset with both Udacity progress data and HR attributes like department, team, and manager name.

Can Retool automatically send reminders to Udacity learners who are falling behind?

Yes, using Retool Workflows. Build a scheduled Workflow that fetches Udacity enrollment data, identifies at-risk learners (based on inactivity duration or low progress), and sends reminder messages via Slack or email for each at-risk learner. The Workflow runs server-side on a schedule without requiring any user to be logged into Retool.

What should I do if Udacity does not provide API access for my subscription tier?

If API access is not available, you can build a manual data pipeline by exporting enrollment and progress reports from the Udacity for Business admin portal as CSV files, uploading them to Retool Database or your internal database, and querying that data from Retool. While this requires a manual refresh step, it still enables the same dashboard and analytics capabilities without direct API integration.

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