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

How to Integrate Retool with Kentico

Connect Retool to Kentico Xperience using a REST API Resource with API key or OAuth 2.0 authentication. Kentico's Content Management REST API exposes content items, pages, languages, and workflow steps. Build editorial workflow dashboards in Retool for marketing teams managing multi-site content, bulk page publishing, and content review queues that are faster than Kentico's native administration interface.

What you'll learn

  • How to configure Kentico's Content Management API and obtain authentication credentials
  • How to create a Kentico REST API Resource in Retool with appropriate authentication
  • How to query content items, pages, and workflow states via Kentico's API
  • How to build an editorial workflow dashboard for content review and bulk publishing
  • How to use JavaScript transformers to reshape Kentico API responses for Retool Tables and Forms
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Intermediate15 min read30 minutesCMSLast updated April 2026RapidDev Engineering Team
TL;DR

Connect Retool to Kentico Xperience using a REST API Resource with API key or OAuth 2.0 authentication. Kentico's Content Management REST API exposes content items, pages, languages, and workflow steps. Build editorial workflow dashboards in Retool for marketing teams managing multi-site content, bulk page publishing, and content review queues that are faster than Kentico's native administration interface.

Quick facts about this guide
FactValue
ToolKentico
CategoryCMS
MethodREST API Resource
DifficultyIntermediate
Time required30 minutes
Last updatedApril 2026

Build a Kentico Content Management and Editorial Workflow Panel in Retool

Kentico Xperience is a powerful enterprise DXP, but its native administration UI is optimized for deep feature access rather than speed for common editorial tasks. Marketing teams that need to review dozens of content items in workflow, bulk-publish approved pages across multiple language variants, or audit content across several sites often find Kentico's native admin too slow for these repetitive operations. Retool provides a faster, purpose-built editorial panel by connecting directly to Kentico's Content Management API.

With a Retool-Kentico integration, you can build a content workflow queue showing all items awaiting review with their current workflow step, assigned reviewer, and last modified date — making it easy to see the full editorial backlog at a glance. A bulk translation status dashboard can show all content items across language variants, highlighting which items lack translations and need attention. A multi-site page publishing panel can surface recently approved pages across all connected sites for final review before publish, eliminating the need to navigate each site separately in Kentico's admin.

Kentico XbyK's Delivery API and Management API have different base URLs and authentication methods. The Delivery API (read-only, public-facing) is used for content retrieval, while the Management API requires an API key and supports create, update, workflow transition, and delete operations. This guide focuses on the Management API, which is the relevant one for building internal admin tools in Retool.

Integration method

REST API Resource

Kentico Xperience 13 and Kentico Xperience by Kentico (XbyK) expose REST APIs for content delivery and management. The Content Management API uses API key authentication (set during Kentico configuration) for server-to-server integration, while some versions support OAuth 2.0. In Retool, you configure a REST API Resource pointing to your Kentico instance with the API key in the request headers. Retool proxies all requests server-side, so credentials never reach the browser. API capabilities differ between Kentico Xperience 13 (portal-based) and XbyK (headless-first) — this guide covers XbyK's headless API patterns.

Prerequisites

  • A Kentico Xperience instance (Xperience 13 or XbyK) with Administrator access
  • The Kentico Content Management API enabled and an API key configured (in Kentico's Settings or via app configuration)
  • Your Kentico instance URL (e.g., https://yoursite.com for self-hosted, or the assigned URL for cloud-hosted)
  • Knowledge of your Kentico project's content type codenames and channel/site names
  • A Retool account with permission to create Resources

Step-by-step guide

1

Configure the Kentico Management API and obtain credentials

Kentico XbyK's Management API is enabled by default in the application but requires API key authentication to be configured. Log in to your Kentico admin interface and navigate to Settings. For XbyK (Kentico Xperience by Kentico), the Management API key is configured in your application's appsettings.json file or environment variables — look for the 'CMSApiAuthenticationOptions' or 'Kentico.Xperience.AspNet.Mvc6' configuration section. The API key is typically set as an environment variable KENTICO_MANAGEMENT_API_KEY or similar, depending on your hosting setup. Contact your Kentico developer or infrastructure team to retrieve the configured API key if you do not have direct access to the application configuration. For Kentico Xperience 13 (older platform), the REST API is enabled via Settings → Integration → REST Service in the Kentico admin interface. The authentication method differs: Kentico 13 supports Basic Authentication or custom hash authentication, while XbyK uses a Bearer API key in the Authorization header. Note the Kentico version you are running — XbyK uses base URL /api/v1/ while Kentico 13 uses /rest/. In both cases, get the API key or credentials from your development team before proceeding with the Retool configuration.

Pro tip: For XbyK, the Management API documentation is available at https://docs.xperience.io/xp/developers-and-admins/api. The API explorer at /api/v1/ on your running instance shows all available endpoints and the expected request/response shapes — useful for testing before building Retool queries.

Expected result: You have the Management API base URL and API key (or Basic Auth credentials for Kentico 13) and have confirmed the API is accessible by testing a GET request to the base URL.

2

Create the Kentico 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 'Kentico Management API'. In the Base URL field, enter your Kentico Management API base URL. For XbyK, this is typically https://yoursite.com/api/v1 — verify the exact path from your Kentico instance's API documentation, as the prefix can differ based on your application's routing configuration. For Kentico 13, the REST service base URL is usually https://yoursite.com/rest. Scroll to the Headers section. For XbyK, add an Authorization header with the value Bearer YOUR_API_KEY where YOUR_API_KEY is the management API key configured in your application. Add a Content-Type header with value application/json for write operations. For Kentico 13 with Basic Auth, instead of adding an Authorization header manually, use the Basic Auth option in the Authentication section and enter the configured username and password. Click Save Changes. Test the resource by creating a quick GET query to /content-types (XbyK) or /cms.class (Kentico 13) to confirm the connection returns content type data. If you receive a 401 Unauthorized, verify the API key matches exactly what is configured in the application's environment variables.

Pro tip: Store the Kentico Management API key in Retool's Configuration Variables (Settings → Configuration Variables) as a secret. Reference it as {{ retoolContext.configVars.KENTICO_API_KEY }} in the Authorization header. This prevents the key from being visible in Resource settings to all Retool workspace members.

Expected result: The Kentico Management API resource appears in Resources. A test GET query to /content-types returns a JSON list of content type definitions.

3

Query content items and their workflow states

Create a new query named 'getContentItems' in your Retool app's Code panel. Select your Kentico Management API resource. Set Method to GET and Path to /content-items — this lists all content items across all content types in your Kentico project. To filter by content type, add a URL parameter: 'filter' set to a value like contentTypeCodename[eq]:{{ typeFilter.value || '' }} using Kentico's filter syntax. Kentico XbyK's API also supports pagination via 'skip' and 'limit' parameters — add 'skip' set to {{ (pagination.page - 1) * (pagination.pageSize || 20) }} and 'limit' set to {{ pagination.pageSize || 20 }}. The response includes a 'value' array of content item objects with fields such as id, codename, name, collection, language_agnostic_workflow_step, and last_modified. Add a query named 'getLanguageVariants' to fetch language-specific data: GET /content-items/{{ contentItemsTable.selectedRow.id }}/variants which returns all language variants for the selected item including their workflow step, scheduled_publish_when, and published_at fields. Add a transformer to the main getContentItems query to flatten the 'value' array into table rows.

content_items_transformer.js
1// Transformer: flatten Kentico content items API response
2const items = data.value || [];
3return items.map(item => ({
4 id: item.id,
5 name: item.name || item.codename || '',
6 codename: item.codename || '',
7 collection: item.collection?.codename || 'default',
8 content_type: item.type?.codename || '',
9 last_modified: item.last_modified ? new Date(item.last_modified).toLocaleDateString() : '',
10 workflow_step: item.language_agnostic_workflow_step?.codename || 'N/A'
11}));

Pro tip: Kentico XbyK's filter syntax supports compound filters using commas: filter=contentTypeCodename[eq]:article,workflowStepIdentifier[eq]:review. Use this to build pre-filtered views for specific editorial queues without requiring the editor to manually set multiple dropdown filters.

Expected result: The getContentItems query returns a structured list of content items with codename, content type, collection, and workflow step data visible in the Results panel.

4

Build the editorial workflow dashboard UI

In the Retool canvas, drag a Table component and set its Data to {{ getContentItems.data }}. Configure columns: name, content_type, collection, workflow_step, last_modified. Add a row of filter controls above the table: a Select for content_type (populated by a GET /content-types query returning all types), a Select for workflow_step (populated by a GET /workflow/steps query), and a Text Input for name search. Below the table, create a Detail panel Container. When a row is selected (using Event Handler → 'On row click'), load the language variants for that content item using the getLanguageVariants query. Display the variants in a nested Table showing language, workflow step, scheduled publish date, and published status. Add two action buttons in the detail panel: 'Advance Workflow' and 'Return to Draft'. Create a query named 'advanceWorkflow' with POST method and path /content-items/{{ contentItemsTable.selectedRow.id }}/variants/{{ variantsTable.selectedRow.language.codename }}/workflow/next-step — this advances the selected language variant to the next workflow step. Create 'returnToDraft' with POST and path /content-items/{{ contentItemsTable.selectedRow.id }}/variants/{{ variantsTable.selectedRow.language.codename }}/workflow/codename/draft. Both queries should have an empty JSON body {} and event handlers to show notifications and refresh the content items list on success. Add Confirm Modals before the Return to Draft action since it resets an item's approval progress.

advance_workflow_config.json
1{
2 "method": "POST",
3 "path": "/content-items/{{ contentItemsTable.selectedRow.id }}/variants/{{ variantsTable.selectedRow.language.codename }}/workflow/next-step",
4 "body": {}
5}

Pro tip: Add a color coding to the workflow_step column in your Table using Column → Format → Conditional formatting. Map workflow step names to colors (e.g., 'draft' = gray, 'review' = yellow, 'approved' = green) to make the editorial queue's status immediately visible at a glance without reading each cell's text.

Expected result: A functional editorial workflow dashboard shows all content items with their workflow states, language variants, and action buttons for advancing or returning items in the workflow.

5

Add multi-site and language variant management

For organizations using Kentico to manage multiple sites or channels, create a query named 'getChannels' with GET method and path /channels to list all configured channels (websites, email, headless channels). Add a Select component for channel filtering and bind the channel codename to the content items query filter. For language management, create a query named 'getAllLanguages' with GET method and path /languages to retrieve all configured language variants in the project. Use this to build a translation completeness matrix: create a JavaScript transformer that takes the content items list and the languages list, then for each content item queries its variants to determine which languages have translations and which are missing. Display this as a Table with a column per language using conditional formatting — green cells where a translation exists in the required workflow step, red where missing or still in draft. For complex multi-channel content management workflows, automated translation triggers, and editorial notification systems integrating Kentico with Slack or email platforms, RapidDev's team can help architect your Retool content operations solution.

language_matrix_transformer.js
1// Transformer: build language coverage matrix for content items
2const items = getContentItems.data || [];
3const languages = getAllLanguages.data?.value || [];
4const variantsByItem = getVariantsMatrix.data || {}; // assumes a batch variants query
5
6return items.map(item => {
7 const row = { name: item.name, content_type: item.content_type, codename: item.codename };
8 languages.forEach(lang => {
9 const variant = (variantsByItem[item.id] || []).find(v => v.language?.codename === lang.codename);
10 row[lang.codename] = variant ? variant.workflow_step : 'Missing';
11 });
12 return row;
13});

Pro tip: The language coverage matrix transformer works best when you cache language variant data using Retool Workflows — schedule a Workflow to run every hour that pre-fetches all variants for all items and stores them in Retool Database. Your app then queries Retool Database instead of making hundreds of individual Kentico API calls, making the dashboard load instantly.

Expected result: The dashboard includes a multi-channel filter and a language coverage matrix showing translation completeness across all content items and configured languages.

Common use cases

Build an editorial workflow queue dashboard

Create a Retool panel that shows all Kentico content items currently in a workflow — grouped by their current workflow step (Draft, Review, Approved, Published). Display the content type, codename, assigned language, last modified date, and the assigned reviewer. Include one-click workflow transition buttons that advance an item to the next step or reject it back to Draft, replacing multiple clicks in Kentico's native interface.

Retool Prompt

Build a Retool editorial dashboard querying Kentico's Management API for content items in workflow. Show a Table grouped by workflow step with columns for item name, content type, language, last modified, and assigned user. Include Approve and Reject buttons that trigger workflow transition API calls.

Copy this prompt to try it in Retool

Build a multi-language content status tracker

Create a Retool translation management panel that shows all content items in the default language alongside their translation status in configured language variants. Highlight items that exist in the default language but have no translation in one or more required languages, making it easy for content managers to identify translation gaps before publishing campaigns.

Retool Prompt

Build a Retool panel querying Kentico's content items API for all items and their language variants. Show a Table with item name, content type, and a colored status cell per language (e.g., English, French, German) indicating whether a translation exists. Filter by content type and show only items missing translations in a specific language.

Copy this prompt to try it in Retool

Build a bulk page and content item management panel

Create a Retool bulk operations panel for content administrators that lists all Kentico web page content items with their current published state, last publish date, and content type. Include multi-row selection and bulk workflow action buttons for advancing multiple items from Approved to Published simultaneously, useful for scheduled content releases where many pages need to go live at the same time.

Retool Prompt

Build a Retool content management panel showing all Kentico web page items with publish state, content type, and last modified date. Add multi-select checkboxes and a Bulk Publish button that triggers workflow transition API calls for all selected items. Include filters for content type, workflow step, and language.

Copy this prompt to try it in Retool

Troubleshooting

401 Unauthorized when connecting to Kentico Management API

Cause: The API key is missing, incorrect, or not configured in the Kentico application's environment variables. The Management API requires an Authorization: Bearer header with the exact key value configured in the application settings.

Solution: Verify the API key in your Kentico application's configuration (appsettings.json or environment variable KENTICO_MANAGEMENT_API_KEY). In the Retool resource settings, confirm the Authorization header value is 'Bearer YOUR_API_KEY' with a space after Bearer and no extra quotes around the key. Test the key directly via a REST client (curl or Postman) before configuring Retool to isolate configuration issues.

404 Not Found on API endpoints — /api/v1/content-items returns nothing

Cause: The API base URL path differs from the expected pattern. Kentico XbyK's API prefix depends on the application's routing configuration, which may differ from the default /api/v1 in some hosting setups. Additionally, the Management API may not be registered in the ASP.NET application pipeline.

Solution: Check Kentico's official documentation for your specific version's API base URL. For XbyK, the Management API is typically registered at /api/v1 but can be customized in Startup.cs. Ask your Kentico developer to confirm the registered API route. Also verify that the Kentico application's program.cs or Startup.cs includes the Management API service registration (AddKenticoManagementApiClient or similar).

Workflow transition POST returns 400 Bad Request with 'invalid workflow step'

Cause: The /workflow/next-step endpoint expects the content item to be in a workflow that has a defined next step from its current position. If the item is already at the final workflow step (e.g., Published), there is no next step and the API returns a 400 error.

Solution: Check the current workflow step of the item before enabling the Advance button — only show the button when the item's workflow step is not already the final step. Use conditional visibility in the Retool button: set it to only be visible when {{ variantsTable.selectedRow.workflow_step !== 'published' }}. For items already published, show an Archive button instead that uses the appropriate archive workflow transition endpoint.

Content item updates via PATCH return 409 Conflict

Cause: Kentico uses optimistic concurrency control — update requests must include the exact 'last_modified' timestamp of the item as returned by the last GET request. If the item was modified between your GET and PATCH requests, the timestamps differ and Kentico rejects the update with a 409 Conflict.

Solution: Include the 'If-Match' header in your PATCH request with the item's last_modified value formatted as an ETag: If-Match: {{ contentItemsTable.selectedRow.last_modified }}. Retool Query headers support {{ }} expressions, so you can dynamically set this header in the query configuration. On 409 errors, re-fetch the item and retry the update with the fresh timestamp.

Best practices

  • Use a dedicated Kentico service account for the Retool integration with the minimum required permissions — read access for reporting dashboards, Editor role for editorial workflow operations, rather than a full Administrator account
  • Store the Kentico Management API key in Retool's Configuration Variables as a secret rather than in the Resource header directly, enabling key rotation without updating the Resource configuration
  • Build editorial workflow views using Kentico's server-side filters (?filter=workflowStepIdentifier[eq]:review) rather than fetching all content items and filtering client-side — large Kentico installations can have thousands of content items
  • Cache the content types and languages lists at app startup (run these queries on app load) since they change rarely, and use their results to build filter dropdowns without re-fetching on every user interaction
  • Add If-Match headers to all PATCH/update queries using the last_modified field from the previously loaded content item to respect Kentico's optimistic concurrency control and prevent overwriting concurrent edits
  • Use Retool Workflows for cross-site content synchronization tasks — create Workflows triggered by webhooks from Kentico that propagate content changes across multiple Kentico channels or related external systems
  • Implement Confirm Modals before workflow transitions that remove approvals (Return to Draft, Reject) to prevent accidental reset of editorial review progress on content items close to publishing

Alternatives

Frequently asked questions

What is the difference between Kentico Xperience 13 and XbyK (Xperience by Kentico) for Retool integration?

Kentico Xperience 13 uses the REST Service with Basic Auth or hash authentication at /rest/ endpoints, while XbyK (the modern successor) uses a Management API with Bearer token authentication at /api/v1/ endpoints. The content model, workflow concepts, and API response structures also differ significantly. This guide primarily covers XbyK's Management API — if you are running Xperience 13, consult Kentico's Xperience 13 REST API documentation for the correct endpoint paths and authentication format.

Can Retool access Kentico's Delivery API as well as the Management API?

Yes. Kentico XbyK has two APIs: the Delivery API (read-only, publicly accessible via API key, returns published content for frontend consumption) and the Management API (read-write, requires admin API key, returns draft and workflow content). For a Retool editorial dashboard, you need the Management API. For reporting dashboards that only need published content, the Delivery API is simpler to configure since it does not require admin-level credentials.

How do I manage Kentico content types (structured content schemas) from Retool?

Kentico's Management API exposes content type management endpoints at /content-types. You can GET all content types, retrieve a specific type's element definitions (field names and types), and programmatically create or update content types via POST/PATCH. In practice, content type management is typically a developer task done infrequently — Retool is better suited for the editorial operations that work within the existing content type structure.

Does Retool work with Kentico Cloud (now Kontent.ai)?

Kontent.ai (formerly Kentico Kontent) is a separate product from Kentico Xperience and has its own Management API and Delivery API. While the integration pattern in Retool is similar (REST API Resource with API key authentication), the endpoint paths, authentication format, and content model are different from Kentico Xperience. Kontent.ai uses Bearer token authentication with a Management API key generated from the Kontent.ai project settings.

Can I create new content items in Kentico from a Retool form?

Yes. Use POST /content-items with a JSON body specifying the content type codename, optional codename for the new item, and collection. After creating the item, use POST /content-items/{id}/variants/{languageCodename} with the element values (structured by the content type's elements) to create the actual language variant with content. The two-step process (create item, then create variant) reflects Kentico XbyK's separation of language-agnostic item metadata from language-specific content.

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.