← Developers
REST API
Pro for scan

Full JSON API.
OpenAPI 3.1 spec.

Cookie auth for web sessions, Bearer token for API keys. Consistent error schema across all endpoints. Rate-limited per tier.

OpenAPI spec →Get API key
Base URLs
Productionhttps://api.chartai.live
Staginghttps://api.test.chartai.live
Local devhttp://localhost:8001
Authentication
Session cookie
Cookie: session=...Set after POST /auth/login
Bearer token
Authorization: Bearer sk-...Pro plan API keys only
cURL · Auth examples
# Cookie auth (web sessions)
curl -X POST https://api.chartai.live/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"..."}' \
  -c cookies.txt

# Subsequent requests use the cookie automatically
curl https://api.chartai.live/auth/me -b cookies.txt

# Bearer auth (API key — Pro only)
curl https://api.chartai.live/api/v1/scan?symbol=BTCUSDT&tf=4h \
  -H "Authorization: Bearer sk-chartai-<YOUR_KEY>"
Endpoint reference

All endpoints

Auth
MethodPathTierDescription
POST/auth/signupAllCreate account. Returns session cookie.
POST/auth/loginAllLogin with email + password. Sets session cookie.
POST/auth/logoutAllRevoke session cookie.
GET/auth/meAllGet current user profile and tier.
Scan & Patterns
MethodPathTierDescription
GET/api/v1/scanProScan a symbol for patterns. Params: symbol, tf, patterns.
GET/api/v1/patternsAllList all supported pattern metadata.
GET/api/v1/patterns/{id}AllGet a specific pattern type by ID.
Records
MethodPathTierDescription
GET/api/v1/recordsGo+List historical signal records. Filters: symbol, outcome, limit.
GET/api/v1/records/publicAllPublic sample of recent records (last 5).
GET/api/v1/records/recentAllRecent records for homepage feed. No auth required.
GET/api/v1/records/{id}Go+Get a specific record by ID.
Watchlists
MethodPathTierDescription
GET/api/v1/watchlistsAllList your watchlists.
POST/api/v1/watchlistsAllCreate a watchlist.
PUT/api/v1/watchlists/{id}AllUpdate watchlist name or symbols.
DELETE/api/v1/watchlists/{id}AllDelete a watchlist.
Payments
MethodPathTierDescription
POST/payments/nowpayments/invoiceAllCreate a NOWPayments crypto invoice for plan upgrade.
GET/payments/nowpayments/statusAllPoll invoice payment status.
POST/payments/x402AllPay via x402 protocol (USDC/ETH). Returns access token.
Notifications
MethodPathTierDescription
GET/api/v1/notifications/preferencesAllGet notification channel preferences.
PUT/api/v1/notifications/preferencesAllUpdate channel preferences (email, telegram, discord, X).
POST/api/v1/notifications/channels/bindAllBind a notification channel (Telegram username, Discord webhook, etc.).
Affiliate
MethodPathTierDescription
GET/api/v1/affiliate/meAllGet affiliate account stats.
GET/api/v1/affiliate/codesAllList your referral codes.
GET/api/v1/affiliate/commissionsAllList commission history.
Error handling

Consistent error schema

Error response schema (all endpoints)
// All API errors follow this schema:
{
  "code": "quota_exceeded",       // machine-readable error code
  "detail": "Daily quota of 100 scans exceeded.",
  "hint": "Upgrade to Pro for 500 scans/day.",
  "meta": {
    "quota_limit": 100,
    "quota_used": 100,
    "resets_at": "2026-04-29T00:00:00Z"
  }
}
Rate limits

Per-tier limits

PlanRequests / minScan quota / dayBurst
Free10 req/min5 scans/day3
Go30 req/min50 scans/day10
Plus60 req/min100 scans/day20
Pro120 req/min500 scans/day50

Rate limit headers: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset

Start integrating Chartai into your stack

Pro plan required for scan API. Free plan has public endpoints.