---
title: "Mintlify to Slack Canvas Migration | ClonePartner"
description: "Mintlify to Slack Canvas: Mintlify provides no endpoint to list or export all pages in bulk; the only reliable migration source is the Git repository itself…"
source: Mintlify
target: Slack Canvas
canonical: "https://clonepartner.com/migrate/mintlify-to-slack-canvas"
---

# Mintlify → Slack Canvas migration

Mintlify to Slack Canvas migration — documents moved in bulk and attached to the channels your team already works in.

## Why teams migrate from Mintlify to Slack Canvas

Migrating from Mintlify to Slack Canvas has no native export path or migration wizard; Mintlify's source of truth is a Git repository containing MDX files and a declarative docs.json configuration, meaning the migration begins with a filesystem clone rather than any API call. The fundamental data model difference is stark: Mintlify is a JSX-component-rich, SEO-indexed, publicly accessible documentation platform, while Slack Canvas is a flat, internal Markdown surface with no public access, no versioning, and no structured navigation. Every Mintlify-specific MDX component — including &lt;Tabs&gt;, &lt;Accordion&gt;, &lt;Card&gt;, &lt;CodeGroup&gt;, and API reference components — requires an explicit downgrade decision, as Canvas supports only a subset of standard Markdown. Custom scripting is required to parse navigation configs, strip YAML frontmatter, resolve MDX snippet imports, and convert or flatten unsupported components before content can be written to Canvas via the Slack API.

## Key migration challenges

- **No Bulk Content Export API** — Mintlify provides no endpoint to list or export all pages in bulk; the only reliable migration source is the Git repository itself, requiring a filesystem-based extraction approach rather than standard API-driven migration tooling.
- **MDX Component Downgrade Required** — Every Mintlify JSX component (<code>Tabs</code>, <code>Accordion</code>, <code>Card</code>, <code>CodeGroup</code>, <code>ParamField</code>, etc.) must be individually evaluated and either flattened, restructured, or dropped, since Slack Canvas supports only a constrained subset of standard Markdown.
- **Dual Config Schema Detection** — Mintlify repositories may use either the legacy <code>mint.json</code> flat navigation schema or the newer nested <code>docs.json</code> tabs schema, which are structurally incompatible and require separate parsing logic in any migration script.
- **Frontmatter Stripping and Remapping** — All MDX files contain YAML frontmatter that Canvas will render as literal text if not stripped; fields like <code>title</code>, <code>description</code>, and <code>sidebarTitle</code> must be extracted and remapped to Canvas-compatible constructs such as H1 headings or the <code>canvases.create</code> title parameter.
- **Snippet and Reference Resolution** — Mintlify supports shared MDX snippet files and <code>$ref</code> inclusions in navigation config that must be resolved at migration time, as Canvas has no equivalent import or transclusion mechanism and will not process raw MDX import statements.
- **Canvas Size and Structure Limits** — Slack Canvas enforces a hard 1 MiB per-document content limit, a 300-cell table cap, and a maximum heading depth of H3, meaning large or deeply structured Mintlify pages must be split or restructured to fit within these constraints.

## Entity mappings

- **Pages (MDX Files)** (Mintlify) → **Canvas Content (Markdown)** (Slack Canvas)
- **Navigation Config** (Mintlify) → **NotAvailable** (Slack Canvas)
- **API Pages** (Mintlify) → **Standalone Canvas** (Slack Canvas)
- **OpenAPI Specifications** (Mintlify) → **File Attachment** (Slack Canvas)
- **Page Groups** (Mintlify) → **Standalone Canvas** (Slack Canvas)
- **Custom Snippets** (Mintlify) → **Canvas Content (Markdown)** (Slack Canvas)
- **Images/Media Assets** (Mintlify) → **Image** (Slack Canvas)
- **Custom CSS** (Mintlify) → **NotAvailable** (Slack Canvas)
- **Branding/Theme Config** (Mintlify) → **Slack Canvas (Reference Document)** (Slack Canvas)
- **Tabs** (Mintlify) → **Channel Canvas** (Slack Canvas)
- **Redirects** (Mintlify) → **NotAvailable** (Slack Canvas)
- **Versions** (Mintlify) → **Standalone Canvas** (Slack Canvas)
- **Search Settings** (Mintlify) → **NotAvailable** (Slack Canvas)

## What breaks during migration

- **MDX Page Content (Prose)** [Direct] — Standard Markdown prose — headings, paragraphs, lists, bold, italic, code blocks, and inline links — transfers directly to Canvas without transformation, making plain-text-heavy pages the lowest-risk content type.
- **Navigation Structure** [Workaround] — The declarative <code>docs.json</code> or <code>mint.json</code> navigation tree is machine-readable and parseable, but the hierarchical tab-group-page structure has no Canvas equivalent, so structural organization must be approximated through naming conventions or channel/section groupings.
- **YAML Frontmatter Metadata** [Workaround] — Frontmatter fields like <code>title</code> and <code>sidebarTitle</code> can be remapped to Canvas constructs, but SEO fields (<code>og:image</code>, <code>og:description</code>), display modifiers (<code>mode</code>, <code>icon</code>), and other Mintlify-specific metadata have no Canvas equivalent and are permanently lost.
- **MDX Snippets and Shared Content** [Workaround] — Reusable snippet files imported across multiple MDX pages must be resolved and inlined during migration since Canvas has no transclusion mechanism, risking missed content if import paths are not correctly traced and resolved.
- **Callout Components (Note, Warning, Info, Tip)** [Direct] — Mintlify callout components map directly to Canvas native callouts, making these one of the few 1:1 component translations available in the migration.
- **Tabbed Content (Tabs Component)** [Breaks] — Canvas has no tabbed UI concept, so all <code>&lt;Tabs&gt;</code> components must be flattened into sequential H3 sections with the interactive tab-switching behavior permanently lost, which significantly degrades the reading experience for content that relies on tabs for audience-specific or language-specific variants.
- **Accordion and Collapsible Sections** [Breaks] — Canvas supports no collapsible sections, meaning all <code>&lt;Accordion&gt;</code> content must be rendered as permanently expanded headed sections, potentially making long FAQ or reference pages significantly harder to navigate.
- **API Reference and OpenAPI Specs** [Breaks] — Mintlify's interactive API reference pages — including <code>&lt;ParamField&gt;</code>, try-it playgrounds, and OpenAPI-rendered endpoints — have no Canvas equivalent, and the best possible migration output is static, unformatted parameter tables that lose all interactivity.
- **Images and Static Assets** [Workaround] — Images are present in the repository and retrievable via filesystem clone, but must be re-hosted or uploaded to a Canvas-accessible location since relative MDX image paths will not resolve inside a Slack Canvas document.
- **Markdown Tables** [Workaround] — Canvas supports markdown tables natively, but enforces a hard cap of 300 cells per table, meaning large reference tables common in API documentation must be split or converted to lists to avoid hitting this constraint.

## What we migrate

### Migration Filter

- **Time Range** — Migrate articles created or updated within a specific period
- **Language & Locale** — Migrate specific language versions or translations only
- **Category Selection** — Select specific sections, folders, or categories to migrate
- **Publication Status** — Filter by published, draft, archived, or internal-only articles

### Data Types

- **Tags & Metadata** — SEO settings, search labels, author attribution, and article tags
- **Articles & Content** — Core help articles including HTML formatting and inline images
- **Media & Attachments** — All downloadable files, PDFs, and media assets embedded in articles
- **Categories & Hierarchy** — Full folder structure with sections, sub-sections, and parent categories

## Complete technical guide

For a deep-dive into the technical process, data mapping, and step-by-step migration workflow, read our full guide: [Mintlify to Slack Canvas Migration: No API, All Filesystem](https://clonepartner.com/blog/mintlify-to-slack-canvas-migration-no-api-all-filesystem/).

## Frequently asked questions

### Does Mintlify have an API to export documentation content?

Mintlify has a REST API with a per-page content retrieval endpoint, but no bulk export. The source of truth is the Git repository. To migrate, clone the repo and read the MDX files, docs.json config, snippets, and assets directly from the filesystem.

### What formatting does Slack Canvas support?

Slack Canvas supports headings h1–h3, bold, italic, strikethrough, bulleted and ordered lists, checklists, code blocks, code spans, blockquotes, callouts, dividers, column layout, inline links, markdown tables, emojis, file unfurls, and @mentions. Block Kit is not supported inside canvases. Each canvas is limited to 1 MiB of markdown and 300 table cells.

### Can you migrate Mintlify API reference pages to Slack Canvas?

Not in any useful form. Mintlify auto-generates API reference pages from OpenAPI specs at render time — these pages have no MDX files on disk. The structured endpoint data, interactive playground, and dynamic sync with the spec do not translate to static Canvas markdown. Link to the live docs instead.

### How do Mintlify reusable snippets work in a migration?

Snippets are MDX files in a /snippets/ directory imported via JSX import statements and resolved at build time. Your migration script must inline snippet content — including parameterized values, nested snippets, and exported variables — before converting to Canvas markdown. Otherwise the Canvas will contain raw unresolved component tags.

### What are the Slack Canvas API rate limits?

canvases.create and conversations.canvases.create are Tier 2 (20+ requests per minute). canvases.edit and canvases.access.set are Tier 3 (50+ per minute). For a typical 50–150 page Mintlify site, creation completes in under 10 minutes. Larger sites need throttling with Retry-After header parsing.

## Get a fixed-price quote

[Talk to an engineer](https://clonepartner.com/talk-to-us?duration=30&utm_source=xtoy&utm_medium=button&utm_campaign=demo_bookings&utm_content=cta_click&utm_term=demo_button_click) about your Mintlify → Slack Canvas migration.
