Save a signup form (Save & publish)
package main
import ( "fmt" "strings" "net/http" "io")
func main() {
url := "https://reputecast.example.com/api/v1/workspaces/acme-newsletter/forms/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
payload := strings.NewReader("{ \"afterSubmit\": \"message\", \"allowedOrigins\": [ \"example\" ], \"consentText\": \"example\", \"content\": { \"afterSubmitText\": \"example\", \"button\": \"example\", \"description\": \"example\", \"emailPlaceholder\": \"example\", \"footnote\": \"example\", \"heading\": \"example\", \"listsLabel\": \"example\", \"namePlaceholder\": \"example\", \"popupDelay\": 1, \"popupRepeatDays\": 1, \"popupScroll\": 1, \"smsConsent\": true, \"smsConsentText\": \"example\", \"smsConsentVersion\": 1 }, \"defaultListIds\": [ \"example\" ], \"doubleOptIn\": true, \"fields\": [ { \"key\": \"example\", \"label\": \"example\", \"required\": true } ], \"kind\": \"embedded\", \"listChoice\": true, \"listIds\": [ \"example\" ], \"name\": \"example\", \"publish\": true, \"redirectUrl\": \"example\", \"spam\": { \"blockDisposable\": true, \"honeypot\": true, \"minSeconds\": 1, \"rateLimitPerIp\": 1, \"turnstile\": true } }")
req, _ := http.NewRequest("PUT", 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(res) fmt.Println(string(body))
}const url = 'https://reputecast.example.com/api/v1/workspaces/acme-newsletter/forms/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = { method: 'PUT', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"afterSubmit":"message","allowedOrigins":["example"],"consentText":"example","content":{"afterSubmitText":"example","button":"example","description":"example","emailPlaceholder":"example","footnote":"example","heading":"example","listsLabel":"example","namePlaceholder":"example","popupDelay":1,"popupRepeatDays":1,"popupScroll":1,"smsConsent":true,"smsConsentText":"example","smsConsentVersion":1},"defaultListIds":["example"],"doubleOptIn":true,"fields":[{"key":"example","label":"example","required":true}],"kind":"embedded","listChoice":true,"listIds":["example"],"name":"example","publish":true,"redirectUrl":"example","spam":{"blockDisposable":true,"honeypot":true,"minSeconds":1,"rateLimitPerIp":1,"turnstile":true}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PUT \ --url https://reputecast.example.com/api/v1/workspaces/acme-newsletter/forms/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "afterSubmit": "message", "allowedOrigins": [ "example" ], "consentText": "example", "content": { "afterSubmitText": "example", "button": "example", "description": "example", "emailPlaceholder": "example", "footnote": "example", "heading": "example", "listsLabel": "example", "namePlaceholder": "example", "popupDelay": 1, "popupRepeatDays": 1, "popupScroll": 1, "smsConsent": true, "smsConsentText": "example", "smsConsentVersion": 1 }, "defaultListIds": [ "example" ], "doubleOptIn": true, "fields": [ { "key": "example", "label": "example", "required": true } ], "kind": "embedded", "listChoice": true, "listIds": [ "example" ], "name": "example", "publish": true, "redirectUrl": "example", "spam": { "blockDisposable": true, "honeypot": true, "minSeconds": 1, "rateLimitPerIp": 1, "turnstile": true } }'Permission: forms:edit
Changing the consent text starts a new consent version; every consent event records the exact text and its version.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Workspace slug
Workspace slug
Form id
Form id
Request Bodyrequired
Section titled “Request Bodyrequired”object
object
Seconds before a popup opens
Days a closed popup stays closed
Percent of the page scrolled before a popup opens; 0 is off
object
Email, first_name, last_name, company or a custom field key
Shown above the input; empty uses the field’s name
object
Submissions faster than this look automated
Submissions per minute from one address
Responses
Section titled “Responses”OK
object
object
object
Seconds before a popup opens
Days a closed popup stays closed
Percent of the page scrolled before a popup opens; 0 is off
Offered lists that start checked
object
Email, first_name, last_name, company or a custom field key
Shown above the input; empty uses the field’s name
Visitors pick lists; off joins every offered list
Lists offered on the form
object
Submissions faster than this look automated
Submissions per minute from one address
object
Submissions blocked as spam
Double opt-in confirmations not clicked yet
object
Example
{ "afterSubmit": "message", "blockedOrigins": [ { "origin": "staging.acme.io" } ], "kind": "embedded", "publicId": "frm_8c2e1a", "status": "draft"}default
Section titled “default”Error
object
Stable error code, e.g. permission_denied
A human-readable explanation specific to this occurrence of the problem.
Optional list of individual error details
object
Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’
Error message text
The value at the given location
Members who hold the missing permission
A URI reference that identifies the specific occurrence of the problem.
object
The missing permission key
HTTP status code
A short, human-readable summary of the problem type. This value should not change between occurrences of the error.
A URI reference to human-readable documentation for the error.
Example
{ "detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "about:blank"}