82 lines
3.3 KiB
Markdown
82 lines
3.3 KiB
Markdown
# Apodex API Endpoints Reference (2026-06-26)
|
|
|
|
## Core Endpoints
|
|
|
|
| Endpoint | Method | Auth | Purpose |
|
|
|----------|--------|------|---------|
|
|
| `https://api.apodex.ai/v1/chat/completions` | POST | Bearer API Key | Chat completions (OpenAI-compatible) |
|
|
| `https://api.apodex.ai/v1/models` | GET | Bearer API Key | List available models |
|
|
| `https://api.apodex.ai/v1/api-keys` | GET | Bearer Supabase JWT | List/Create API keys |
|
|
| `https://hgejqhubxceqppqkgqgx.supabase.co/auth/v1/otp` | POST | apikey header | Trigger OTP |
|
|
| `https://hgejqhubxceqppqkgqgx.supabase.co/auth/v1/verify` | POST | apikey header | Verify OTP → session |
|
|
|
|
## Models (confirmed via `/v1/models`)
|
|
|
|
| Model ID | Context | Max Output |
|
|
|----------|---------|------------|
|
|
| `apodex-1-0-deep-discovery` | 131,072 | 262,144 |
|
|
| `apodex-1-0-deep-reasoning` | 262,144 | 16,384 |
|
|
| `apodex-1-0-deep-research` | 262,144 | 16,384 |
|
|
|
|
## Auth Systems
|
|
|
|
### 1. API Key (for completions)
|
|
- Format: `sk-<base64 string ending with =>`
|
|
- Example: `[REDACTED-KEY]=`
|
|
- Header: `Authorization: Bearer <key>`
|
|
- Works on: `/v1/chat/completions`, `/v1/models`
|
|
- Does NOT work on: `/v1/api-keys` (returns `{"error":"invalid token"}`)
|
|
|
|
### 2. Supabase Session JWT (for key management)
|
|
- Format: JWT (`eyJ...`)
|
|
- Stored in: `localStorage.getItem('sb-hgejqhubxceqppqkgqgx-auth-token')`
|
|
- Header: `Authorization: Bearer <jwt>`
|
|
- Works on: `/v1/api-keys`
|
|
- Obtained via: OTP verify flow
|
|
|
|
### 3. Session Cookie
|
|
- Format: 32 hex chars (e.g., `[REDACTED-KEY]`)
|
|
- NOT a valid Bearer token for ANY endpoint (returns `invalid api key` on chat completions)
|
|
- May work for Supabase session lookup
|
|
|
|
## Error Messages
|
|
|
|
| Error | Meaning | Where |
|
|
|-------|---------|-------|
|
|
| `{"error":"invalid token"}` | API key used on wrong endpoint | `/v1/api-keys` with API key |
|
|
| `{"error":"invalid api key"}` | Session cookie used as Bearer | any endpoint |
|
|
| `{"error":{"message":"Only POST is supported",...}}` | GET on chat completions | `/v1/chat/completions` |
|
|
| `{"error":"invalid api key"}` | Wrong/missing auth | any endpoint |
|
|
| `PASSWORDLESS_SEND_RATE_LIMITED` | IP-based rate limit on OTP | Supabase auth |
|
|
|
|
## Working Keys (2026-06-26)
|
|
|
|
| Account | Key | Status |
|
|
|---------|-----|--------|
|
|
| `[REDACTED-EMAIL]` | `[REDACTED-KEY]=` | ✅ Live |
|
|
| `[REDACTED-EMAIL]` | `[REDACTED-KEY]=` | ✅ Live |
|
|
|
|
## Account Table (20 total, 2026-06-26)
|
|
|
|
| # | Email | API Key | Status |
|
|
|---|-------|---------|--------|
|
|
| 1 | `[REDACTED-EMAIL]` | `[REDACTED-KEY]=` | ✅ |
|
|
| 2 | `[REDACTED-EMAIL]` | `[REDACTED-KEY]=` | ✅ |
|
|
| 3 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 4 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 5 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 6 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 7 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 8 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 9 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 10 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 11 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 12 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 13 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 14 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 15 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 16 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 17 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 18 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 19 | `[REDACTED-EMAIL]` | ❓ | ✅ Created |
|
|
| 20 | `[REDACTED-EMAIL]` | ❓ | ✅ Created | |