Create a workspace
Sign in and create the business workspace that owns your data.
Product documentation
Choose the product you are implementing. Every product uses the same configurable form engine and versioned API.
Start here
Waitlists, newsletters, contact forms, and custom forms share fields, hosted pages, browser submissions, notifications, webhooks, and retrieval APIs. The selected form type adds the right defaults and consent behavior.
Sign in and create the business workspace that owns your data.
Create a waitlist, newsletter, contact form, or custom form and configure its fields.
Publish immediately. Activate a plan when your server needs secret-key API access.
| Product | Best for | Default behavior |
|---|---|---|
| Dynamic form | Applications, intake, surveys, requests, and custom workflows | You define the complete field structure. |
| Waitlist | Launch interest and early-access registration | Email is required; explicit marketing consent can create a subscribed contact. |
| Newsletter | Permission-based email signup | Email and explicit marketing consent are required. |
| Contact form | Enquiries, support, partnerships, and lead intake | Name, email, and message are required; submitters are not automatically subscribers. |
Dynamic forms
Choose Custom data when your use case does not fit a marketing or contact template. Add, edit, reorder, require, or remove fields from the dashboard.
Field keys begin with a letter and contain lowercase letters, numbers, or underscores. JSON payload keys must exactly match them.
POST
const response = await fetch(
"https://audiencerelay.com/api/v1/forms/PUBLIC_FORM_TOKEN/submissions",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
company_name: "Northwind",
team_size: 12,
project_summary: "We need a customer intake workflow."
})
}
);Unknown keys are ignored. Required configured fields must contain valid values.
Waitlists
A waitlist begins with optional name and required email fields. Add qualification fields such as company, role, use case, location, or referral source.
A valid waitlist response is always stored as a submission. It becomes a subscribed contact only when marketing_consent is explicitly true. Do not preselect or infer consent.
{
"name": "Ada",
"email": "ada@example.com",
"company": "Example Ltd",
"marketing_consent": true
}Use an unchecked checkbox with clear language such as: “I agree to receive launch updates by email and can unsubscribe later.” Link to the customer business’s privacy notice.
Newsletters
A newsletter begins with a required email field. You can add name, interests, language, or other segmentation fields while keeping consent separate from profile data.
{
"email": "reader@example.com",
"interests": "Product updates",
"marketing_consent": true
}Only explicitly consenting newsletter submissions appear in subscribed contacts. AudienceRelay currently collects and records consent; bulk campaign sending is not part of this API version.
Activate the form and share https://audiencerelay.com/f/PUBLIC_FORM_TOKEN. The hosted form automatically displays the required marketing-consent checkbox for newsletter products.
Contact forms
Contact forms start with required name, email, and message fields. Add a topic select, phone number, order reference, or any other routing information.
{
"name": "Ayo",
"email": "ayo@example.com",
"topic": "Partnership",
"message": "I would like to discuss a distribution partnership."
}Contact submissions do not create marketing subscribers. Configure a notification email or signed webhook if the business needs immediate routing.
API and webhooks
All products use the same v1 endpoints. Publishable tokens accept responses; secret API keys read workspace data.
https://audiencerelay.com/api/v1Safe for browser submission code. It cannot read forms, contacts, or submissions.
Authorization: Bearer ar_live_YOUR_SECRET_KEYUse secret keys only from a trusted server. Keys are displayed once, stored as hashes, and can be revoked.
POST
https://audiencerelay.com/api/v1/forms/PUBLIC_FORM_TOKEN/submissions{
"id": 184,
"created_at": "2026-08-15T12:30:00+00:00"
}Add complete origins, including scheme. Paths are not origins.
https://example.com
https://www.example.comAllowed origins receive CORS headers on success and error responses. Each form also has configurable payload, per-source rate, and honeypot controls.
<input name="website" tabindex="-1" autocomplete="off" aria-hidden="true">GET
curl "https://audiencerelay.com/api/v1/forms" \
-H "Authorization: Bearer ar_live_YOUR_SECRET_KEY"GET
curl "https://audiencerelay.com/api/v1/forms/FORM_ID/submissions?limit=50&cursor=184" \
-H "Authorization: Bearer ar_live_YOUR_SECRET_KEY"limit accepts 1–100. Results are newest first. Continue with next_cursor until it is null.
AudienceRelay sends submission.created to a configured public HTTPS URL after storing a response.
X-AudienceRelay-Event: submission.created
X-AudienceRelay-Signature: sha256=HEX_HMACCalculate HMAC-SHA256 over the exact raw request body using the form’s signing secret and compare signatures safely. Failed deliveries are attempted three times and remain available for manual retry.
| Status | Meaning |
|---|---|
400 | Invalid JSON, required data, email, or field option. |
401 | Secret API access is missing, invalid, revoked, or inactive. |
403 | Origin or submission protection rejected the request. |
404 | The form is missing or unavailable. |
413 | Payload exceeds the form limit. |
429 | Per-source rate limit exceeded. |
Errors use {"error":"Human-readable explanation."}.