---
title: Subscription Server
description: A separate HTTP/HTTPS server that serves proxy subscription links
  (standard, JSON, and Clash) to clients. The server listens on its own port
  (default 10882) and is configured in Settings → Subscription. Paths are
  configurable; defaults are shown below. All subscription endpoints set
  response headers for client apps to read traffic/expiry info.
full: true
_openapi:
  preload:
    - ./public/openapi.json
  toc:
    - depth: 2
      title: 'Return base64-encoded subscription links for all enabled clients
        matching the subscription ID. When the request has an Accept: text/html
        header or ?html=1, renders a styled info page instead. Default path:
        /sub/:subid.'
      url: '#return-base64-encoded-subscription-links-for-all-enabled-clients-matching-the-subscription-id-when-the-request-has-an-accept-texthtml-header-or-html1-renders-a-styled-info-page-instead-default-path-subsubid'
    - depth: 2
      title: 'Return subscription as a JSON array of proxy configs (one per enabled
        client). Only when JSON subscription is enabled in settings. Default
        path: /json/:subid.'
      url: '#return-subscription-as-a-json-array-of-proxy-configs-one-per-enabled-client-only-when-json-subscription-is-enabled-in-settings-default-path-jsonsubid'
    - depth: 2
      title: 'Return subscription as a Clash/Mihomo-compatible YAML config, including
        configured global Clash routing rules. Only when Clash subscription is
        enabled in settings. Default path: /clash/:subid.'
      url: '#return-subscription-as-a-clashmihomo-compatible-yaml-config-including-configured-global-clash-routing-rules-only-when-clash-subscription-is-enabled-in-settings-default-path-clashsubid'
  structuredData:
    headings:
      - content: 'Return base64-encoded subscription links for all enabled clients
          matching the subscription ID. When the request has an Accept:
          text/html header or ?html=1, renders a styled info page instead.
          Default path: /sub/:subid.'
        id: return-base64-encoded-subscription-links-for-all-enabled-clients-matching-the-subscription-id-when-the-request-has-an-accept-texthtml-header-or-html1-renders-a-styled-info-page-instead-default-path-subsubid
      - content: 'Return subscription as a JSON array of proxy configs (one per enabled
          client). Only when JSON subscription is enabled in settings. Default
          path: /json/:subid.'
        id: return-subscription-as-a-json-array-of-proxy-configs-one-per-enabled-client-only-when-json-subscription-is-enabled-in-settings-default-path-jsonsubid
      - content: 'Return subscription as a Clash/Mihomo-compatible YAML config,
          including configured global Clash routing rules. Only when Clash
          subscription is enabled in settings. Default path: /clash/:subid.'
        id: return-subscription-as-a-clashmihomo-compatible-yaml-config-including-configured-global-clash-routing-rules-only-when-clash-subscription-is-enabled-in-settings-default-path-clashsubid
    contents: []
---

{/* This file was generated by Fumadocs. Do not edit this file directly. Any changes should be made by running the generation command again. */}

export default function Layout(props) {
  const { APIPage, OpenAPIPage } = props.components ?? {};
  // "APIPage" is the old name from v10, this allows both for backward compatibility
  const Comp = OpenAPIPage ?? APIPage;
  return (
    <>
      {props.children}
      <Comp document="./public/openapi.json" webhooks={[]} operations={[{"path":"/{subPath}{subid}","method":"get"},{"path":"/{jsonPath}{subid}","method":"get"},{"path":"/{clashPath}{subid}","method":"get"}]} showTitle />
    </>
  );
}