API reference
Forms API
The endpoints behind this site's contact form and waitlist.
Both endpoints accept a JSON body of up to 16 KB from allowed origins only, and validate it with the same rules as the forms on this site.
POST /contact
| Field | Rules |
|---|---|
| name | Required, up to 120 characters. |
| Required, a valid email, up to 254 characters. | |
| organization | Optional, up to 160 characters. |
| topic | general · sales · support · partnership · press |
| message | Required, 10 to 4,000 characters. |
curl -X POST "$FORMS_ENDPOINT/contact" \
-H "content-type: application/json" \
-d '{"name":"Ada","email":"ada@example.org","topic":"general","message":"Hello, Octave AMS."}'POST /waitlist
| Field | Rules |
|---|---|
| Required, a valid email. Stored in lower case; one entry per address. | |
| consent | Required, true. |
| name | Optional, up to 120 characters. |
| association | Optional, up to 160 characters. |
| role | Optional: admin · officer · member · other |
| size | Optional: 1–50 · 51–250 · 251–1,000 · 1,000+ |
Responses
| Status | Body | When |
|---|---|---|
| 201 | { "status": "created" } | Saved. |
| 200 | { "status": "duplicate" } | Waitlist only: the email is already on the list. |
| 400 | { "status": "invalid", "errors": {…} } | A field failed validation; errors are keyed by field. |
| 403 | { "status": "error" } | The request's origin isn't allowed. |
| 413 | { "status": "error" } | The body is over 16 KB. |
| 502 | { "status": "error" } | Storage failed; try again. |