---
title: "Subscribe Email"
method: POST
path: "/api/subscribe"
---

# Subscribe Email

`POST /api/subscribe`

## Request

- Base URL: `https://owlgrouptrading.com` (the document declares no server; this is the origin it was published from)
- URL: `https://owlgrouptrading.com/api/subscribe`
- Auth: none declared

Subscribe an email to the OGT daily commentary list.

Adds the email to gs://ogt-briefings/email/subscribers.json (the same
list the daily-emails cron sends to) and returns a glossary access URL
so the homepage form can show the user a one-click link to the
Tortoise Glossary on success.

Idempotent: re-subscribing returns ok with added=False and still
issues the glossary URL (deterministic per email).

The entire email pipeline runs from Cloud Run + Gmail SMTP — no
third-party newsletter service in the loop.

Bot-filtered via src/engage/signup_filter (honeypot + IANA TLD allowlist
+ MX-record DNS check). Bots get the same generic 400 a malformed-email
user would see, so they can't iterate against our filter.

## Request body

- object

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/owlgrouptrading/apis/edge-s2-briefing-service.md) · [All operations](https://skmtc.dev/owlgrouptrading/apis/edge-s2-briefing-service/llms.txt) · [OpenAPI document](https://skmtc.dev/owlgrouptrading/apis/edge-s2-briefing-service/revisions/fba9aeca6fc2?raw)
