---
title: "Submit a hosted/embedded signup form"
method: POST
path: "/v1/signup-forms/{id}"
tags: ["Subscriptions"]
---

# Submit a hosted/embedded signup form

`POST /v1/signup-forms/{id}`

## Request

- Base URL: `https://api.bluefox.email`
- URL: `https://api.bluefox.email/v1/signup-forms/{id}`
- Auth: HTTP bearer

Legacy flat URL shape. Not API-key authenticated - requires a whitelisted Origin header (BlueFox's own hosted-page domain is always allowed), and (depending on the form config) a CAPTCHA. Subscribes the contact to every list configured on the form.

Double opt-in follows the form's own setting, not the lists': when it is on, lists where the contact is new, unverified or unsubscribed get one verification email covering all of them (response { success: true, info }, statuses unchanged until the link is clicked); lists where they are paused are reactivated directly; lists where they are already active are skipped, and if that is every list the request fails with 400 "Email already exists.".

## Path parameters

- `id` string, required

## Request body

- object
  - `email` string, required
  - `name` string
  - `captchaText` string
  - `captchaProbe` string
  - `turnstileToken` string
  - `termsAccepted` boolean

## Response `201`

OK

- object
  - `status` integer
  - `result` object
    - `success` boolean
    - `redirectTo` string

## Other responses

- `400`: Invalid request body or query - every violation found (missing/invalid/unexpected fields) is reported in one response, semicolon-separated, not just the first one hit.
- `403`: Missing or invalid API key
- `405`: The operation is blocked by a business rule (e.g. the resource is still in use)

---

[API](https://skmtc.dev/bluefox/apis/bluefox-email-public-api.md) · [All operations](https://skmtc.dev/bluefox/apis/bluefox-email-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bluefox/apis/bluefox-email-public-api/revisions/fa1a0a835c7f?raw)
