---
title: Request Access
slug: archbee.dsidevportal.com
docTags: 
createdAt: 2026-03-27T13:04:05.721Z
---

## Tell us about yourself

To access our Dev Portal, you need to request access by filling out the form below. &#x20;

:::Iframe{iframeHeight="0" code="<!DOCTYPE html>&#xA;<html lang=&#x22;en&#x22;>&#xA;<head>&#xA;  <meta charset=&#x22;UTF-8&#x22;>&#xA;  <meta name=&#x22;viewport&#x22; content=&#x22;width=device-width, initial-scale=1.0&#x22;>&#xA;  <title>Create Account</title>&#xA;  <style>&#xA;    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; white-space: normal !important; }&#xA;&#xA;    /* ── Color tokens (light defaults) ───────────────────────────── */&#xA;    .form-card {&#xA;      --cf-input-text:      #333;   /* what the user types          */&#xA;      --cf-placeholder:     #aaa;   /* placeholder text             */&#xA;      --cf-line:            #ccc;   /* input underlines             */&#xA;      --cf-icon:            #999;   /* leading field icons          */&#xA;      --cf-group-label:     #888;   /* &#x22;How did you hear about us?&#x22; */&#xA;      --cf-cb-label:        #444;   /* checkbox option text         */&#xA;      --cf-spec-placeholder:#bbb;   /* specify-field placeholder    */&#xA;      --cf-card-border:     #ddd;   /* card outline                 */&#xA;      --cf-terms-bg:        #f9f9f9;/* terms box surface            */&#xA;      --cf-terms-border:    #ddd;&#xA;      --cf-terms-text:      #555;&#xA;      --cf-accent:          #8B1A2E;/* focus line / links           */&#xA;      --cf-link:            #8B1A2E;&#xA;    }&#xA;&#xA;    /* ── Dark theme overrides (set by JS via data-cf-theme, or by&#xA;          prefers-color-scheme before JS runs) ─────────────────────── */&#xA;    .form-card[data-cf-theme=&#x22;dark&#x22;] {&#xA;      --cf-input-text:      #f2f2f2;&#xA;      --cf-placeholder:     #8c8c8c;&#xA;      --cf-line:            #5e5e5e;&#xA;      --cf-icon:            #9a9a9a;&#xA;      --cf-group-label:     #b9b9b9;&#xA;      --cf-cb-label:        #dcdcdc;&#xA;      --cf-spec-placeholder:#8c8c8c;&#xA;      --cf-card-border:     rgba(255,255,255,0.16);&#xA;      --cf-terms-bg:        rgba(255,255,255,0.05);&#xA;      --cf-terms-border:    rgba(255,255,255,0.16);&#xA;      --cf-terms-text:      #cccccc;&#xA;      --cf-accent:          #e0667a;&#xA;      --cf-link:            #f08ea0;&#xA;    }&#xA;    @media (prefers-color-scheme: dark) {&#xA;      .form-card:not([data-cf-theme]) {&#xA;        --cf-input-text:      #f2f2f2;&#xA;        --cf-placeholder:     #8c8c8c;&#xA;        --cf-line:            #5e5e5e;&#xA;        --cf-icon:            #9a9a9a;&#xA;        --cf-group-label:     #b9b9b9;&#xA;        --cf-cb-label:        #dcdcdc;&#xA;        --cf-spec-placeholder:#8c8c8c;&#xA;        --cf-card-border:     rgba(255,255,255,0.16);&#xA;        --cf-terms-bg:        rgba(255,255,255,0.05);&#xA;        --cf-terms-border:    rgba(255,255,255,0.16);&#xA;        --cf-terms-text:      #cccccc;&#xA;        --cf-accent:          #e0667a;&#xA;        --cf-link:            #f08ea0;&#xA;      }&#xA;    }&#xA;&#xA;    html, body { height: auto; background: transparent; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-size: 14px; line-height: 1.4; color: var(--cf-input-text); }&#xA;    .form-card { padding: 24px 28px 28px; width: 100%; border: 1px solid var(--cf-card-border); border-radius: 6px; }&#xA;    .status-msg { display: none; font-size: 14px; padding: 10px 14px; border-radius: 3px; margin-top: 14px; text-align: center; }&#xA;    .status-msg.success { display: block; background: #eaf5ea; color: #2e7d32; }&#xA;    .status-msg.error   { display: block; background: #fdecea; color: #b71c1c; }&#xA;    .field { position: relative; margin-bottom: 18px; }&#xA;    .field input { display: block; width: 100%; border: none; border-bottom: 1px solid var(--cf-line); padding: 8px 6px 8px 28px; font-size: 14px; font-family: inherit; line-height: 1.4; color: var(--cf-input-text); background: transparent; outline: none; transition: border-color 0.2s; }&#xA;    .field input:focus { border-bottom-color: var(--cf-accent); }&#xA;    .field input::placeholder { color: var(--cf-placeholder); }&#xA;    .field input.invalid { border-bottom-color: #e0667a; }&#xA;    .icon { position: absolute; left: 4px; top: 50%; transform: translateY(-50%); color: var(--cf-icon); font-size: 15px; pointer-events: none; display: flex; align-items: center; }&#xA;    .error-text { display: none; font-size: 11px; color: #e0667a; padding-left: 28px; margin-top: 3px; }&#xA;    .checkbox-group { margin-top: 10px; margin-bottom: 18px; }&#xA;    .group-label { display: block; font-size: 14px; color: var(--cf-group-label); margin-bottom: 10px; }&#xA;    .checkbox-item { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }&#xA;    .checkbox-item input[type=&#x22;checkbox&#x22;] { width: 14px; height: 14px; flex-shrink: 0; accent-color: #8B1A2E; cursor: pointer; }&#xA;    .checkbox-item label { font-size: 14px; color: var(--cf-cb-label); cursor: pointer; }&#xA;    .specify-field { display: none; padding-left: 22px; margin-top: 2px; margin-bottom: 8px; }&#xA;    .specify-field input { display: block; width: 100%; border: none; border-bottom: 1px solid var(--cf-line); padding: 4px; font-size: 13px; font-family: inherit; color: var(--cf-input-text); background: transparent; outline: none; }&#xA;    .specify-field input:focus { border-bottom-color: var(--cf-accent); }&#xA;    .specify-field input::placeholder { color: var(--cf-spec-placeholder); }&#xA;    .terms-box { display: flex; align-items: center; gap: 8px; padding: 10px 12px; margin-bottom: 18px; background: var(--cf-terms-bg); border: 1px solid var(--cf-terms-border); border-radius: 4px; }&#xA;    .terms-box input[type=&#x22;checkbox&#x22;] { width: 14px; height: 14px; flex-shrink: 0; accent-color: #8B1A2E; cursor: pointer; }&#xA;    .terms-box label { font-size: 13px; color: var(--cf-terms-text); }&#xA;    .terms-box a { color: var(--cf-link); text-decoration: underline; }&#xA;    .button-row { display: flex; justify-content: flex-start; }&#xA;    .btn-submit { padding: 9px 32px; background: #8B1A2E; color: white; font-size: 14px; font-weight: 500; font-family: inherit; border: none; border-radius: 3px; cursor: pointer; }&#xA;    .btn-submit:hover { background: #6e1424; }&#xA;    .btn-submit:disabled { background: #c9a0a8; cursor: not-allowed; }&#xA;  </style>&#xA;</head>&#xA;<body>&#xA;  <div class=&#x22;form-card&#x22;>&#xA;    <form id=&#x22;registerForm&#x22; novalidate>&#xA;      <div class=&#x22;field&#x22;>&#xA;        <span class=&#x22;icon&#x22;><svg width=&#x22;14&#x22; height=&#x22;14&#x22; viewBox=&#x22;0 0 24 24&#x22; fill=&#x22;none&#x22; stroke=&#x22;currentColor&#x22; stroke-width=&#x22;2&#x22; stroke-linecap=&#x22;round&#x22; stroke-linejoin=&#x22;round&#x22;><path d=&#x22;M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2&#x22;/><circle cx=&#x22;12&#x22; cy=&#x22;7&#x22; r=&#x22;4&#x22;/></svg></span>&#xA;        <input type=&#x22;text&#x22; id=&#x22;firstName&#x22; placeholder=&#x22;First Name&#x22; required autocomplete=&#x22;given-name&#x22;>&#xA;        <div class=&#x22;error-text&#x22; id=&#x22;firstNameErr&#x22;>First name is required.</div>&#xA;      </div>&#xA;      <div class=&#x22;field&#x22;>&#xA;        <span class=&#x22;icon&#x22;><svg width=&#x22;14&#x22; height=&#x22;14&#x22; viewBox=&#x22;0 0 24 24&#x22; fill=&#x22;none&#x22; stroke=&#x22;currentColor&#x22; stroke-width=&#x22;2&#x22; stroke-linecap=&#x22;round&#x22; stroke-linejoin=&#x22;round&#x22;><path d=&#x22;M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2&#x22;/><circle cx=&#x22;12&#x22; cy=&#x22;7&#x22; r=&#x22;4&#x22;/></svg></span>&#xA;        <input type=&#x22;text&#x22; id=&#x22;lastName&#x22; placeholder=&#x22;Last Name&#x22; required autocomplete=&#x22;family-name&#x22;>&#xA;        <div class=&#x22;error-text&#x22; id=&#x22;lastNameErr&#x22;>Last name is required.</div>&#xA;      </div>&#xA;      <div class=&#x22;field&#x22;>&#xA;        <span class=&#x22;icon&#x22;>&#9993;</span>&#xA;       <input type=&#x22;email&#x22; id=&#x22;email&#x22; placeholder=&#x22;Email Address&#x22; required autocomplete=&#x22;email&#x22; autocorrect=&#x22;off&#x22; spellcheck=&#x22;false&#x22;>&#xA;        <div class=&#x22;error-text&#x22; id=&#x22;emailErr&#x22;>A valid email address is required.</div>&#xA;      </div>&#xA;      <div class=&#x22;field&#x22;>&#xA;        <span class=&#x22;icon&#x22;>&#9638;</span>&#xA;        <input type=&#x22;text&#x22; id=&#x22;businessName&#x22; placeholder=&#x22;Business Name&#x22; required autocomplete=&#x22;organization&#x22;>&#xA;        <div class=&#x22;error-text&#x22; id=&#x22;businessNameErr&#x22;>Business name is required.</div>&#xA;      </div>&#xA;      <div class=&#x22;field&#x22;>&#xA;        <span class=&#x22;icon&#x22;><svg width=&#x22;14&#x22; height=&#x22;14&#x22; viewBox=&#x22;0 0 24 24&#x22; fill=&#x22;none&#x22; stroke=&#x22;currentColor&#x22; stroke-width=&#x22;2&#x22; stroke-linecap=&#x22;round&#x22; stroke-linejoin=&#x22;round&#x22;><rect x=&#x22;5&#x22; y=&#x22;2&#x22; width=&#x22;14&#x22; height=&#x22;20&#x22; rx=&#x22;2&#x22; ry=&#x22;2&#x22;/><line x1=&#x22;12&#x22; y1=&#x22;18&#x22; x2=&#x22;12.01&#x22; y2=&#x22;18&#x22;/></svg></span>&#xA;        <input type=&#x22;tel&#x22; id=&#x22;phone&#x22; placeholder=&#x22;Phone Number (Optional)&#x22; autocomplete=&#x22;tel&#x22;>&#xA;      </div>&#xA;      <div class=&#x22;checkbox-group&#x22;>&#xA;        <span class=&#x22;group-label&#x22;>How did you hear about us?</span>&#xA;        <div class=&#x22;checkbox-item&#x22;>&#xA;          <input type=&#x22;checkbox&#x22; id=&#x22;hear_ai&#x22; value=&#x22;AI Assistant (i.e. ChatGPT)&#x22;>&#xA;          <label for=&#x22;hear_ai&#x22;>AI Assistant (i.e. ChatGPT)</label>&#xA;        </div>&#xA;        <div class=&#x22;checkbox-item&#x22;>&#xA;          <input type=&#x22;checkbox&#x22; id=&#x22;hear_web&#x22; value=&#x22;Web search&#x22;>&#xA;          <label for=&#x22;hear_web&#x22;>Web search</label>&#xA;        </div>&#xA;        <div class=&#x22;checkbox-item&#x22;>&#xA;          <input type=&#x22;checkbox&#x22; id=&#x22;hear_referral&#x22; value=&#x22;Referral&#x22;>&#xA;          <label for=&#x22;hear_referral&#x22;>Referral</label>&#xA;        </div>&#xA;        <div class=&#x22;specify-field&#x22; id=&#x22;referralSpecify&#x22;>&#xA;          <input type=&#x22;text&#x22; id=&#x22;referralText&#x22; placeholder=&#x22;Who referred you?&#x22;>&#xA;        </div>&#xA;        <div class=&#x22;checkbox-item&#x22;>&#xA;          <input type=&#x22;checkbox&#x22; id=&#x22;hear_linkedin&#x22; value=&#x22;LinkedIn&#x22;>&#xA;          <label for=&#x22;hear_linkedin&#x22;>LinkedIn</label>&#xA;        </div>&#xA;        <div class=&#x22;checkbox-item&#x22;>&#xA;          <input type=&#x22;checkbox&#x22; id=&#x22;hear_partner&#x22; value=&#x22;Current Integration Partner&#x22;>&#xA;          <label for=&#x22;hear_partner&#x22;>I am a current Integration partner</label>&#xA;        </div>&#xA;        <div class=&#x22;checkbox-item&#x22;>&#xA;          <input type=&#x22;checkbox&#x22; id=&#x22;hear_other&#x22; value=&#x22;Other&#x22;>&#xA;          <label for=&#x22;hear_other&#x22;>Other</label>&#xA;        </div>&#xA;        <div class=&#x22;specify-field&#x22; id=&#x22;otherSpecify&#x22;>&#xA;          <input type=&#x22;text&#x22; id=&#x22;otherText&#x22; placeholder=&#x22;How did you hear about us?&#x22;>&#xA;        </div>&#xA;      </div>&#xA;      <div class=&#x22;terms-box&#x22;>&#xA;        <input type=&#x22;checkbox&#x22; id=&#x22;terms&#x22; required>&#xA;        <label for=&#x22;terms&#x22;>I accept the <a href=&#x22;https://archbee.dsidevportal.com/terms-of-use&#x22; target=&#x22;_blank&#x22;>Terms of Use</a>.</label>&#xA;      </div>&#xA;      <div class=&#x22;button-row&#x22;>&#xA;        <button type=&#x22;submit&#x22; class=&#x22;btn-submit&#x22; id=&#x22;submitBtn&#x22;>Create Account</button>&#xA;      </div>&#xA;      <div class=&#x22;status-msg&#x22; id=&#x22;statusMsg&#x22;></div>&#xA;    </form>&#xA;  </div>&#xA;  <script>&#xA;    /* ── Theme auto-detection ─────────────────────────────────────────&#xA;       The Dev Portal has a manual light/dark toggle, so we can't rely on&#xA;       the OS setting. We look at the actual background the form is sitting&#xA;       on, decide light vs. dark, and set data-cf-theme on the card. A&#xA;       MutationObserver re-runs it whenever the portal flips the toggle. */&#xA;    (function () {&#xA;      const card = document.querySelector('.form-card');&#xA;&#xA;      function luminanceOf(color) {&#xA;        const m = color && color.match(/[\d.]+/g);&#xA;        if (!m) return null;&#xA;        const r = +m[0], g = +m[1], b = +m[2];&#xA;        const a = m[3] !== undefined ? +m[3] : 1;&#xA;        if (a === 0) return null;               // fully transparent → keep looking&#xA;        return (0.299 * r + 0.587 * g + 0.114 * b) / 255;&#xA;      }&#xA;&#xA;      function detectTheme() {&#xA;        const html = document.documentElement;&#xA;        const body = document.body;&#xA;&#xA;        // 1. Explicit theme hints commonly set by doc portals&#xA;        const attr = (html.getAttribute('data-theme') || body && body.getAttribute('data-theme') || '').toLowerCase();&#xA;        if (attr.includes('dark')) return 'dark';&#xA;        if (attr.includes('light')) return 'light';&#xA;        const cls = (html.className + ' ' + (body ? body.className : '')).toLowerCase();&#xA;        if (/\bdark\b/.test(cls)) return 'dark';&#xA;        if (/\blight\b/.test(cls)) return 'light';&#xA;&#xA;        // 2. Walk up from the form to the first element with a solid background&#xA;        let node = card;&#xA;        while (node) {&#xA;          const lum = luminanceOf(getComputedStyle(node).backgroundColor);&#xA;          if (lum !== null) return lum < 0.5 ? 'dark' : 'light';&#xA;          node = node.parentElement;&#xA;        }&#xA;&#xA;        // 3. Fall back to the OS preference&#xA;        return (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) ? 'dark' : 'light';&#xA;      }&#xA;&#xA;      function applyTheme() { card.setAttribute('data-cf-theme', detectTheme()); }&#xA;&#xA;      applyTheme();&#xA;&#xA;      // React to the portal's light/dark toggle&#xA;      const mo = new MutationObserver(applyTheme);&#xA;      mo.observe(document.documentElement, { attributes: true, attributeFilter: ['class', 'data-theme', 'style'] });&#xA;      if (document.body) mo.observe(document.body, { attributes: true, attributeFilter: ['class', 'data-theme', 'style'] });&#xA;      if (window.matchMedia) {&#xA;        window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', applyTheme);&#xA;      }&#xA;    })();&#xA;&#xA;    const WEBHOOK_URL = 'https://dcapsaq.app.n8n.cloud/webhook/9a97dd7f-06d5-48dc-b272-b8c62801e75e';&#xA;    document.getElementById('hear_referral').addEventListener('change', function() {&#xA;      toggleSpecify('referralSpecify', this.checked);&#xA;    });&#xA;    document.getElementById('hear_other').addEventListener('change', function() {&#xA;      toggleSpecify('otherSpecify', this.checked);&#xA;    });&#xA;    function toggleSpecify(id, show) {&#xA;      document.getElementById(id).style.display = show ? 'block' : 'none';&#xA;      if (!show) document.getElementById(id).querySelector('input').value = '';&#xA;    }&#xA;    function showStatus(type, msg) {&#xA;      const el = document.getElementById('statusMsg');&#xA;      el.style.display = '';&#xA;      el.className = 'status-msg ' + type;&#xA;      el.textContent = msg;&#xA;    }&#xA;    function hideStatus() {&#xA;      const el = document.getElementById('statusMsg');&#xA;      el.className = 'status-msg';&#xA;      el.style.display = '';&#xA;    }&#xA;    function clearErrors() {&#xA;      document.querySelectorAll('.invalid').forEach(el => el.classList.remove('invalid'));&#xA;      document.querySelectorAll('.error-text').forEach(el => el.style.display = 'none');&#xA;    }&#xA;    function validate() {&#xA;      clearErrors();&#xA;      let ok = true;&#xA;      [&#xA;        { id: 'firstName',    err: 'firstNameErr',    fn: v => v.length > 0 },&#xA;        { id: 'lastName',     err: 'lastNameErr',     fn: v => v.length > 0 },&#xA;        { id: 'email',        err: 'emailErr',        fn: v => /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(v) },&#xA;        { id: 'businessName', err: 'businessNameErr', fn: v => v.length > 0 },&#xA;      ].forEach(({ id, err, fn }) => {&#xA;        const el = document.getElementById(id);&#xA;        if (!fn(el.value.trim())) {&#xA;          el.classList.add('invalid');&#xA;          document.getElementById(err).style.display = 'block';&#xA;          ok = false;&#xA;        }&#xA;      });&#xA;      if (!document.getElementById('terms').checked) {&#xA;        showStatus('error', 'You must accept the Terms of Use to continue.');&#xA;        ok = false;&#xA;      }&#xA;      return ok;&#xA;    }&#xA;    function collectHearAboutUs() {&#xA;      return Array.from(document.querySelectorAll('input[id^=&#x22;hear_&#x22;]:checked')).map(cb => {&#xA;        if (cb.id === 'hear_referral') {&#xA;          const v = document.getElementById('referralText').value.trim();&#xA;          return v ? 'Referral: ' + v : 'Referral';&#xA;        }&#xA;        if (cb.id === 'hear_other') {&#xA;          const v = document.getElementById('otherText').value.trim();&#xA;          return v ? 'Other: ' + v : 'Other';&#xA;        }&#xA;        return cb.value;&#xA;      });&#xA;    }&#xA;    const form = document.getElementById('registerForm');&#xA;    form.addEventListener('submit', async function(e) {&#xA;      e.preventDefault();&#xA;      if (form.dataset.submitting === 'true') return;&#xA;      form.dataset.submitting = 'true';&#xA;      hideStatus();&#xA;      if (!validate()) {&#xA;        form.dataset.submitting = 'false';&#xA;        return;&#xA;      }&#xA;      const btn = document.getElementById('submitBtn');&#xA;      btn.disabled = true;&#xA;      btn.textContent = 'Submitting…';&#xA;      const payload = {&#xA;        firstName:    document.getElementById('firstName').value.trim(),&#xA;        lastName:     document.getElementById('lastName').value.trim(),&#xA;        email:        document.getElementById('email').value.trim(),&#xA;        businessName: document.getElementById('businessName').value.trim(),&#xA;        phone:        document.getElementById('phone').value.trim() || null,&#xA;        hearAboutUs:  collectHearAboutUs(),&#xA;        submittedAt:  new Date().toISOString()&#xA;      };&#xA;      try {&#xA;        const res = await fetch(WEBHOOK_URL, {&#xA;          method: 'POST',&#xA;          headers: { 'Content-Type': 'application/json' },&#xA;          body: JSON.stringify(payload)&#xA;        });&#xA;        if (res.ok) {&#xA;          showStatus('success', 'Your request has been submitted! Our team will be in touch shortly.');&#xA;          form.reset();&#xA;          document.getElementById('otherSpecify').style.display = 'none';&#xA;          document.getElementById('referralSpecify').style.display = 'none';&#xA;        } else {&#xA;          throw new Error('HTTP ' + res.status);&#xA;        }&#xA;      } catch (err) {&#xA;        console.error(err);&#xA;        showStatus('error', 'Something went wrong. Please try again or contact support.');&#xA;      } finally {&#xA;        btn.disabled = false;&#xA;        btn.textContent = 'Create Account';&#xA;        form.dataset.submitting = 'false';&#xA;      }&#xA;    });&#xA;  </script>&#xA;</body>&#xA;</html>&#xA;"}

:::



:::hint{type="info"}
**Note:&#x20;**&#x59;our e-mail will be used to create your unique Dev Portal account credentials once approved.&#x20;
:::



