Form Plume API
Manage Form Plume forms, submissions, delivery settings, and integrations with an organization API key.
Manage Form Plume forms, submissions, delivery settings, and integrations with an organization API key.
Production
Create and manage forms and their settings.
Returns the forms in your organization, ordered for display in the dashboard and API clients.
Filter to the form carrying this config-as-code key.
curl https://api.formplume.com/v1/forms \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
[
{
"id": "0196f2f6-2ec3-7d91-9ea3-6a63175fc8a1",
"name": "Contact form",
"emoji": "📬",
"public_slug": "contact",
"access_mode": "public",
"is_active": true,
"external_key": "website-contact",
"created_at": "2026-07-13T18:30:00Z",
"submission_count": 1,
"unread_submission_count": 1
}
]Forms in the active tenant.
Creates a form with its public submission endpoint and initial settings.
curl https://api.formplume.com/v1/forms \
--request POST \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"name": "Contact form",
"emoji": "📬",
"access_mode": "public",
"external_key": "website-contact"
}'
{
"id": "0196f2f6-2ec3-7d91-9ea3-6a63175fc8a1",
"name": "Contact form",
"emoji": "📬",
"public_slug": "contact",
"access_mode": "public",
"is_active": true,
"external_key": "website-contact",
"created_at": "2026-07-13T18:30:00Z",
"submission_count": 1,
"unread_submission_count": 1,
"settings": {
"response": {
"success": {
"type": "hosted_page",
"redirect_url": "https://example.com/integrations/callback"
},
"error": {
"type": "hosted_page",
"redirect_url": "https://example.com/integrations/callback"
}
},
"spam": {
"enabled": true,
"strictness": "low",
"blocked_keywords": [
"viagra"
]
},
"rate_limit": {
"disabled": false,
"limit": 1,
"window_seconds": 30,
"burst": 20,
"burst_window_seconds": 600
},
"privacy": {
"redact_fields": [
"password"
],
"do_not_store_fields": [
"credit_card"
]
},
"email": {
"notify_spam": false
},
"retention": {
"days": 30
}
},
"notify_emails": [
"alex@example.com"
],
"notify_cc_emails": [
"alex@example.com"
],
"notify_bcc_emails": [
"alex@example.com"
],
"notify_routing_aliases": [
{
"alias": "sales",
"to_emails": [
"alex@example.com"
],
"cc_emails": [
"alex@example.com"
],
"bcc_emails": [
"alex@example.com"
]
}
],
"notify_subject": "New submission on {{form_name}}",
"allowed_origins": [
"https://example.com"
],
"updated_at": "2026-07-13T18:35:00Z"
}Created form.
Returns one form, including its public slug, status, and configured settings.
curl 'https://api.formplume.com/v1/forms/{id}' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"id": "0196f2f6-2ec3-7d91-9ea3-6a63175fc8a1",
"name": "Contact form",
"emoji": "📬",
"public_slug": "contact",
"access_mode": "public",
"is_active": true,
"external_key": "website-contact",
"created_at": "2026-07-13T18:30:00Z",
"submission_count": 1,
"unread_submission_count": 1,
"settings": {
"response": {
"success": {
"type": "hosted_page",
"redirect_url": "https://example.com/integrations/callback"
},
"error": {
"type": "hosted_page",
"redirect_url": "https://example.com/integrations/callback"
}
},
"spam": {
"enabled": true,
"strictness": "low",
"blocked_keywords": [
"viagra"
]
},
"rate_limit": {
"disabled": false,
"limit": 1,
"window_seconds": 30,
"burst": 20,
"burst_window_seconds": 600
},
"privacy": {
"redact_fields": [
"password"
],
"do_not_store_fields": [
"credit_card"
]
},
"email": {
"notify_spam": false
},
"retention": {
"days": 30
}
},
"notify_emails": [
"alex@example.com"
],
"notify_cc_emails": [
"alex@example.com"
],
"notify_bcc_emails": [
"alex@example.com"
],
"notify_routing_aliases": [
{
"alias": "sales",
"to_emails": [
"alex@example.com"
],
"cc_emails": [
"alex@example.com"
],
"bcc_emails": [
"alex@example.com"
]
}
],
"notify_subject": "New submission on {{form_name}}",
"allowed_origins": [
"https://example.com"
],
"updated_at": "2026-07-13T18:35:00Z"
}Form details.
Updates the supplied settings for a form while leaving omitted settings unchanged.
Per-form behavior settings. Send only the sections you want to change; omitted sections keep their stored values. Unknown extra top-level keys are preserved for forward compatibility. CAPTCHA and email hygiene are managed through their dedicated endpoints (/v1/forms/{id}/captcha, /v1/forms/{id}/email-hygiene) and may appear here read-only.
curl 'https://api.formplume.com/v1/forms/{id}' \
--request PATCH \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"name": "Contact form",
"emoji": "📬",
"access_mode": "public",
"is_active": true,
"settings": {
"response": {
"success": {
"type": "hosted_page",
"redirect_url": "https://example.com/integrations/callback"
},
"error": {
"type": "hosted_page",
"redirect_url": "https://example.com/integrations/callback"
}
},
"spam": {
"enabled": true,
"strictness": "low",
"blocked_keywords": [
"viagra"
]
},
"rate_limit": {
"disabled": false,
"limit": 1,
"window_seconds": 30,
"burst": 20,
"burst_window_seconds": 600
},
"privacy": {
"redact_fields": [
"password"
],
"do_not_store_fields": [
"credit_card"
]
},
"email": {
"notify_spam": false
},
"retention": {
"days": 30
}
},
"notify_emails": [
"alex@example.com"
],
"notify_cc_emails": [
"alex@example.com"
],
"notify_bcc_emails": [
"alex@example.com"
],
"notify_routing_aliases": [
{
"alias": "sales",
"to_emails": [
"alex@example.com"
],
"cc_emails": [
"alex@example.com"
],
"bcc_emails": [
"alex@example.com"
]
}
],
"notify_subject": "New submission on {{form_name}}",
"allowed_origins": [
"https://example.com"
],
"external_key": "website-contact"
}'
{
"id": "0196f2f6-2ec3-7d91-9ea3-6a63175fc8a1",
"name": "Contact form",
"emoji": "📬",
"public_slug": "contact",
"access_mode": "public",
"is_active": true,
"external_key": "website-contact",
"created_at": "2026-07-13T18:30:00Z",
"submission_count": 1,
"unread_submission_count": 1,
"settings": {
"response": {
"success": {
"type": "hosted_page",
"redirect_url": "https://example.com/integrations/callback"
},
"error": {
"type": "hosted_page",
"redirect_url": "https://example.com/integrations/callback"
}
},
"spam": {
"enabled": true,
"strictness": "low",
"blocked_keywords": [
"viagra"
]
},
"rate_limit": {
"disabled": false,
"limit": 1,
"window_seconds": 30,
"burst": 20,
"burst_window_seconds": 600
},
"privacy": {
"redact_fields": [
"password"
],
"do_not_store_fields": [
"credit_card"
]
},
"email": {
"notify_spam": false
},
"retention": {
"days": 30
}
},
"notify_emails": [
"alex@example.com"
],
"notify_cc_emails": [
"alex@example.com"
],
"notify_bcc_emails": [
"alex@example.com"
],
"notify_routing_aliases": [
{
"alias": "sales",
"to_emails": [
"alex@example.com"
],
"cc_emails": [
"alex@example.com"
],
"bcc_emails": [
"alex@example.com"
]
}
],
"notify_subject": "New submission on {{form_name}}",
"allowed_origins": [
"https://example.com"
],
"updated_at": "2026-07-13T18:35:00Z"
}Updated form.
Moves a form to trash so it no longer accepts new submissions.
Form deactivated.
curl 'https://api.formplume.com/v1/forms/{id}' \
--request DELETE \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
Form deactivated.
Review, update, export, and erase submitted form data.
Upload and download files attached to submissions.
Configure signed webhooks and inspect their deliveries.
Connect forms to external services and manage deliveries.
Configure and test autoresponders and email suppression.
Manage CAPTCHA, email hygiene, and form blocklists.
Inspect form analytics, organization totals, and plan usage.
Create and revoke keys for protected form submissions.
Inspect the organization API key used for the current request.