# How to Integrate Retool with Later

- Tool: Retool
- Difficulty: Beginner
- Time required: 20 minutes
- Last updated: April 2026

## TL;DR

Connect Retool to Later using a REST API Resource with Later's API authentication. Build a social media scheduling management panel that displays scheduled posts across Instagram, TikTok, Pinterest, and other platforms, shows posting performance analytics, and enables content calendar visibility for marketing teams managing multi-platform visual content strategies.

## Build a Later Social Media Scheduling and Analytics Panel in Retool

Later is a leading visual content scheduling tool, particularly popular for Instagram and TikTok planning where visual grid aesthetics and timing matter. Marketing teams managing multiple client accounts or multi-platform publishing strategies often need cross-account visibility that Later's native interface organizes by individual profile. Retool provides a centralized scheduling and analytics panel by connecting to Later's API, enabling marketing operations teams to view scheduled posts across all profiles, track media library usage, and surface performance data alongside scheduling status.

With a Retool-Later integration, you can build a content calendar overview that shows all scheduled posts across platforms for a selected date range, a media library browser that displays available assets with their usage history and performance, a posting status tracker that shows which scheduled items have been successfully published versus those with errors, and a social analytics summary that aggregates engagement metrics across platforms into a single operations view. Because Retool queries run server-side through its proxy, Later API tokens are never exposed in the browser.

Later's API provides access to scheduled posts (with their platform, scheduled time, media, and caption), the media library (uploaded images and videos), and basic analytics. API access is generally available on Later's Agency and Business plans — individual and individual Plus plan users may not have API access. The integration is particularly valuable for social media agencies managing multiple client accounts through Later, where Retool can serve as a cross-account reporting and monitoring layer.

## Before you start

- A Later Business or Agency plan account with API access enabled
- A Later API access token (generated from Later's account settings or developer options)
- At least one connected social media profile in your Later account
- A Retool account with permission to create Resources
- Familiarity with Retool's Query Editor and REST API Resource basics

## Step-by-step guide

### 1. Access Later's API token from your account

Later's API access is available on Business and Agency plans. To find your API credentials, log in to your Later account at app.later.com. Navigate to your account settings by clicking your profile icon in the top-right corner and selecting 'Settings' or 'Account'. Look for an 'Integrations', 'API', or 'Developer' section in the settings menu — the exact location may vary by Later's current UI version. If your plan includes API access, you will find an option to generate or view an API access token on this page. Click 'Generate Token' or 'Create API Key' to create a new token. Copy the token immediately, as it may not be displayed again after the initial creation. If you do not see an API section in your settings, your current Later plan may not include API access — in this case, upgrade to Business or Agency, or contact Later support to confirm API availability for your account. Note: Later's API documentation is available at help.later.com/hc/en-us/articles and their developer documentation covers the available endpoints. The base API URL is typically https://api.later.com/v2/ — verify this from the official documentation as it may be updated.

**Expected result:** You have a Later API access token copied and you have confirmed the Later API base URL from the documentation.

### 2. Create the Later REST API Resource in Retool

In Retool, navigate to the Resources tab in the left sidebar and click Add Resource. Select REST API from the resource type list. Name the resource 'Later API'. In the Base URL field, enter Later's API base URL — check the current Later API documentation for the exact URL, as it follows a pattern like https://api.later.com/v2. Do not include a trailing slash. Scroll to the Headers section. Add an Authorization header with the value Bearer YOUR_LATER_API_TOKEN — replace YOUR_LATER_API_TOKEN with the token you obtained from your Later account settings. Add a second header for Content-Type with value application/json. Leave the Authentication dropdown set to None since auth is handled via the header. Click Save Changes. To verify the connection, create a quick test query in an app: set Method to GET and Path to /profiles (or the equivalent endpoint from Later's API docs) to list your connected social media profiles. A successful response with profile data confirms the resource is correctly configured. If you receive a 401 Unauthorized error, verify the token is copied completely and that the Authorization header value starts with 'Bearer ' (with a space before the token).

**Expected result:** The Later API resource appears in the Resources list. A test GET query to /profiles returns social media profile data, confirming the connection.

### 3. Query scheduled posts and build the content calendar

Create a new query named 'getScheduledPosts' in your Retool app's Code panel. Select your Later API resource. Set Method to GET and Path to /posts (verify the exact endpoint name from Later's current API documentation — it may be /scheduled_posts or /content). Add URL parameters for date filtering: 'from' set to {{ dateRange.start || new Date().toISOString() }} and 'to' set to {{ dateRange.end || new Date(Date.now() + 14 * 24 * 60 * 60 * 1000).toISOString() }} to default to the next 14 days. Add a 'profile_id' parameter bound to {{ profileSelect.value || '' }} to filter by specific social profile. The response typically includes an array of post objects with fields for id, scheduled_at (ISO timestamp), platform, profile_id, caption, media (array of media objects with URLs), status (draft, scheduled, published, error), and analytics metrics for published posts. Add a JavaScript transformer to flatten the response array and extract the first media URL from the media array for thumbnail display. Enable 'Run query when app loads' and configure the query to re-run when the dateRange or profileSelect values change using On Change event handlers.

```
// Transformer: flatten Later scheduled posts response
const posts = data.data || data.posts || data || [];
return posts.map(post => ({
  id: post.id,
  scheduled_at: post.scheduled_at ? new Date(post.scheduled_at).toLocaleString() : '',
  platform: post.platform || post.social_profile?.platform || '',
  profile_name: post.social_profile?.name || post.profile_id || '',
  caption: (post.caption || '').substring(0, 120) + ((post.caption || '').length > 120 ? '...' : ''),
  media_url: post.media?.[0]?.url || post.media_items?.[0]?.url || '',
  media_type: post.media?.[0]?.type || 'image',
  status: post.status || 'scheduled',
  likes: post.analytics?.likes || 0,
  comments: post.analytics?.comments || 0
}));
```

**Expected result:** The getScheduledPosts query returns an array of post objects with platform, scheduled time, caption, and media URL fields visible in the Results panel.

### 4. Build the content calendar dashboard UI

In the Retool canvas, add a row of filter controls at the top: a Date Range Picker component (named 'dateRange') defaulting to the next 14 days, and a Select component (named 'profileSelect') populated by a second query named 'getProfiles' that calls GET /profiles to list all connected social accounts. Below the filters, add a metrics row with Statistic components showing: Posts This Week (count of posts in the current 7-day window), Scheduled (count where status = 'scheduled'), and Published (count where status = 'published'). Add a Table component below the metrics bound to {{ getScheduledPosts.data }}. Configure columns: scheduled_at, platform (with platform icon using conditional formatting), profile_name, caption, status (with color coding — blue for scheduled, green for published, red for error), and media_url configured as an Image column type to display thumbnail previews. Add a Chart component below the table showing scheduled posts count per day — create a transformer that groups posts by date (YYYY-MM-DD of scheduled_at) and counts them, then format as Chart-compatible data with labels (dates) and a single dataset (counts). Set the Chart type to Bar to create a posting density calendar view. When a row is selected in the Table, show a detail Container below with the full caption, all media thumbnails if it is a carousel post, and engagement metrics if the post has been published.

```
// Transformer: prepare daily post count data for Chart component
const posts = getScheduledPosts.data || [];
const countsByDate = {};
posts.forEach(post => {
  const dateStr = post.scheduled_at ? post.scheduled_at.split(',')[0] : 'Unknown';
  countsByDate[dateStr] = (countsByDate[dateStr] || 0) + 1;
});
const sortedDates = Object.keys(countsByDate).sort();
return {
  labels: sortedDates,
  datasets: [{
    label: 'Scheduled Posts',
    backgroundColor: '#7c3aed',
    data: sortedDates.map(d => countsByDate[d])
  }]
};
```

**Expected result:** A functional content calendar dashboard shows scheduled posts with platform filters, thumbnail previews, status color coding, and a bar chart of daily posting density.

### 5. Add media library browser and analytics views

Create a query named 'getMediaLibrary' with GET method and path /media — this returns all items in your Later media library with thumbnail URLs, labels, dimensions, upload dates, and usage count. Add URL parameters for filtering: 'label' bound to {{ labelFilter.value || '' }}, 'type' bound to {{ typeFilter.value || '' }} (image or video), and 'limit' bound to {{ pagination.pageSize || 30 }}. Add a transformer to flatten the media array and extract key fields for table display. For analytics, create a query named 'getAnalytics' with GET method and path /analytics/posts or /posts?status=published to retrieve performance metrics for published posts. Add URL parameters for date range filtering similar to the getScheduledPosts query. Build the app with a Tab component: the first tab shows the content calendar from the previous step, the second tab shows the Media Library with an image gallery layout (use Retool's Image column type in the Table and set a tall row height to show thumbnail previews inline), and the third tab shows Analytics with a Chart of engagement by platform over time and a Table of top-performing posts sorted by engagement rate. For complex multi-account social media operations panels combining Later with your CRM data, content planning tools, or client reporting requirements, RapidDev's team can help architect your Retool marketing operations solution.

```
// Transformer: flatten Later media library response
const media = data.data || data.media || [];
return media.map(item => ({
  id: item.id,
  type: item.type || 'image',
  thumbnail_url: item.thumbnail_url || item.url || '',
  original_url: item.url || '',
  width: item.width || 0,
  height: item.height || 0,
  labels: Array.isArray(item.labels) ? item.labels.join(', ') : '',
  is_favorite: item.is_favorite ? 'Yes' : 'No',
  times_used: item.times_used || 0,
  uploaded_at: item.created_at ? new Date(item.created_at).toLocaleDateString() : ''
}));
```

**Expected result:** The app has three tabs for Content Calendar, Media Library, and Analytics, each with relevant Later data and visual displays.

## Best practices

- Store your Later API token in Retool Configuration Variables as a secret rather than hardcoding it in Resource headers, enabling token rotation without Resource reconfiguration
- Verify Later API access is included in your specific Later plan before building the integration — API access is not available on individual plans and the integration will fail silently with 401 errors on unsupported plans
- Use Later's server-side filtering parameters (date range, profile_id, status) in API queries rather than fetching all posts and filtering client-side — large Later accounts with many profiles and posts can produce large response payloads
- Enable query caching (30-60 seconds) for the getProfiles query that populates filter dropdowns, since profile lists change infrequently and caching reduces unnecessary API calls during filter interactions
- Add platform-specific views by building separate queries for each platform (Instagram, TikTok, Pinterest) using the profile_id filter, rather than loading all platforms in one query and filtering client-side — this surfaces platform-specific fields more cleanly
- Build a Retool Workflow for weekly content calendar reports — schedule a Workflow that queries Later for the upcoming week's scheduled posts, formats the data as a report, and sends it to Slack or email for team review every Monday morning
- Handle API rate limits proactively by adding query caching and avoiding 'Run query on change' for queries bound to frequently changing inputs — use debounce on text inputs and a Search button pattern instead to control when Later API calls fire

## Use cases

### Build a multi-platform content calendar dashboard

Create a Retool panel that shows all Later-scheduled posts across connected social media profiles for a configurable date range. Display scheduled time, platform (Instagram, TikTok, Pinterest), caption preview, media thumbnail URL, and posting status (scheduled, published, failed). Include filters for date range, platform, and profile to help social media managers see their full publishing queue at a glance.

Prompt example:

```
Build a Retool content calendar panel querying Later's posts API for scheduled items. Show a Table with columns for scheduled_time, platform, profile_name, caption (first 100 chars), media_type, and status. Add date range and platform filters. Include a Chart of posts per day over the next 14 days to visualize scheduling density.
```

### Build a media library asset management panel

Create a Retool media browser that shows all assets in the Later media library with thumbnail previews, labels, usage count, and whether the asset is marked as a favorite. Enable the marketing team to search and filter assets by label, media type (image vs video), and usage status, and to identify unused assets in the library that could be scheduled or archived.

Prompt example:

```
Build a Retool media library browser querying Later's media endpoint. Show a Table with media thumbnail (as an image column), file name, type, labels, times used in scheduled posts, upload date, and favorite status. Add filters for label, media type, and unused assets (times_used = 0). Include a media preview panel on row select.
```

### Build a social performance and analytics overview

Create a Retool analytics dashboard that aggregates Later's post analytics across platforms — showing engagement metrics (likes, comments, saves, shares) per published post, reach and impression totals by platform, and performance trends over time. Combine with Later's best time to post data to surface optimal scheduling windows for each connected profile.

Prompt example:

```
Build a Retool analytics panel querying Later's analytics endpoints for published posts. Show a Chart of total engagement by platform over the last 30 days, a Table of top-performing posts by engagement rate (sorted descending), and summary metric cards for total impressions, average engagement rate, and posts published this month.
```

## Troubleshooting

### 401 Unauthorized when testing the Later API connection

Cause: The API token is invalid, expired, or the Authorization header is missing the 'Bearer ' prefix. Later requires the token to be passed as a Bearer token in the Authorization header.

Solution: In your Retool Resource settings, verify the Authorization header value starts with 'Bearer ' (capital B, followed by a space) before the token string. Return to your Later account settings and regenerate the API token if you believe the existing token may be invalid or expired. Confirm your Later plan includes API access — without an eligible plan, all API requests return 401 regardless of token format.

### Transformer throws 'Cannot read property of undefined' when processing the API response

Cause: Later's API response structure may wrap results in a 'data' key, a 'posts' key, or return the array directly depending on the endpoint and API version. Accessing the wrong key produces undefined, causing map() to fail.

Solution: Add a fallback chain in your transformer to handle multiple possible response structures: const posts = data.data || data.posts || data || []. Before writing the final transformer, log the raw response data in the Retool query Results panel to see the actual top-level structure. Use optional chaining (?.) throughout the transformer when accessing nested fields like post.media?.[0]?.url.

```
const posts = data.data || data.posts || (Array.isArray(data) ? data : []);
if (!Array.isArray(posts)) {
  console.log('Unexpected response structure:', JSON.stringify(Object.keys(data || {})));
  return [];
}
return posts.map(post => ({ id: post.id, caption: post.caption || '' }));
```

### API returns posts but media thumbnail URLs are empty or broken in the Retool Table image column

Cause: Later media URLs may be time-limited signed URLs that expire within a few hours of generation. If the API response is cached or the URL was generated for a previous session, the thumbnail link may no longer be valid when rendered in the Retool Table.

Solution: Avoid caching the getScheduledPosts query (disable cache in Advanced settings) to ensure fresh signed URLs are generated with each request. If thumbnails still break, check whether Later returns a separate 'thumbnail_url' field (which may have a longer TTL) alongside the main 'url' field — use the thumbnail URL for display in the Table and the full URL only for detail views.

### API does not return analytics data for scheduled posts

Cause: Analytics and engagement metrics are only available for posts that have already been published. Scheduled (future) posts have no engagement data yet. The analytics fields (likes, comments, reach) will be null or absent for posts with status 'scheduled' or 'draft'.

Solution: Filter the analytics view to show only published posts: in the getAnalytics query, add a status=published URL parameter. In the getScheduledPosts transformer, handle missing analytics gracefully: likes: post.analytics?.likes || 0. Build a separate analytics query that specifically targets the published posts endpoint rather than mixing scheduled and published posts in the same query.

## Frequently asked questions

### Does Retool have a native Later connector?

No, Retool does not have a native Later connector. You connect via a REST API Resource using a Later API access token as a Bearer token. Despite the manual setup, this approach gives you access to Later's API endpoints for scheduled posts, media library, profile management, and analytics data.

### Which Later plans include API access?

Later's API access is generally available on Business and Agency plans. Individual and Individual Plus plans typically do not include API access. If you are unsure about your plan's API access, check Later's account settings for an API or Developer section, or contact Later support. The Later website's plan comparison page lists API access as a feature for eligible tiers.

### Can I schedule new posts from Retool to Later?

If Later's API supports POST requests to create scheduled posts (check their current API documentation), yes — you can build a post creation form in Retool that submits to Later's posts endpoint. However, Later's API is primarily read-focused, and creating posts with media typically requires uploading media assets first via a separate media upload endpoint before referencing them in the post creation request. Check Later's developer documentation for the current scope of write operations.

### How do I show posts from multiple Later accounts in one Retool dashboard?

If your Later Agency plan manages multiple client accounts, each account has its own API token. In Retool, you can create multiple Later API Resources — one per account — or dynamically select the token based on a client dropdown. Create a configuration table in Retool Database mapping client names to their API tokens (stored as encrypted configuration variables), then use the selected client's token in queries via a dynamic header value.

### Can I display media thumbnails from Later in a Retool Table?

Yes. Set the column type to 'Image' in the Retool Table's column configuration for the media_url column. Retool will render the image inline in the table cell. Note that Later media URLs may be time-limited signed URLs — avoid long cache durations on queries serving image URLs to ensure thumbnails remain valid when displayed. For gallery-style layouts, use Retool's Listview component instead of a Table for a more visual media browser.

---

Source: https://www.rapidevelopers.com/retool-integrations/later
© RapidDev — https://www.rapidevelopers.com/retool-integrations/later
