Skip to main content
POST
/
v1
/
newsletter
/
subscribe
curl -X POST https://api.aioka.io/v1/newsletter/subscribe \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com", "name": "Alice"}'
{
  "message": "Successfully subscribed to newsletter"
}

Overview

Public endpoint used by the newsletter signup form on aioka.io. Stores the email in the newsletter_subscribers table, sends a welcome email via Resend, and fires an admin Telegram notification. Tier: Public ✅ — No API key required Rate limit: 3 requests per IP per hour

Spam Protection

  • Honeypot: a hidden website field must be empty. Any non-empty value returns 400.
  • Rate limit: 3 attempts per IP per hour (Redis-backed sliding window).
  • Silent duplicate: already-subscribed emails return 200 silently — no error, no resent welcome email. This prevents email enumeration and harvesting attacks.

Request Fields

FieldTypeRequiredDescription
emailstringValid email address, max 254 chars
namestringOptional name, max 100 chars
websitestringHoneypot — must be empty

Response Fields

FieldTypeDescription
messagestringConfirmation message
curl -X POST https://api.aioka.io/v1/newsletter/subscribe \
  -H "Content-Type: application/json" \
  -d '{"email": "user@example.com", "name": "Alice"}'
{
  "message": "Successfully subscribed to newsletter"
}

What Happens Next

  1. Your email is stored in the newsletter_subscribers table.
  2. A welcome email is sent to you via Resend with the subject “Welcome to AIOKA — The Council Is Now Watching For You 👻”.
  3. The AIOKA owner is notified via Telegram.
  4. You’ll start receiving verdicts, council rulings, and market intelligence directly from the Judiciary Engine.
Visit aioka.io/live to watch the Council in real time.

Body

application/json
email
string
required
Maximum string length: 254
name
string | null
Maximum string length: 100
website
string
default:""
Maximum string length: 500

Response

Successfully subscribed to newsletter

message
string
required