111 lines
4.1 KiB
Markdown
111 lines
4.1 KiB
Markdown
# 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
|
|
```python
|
|
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
|
|
```python
|
|
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`
|
|
```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... |
|