Skip to content

Create a form

POST
/api/v1/projects/{id}/forms
curl --request POST \
--url https://api.deploybase.eu/api/v1/api/v1/projects/example/forms \
--header 'Authorization: <Authorization>' \
--header 'Content-Type: application/json' \
--data '{ "allowed_origins": [ "example" ], "honeypot_field": "example", "name": "example", "notify_emails": [ "example" ], "redirect_url": "example", "retention_days": 1, "store_ip": "example" }'

Creates a form endpoint for a project. The returned public_id is permanent and forms the public ingestion URL.

id
required
string

Project ID

Form settings

Media type application/json
object
allowed_origins
Array<string>
honeypot_field
string
name
required
string
notify_emails
Array<string>
redirect_url
string
retention_days
integer
store_ip
string
Example generated
{
"allowed_origins": [
"example"
],
"honeypot_field": "example",
"name": "example",
"notify_emails": [
"example"
],
"redirect_url": "example",
"retention_days": 1,
"store_ip": "example"
}

Created

Media type application/json
object
data
meta
object
request_id
string
timestamp
string
trace_id
string
data
object
allowed_origins
Array<string>
created_at
string
deleted_at
string
enabled
boolean
endpoint_url
string
honeypot_field
string
id
string
name

Name is the dashboard identity, unique per project among live rows only — a soft-deleted form releases its name (uq_forms_project_name_active).

string
notify_emails
Array<string>
project_id

ProjectID is immutable after creation. This is enforced structurally rather than by a check: UpdateFormInput has no project_id field, so no code path can reassign it.

string
public_id

PublicID is immutable after creation: it is baked into the customer’s deployed HTML, so regenerating it would silently break every live form pointing at it.

string
redirect_url
string
retention_days
integer
source
string
Allowed values: manual build_detected
store_ip
string
Allowed values: none truncated
team_id
string
updated_at
string
Example
{
"data": {
"source": "manual",
"store_ip": "none"
}
}

Bad Request

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string
Example generated
{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Unauthorized

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string
Example generated
{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Forbidden

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string
Example generated
{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Project not found

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string
Example generated
{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

A form with this name already exists in this project

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string
Example generated
{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}