> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Getting help — Help

> Reach a human at ModuleX: how to contact support, what to include in your message, where to find the community, and how to check whether the platform is up.

export const MediaEmbed = ({id, type = 'screenshot', caption = '', ext, ratio = '16 / 9'}) => {
  const isVideo = type === 'video' || type === 'app_video';
  const resolvedExt = ext || (isVideo ? 'mp4' : type === 'screenshot' ? 'webp' : 'svg');
  const src = 'https://media.modulex.dev/' + id + '.' + resolvedExt;
  const [status, setStatus] = useState('loading');
  const [isDev, setIsDev] = useState(false);
  const [inView, setInView] = useState(false);
  const boxRef = useRef(null);
  useEffect(() => {
    if (typeof window === 'undefined') return;
    const h = window.location.hostname;
    setIsDev(h === 'localhost' || h === '127.0.0.1' || h.endsWith('.mintlify.app'));
  }, []);
  useEffect(() => {
    if (inView) return;
    if (typeof IntersectionObserver === 'undefined') {
      setInView(true);
      return;
    }
    const el = boxRef.current;
    if (!el) return;
    const io = new IntersectionObserver(entries => {
      if (entries.some(e => e.isIntersecting)) {
        setInView(true);
        io.disconnect();
      }
    }, {
      rootMargin: '300px'
    });
    io.observe(el);
    return () => io.disconnect();
  }, [inView]);
  if (status === 'missing') {
    if (!isDev) return null;
    return <div style={{
      display: 'flex',
      flexDirection: 'column',
      justifyContent: 'center',
      gap: '0.4rem',
      padding: '1rem 1.25rem',
      margin: '1.25rem 0',
      width: '100%',
      aspectRatio: ratio,
      boxSizing: 'border-box',
      border: '1px dashed rgba(128,128,128,0.45)',
      borderRadius: '0.75rem',
      background: 'rgba(128,128,128,0.06)',
      color: 'currentColor',
      fontSize: '0.85rem',
      lineHeight: 1.45
    }}>
        <div style={{
      display: 'flex',
      alignItems: 'center',
      gap: '0.5rem',
      opacity: 0.75
    }}>
          <span aria-hidden="true">🎬</span>
          <code style={{
      fontSize: '0.75rem'
    }}>{id}</code>
          <span style={{
      fontSize: '0.65rem',
      textTransform: 'uppercase',
      letterSpacing: '0.04em',
      padding: '0.1rem 0.4rem',
      borderRadius: '0.4rem',
      background: 'rgba(128,128,128,0.18)'
    }}>
            {type}
          </span>
        </div>
        <div style={{
      opacity: 0.9
    }}>{caption || 'Media not uploaded yet.'}</div>
        <div style={{
      fontSize: '0.7rem',
      opacity: 0.5
    }}>
          Upload to R2 as <code>{id}.{resolvedExt}</code> — preview only, hidden in production.
        </div>
      </div>;
  }
  const mediaStyle = {
    display: status === 'loaded' ? 'block' : 'none',
    width: '100%',
    height: 'auto',
    borderRadius: '0.75rem'
  };
  const media = isVideo ? <video src={inView ? src : undefined} autoPlay loop muted playsInline preload="metadata" onLoadedData={() => setStatus('loaded')} onError={() => setStatus('missing')} style={mediaStyle} /> : <img src={inView ? src : undefined} alt={caption} onLoad={() => setStatus('loaded')} onError={() => setStatus('missing')} style={mediaStyle} />;
  return <figure style={{
    margin: '1.25rem 0'
  }}>
      <div ref={boxRef} style={status === 'loaded' ? {
    width: '100%'
  } : {
    width: '100%',
    aspectRatio: ratio,
    borderRadius: '0.75rem',
    background: 'rgba(128,128,128,0.06)'
  }}>
        {media}
      </div>
      {status === 'loaded' && caption ? <figcaption style={{
    marginTop: '0.5rem',
    textAlign: 'center',
    fontSize: '0.85rem',
    opacity: 0.7
  }}>
          {caption}
        </figcaption> : null}
    </figure>;
};

When something is not working — or you just want a person to look at it — this page tells you who to contact, what to include so they can help fast, and how to check whether the issue is on ModuleX's side.

<CardGroup cols={2}>
  <Card title="Contact support" icon="life-ring" href="#how-do-i-contact-support">
    Email the team. Include your organization ID, what you were doing, and any error code.
  </Card>

  <Card title="Check system status" icon="activity" href="/reference/status">
    See whether the platform and its health checks are up before you report a problem.
  </Card>

  <Card title="Join the community" icon="users" href="#where-can-i-ask-the-community">
    Ask questions and share workflows with other ModuleX users.
  </Card>

  <Card title="Contribute" icon="git-pull-request" href="/resources/contributing">
    Found a gap or want to add an integration? Here is how to help.
  </Card>
</CardGroup>

## Frequently asked questions

<AccordionGroup>
  <Accordion title="How do I contact support?">
    Email **[support@modulex.dev](mailto:support@modulex.dev)**. To get help fast, include three things: your **organization ID**, **what you were doing** when it happened, and **any error code** you saw (for example `402` or `403`). See [what to include](#what-should-i-include-in-a-support-request) below for the full list, and [Errors & troubleshooting](/help/errors-troubleshooting) to decode an error code first.
  </Accordion>

  <Accordion title="What should I include in a support request?">
    Your organization ID, a short description of what you were doing, and any error code or message. The more specific you are, the faster the team can reproduce it. See [the checklist](#what-should-i-include-in-a-support-request) below.
  </Accordion>

  <Accordion title="Where do I find my organization ID?">
    It is the value you send in the `X-Organization-ID` header on API calls, and it is shown in the app's organization settings. Learn how the org context works in [Org context & X-Organization-ID](/security/org-context).
  </Accordion>

  <Accordion title="Is there a status page?">
    ModuleX exposes a public liveness check at `GET /system/health`, documented on the [System status & health](/reference/status) page, so you can confirm the API is up. A hosted status / incident page (with uptime history and live incident updates) is not confirmed yet — see [Is there a hosted status or incident page?](#is-there-a-hosted-status-or-incident-page) below.
  </Accordion>

  <Accordion title="What support do I get on my plan?">
    Support depends on your plan: Free uses the community, Pro adds Discord, Max adds email plus Discord, and Enterprise includes dedicated support. See [Support by plan](#what-support-do-i-get-on-my-plan) below, and [Plans & pricing](/billing/plans) for the full comparison.
  </Accordion>

  <Accordion title="Where can I ask the community?">
    Join the ModuleX Discord at `discord.gg/jEyCABwU9E` to ask questions and share workflows. You can also open issues on GitHub at `github.com/ModuleXAI`. More detail in [Where can I ask the community?](#where-can-i-ask-the-community) below.
  </Accordion>

  <Accordion title="How do I report a bug or request a feature?">
    File it on GitHub at `github.com/ModuleXAI`, or email **[support@modulex.dev](mailto:support@modulex.dev)** if it involves your account or data. If you want to fix or add something yourself, see [Contributing](/resources/contributing).
  </Accordion>

  <Accordion title="A feature seems broken — is it a known limitation?">
    A few flows are documented gaps rather than bugs (for example, deleting several nodes at once, or the "refresh OAuth" button). Check [Known limitations](/help/known-limitations) before you file a report — your issue may already be listed with a workaround.
  </Accordion>
</AccordionGroup>

## How do I contact support?

Email **[support@modulex.dev](mailto:support@modulex.dev)**. A clear first message saves a round trip — include the details below.

<Note>
  Support is a paid-plan benefit. Free accounts are pointed to the [community channels](#where-can-i-ask-the-community); paid plans add direct support. See [Support by plan](#what-support-do-i-get-on-my-plan).
</Note>

### What should I include in a support request?

<Steps>
  <Step title="Your organization ID">
    The ID of the organization you were working in — the same value you send as the `X-Organization-ID` header. It tells the team exactly which account and data to look at. See [Org context & X-Organization-ID](/security/org-context).
  </Step>

  <Step title="What you were doing">
    A short, concrete description: the action you took, the workflow or chat involved, and what you expected to happen versus what actually happened.
  </Step>

  <Step title="Any error code or message">
    Copy the exact error code (for example `402`, `403`, or `429`) and any message text. If you are not sure what it means, [Errors & troubleshooting](/help/errors-troubleshooting) explains the common ones first.
  </Step>

  <Step title="When it happened">
    The approximate date and time, and whether it is still happening or was a one-off. This helps the team line your report up with logs.
  </Step>
</Steps>

<MediaEmbed id="MX-MEDIA-4610" type="screenshot" caption={"where to find your organization ID in the app's organization settings."} />

## Is there a status page?

To check whether the platform itself is up, use the health endpoints documented on the [System status & health](/reference/status) page — `GET /system/health` is a public liveness check that returns the service status without authentication.

### Is there a hosted status or incident page?

<Warning>
  A hosted status / incident page (uptime history, live incident posts) is **not confirmed** in the current sources. Until one is published, use the [health endpoints](/reference/status) to verify the API is reachable, then contact [support](#how-do-i-contact-support) if it is up but your action still fails. **TBD** — this page will link to a hosted status page once one exists.
</Warning>

## What support do I get on my plan?

The support channel scales with your plan. Confirm the current details on [Plans & pricing](/billing/plans).

| Plan       | Support channel             |
| ---------- | --------------------------- |
| Free       | Community (Discord, GitHub) |
| Pro        | Discord                     |
| Max        | Email + Discord             |
| Enterprise | Dedicated support           |

<Note>
  Enterprise teams also get hands-on onboarding and a dedicated support contact. See [ModuleX for enterprise](/enterprise/overview) and [Contact sales](/enterprise/contact-sales).
</Note>

## Where can I ask the community?

For questions, ideas, and sharing workflows, the community is the fastest place to start — and the primary support channel on the Free plan.

<CardGroup cols={2}>
  <Card title="Discord" icon="message-circle" href="https://discord.gg/jEyCABwU9E">
    Chat with other ModuleX users and the team at `discord.gg/jEyCABwU9E`.
  </Card>

  <Card title="GitHub" icon="github" href="https://github.com/ModuleXAI">
    Report bugs, request features, and browse the code at `github.com/ModuleXAI`.
  </Card>
</CardGroup>

## Before you reach out

A quick self-check often resolves the issue faster than waiting for a reply.

<CardGroup cols={3}>
  <Card title="Decode the error" icon="triangle-alert" href="/help/errors-troubleshooting">
    Common codes like `401`, `402`, `403`, and `429` each have a known cause and fix.
  </Card>

  <Card title="Check known limitations" icon="circle-slash" href="/help/known-limitations">
    Some behaviours are documented gaps with workarounds, not bugs.
  </Card>

  <Card title="Confirm the platform is up" icon="heart-pulse" href="/reference/status">
    Use the health endpoints to rule out a platform-wide issue.
  </Card>
</CardGroup>
