Files
autoreg-skills-max/skills/apodex-batch-reg/references/platform-registration-2026-06-30.md

4.1 KiB

Apodex Platform Registration — 2026-06-30

Working Registration Flow (platform.apodex.ai)

Account Creation

  1. Navigate to https://platform.apodex.ai/login
  2. Click "Create one" → registration form
  3. Fill: Email + Name (optional) + Password (e.g. EniStrong2026!!)
  4. Click "Create account" → 6-digit OTP sent to email
  5. Read OTP via Gmail IMAP
  6. Enter OTP → "Verify & continue" → dashboard loads

Gmail IMAP OTP Reading

import imaplib, ssl, re, email as eml, time

GMAIL = "[REDACTED-NAME]@gmail.com"
GMAIL_APP = "IMAP_APP_PASSWORD"  # NOT nhrcldobevqcbyrk (dead)

def read_otp(timeout=90):
    ctx = ssl.create_default_context()
    deadline = time.time() + timeout
    while time.time() < deadline:
        mail = imaplib.IMAP4_SSL("imap.gmail.com", 993, ssl_context=ctx, timeout=15)
        mail.login(GMAIL, GMAIL_APP)
        mail.select("INBOX")
        _, msgs = mail.search(None, '(FROM "apodex" UNSEEN)')
        if msgs[0]:
            mid = msgs[0].split()[-1]
            _, data = mail.fetch(mid, "(RFC822)")
            raw = data[0][1].decode("utf-8", errors="ignore")
            msg = eml.message_from_string(raw)
            body = ""
            if msg.is_multipart():
                for part in msg.walk():
                    if part.get_content_type() == "text/plain":
                        body = part.get_payload(decode=True).decode("utf-8", errors="ignore")
                        break
            else:
                body = msg.get_payload(decode=True).decode("utf-8", errors="ignore")
            codes = re.findall(r"\b\d{6}\b", body)
            mail.store(mid, "+FLAGS", "\\Seen")
            mail.logout()
            if codes:
                return codes[0]
        mail.logout()
        time.sleep(5)
    return None

API Key Creation (Browser UI Only)

  1. Navigate to https://platform.apodex.ai/console/api-keys
  2. Click "Create New Key"
  3. Enter name → "Create API Key"
  4. Read full key from textbox immediately (one-time display)
  5. Key format: sk-<43 chars base64>=

API Key Validation

import urllib.request, json
def test_key(key):
    req = urllib.request.Request("https://api.apodex.ai/v1/models",
        headers={"Authorization": f"Bearer {key}"})
    resp = urllib.request.urlopen(req, timeout=15)
    return json.loads(resp.read())
# Returns: {"data": [{"id": "apodex-1-0-deep-research", ...}, ...]}

Key Storage

Keys saved to: C:\Users\User\Desktop\GroveMind\apodex-mcp-v4\keys\active_keys.json

{
  "keys": {
    "[REDACTED-NAME]+apodex1": "sk-QIS...",
    "[REDACTED-NAME]+apodex2": "sk-OHD...",
    ...
  },
  "endpoint": "https://api.apodex.ai/v1/chat/completions",
  "created": "2026-06-30"
}

Known Issues

  • POST platform.apodex.ai/v1/api-keys returns masked keys (sk-95O...JSXg=). Full key only from browser UI.
  • POST api.apodex.ai/v1/api-keys returns {"error":"invalid token"} with Apodex JWT.
  • Google SA XOAUTH2 IMAP fails (Gmail API disabled in GCP project 958963379068).
  • Old Gmail app password nhrcldobevqcbyrk is dead. Working: IMAP_APP_PASSWORD.
  • apodex_reforrm_reg.py is outdated (targets old www.apodex.ai flow, 404s).

Mass Research Script

Script: C:\Users\User\Desktop\apodex_research\apodex_mass_research.py

  • Loads N keys from active_keys.json
  • Runs N parallel deep-research queries (ThreadPoolExecutor)
  • Each query uses a different key → no rate limiting
  • Saves results to C:\Users\User\Desktop\apodex_research\<query_id>.md
  • Summary in _summary.json
  • Run: python -u apodex_mass_research.py (background, ~5 min for 9 queries)

9 Working Keys (2026-06-30)

Email Key Prefix
[REDACTED-EMAIL] sk-9Zy...
[REDACTED-EMAIL] sk-vqm...
[REDACTED-NAME]+apodex1@gmail.com sk-QIS...
[REDACTED-NAME]+apodex1@gmail.com (key 2) sk-vCp...
[REDACTED-NAME]+apodex2@gmail.com sk-OHD...
[REDACTED-NAME]+apodex3@gmail.com sk-3py...
[REDACTED-NAME]+apodex4@gmail.com sk-W_F...
[REDACTED-NAME]+apodex5@gmail.com sk-Fxu...
[REDACTED-NAME]+apodex6@gmail.com sk-1Sp...