Widgets
Create Saved Form
Create a list-scoped public signup form
POST
/
api
/
v1
/
forms
Create Saved Form
curl --request POST \
--url https://api.sequenzy.com/api/v1/forms \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"listIds": [
"<string>"
],
"tagIds": [
"<string>"
],
"duplicateStrategy": "<string>",
"successMessage": "<string>",
"redirectUrl": "<string>"
}
'import requests
url = "https://api.sequenzy.com/api/v1/forms"
payload = {
"name": "<string>",
"listIds": ["<string>"],
"tagIds": ["<string>"],
"duplicateStrategy": "<string>",
"successMessage": "<string>",
"redirectUrl": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
listIds: ['<string>'],
tagIds: ['<string>'],
duplicateStrategy: '<string>',
successMessage: '<string>',
redirectUrl: '<string>'
})
};
fetch('https://api.sequenzy.com/api/v1/forms', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sequenzy.com/api/v1/forms",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'listIds' => [
'<string>'
],
'tagIds' => [
'<string>'
],
'duplicateStrategy' => '<string>',
'successMessage' => '<string>',
'redirectUrl' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sequenzy.com/api/v1/forms"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"listIds\": [\n \"<string>\"\n ],\n \"tagIds\": [\n \"<string>\"\n ],\n \"duplicateStrategy\": \"<string>\",\n \"successMessage\": \"<string>\",\n \"redirectUrl\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sequenzy.com/api/v1/forms")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"listIds\": [\n \"<string>\"\n ],\n \"tagIds\": [\n \"<string>\"\n ],\n \"duplicateStrategy\": \"<string>\",\n \"successMessage\": \"<string>\",\n \"redirectUrl\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/forms")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"listIds\": [\n \"<string>\"\n ],\n \"tagIds\": [\n \"<string>\"\n ],\n \"duplicateStrategy\": \"<string>\",\n \"successMessage\": \"<string>\",\n \"redirectUrl\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"form": {
"id": "form_123",
"name": "Blog newsletter",
"status": "published",
"actionUrl": "https://api.sequenzy.com/api/v1/forms/form_123"
},
"embed": {
"actionUrl": "https://api.sequenzy.com/api/v1/forms/form_123",
"scriptUrl": "https://api.sequenzy.com/api/v1/forms/form_123/embed.js"
}
}
{ "error": "Every listId must belong to the selected company." }
{
"error": "Missing API key. Provide via x-api-key header or Authorization: Bearer <key>"
}
{ "error": "API key is missing required scope: widgets:write" }
{ "error": "Failed to create form." }
Create and publish a saved form. The returned opaque
formId is a client-safe
public capability; the selected lists, tags, duplicate behavior, and success
action remain server-side.
Request
Internal form name.
One or more list IDs that every submission joins.
Existing tag IDs to apply.
skip, merge, or overwrite. Defaults to skip.Confirmation shown when
redirectUrl is omitted.Optional HTTP or HTTPS success redirect.
curl -X POST "https://api.sequenzy.com/api/v1/forms" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Blog newsletter",
"listIds": ["list_123"],
"tagIds": ["tag_123"],
"successMessage": "You are subscribed."
}'
Responses
{
"success": true,
"form": {
"id": "form_123",
"name": "Blog newsletter",
"status": "published",
"actionUrl": "https://api.sequenzy.com/api/v1/forms/form_123"
},
"embed": {
"actionUrl": "https://api.sequenzy.com/api/v1/forms/form_123",
"scriptUrl": "https://api.sequenzy.com/api/v1/forms/form_123/embed.js"
}
}
{ "error": "Every listId must belong to the selected company." }
{
"error": "Missing API key. Provide via x-api-key header or Authorization: Bearer <key>"
}
{ "error": "API key is missing required scope: widgets:write" }
{ "error": "Failed to create form." }
⌘I
Create Saved Form
curl --request POST \
--url https://api.sequenzy.com/api/v1/forms \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "<string>",
"listIds": [
"<string>"
],
"tagIds": [
"<string>"
],
"duplicateStrategy": "<string>",
"successMessage": "<string>",
"redirectUrl": "<string>"
}
'import requests
url = "https://api.sequenzy.com/api/v1/forms"
payload = {
"name": "<string>",
"listIds": ["<string>"],
"tagIds": ["<string>"],
"duplicateStrategy": "<string>",
"successMessage": "<string>",
"redirectUrl": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
listIds: ['<string>'],
tagIds: ['<string>'],
duplicateStrategy: '<string>',
successMessage: '<string>',
redirectUrl: '<string>'
})
};
fetch('https://api.sequenzy.com/api/v1/forms', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sequenzy.com/api/v1/forms",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'listIds' => [
'<string>'
],
'tagIds' => [
'<string>'
],
'duplicateStrategy' => '<string>',
'successMessage' => '<string>',
'redirectUrl' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.sequenzy.com/api/v1/forms"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"listIds\": [\n \"<string>\"\n ],\n \"tagIds\": [\n \"<string>\"\n ],\n \"duplicateStrategy\": \"<string>\",\n \"successMessage\": \"<string>\",\n \"redirectUrl\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.sequenzy.com/api/v1/forms")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"listIds\": [\n \"<string>\"\n ],\n \"tagIds\": [\n \"<string>\"\n ],\n \"duplicateStrategy\": \"<string>\",\n \"successMessage\": \"<string>\",\n \"redirectUrl\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sequenzy.com/api/v1/forms")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"listIds\": [\n \"<string>\"\n ],\n \"tagIds\": [\n \"<string>\"\n ],\n \"duplicateStrategy\": \"<string>\",\n \"successMessage\": \"<string>\",\n \"redirectUrl\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"form": {
"id": "form_123",
"name": "Blog newsletter",
"status": "published",
"actionUrl": "https://api.sequenzy.com/api/v1/forms/form_123"
},
"embed": {
"actionUrl": "https://api.sequenzy.com/api/v1/forms/form_123",
"scriptUrl": "https://api.sequenzy.com/api/v1/forms/form_123/embed.js"
}
}
{ "error": "Every listId must belong to the selected company." }
{
"error": "Missing API key. Provide via x-api-key header or Authorization: Bearer <key>"
}
{ "error": "API key is missing required scope: widgets:write" }
{ "error": "Failed to create form." }