SoftSolzSoftSolz
HomeAPI GuideAPI ReferenceWidget Tester
forms

Copy a form into a new draft with a new slug.

Copy a form into a new draft with a new slug.

POSThttps://app.softsolz.uk/api/v1/services/forms/forms/{id}/duplicate

Recent Requests

Kept only in this browser
TimeStatusTook
Send a request with Try it to see it here.

Path Params

idstringrequired

Headers

Authorizationstringrequired

Bearer token: `Bearer sk_live_...` (or `sk_test_...` for sandbox). A login token will not work here.

Idempotency-Keystring

Optional idempotency key for safe retries.

Body Params

namestring

Name for the copy.

Response

Response Body

idintegerForm id.
slugstringURL-safe form slug, unique per tenant.
namestringForm display name.
descriptionstring | nullOptional form description.
field_schemaarray of objectsOrdered field definitions. Each item: { id, type, label, required, width, ...type-specific keys }.
settingsobjectForm settings (success_message, notify_in_app, honeypot_enabled, etc.).
appearanceobjectAppearance tokens (colors, theme, font).
statusstringPublish status.
created_atstringCreation timestamp.
updated_atstringLast update timestamp. Round-trip as expected_updated_at to guard against stale writes.
submissions_countintegerTotal submissions for this form.
unread_countintegerUnread submissions.
pagesarray of objectsPage titles for a multi-step form, in order: { id, title?, description? }.
logicarray of objectsRules: { id, when: { match, rules: [{ field, operator, value }] }, then: [{ action, target?, value? }] }.
logic_engineinteger1 for forms that only use visible_if, 2 for forms with rules or pages.
published_atstring | nullWhen the live version was last published.
has_unpublished_changesbooleanTrue when the working copy differs from the published version.
archived_atstring | nullWhen the form was archived; null when it is not.
share_enabledbooleanWhether the share link is on.
version_idinteger | nullOnly with view=published: the published version id.

Request

curl --request POST \
--url https://app.softsolz.uk/api/v1/services/forms/forms/{id}/duplicate \
--header 'Authorization: Bearer sk_live_your_key' \
--header 'Content-Type: application/json' \
--data '{
"name": "Contact Us (copy)"
}'

Credentials

Sent as a Bearer token and used in the samples above and in Try it. Kept only in this browser tab until you close it. Use an sk_test_ key to stay in your sandbox.

Response · 201

{
"data": {
"id": 42,
"slug": "contact-us",
"name": "Contact Us",
"description": "Reach our sales team.",
"field_schema": [
{
"id": "full_name",
"type": "text",
"label": "Full name",
"required": true
}
],
"settings": {
"success_message": "Thanks!",
"notify_in_app": true
},
"appearance": {
"accent_color": "#2563eb",
"theme": "light"
},
"status": "published",
"created_at": "2026-06-01T12:00:00.000Z",
"updated_at": "2026-06-02T09:30:00.000Z",
"submissions_count": 128,
"unread_count": 4,
"pages": [
{
"id": "about_you",
"title": "About you"
}
],
"logic": [],
"logic_engine": 1,
"published_at": "2026-06-02T09:30:00.000Z",
"has_unpublished_changes": false,
"archived_at": null,
"share_enabled": false,
"version_id": 3
}
}