SignalWire Docs

developer.signalwire.com
Websites

a[href="/docs"] {

llms.txt
    @font-face {
font-family: 'Lexend';
src: url('https://files.buildwithfern.com/signalwire.docs.buildwithfern.com/docs/0601e0a909219a542cdd581e3f8f1ff8fb208978cbc9bca1c90df02fd8062bb1/assets/fonts/lexend-400.woff2') format('woff2');
font-weight: 400;
font-style: normal;
font-display: swap;

} @font-face { font-family: 'Instrument Sans'; src: url('https://files.buildwithfern.com/signalwire.docs.buildwithfern.com/docs/2ee17598a98d8a59e4df8152d015bec9ab8e4d5672cc0ab42bef806b568e3971/assets/fonts/instrument-sans.woff2') format('woff2'); font-weight: 700; font-style: normal; font-display: swap; } @font-face { font-family: 'Instrument Sans'; src: url('https://files.buildwithfern.com/signalwire.docs.buildwithfern.com/docs/2ee17598a98d8a59e4df8152d015bec9ab8e4d5672cc0ab42bef806b568e3971/assets/fonts/instrument-sans.woff2') format('woff2'); font-weight: 500; font-style: normal; font-display: swap; } @font-face { font-family: 'JetBrains Mono'; src: url('https://files.buildwithfern.com/signalwire.docs.buildwithfern.com/docs/14425ba9c695763c1547f48a206b7aa60350a33ae23de09f0407877f3fcd89eb/assets/fonts/jetbrains-mono-400.woff2') format('woff2'); font-weight: 400; font-style: normal; font-display: swap; }

    :root {
      --header-height: 64px;
      --header-height-real: 64px;
      --mobile-header-height-real: 64px;
      --content-width: 640px;
      --sidebar-width: 288px;
      --page-width: 100vw;
      --logo-height: 25px;
      --font-body: 'Lexend', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
      --font-heading: 'Instrument Sans', 'Lexend', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
      --font-code: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace;
    }

    :root {
     
      

      /* for backwards compatibility */
      --typography-body-font-family: var(--font-body);
      --typography-heading-font-family: var(--font-heading);
      --typography-code-font-family: var(--font-code);
    }

    .light, :root {

--accent-1: #f8f9fa; --accent-2: #f1f5fc; --accent-3: #e5edfd; --accent-4: #d5e5ff; --accent-5: #c2daff; --accent-6: #acccff; --accent-7: #93b9ff; --accent-8: #709ffd; --accent-9: #044ef4; --accent-10: #0544d3; --accent-11: #104edd; --accent-12: #102c68;

--accent-a1: #50515203; --accent-a2: #1563fc0a; --accent-a3: #bbd1ff55; --accent-a4: #d5e5ff; --accent-a5: #c2daff; --accent-a6: #acccff; --accent-a7: #93b9ff; --accent-a8: #0000ff55; --accent-a9: #004bf4fb; --accent-a10: #0040d2fa; --accent-a11: #0042dbef; --accent-a12: #001e5eef;

--accent-contrast: #fff; --accent-surface: #eff4fdcc; --accent-indicator: #044ef4; --accent-track: #044ef4; }

@supports (color: color(display-p3 1 1 1)) { @media (color-gamut: p3) { .light, :root { --accent-1: oklch(98.1% 0.0019 263.1); --accent-2: oklch(96.8% 0.0105 263.1); --accent-3: oklch(94.5% 0.0224 263.1); --accent-4: oklch(91.9% 0.0441 263.1); --accent-5: oklch(88.6% 0.0667 263.1); --accent-6: oklch(84.5% 0.0932 263.1); --accent-7: oklch(78.8% 0.1134 263.1); --accent-8: oklch(71% 0.1478 263.1); --accent-9: oklch(51.1% 0.2539 263.1); --accent-10: oklch(46.2% 0.2255 263.1); --accent-11: oklch(49% 0.2255 263.1); --accent-12: oklch(31.3% 0.1117 263.1);

  --accent-a1: color(display-p3 0 0.0078 0.0078 / 0.008);
  --accent-a2: color(display-p3 0 0.251 0.8667 / 0.032);
  --accent-a3: color(display-p3 0 0.298 0.9412 / 0.08);
  --accent-a4: color(display-p3 0.5843 0.7176 1 / 0.334);
  --accent-a5: color(display-p3 0 0.3333 0.9882 / 0.204);
  --accent-a6: color(display-p3 0 0.3333 0.9765 / 0.288);
  --accent-a7: color(display-p3 0 0.2902 0.9608 / 0.38);
  --accent-a8: color(display-p3 0 0.2745 0.9451 / 0.512);
  --accent-a9: color(display-p3 0 0.2039 0.9137 / 0.872);
  --accent-a10: color(display-p3 0 0.1725 0.7725 / 0.888);
  --accent-a11: color(display-p3 0 0.1882 0.8118 / 0.856);
  --accent-a12: color(display-p3 0 0.0863 0.3333 / 0.908);

  --accent-contrast: #fff;
  --accent-surface: color(display-p3 0.9373 0.9529 0.9843 / 0.8);
  --accent-indicator: oklch(51.1% 0.2539 263.1);
  --accent-track: oklch(51.1% 0.2539 263.1);
}

} }

    .light, :root {

--grayscale-1: #fcfcfd; --grayscale-2: #f9f9fb; --grayscale-3: #f0f0f3; --grayscale-4: #e8e8ec; --grayscale-5: #e0e1e6; --grayscale-6: #d9d9e0; --grayscale-7: #cdced6; --grayscale-8: #b9bbc6; --grayscale-9: #8b8d98; --grayscale-10: #80838d; --grayscale-11: #60646c; --grayscale-12: #1c2024;

--grayscale-a1: #00005503; --grayscale-a2: #00005506; --grayscale-a3: #0000330f; --grayscale-a4: #00002d17; --grayscale-a5: #0009321f; --grayscale-a6: #00002f26; --grayscale-a7: #00062e32; --grayscale-a8: #00083046; --grayscale-a9: #00051d74; --grayscale-a10: #00071b7f; --grayscale-a11: #0007149f; --grayscale-a12: #000509e3;

--grayscale-contrast: #000; --grayscale-surface: #ffffffcc; --grayscale-indicator: #8b8d98; --grayscale-track: #8b8d98; }

@supports (color: color(display-p3 1 1 1)) { @media (color-gamut: p3) { .light, :root { --grayscale-1: color(display-p3 0.988 0.988 0.992); --grayscale-2: color(display-p3 0.976 0.976 0.984); --grayscale-3: color(display-p3 0.94 0.941 0.953); --grayscale-4: color(display-p3 0.908 0.909 0.925); --grayscale-5: color(display-p3 0.88 0.881 0.901); --grayscale-6: color(display-p3 0.85 0.852 0.876); --grayscale-7: color(display-p3 0.805 0.808 0.838); --grayscale-8: color(display-p3 0.727 0.733 0.773); --grayscale-9: color(display-p3 0.547 0.553 0.592); --grayscale-10: color(display-p3 0.503 0.512 0.549); --grayscale-11: color(display-p3 0.379 0.392 0.421); --grayscale-12: color(display-p3 0.113 0.125 0.14);

  --grayscale-a1: #00005503;
  --grayscale-a2: #00005506;
  --grayscale-a3: #0000330f;
  --grayscale-a4: #00002d17;
  --grayscale-a5: #0009321f;
  --grayscale-a6: #00002f26;
  --grayscale-a7: #00062e32;
  --grayscale-a8: #00083046;
  --grayscale-a9: #00051d74;
  --grayscale-a10: #00071b7f;
  --grayscale-a11: #0007149f;
  --grayscale-a12: #000509e3;

  --grayscale-contrast: #000;
  --grayscale-surface: color(display-p3 1 1 1 / 80%);
  --grayscale-indicator: color(display-p3 0.547 0.553 0.592);
  --grayscale-track: color(display-p3 0.547 0.553 0.592);
}

} }

    .dark {

--accent-1: #091110; --accent-2: #0e1b19; --accent-3: #062c28; --accent-4: #003b35; --accent-5: #004842; --accent-6: #005750; --accent-7: #0e6961; --accent-8: #0d8076; --accent-9: #40e0d0; --accent-10: #2fd5c6; --accent-11: #32d7c7; --accent-12: #b9f6ed;

--accent-a1: #00ce0004; --accent-a2: #0ffb2b0e; --accent-a3: #00fe9820; --accent-a4: #00feb330; --accent-a5: #00fcc53e; --accent-a6: #00fdcf4e; --accent-a7: #0efdd861; --accent-a8: #0cffde79; --accent-a9: #47feeadf; --accent-a10: #36ffebd3; --accent-a11: #3affead5; --accent-a12: #c0fff5f6;

--accent-contrast: #042824; --accent-surface: #0e281a80; --accent-indicator: #40e0d0; --accent-track: #40e0d0; }

@supports (color: color(display-p3 1 1 1)) { @media (color-gamut: p3) { .dark { --accent-1: oklch(16.9% 0.0126 185.1); --accent-2: oklch(20.7% 0.0187 185.1); --accent-3: oklch(26.7% 0.0423 185.1); --accent-4: oklch(31.3% 0.0628 185.1); --accent-5: oklch(35.9% 0.0687 185.1); --accent-6: oklch(41% 0.0723 185.1); --accent-7: oklch(47.1% 0.0793 185.1); --accent-8: oklch(54% 0.0926 185.1); --accent-9: oklch(82.2% 0.1307 185.1); --accent-10: oklch(79% 0.1307 185.1); --accent-11: oklch(79.5% 0.1307 185.1); --accent-12: oklch(92.9% 0.0629 185.1);

  --accent-a1: color(display-p3 0 0.9608 0 / 0.013);
  --accent-a2: color(display-p3 0.2745 1 0.2392 / 0.054);
  --accent-a3: color(display-p3 0.1882 0.9961 0.6431 / 0.121);
  --accent-a4: color(display-p3 0.2275 1 0.7333 / 0.183);
  --accent-a5: color(display-p3 0.2863 1 0.8 / 0.237);
  --accent-a6: color(display-p3 0.3333 1 0.8392 / 0.299);
  --accent-a7: color(display-p3 0.4078 1 0.8784 / 0.37);
  --accent-a8: color(display-p3 0.4275 1 0.8941 / 0.465);
  --accent-a9: color(display-p3 0.5216 1 0.9373 / 0.859);
  --accent-a10: color(display-p3 0.4902 0.9961 0.9333 / 0.814);
  --accent-a11: color(display-p3 0.502 1 0.9294 / 0.822);
  --accent-a12: color(display-p3 0.8078 0.9961 0.9686 / 0.955);

  --accent-contrast: #042824;
  --accent-surface: color(display-p3 0.0706 0.149 0.102 / 0.5);
  --accent-indicator: oklch(82.2% 0.1307 185.1);
  --accent-track: oklch(82.2% 0.1307 185.1);
}

} }

    .dark {

--grayscale-1: #111113; --grayscale-2: #18191b; --grayscale-3: #212225; --grayscale-4: #272a2d; --grayscale-5: #2e3135; --grayscale-6: #363a3f; --grayscale-7: #43484e; --grayscale-8: #5a6169; --grayscale-9: #696e77; --grayscale-10: #777b84; --grayscale-11: #b0b4ba; --grayscale-12: #edeef0;

--grayscale-a1: #00000000; --grayscale-a2: #d8f4f609; --grayscale-a3: #ddeaf814; --grayscale-a4: #d3edf81d; --grayscale-a5: #d9edfe25; --grayscale-a6: #d6ebfd30; --grayscale-a7: #d9edff40; --grayscale-a8: #d9edff5d; --grayscale-a9: #dfebfd6d; --grayscale-a10: #e5edfd7b; --grayscale-a11: #f1f7feb5; --grayscale-a12: #fcfdffef;

--grayscale-contrast: #fff; --grayscale-surface: rgba(0, 0, 0, 0.05); --grayscale-indicator: #696e77; --grayscale-track: #696e77; }

@supports (color: color(display-p3 1 1 1)) { @media (color-gamut: p3) { .dark { --grayscale-1: color(display-p3 0.067 0.067 0.074); --grayscale-2: color(display-p3 0.095 0.098 0.105); --grayscale-3: color(display-p3 0.13 0.135 0.145); --grayscale-4: color(display-p3 0.156 0.163 0.176); --grayscale-5: color(display-p3 0.183 0.191 0.206); --grayscale-6: color(display-p3 0.215 0.226 0.244); --grayscale-7: color(display-p3 0.265 0.28 0.302); --grayscale-8: color(display-p3 0.357 0.381 0.409); --grayscale-9: color(display-p3 0.415 0.431 0.463); --grayscale-10: color(display-p3 0.469 0.483 0.514); --grayscale-11: color(display-p3 0.692 0.704 0.728); --grayscale-12: color(display-p3 0.93 0.933 0.94);

  --grayscale-a1: #00000000;
  --grayscale-a2: #d8f4f609;
  --grayscale-a3: #ddeaf814;
  --grayscale-a4: #d3edf81d;
  --grayscale-a5: #d9edfe25;
  --grayscale-a6: #d6ebfd30;
  --grayscale-a7: #d9edff40;
  --grayscale-a8: #d9edff5d;
  --grayscale-a9: #dfebfd6d;
  --grayscale-a10: #e5edfd7b;
  --grayscale-a11: #f1f7feb5;
  --grayscale-a12: #fcfdffef;

  --grayscale-contrast: #fff;
  --grayscale-surface: color(display-p3 0 0 0 / 5%);
  --grayscale-indicator: color(display-p3 0.415 0.431 0.463);
  --grayscale-track: color(display-p3 0.415 0.431 0.463);
}

} }

    .light, :root {
      color-scheme: light;
      --accent: rgba(4, 78, 244, 1);
      --background: rgba(250, 251, 252, 1);
      --border: initial;
      --sidebar-background: initial;
      --header-background: color-mix(in srgb, var(--background), transparent 30%);
      --card-background: initial;
      --theme-color: #fafbfc;
    }

    .dark {
      color-scheme: dark;
      --accent: rgba(64, 224, 208, 1);
      --background: rgba(14, 14, 24, 1);
      --border: initial;
      --sidebar-background: initial;
      --header-background: color-mix(in srgb, var(--background), transparent 30%);
      --card-background: initial;
      --theme-color: #0e0e18;
    }

    

  

    

    

    /* =============================================================================

SIGNALWIRE BRAND TOKENS Source: temp/signalwire-tokens.css (extracted from the brand style guide) ============================================================================= */

/* --- Brand palette (locked, mode-independent) --- */ :root { --sw-blue: #044EF4; --sw-fuchsia: #F72A72; --sw-turquoise: #40E0D0; --sw-gold: #FFD700;

--sw-purple: #601BE6;

/* RGB channels for alpha compositing */ --sw-blue-rgb: 4, 78, 244; --sw-fuchsia-rgb: 247, 42, 114; --sw-turquoise-rgb: 64, 224, 208; --sw-gold-rgb: 255, 215, 0; --sw-purple-rgb: 96, 27, 230;

/* Fixed light background (stays light in both themes) */ --sw-light-bg: #FAFBFC;

/* Typography (mode-independent) */ --type-line-height-body: 1.7; --type-line-height-heading: 1.2; --type-letter-spacing-eyebrow: 0.14em; --type-size-code: 14px;

/* Radius */ --radius-sm: 4px; --radius-xl: 12px; }

/* --- Dark mode tokens --- / .dark { / Surfaces */ --bg-page: #0e0e18; --bg-surface: #181a28; --bg-surface-raised: #222436;

/* Foreground */ --fg-default: #f0f0f4; --fg-secondary: #e8e8ec; --fg-muted: #a0a0aa; --fg-subtle: #73737e; --fg-headings: var(--fg-default); --fg-emphasis: var(--sw-turquoise); --fg-emphasis-small: var(--sw-turquoise);

/* Borders */ --border-default: rgba(255, 255, 255, 0.12); --border-strong: rgba(255, 255, 255, 0.15);

/* Inline code */ --code-bg: rgba(255, 255, 255, 0.06); --code-fg: var(--sw-turquoise);

/* Links */ --interactive-link-default: var(--sw-turquoise); --interactive-link-hover: var(--sw-fuchsia); --interactive-link-visited: var(--fg-muted);

/* Callouts */ --callout-info-bg: rgba(var(--sw-blue-rgb), 0.06); --callout-info-border: rgba(var(--sw-blue-rgb), 0.18); --callout-warn-bg: rgba(var(--sw-gold-rgb), 0.04); --callout-warn-border: rgba(var(--sw-gold-rgb), 0.16); --callout-danger-bg: rgba(var(--sw-fuchsia-rgb), 0.06); --callout-danger-border: rgba(var(--sw-fuchsia-rgb), 0.18); --callout-success-bg: rgba(var(--sw-turquoise-rgb), 0.06); --callout-success-border: rgba(var(--sw-turquoise-rgb), 0.18);

/* Tables */ --table-header-bg: transparent; --table-header-text: var(--sw-fuchsia); --table-row-hover: rgba(255, 255, 255, 0.03); --table-border: rgba(255, 255, 255, 0.07);

/* Card */ --card-hover-border: var(--fg-default); --card-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); --card-inset: inset 0 1px 0 rgba(255, 255, 255, 0.04); --card-inset-hover: inset 0 1px 0 rgba(255, 255, 255, 0.06);

--card-hover-shadow: 0 16px 40px rgba(0, 0, 0, 0.25);

/* Status */ --status-success: #22c55e; --status-error: #ef4444; --status-neutral: #a0a0aa; }

/* --- Light mode tokens --- / :root:not(.dark) { / Surfaces */ --bg-page: #FAFBFC; --bg-surface: #F3F4F6; --bg-surface-raised: #E8EAF0;

/* Foreground / --fg-default: #1A1A18; --fg-secondary: #3A3A38; --fg-muted: #737371; --fg-subtle: #A8A8A6; --fg-headings: #070c2d; --fg-emphasis: var(--sw-fuchsia); --fg-emphasis-small: #AB0A42; / Darkened fuchsia — AAA on light bg (7.1:1) */

/* Borders */ --border-default: rgba(0, 0, 0, 0.1); --border-strong: rgba(0, 0, 0, 0.18);

/* Inline code */ --code-bg: rgba(0, 0, 0, 0.06); --code-fg: var(--sw-blue);

/* Links */ --interactive-link-default: var(--sw-blue); --interactive-link-hover: var(--sw-fuchsia); --interactive-link-visited: var(--fg-muted);

/* Callouts */ --callout-info-bg: rgba(var(--sw-blue-rgb), 0.06); --callout-info-border: rgba(var(--sw-blue-rgb), 0.18); --callout-warn-bg: rgba(var(--sw-gold-rgb), 0.04); --callout-warn-border: rgba(var(--sw-gold-rgb), 0.16); --callout-danger-bg: rgba(var(--sw-fuchsia-rgb), 0.06); --callout-danger-border: rgba(var(--sw-fuchsia-rgb), 0.18); --callout-success-bg: rgba(var(--sw-turquoise-rgb), 0.06); --callout-success-border: rgba(var(--sw-turquoise-rgb), 0.18);

/* Tables */ --table-header-bg: var(--sw-blue); --table-header-text: #ffffff; --table-row-hover: rgba(0, 0, 0, 0.02); --table-border: rgba(0, 0, 0, 0.1);

/* Card */ --card-hover-border: var(--sw-blue); --card-shadow: 0 2px 8px rgba(0, 0, 0, 0.1); --card-inset: 0 0 0 0 transparent; --card-inset-hover: 0 0 0 0 transparent;

--card-hover-shadow: 0 16px 40px rgba(0, 0, 0, 0.1);

/* Status */ --status-success: #16a34a; --status-error: #dc2626; --status-neutral: #737371; }

/* ============================================================================= SIGNALWIRE BRAND OVERRIDES Applies brand tokens to Fern components. Requires brand-tokens.css. ============================================================================= */

/* --- Headings: neutral color, not accent (brand rule: colored headings = violation) --- */ h1, h2, h3, h4, h5, h6, .fern-page-heading { color: var(--fg-headings); letter-spacing: -0.02em; line-height: var(--type-line-height-heading); }

/* --- Body: DTCG line-height --- */ body { line-height: var(--type-line-height-body); }

/* --- Links: brand link colors with fuchsia hover --- */ .fern-mdx-link, .fern-markdown a:not([class]) { transition: color 0.15s ease; }

.fern-mdx-link:hover, .fern-markdown a:not([class]):hover, .fern-mdx-link:hover code, .fern-markdown a:not([class]):hover code { color: var(--interactive-link-hover); }

/* --- Inline code: brand code colors per mode --- */ :not(pre) > code { background: var(--code-bg); color: var(--code-fg); border-radius: var(--radius-sm); padding: 0.125em 0.375em; font-size: var(--type-size-code); }

/* --- Sidebar: brand surface color --- */ .fern-sidebar-container { background: var(--bg-surface); }

/* --- Tables: brand-aligned header and borders --- */ .fern-markdown table th { background: var(--table-header-bg); color: var(--table-header-text); border-bottom: 2px solid var(--table-border); }

.fern-markdown table td { border-bottom: 1px solid var(--table-border); }

.fern-markdown table tr:hover td { background: var(--table-row-hover); }

/* --- Callouts: brand colors via Fern's data-intent attributes --- */ .fern-callout[data-intent="note"] { background: var(--callout-info-bg); border-color: var(--callout-info-border); }

.fern-callout[data-intent="warning"] { background: var(--callout-warn-bg); border-color: var(--callout-warn-border); }

.fern-callout[data-intent="error"] { background: var(--callout-danger-bg); border-color: var(--callout-danger-border); }

.fern-callout[data-intent="success"], .fern-callout[data-intent="tip"], .fern-callout[data-intent="check"] { background: var(--callout-success-bg); border-color: var(--callout-success-border); }

/* --- Cards: matches .lp-feature from style guide. Raised bg, depth shadow, inset highlight, fuchsia ring on hover. No colored borders on any state (brand rule). --- */ .fern-card { background: var(--bg-surface-raised) !important; border: none !important; border-radius: var(--radius-xl); box-shadow: var(--card-shadow), var(--card-inset) !important; transition: transform 0.3s ease, box-shadow 0.3s ease; }

.fern-card.interactive:hover { transform: translateY(-3px); box-shadow: 0 0 0 1.5px rgba(var(--sw-fuchsia-rgb), 0.15), var(--card-hover-shadow), var(--card-inset-hover), inset 0 -1px 0 var(--card-hover-border) !important; }

/* --- API property keys: brand specifies code at weight 400 only. Fern defaults to 600 which causes faux-bold blur with our single-weight woff2. --- */ .fern-api-property-key { font-weight: 400; }

/* --- Touch targets: 48px minimum on mobile (DTCG/WCAG) --- */ @media (max-width: 768px) { .fern-button { min-height: 48px; } }

/* ============================================================================= SIGNALWIRE DOCS — SITE-SPECIFIC STYLES Layout, components, and overrides specific to the docs site. Brand tokens live in brand-tokens.css; Fern overrides in brand-overrides.css. ============================================================================= */

/*

  • Diagram images: solid background + color inversion for dark mode.
  • Usage: Add class="diagram" to the img element and include "diagram"
  • in the filename (e.g., my_diagram.webp). Fern's zoom library (rmiz)
  • strips classes when cloning images, so zoomed diagrams use a
  • path-based selector [src*="diagram"] instead. */

/* Diagram image: solid background (light mode only) */ img.diagram { background-color: var(--sw-light-bg); }

/* Diagram image: invert colors in dark mode (no background) */ .dark img.diagram { background-color: transparent; filter: invert(1) hue-rotate(180deg); }

/* Zoomed image: solid background */ [data-rmiz-modal-content] img { background-color: var(--sw-light-bg) !important; }

.dark [data-rmiz-modal-content] img { background-color: var(--bg-page) !important; }

/* Zoomed diagram: dark bg on container, invert only the image / .dark [data-rmiz-modal-content]:has(img[src="diagram"]) { background-color: var(--bg-page) !important; }

.dark [data-rmiz-modal-content] img[src*="diagram"] { background-color: transparent !important; filter: invert(1) hue-rotate(180deg); }

/* Logo right-text branding */ .fern-logo-text { font-family: var(--typography-heading-font-family), sans-serif; font-weight: 500; font-size: 1.25rem !important; color: var(--grayscale-12) !important; letter-spacing: -0.01em; position: relative; top: -1px; }

/* Status dropdown link — pulsing gray dot indicator */ @keyframes status-pulse { 0%, 100% { opacity: 1; transform: scale(1); } 50% { opacity: 0.5; transform: scale(0.85); } }

a[href*="status.signalwire.com"]::after { content: ""; display: inline-block; width: 0.5rem; height: 0.5rem; margin-left: 0.375rem; border-radius: 50%; background-color: var(--status-neutral); vertical-align: middle; animation: status-pulse 2s ease-in-out infinite; }

/* "Run in Postman" button — Fern wraps external link images with mx-auto (block-centered) and appends an external-link icon. Both look out of place for a small, inline-feeling CTA, so override them. On hover the image itself scales up slightly (no surrounding box) for clear, in-place feedback. / a[href="god.gw.postman.com"] { display: inline-block; transition: transform 0.15s ease; } a[href*="god.gw.postman.com"]:hover { transform: scale(1.05); } a[href*="god.gw.postman.com"] > svg.external-link-icon { display: none; } a[href*="god.gw.postman.com"] > img { margin-inline: 0 !important; }

/* Required/Optional indicator colors */ .required-yes { color: var(--status-success); font-weight: 600; }

.required-no { color: var(--status-error); font-weight: 600; }

/* ============================================================================= LANDING PAGE STYLING ============================================================================= */

.lp-page-container { min-height: 100vh; position: relative;

.dashed-pattern { position: absolute; top: -50vh; height: calc(100% + 50vh); width: 1rem; opacity: 1; pointer-events: none; mask: linear-gradient( to bottom, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 1) 90%, transparent 100% ); -webkit-mask: linear-gradient( to bottom, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 1) 90%, transparent 100% ); }

.dashed-pattern-left { left: -1rem; border-right: 1px solid var(--grayscale-5); }

.dashed-pattern-right { right: -1rem; border-left: 1px solid var(--grayscale-5); }

.main-content { max-width: 60rem; margin: 0 auto; position: relative; padding: 4rem 0 3rem; }

/* --- Hero Section --- */

.hero-section { margin-bottom: 4rem; position: relative; overflow: clip; }

.hero-content { position: relative; padding: 0 2rem; }

/* --- Products Section --- */

.products-section { border-top: 1px solid var(--grayscale-5); padding: 3.5rem 2rem; }

.products-section h2 { font-size: 1.25rem; font-weight: 700; color: var(--grayscale-12); margin-bottom: 0.25rem; }

.section-header { margin-bottom: 2rem; }

.section-header p { font-size: 0.875rem; color: var(--text-body); }

/* --- Homepage Callout --- */

.hp-callout { display: flex; align-items: center; gap: 1.5rem; padding: 1.5rem 2rem; margin: 2rem 2rem 3rem; border-radius: 0.75rem; background: var(--grayscale-a2); font-size: 0.875rem; }

.hp-callout-desc { color: var(--grayscale-a11); flex: 1; line-height: 1.5; }

.hp-callout-desc strong { color: var(--grayscale-12); font-weight: 700; }

/* --- Responsive Design --- */

@media (max-width: 640px) { .main-content { padding: 2rem 0; }

.dashed-pattern-left,
.dashed-pattern-right {
  display: none;
}

.hero-section {
  margin-bottom: 2.5rem;
}

.hero-content {
  padding: 0 1rem;
}

.products-section {
  padding: 2.5rem 1rem;
}

.hp-callout {
  flex-direction: column;
  align-items: flex-start;
  padding: 1rem;
  margin: 0 1rem;
  gap: 0.25rem;
}

} }

/* ============================================================================= PRODUCT SELECTOR STYLING

  • 3-column grouped layout for the product dropdown.
  • Column 1 (Products): Platform, Call Flow Builder
  • Column 2 (SDKs): Server SDKs, Browser SDK
  • Column 3 (APIs): APIs, SWML
  • Home is hidden. Compatibility API appears as a footer link. */

/* Custom SVG product icons — match Font Awesome icon sizing. FA icons render at ~23px inside the 56px container. Fern wraps custom SVGs in span.fern-file-icon.size-5 (Tailwind 1.25rem = 20px). */ .fern-selection-item-icon .fern-file-icon { width: 23px !important; height: 23px !important; }

.fern-selection-item-icon .fern-file-icon svg { width: 100%; height: 100%; }

/* --- Desktop (≥ 1024 px) --- / @media (min-width: 1024px) { / Dropdown panel — rounded corners, scroll when content exceeds viewport */ div[data-testid="product-dropdown-content"] { border-radius: 1.5rem !important; max-height: 70vh; overflow-y: auto; }

div:has(> .fern-product-selector-radio-group) { margin-top: 0.5rem; }

/* 3-column grouped grid */ .fern-product-selector-radio-group { display: grid; grid-template-columns: repeat(3, 1fr); column-gap: 1.5rem; row-gap: 0.5rem; padding: 3rem 1.25rem 0.4rem;

/* Hide Home */
> a[href="/docs"] {
  display: none;
}

/* Anchor base styling */
> a {
  max-width: 320px;
  position: relative;

  .fern-selection-item {
    border-radius: 1rem;
    height: 100%;
  }
}

/* --- Column 1: Products --- */
> a[href*="platform"] {
  grid-column: 1;
  grid-row: 1;
}
> a[href*="call-flow-builder"] {
  grid-column: 1;
  grid-row: 2;
}

/* --- Column 2: SDKs --- */
> a[href*="server-sdks"] {
  grid-column: 2;
  grid-row: 1;
}
> a[href*="browser-sdk"] {
  grid-column: 2;
  grid-row: 2;
}

/* --- Column 3: APIs --- */
> a[href$="/apis"] {
  grid-column: 3;
  grid-row: 1;
}
> a[href*="swml"] {
  grid-column: 3;
  grid-row: 2;
}

/* Full-width separator line above the footer row */
&::after {
  content: "";
  grid-column: 1 / -1;
  grid-row: 3;
  align-self: start;
  border-top: 1px solid var(--grayscale-a5);
  pointer-events: none;
}

/* Compatibility API — text-only link, right-aligned */
> a[href*="compatibility-api"] {
  grid-column: 1 / -1;
  grid-row: 3;
  max-width: none;
  width: fit-content;
  margin-left: auto;
  display: flex;
  align-items: center;
  padding: 0.5rem 0.25rem 0;

  .fern-selection-item {
    display: none;
  }

  &::after {
    content: "Migrating from Twilio™? See Compatibility API \2192";
    font-size: 0.8rem;
    color: var(--grayscale-a9);
  }

  &:hover::after {
    color: var(--accent-a11);
  }
}

/* Group header labels — shared style */
> a[href*="platform"]::before,
> a[href*="server-sdks"]::before,
> a[href$="/apis"]::before {
  position: absolute;
  top: -2rem;
  left: 0.5rem;
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--grayscale-a9);
  pointer-events: none;
}

> a[href*="platform"]::before {
  content: "Explore SignalWire";
  color: var(--text-primary);
}
> a[href*="server-sdks"]::before {
  content: "SDKs";
}
> a[href$="/apis"]::before {
  content: "APIs";
}

} }

/* --- Mobile (< 1024 px) --- / @media (max-width: 1023px) { / Hide Home */ .fern-product-selector-radio-group > a[href="/docs"] { display: none !important; }

/* Top padding for first group label, margin for subsequent group labels */ .fern-product-selector-radio-group { padding-top: 2rem; }

.fern-product-selector-radio-group > a[href*="server-sdks"], .fern-product-selector-radio-group > a[href$="/apis"] { margin-top: 2rem; }

/* position: relative + overflow: visible so ::before isn't clipped by the anchor / .fern-product-selector-radio-group > a[href="platform"], .fern-product-selector-radio-group > a[href*="server-sdks"], .fern-product-selector-radio-group > a[href$="/apis"] { position: relative; overflow: visible !important; }

/* Group labels — repositioned for vertical list / .fern-product-selector-radio-group > a[href="platform"]::before, .fern-product-selector-radio-group > a[href*="server-sdks"]::before, .fern-product-selector-radio-group > a[href$="/apis"]::before { position: absolute; top: -1.5rem; left: 0.5rem; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--grayscale-a9); pointer-events: none; }

.fern-product-selector-radio-group > a[href*="platform"]::before { content: "Explore SignalWire"; color: var(--text-primary); } .fern-product-selector-radio-group > a[href*="server-sdks"]::before { content: "SDKs"; } .fern-product-selector-radio-group > a[href$="/apis"]::before { content: "APIs"; }

/* Compatibility API — same footer treatment as desktop / .fern-product-selector-radio-group > a[href="compatibility-api"] { display: flex !important; justify-content: flex-end; align-items: center; padding: 0.5rem 0.25rem 0; border-top: 1px solid var(--grayscale-a5); margin-top: 0.25rem; }

.fern-product-selector-radio-group > a[href*="compatibility-api"] .fern-selection-item { display: none; }

.fern-product-selector-radio-group > a[href*="compatibility-api"]::after { content: "Migrating from Twilio™? See Compatibility API \2192"; font-size: 0.8rem; color: var(--grayscale-a9); margin-bottom: 2px; }

.fern-product-selector-radio-group > a[href*="compatibility-api"]:hover::after { color: var(--accent-a11); } }

/* ============================================================================= VARIANT SIDEBAR SECTIONS — SPACING FIX Match the 24px section gap from non-variant sidebars (e.g. Server SDK v4). V4 uses ul.space-y-6 which gives each margin-bottom: 24px. V2 with collapsed: false uses ul.fern-sidebar-group-level-1.mt-2 where elements only get margin-bottom: 1px by default. ========================================================================== */ .fern-sidebar-group-level-1.mt-2 > li { margin-bottom: 24px; }

.fern-sidebar-group-level-1.mt-2 > li:last-child { margin-bottom: 0; } #builtwithfern{display:flex!important}#builtwithfern *{display:initial!important;width:unset!important}#builtwithfern,#builtwithfern *{opacity:1!important;visibility:initial!important;left:unset!important;top:unset!important;right:unset!important;bottom:unset!important;inset:unset!important;position:relative!important;overflow:visible!important}(function(){(window.requestAnimationFrame??window.setTimeout)(()=>{let a=document.getElementById("fern-header")?.clientHeight??0;document.documentElement.style.setProperty("--header-height",${String(a)}px)})})()(function(){window.__FERN_PRE_HYDRATION_HTML=document.body.innerHTML})()(function(){var f=self.__next_f=self.__next_f||[];var p=[].push;Object.defineProperty(f,"push",{configurable:true,get:function(){return function(){try{return p.apply(f,arguments)}catch(e){if(e instanceof TypeError&&e.message.indexOf("enqueue")!==-1)return;throw e}}},set:function(v){p=v}})})()For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page. :root { --bprogress-color: var(--accent); --bprogress-height: 3px; --bprogress-spinner-size: 18px; --bprogress-spinner-animation-duration: 400ms; --bprogress-spinner-border-size: 2px; --bprogress-box-shadow: 0 0 10px var(--accent), 0 0 5px var(--accent); --bprogress-z-index: 99999; --bprogress-spinner-top: 15px; --bprogress-spinner-bottom: auto; --bprogress-spinner-right: 15px; --bprogress-spinner-left: auto; }

.bprogress { width: 0; height: 0; pointer-events: none; z-index: var(--bprogress-z-index); }

.bprogress .bar { background: var(--bprogress-color); position: fixed; z-index: var(--bprogress-z-index); top: 0; left: 0; width: 100%; height: var(--bprogress-height); }

/* Fancy blur effect */ .bprogress .peg { display: block; position: absolute; right: 0; width: 100px; height: 100%; box-shadow: var(--bprogress-box-shadow); opacity: 1.0; transform: rotate(3deg) translate(0px, -4px); }

/* Remove these to get rid of the spinner */ .bprogress .spinner { display: block; position: fixed; z-index: var(--bprogress-z-index); top: var(--bprogress-spinner-top); bottom: var(--bprogress-spinner-bottom); right: var(--bprogress-spinner-right); left: var(--bprogress-spinner-left); }

.bprogress .spinner-icon { width: var(--bprogress-spinner-size); height: var(--bprogress-spinner-size); box-sizing: border-box; border: solid var(--bprogress-spinner-border-size) transparent; border-top-color: var(--bprogress-color); border-left-color: var(--bprogress-color); border-radius: 50%; -webkit-animation: bprogress-spinner var(--bprogress-spinner-animation-duration) linear infinite; animation: bprogress-spinner var(--bprogress-spinner-animation-duration) linear infinite; }

.bprogress-custom-parent { overflow: hidden; position: relative; }

.bprogress-custom-parent .bprogress .spinner, .bprogress-custom-parent .bprogress .bar { position: absolute; }

.bprogress .indeterminate { position: fixed; top: 0; left: 0; width: 100%; height: var(--bprogress-height); overflow: hidden; }

.bprogress .indeterminate .inc, .bprogress .indeterminate .dec { position: absolute; top: 0; height: 100%; background-color: var(--bprogress-color); }

.bprogress .indeterminate .inc { animation: bprogress-indeterminate-increase 2s infinite; }

.bprogress .indeterminate .dec { animation: bprogress-indeterminate-decrease 2s 0.5s infinite; }

@-webkit-keyframes bprogress-spinner { 0% { -webkit-transform: rotate(0deg); transform: rotate(0deg); } 100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); } }

@keyframes bprogress-spinner { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }

@keyframes bprogress-indeterminate-increase { from { left: -5%; width: 5%; } to { left: 130%; width: 100%; } }

@keyframes bprogress-indeterminate-decrease { from { left: -80%; width: 80%; } to { left: 110%; width: 10%; } } ((a,b,c,d,e,f,g,h)=>{let i=document.documentElement,j=["light","dark"];function k(b){var c;(Array.isArray(a)?a:[a]).forEach(a=>{let c="class"===a,d=c&&f?e.map(a=>f[a]||a):e;c?(i.classList.remove(...d),i.classList.add(f&&f[b]?f[b]:b)):i.setAttribute(a,b)}),c=b,h&&j.includes(c)&&(i.style.colorScheme=c)}if(d)k(d);else try{let a=localStorage.getItem(b)||c,d=g&&"system"===a?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":a;k(d)}catch(a){}})("class","theme","system",null,["light","dark"],null,true,true)(function(){if(new URLSearchParams(window.location.search).get("embedded")==="true"){document.documentElement.dataset.embedded="true"}})() html, body { scroll-padding-top: calc( var(--header-height) + var(--mobile-toc-height, 0px) + (var(--spacing) * 4) ); } Search/Log inSign upSupport[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}LightrequestAnimationFrame(function(){$RT=performance.now()});SignalWire Docs$RB=[];$RV=function(a){$RT=performance.now();for(var b=0;b<a.length;b+=2){var c=a[b],e=a[b+1];null!==e.parentNode&&e.parentNode.removeChild(e);var f=c.parentNode;if(f){var g=c.previousSibling,h=0;do{if(c&&8===c.nodeType){var d=c.data;if("/$"===d||"/&"===d)if(0===h)break;else h--;else"$"!==d&&"$?"!==d&&"$"!==d&&"$!"!==d&&"&"!==d||h++}d=c.nextSibling;f.removeChild(c);c=d}while(c);for(;e.firstChild;)f.insertBefore(e.firstChild,c);g.data="$";g._reactRetry&&requestAnimationFrame(g._reactRetry)}}a.length=0}; $RC=function(a,b){if(b=document.getElementById(b))(a=document.getElementById(a))?(a.previousSibling.data="$",$RB.push(a,b),2===$RB.length&&("number"!==typeof $RT?requestAnimationFrame($RV.bind(null,$RB)):(a=performance.now(),setTimeout($RV.bind(null,$RB),2300>a&&2E3<a?2300-a:$RT+300-a)))):b.parentNode.removeChild(b)};$RC("B:0","S:0")Home.fa-secondary{opacity:.4}HomeOverview and getting started$RC("B:1","S:1")Home.fa-secondary{opacity:.4}HomeOverview and getting started$RC("B:2","S:2")Log inSign upSupport$RC("B:3","S:3") #fern-toc, #fern-sidebar[data-state="sticky"], #fern-sidebar[data-state="fixed"], #fern-sidebar-spacer { visibility: hidden; width: 0; overflow: hidden; display: none; } Built with$RC("B:4","S:4")Build on SignalWireVoice, video, messaging, and AI — one programmable platform, every interface you need..fa-secondary{opacity:.4}New to SignalWire? Set up your account, grab API credentials, and start building.Get startedWhat are you building?.fa-secondary{opacity:.4}AI voice agentLLM-powered phone agents and virtual assistants.fa-secondary{opacity:.4}Browser or mobileWebRTC voice, video, and chat in your app.fa-secondary{opacity:.4}Server applicationBackend call routing, SMS, and IVR systems.fa-secondary{opacity:.4}No-codeDrag-and-drop call flows and Dashboard AI agentsInterfaces & SDKsAPIs, markup languages, and client libraries for building on SignalWire..fa-secondary{opacity:.4}REST APIsComplete API reference for voice, video, messaging, and AI services. SWMLMarkup language that unifies LLMs, TTS, and STT with PSTN, SIP, and WebRTC..fa-secondary{opacity:.4}Server SDKsBuild AI agents, control calls, send messages, and more..fa-secondary{opacity:.4}Browser SDKAdd video calling, audio calling, and chat directly to your website.ToolsNo-code builders and utilities to accelerate development..fa-secondary{opacity:.4}Call Flow BuilderBuild drag-and-drop calling applications without writing code..fa-secondary{opacity:.4}Platform & DashboardManage your SignalWire space, phone numbers, and resources..fa-secondary{opacity:.4}WirestarterScaffold a new SignalWire project in seconds..fa-secondary{opacity:.4}SWSHInteractive shell for testing SWML scripts and API calls..fa-secondary{opacity:.4}Migrating from Twilio*? Drop-in compatible APIs and SDKs — switch with a few lines of code.Compatibility API*Twilio and TwiML are trademarks of Twilio, Inc. SignalWire, Inc. and its products are not affiliated with or endorsed by Twilio, Inc.$RC("B:5","S:5")(self.__next_f=self.__next_f||[]).push([0])self.__next_f.push([1,"1:"$Sreact.fragment"\n2:I[490875,["https://app.buildwithfern.com/_next/static/chunks/0iic_u0w3xl_w.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","https://app.buildwithfern.com/next/static/chunks/0apuwnoo_2a.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt"],"default"]\n3:I[311055,["https://app.buildwithfern.com/_next/static/chunks/0iic_u0w3xl_w.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","https://app.buildwithfern.com/next/static/chunks/0apuwnoo_2a.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","https://app.buildwithfern.com/_next/static/chunks/06wdl99nx.yg.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","https://app.buildwithfern.com/_next/static/chunks/05gg08_1_fno.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","https://app.buildwithfern.com/next/static/chunks/05avxud39v-..js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","https://app.buildwithfern.com/_next/static/chunks/0b1af9jj1~.l6.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","https://app.buildwithfern.com/_next/static/chunks/0mxgt5atpwyit.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt"],"default"]\n4:I[338314,["https://app.buildwithfern.com/_next/static/chunks/0iic_u0w3xl_w.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","https://app.buildwithfern.com/next/static/chunks/0apuwnoo_2a.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt"],"default"]\n2e:I[139220,["https://app.buildwithfern.com/_next/static/chunks/0iic_u0w3xl_w.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","https://app.buildwithfern.com/next/static/chunks/0apuwnoo_2a.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt"],"default",1]\n:HL["https://app.buildwithfern.com/next/static/chunks/0d7.qm3ii8h.css?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","style",{"crossOrigin":""}]\n:HL["https://app.buildwithfern.com/_next/static/chunks/0nao4hgu6hbof.css?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","style",{"crossOrigin":""}]\n:HC["https://app.buildwithfern.com",""]\n:HL["https://app.buildwithfern.com/_next/static/chunks/14l8pac9ug4ph.css?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","style",{"crossOrigin":""}]\n"])self.__next_f.push([1,"0:{"P":null,"c":["","signalwire.com","default","false","false","everyone","_default","%2Fdocs"],"q":"","i":false,"f":[[["",{"children":[["domain","signalwire.com","d",null],{"children":["(main)",{"children":[["mode","default","d",null],{"children":[["requiresLogin","false","d",null],{"children":[["isLoggedIn","false","d",null],{"children":[["roles","everyone","d",null],{"children":[["locale","_default","d",null],{"children":[["slug","%2Fdocs","d",null],{"children":["PAGE",{}]}],"announcement":["(SLOT)",{"children":[["slug","%2Fdocs","d",null],{"children":["PAGE",{}]}]}],"explorer":["(SLOT)",{"children":[["slug","%2Fdocs","d",null],{"children":["PAGE",{}]}],"sidebar":["(SLOT)",{"children":[["slug","%2Fdocs","d",null],{"children":["PAGE",{}]}]}]}],"headertabs":["(SLOT)",{"children":[["slug","%2Fdocs","d",null],{"children":["PAGE",{}]}]}],"languageSelect":["(SLOT)",{"children":[["slug","%2Fdocs","d",null],{"children":["PAGE",{}]}]}],"logo":["(SLOT)",{"children":[["slug","%2Fdocs","d",null],{"children":["PAGE",{}]}]}],"productSelect":["(SLOT)",{"children":[["slug","%2Fdocs","d",null],{"children":["PAGE",{}]}]}],"sidebar":["(SLOT)",{"children":[["slug","%2Fdocs","d",null],{"children":["PAGE",{}]}]}],"versionSelect":["(SLOT)",{"children":[["slug","%2Fdocs","d",null],{"children":["PAGE",{}]}]}]}]}]}]}]}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"https://app.buildwithfern.com/next/static/chunks/0d7.qm3ii8h.css?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","precedence":"next","crossOrigin":"anonymous","nonce":"$undefined"}],["$","script","script-0",{"src":"https://app.buildwithfern.com/_next/static/chunks/0iic_u0w3xl_w.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"https://app.buildwithfern.com/next/static/chunks/0apuwnoo_2a.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","async":true,"nonce":"$undefined"}]],["$","$L2",null,{"parallelRouterKey":"children","error":"$3","errorStyles":[],"errorScripts":[["$","script","script-0",{"src":"https://app.buildwithfern.com/_next/static/chunks/06wdl99nx.yg.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","async":true}],["$","script","script-1",{"src":"https://app.buildwithfern.com/_next/static/chunks/05gg08_1_fno.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","async":true}],["$","script","script-2",{"src":"https://app.buildwithfern.com/next/static/chunks/05avxud39v-..js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","async":true}],["$","script","script-3",{"src":"https://app.buildwithfern.com/_next/static/chunks/0b1af9jj1.l6.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","async":true}],["$","script","script-4",{"src":"https://app.buildwithfern.com/_next/static/chunks/0mxgt5atpwyit.js?dpl=dpl_C9rSKagUxfLUUNrhDPNCvkxVzhXt","async":true}]],"template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":["$L5",[]],"forbidden":[[["$","title",null,{"children":"403: This page could not be accessed."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top

… [truncated — open the raw llms.txt above for the full file]

Related

llmtxt.app – AI SEO & Search Engine Optimization Directory

/llms.txt
635 tokens
/llms-full.txt
2,429 tokens
Websites

A proposal to standardise on using an /llms.txt file to provide information to help LLMs use a website at inference time.

/llms.txt
318 tokens
Websites

/llms.txt
33,874 tokens
/llms-full.txt
3,770,473 tokens
Websites

/llms.txt
1,164 tokens
/llms-full.txt
1,167 tokens
Websites

About Matt Rickard.

/llms.txt
515,931 tokens
/llms-full.txt
515,931 tokens
Websites

/llms.txt
628 tokens
Websites

Evan Boehs — personal website.

/llms.txt
265 tokens
Websites

This very website you're looking at right now!

/llms.txt
48 tokens
Websites